Support user and friend URLs for --presence-url

This commit is contained in:
Samuel Elliott 2022-04-30 13:33:41 +01:00
parent a9aca8829f
commit dd35b84afa
No known key found for this signature in database
GPG Key ID: 8420C7CDE43DC4D6

View File

@ -455,6 +455,11 @@ export class ZncDiscordPresence extends ZncNotifications {
}
}
type PresenceUrlResponse =
Presence | {presence: Presence} |
CurrentUser | {user: CurrentUser} |
Friend | {friend: Friend};
export class ZncProxyDiscordPresence extends ZncDiscordPresence {
constructor(
readonly argv: ArgumentsCamelCase<Arguments>,
@ -480,9 +485,24 @@ export class ZncProxyDiscordPresence extends ZncDiscordPresence {
console.error('Non-200 status code', await response.text());
throw new Error('Unknown error');
}
const presence = await response.json() as Presence;
const data = await response.json() as PresenceUrlResponse;
await this.updatePresenceForDiscord(presence);
const user: CurrentUser | Friend | undefined =
'user' in data ? data.user :
'friend' in data ? data.friend :
'nsaId' in data ? data :
undefined;
const presence: Presence =
'presence' in data ? data.presence :
'user' in data ? data.user.presence :
'friend' in data ? data.friend.presence :
data;
if (!('state' in presence)) {
throw new Error('Invalid presence data');
}
await this.updatePresenceForDiscord(presence, user);
await this.updatePresenceForSplatNet2Monitor(presence, this.presence_url);
}
}