diff --git a/apps/photos/src/components/Collections/CollectionOptions/AlbumCastDialog.tsx b/apps/photos/src/components/Collections/CollectionOptions/AlbumCastDialog.tsx index d56ae145b..59280ea8e 100644 --- a/apps/photos/src/components/Collections/CollectionOptions/AlbumCastDialog.tsx +++ b/apps/photos/src/components/Collections/CollectionOptions/AlbumCastDialog.tsx @@ -37,7 +37,12 @@ export default function AlbumCastDialog(props: Props) { >('choose'); const [browserCanCast, setBrowserCanCast] = useState(false); - + // Make API call on component mount + useEffect(() => { + (async () => { + await castGateway.revokeAllTokens(); + })(); + }, []); const onSubmit: SingleInputFormProps['callback'] = async ( value, setFieldError diff --git a/packages/shared/network/cast.ts b/packages/shared/network/cast.ts index 6e94a5018..7adbc91be 100644 --- a/packages/shared/network/cast.ts +++ b/packages/shared/network/cast.ts @@ -20,6 +20,22 @@ class CastGateway { return resp.data.encCastData; } + public async revokeAllTokens() { + try { + const token = getToken(); + await HTTPService.delete( + getEndpoint() + '/cast/revoke-all-tokens/', + undefined, + { + 'X-Auth-Token': token, + } + ); + } catch (e) { + logError(e, 'removeAllTokens failed'); + // swallow error + } + } + public async getPublicKey(code: string): Promise { let resp; try { @@ -42,7 +58,7 @@ class CastGateway { } public async registerDevice(code: string, publicKey: string) { - await HTTPService.put(getEndpoint() + '/cast/device-info/', { + await HTTPService.post(getEndpoint() + '/cast/device-info/', { deviceCode: `${code}`, publicKey: publicKey, });