Handle errors opening web services and check NSO membership

This commit is contained in:
Samuel Elliott 2022-04-17 21:53:02 +01:00
parent 2ee7438faa
commit e999ca85d8
No known key found for this signature in database
GPG Key ID: 8420C7CDE43DC4D6
3 changed files with 22 additions and 2 deletions

View File

@ -146,9 +146,13 @@ export default class MenuApp {
items.push(new MenuItem({
label: webservice.name,
click: async () => {
const {nso, data} = await getToken(this.store.storage, token, process.env.ZNC_PROXY_URL);
try {
const {nso, data} = await getToken(this.store.storage, token, process.env.ZNC_PROXY_URL);
await openWebService(this.store, token, nso, data, webservice);
await openWebService(this.store, token, nso, data, webservice);
} catch (err) {
dialog.showErrorBox('Error loading web service', (err as any).stack ?? (err as any).message);
}
},
}));
}

View File

@ -46,6 +46,14 @@ export default async function openWebService(
return;
}
const verifymembership = webservice.customAttributes.find(a => a.attrKey === 'verifyMembership');
if (verifymembership?.attrValue === 'true') {
const membership = data.nsoAccount.user.links.nintendoAccount.membership;
const active = typeof membership.active === 'object' ? membership.active.active : membership.active;
if (!active) throw new Error('Nintendo Switch Online membership required');
}
const window = createWebServiceWindow(data.nsoAccount.user.nsaId, webservice);
windows.set(windowid, window);

View File

@ -48,6 +48,14 @@ export async function handler(argv: ArgumentsCamelCase<Arguments>) {
throw new Error('Invalid web service');
}
const verifymembership = webservice.customAttributes.find(a => a.attrKey === 'verifyMembership');
if (verifymembership?.attrValue === 'true') {
const membership = data.nsoAccount.user.links.nintendoAccount.membership;
const active = typeof membership.active === 'object' ? membership.active.active : membership.active;
if (!active) throw new Error('Nintendo Switch Online membership required');
}
const webserviceToken = await nso.getWebServiceToken(argv.id);
// https://app.splatoon2.nintendo.net/?lang=en-GB&na_country=GB&na_lang=en-GB