Merge branch 'hs/ignore-storage-failures' into hs/hotfix-1

This commit is contained in:
Half-Shot 2023-03-23 14:00:18 +00:00
commit 41e4c77091
2 changed files with 25 additions and 12 deletions

1
changelog.d/678.bugfix Normal file
View File

@ -0,0 +1 @@
Ensure the widget still works without needing to store local storage data.

View File

@ -23,7 +23,9 @@ interface RequestOpts {
} }
export class BridgeAPI { export class BridgeAPI {
static async getBridgeAPI(baseUrl: string, widgetApi: WidgetApi): Promise<BridgeAPI> { static async getBridgeAPI(baseUrl: string, widgetApi: WidgetApi): Promise<BridgeAPI> {
try {
const sessionToken = localStorage.getItem('hookshot-sessionToken'); const sessionToken = localStorage.getItem('hookshot-sessionToken');
baseUrl = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl; baseUrl = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
if (sessionToken) { if (sessionToken) {
@ -37,6 +39,11 @@ export class BridgeAPI {
localStorage.removeItem(sessionToken); localStorage.removeItem(sessionToken);
} }
} }
} catch (ex) {
// E.g. Browser prevents storage access.
console.debug(`Failed to fetch session token, requesting new token`, ex);
}
const creds = await widgetApi.requestOpenIDConnectToken(); const creds = await widgetApi.requestOpenIDConnectToken();
const { matrix_server_name, access_token } = creds; const { matrix_server_name, access_token } = creds;
// eslint-disable-next-line camelcase // eslint-disable-next-line camelcase
@ -66,7 +73,12 @@ export class BridgeAPI {
} }
} }
const response = await res.json() as ExchangeOpenAPIResponseBody; const response = await res.json() as ExchangeOpenAPIResponseBody;
try {
localStorage.setItem('hookshot-sessionToken', response.token); localStorage.setItem('hookshot-sessionToken', response.token);
} catch (ex) {
// E.g. Browser prevents storage access.
console.debug(`Failed to store session token, continuing`, ex);
}
return new BridgeAPI(baseUrl, response.token); return new BridgeAPI(baseUrl, response.token);
} }