Fix Salmon Run stage images when using a presence URL

This commit is contained in:
Samuel Elliott 2022-10-28 01:57:40 +01:00
parent 82ba22b42f
commit c913540ab4
No known key found for this signature in database
GPG Key ID: 8420C7CDE43DC4D6
4 changed files with 21 additions and 16 deletions

View File

@ -8,9 +8,9 @@ import { LoopResult } from '../../util/loop.js';
import { tryGetNativeImageFromUrl } from './util.js';
import { App } from './index.js';
import { DiscordPresenceConfiguration, DiscordPresenceExternalMonitorsConfiguration, DiscordPresenceSource } from '../common/types.js';
import { DiscordPresence, DiscordPresencePlayTime, ErrorResult, ExternalMonitor, ExternalMonitorConstructor } from '../../discord/types.js';
import { DiscordPresence, DiscordPresencePlayTime, ErrorResult } from '../../discord/types.js';
import { DiscordRpcClient } from '../../discord/rpc.js';
import SplatNet3Monitor, { getConfigFromAppConfig as getSplatNet3MonitorConfigFromAppConfig } from '../../discord/titles/nintendo/splatoon3.js';
import SplatNet3Monitor, { getConfigFromAppConfig as getSplatNet3MonitorConfigFromAppConfig } from '../../discord/monitor/splatoon3.js';
const debug = createDebug('app:main:monitor');

View File

@ -6,7 +6,7 @@ import { getToken } from '../../common/auth/coral.js';
import { DiscordPresencePlayTime } from '../../discord/types.js';
import { handleEnableSplatNet2Monitoring, TerminalNotificationManager } from './notify.js';
import { ZncDiscordPresence, ZncProxyDiscordPresence } from '../../common/presence.js';
import SplatNet3Monitor, { getConfigFromArgv as getSplatNet3MonitorConfigFromArgv } from '../../discord/titles/nintendo/splatoon3.js';
import SplatNet3Monitor, { getConfigFromArgv as getSplatNet3MonitorConfigFromArgv } from '../../discord/monitor/splatoon3.js';
const debug = createDebug('cli:nso:presence');
const debugProxy = createDebug('cli:nso:presence:proxy');

View File

@ -2,16 +2,18 @@ import createDebug from 'debug';
import persist from 'node-persist';
import DiscordRPC from 'discord-rpc';
import { BankaraMatchMode, BankaraMatchSetting, CoopSchedule, CoopSetting, DetailVotingStatusResult, FestMatchSetting, FestState, FestTeamRole, FestTeam_schedule, FestTeam_votingStatus, Fest_schedule, FriendListResult, FriendOnlineState, GraphQLSuccessResponse, LeagueMatchSetting, RegularMatchSetting, StageScheduleResult, VsSchedule_bankara, VsSchedule_fest, VsSchedule_league, VsSchedule_regular, VsSchedule_xMatch, XMatchSetting } from 'splatnet3-types/splatnet3';
import { Game } from '../../../api/coral-types.js';
import SplatNet3Api from '../../../api/splatnet3.js';
import { DiscordPresenceExternalMonitorsConfiguration } from '../../../app/common/types.js';
import { Arguments } from '../../../cli/nso/presence.js';
import { getBulletToken, SavedBulletToken } from '../../../common/auth/splatnet3.js';
import { ExternalMonitorPresenceInterface, ZncProxyDiscordPresence } from '../../../common/presence.js';
import { EmbeddedLoop, LoopResult } from '../../../util/loop.js';
import { ArgumentsCamelCase } from '../../../util/yargs.js';
import { DiscordPresenceContext, ErrorResult } from '../../types.js';
import { product } from '../../../util/product.js';
import { Game } from '../../api/coral-types.js';
import SplatNet3Api from '../../api/splatnet3.js';
import { DiscordPresenceExternalMonitorsConfiguration } from '../../app/common/types.js';
import { Arguments } from '../../cli/nso/presence.js';
import { getBulletToken, SavedBulletToken } from '../../common/auth/splatnet3.js';
import { ExternalMonitorPresenceInterface, ZncProxyDiscordPresence } from '../../common/presence.js';
import { EmbeddedLoop, LoopResult } from '../../util/loop.js';
import { ArgumentsCamelCase } from '../../util/yargs.js';
import { DiscordPresenceContext, ErrorResult } from '../types.js';
import { product } from '../../util/product.js';
type CoopSchedule_schedule = Pick<CoopSchedule, 'startTime' | 'endTime' | 'setting'>;
const debug = createDebug('nxapi:discord:splatnet3');
@ -32,7 +34,7 @@ export default class SplatNet3Monitor extends EmbeddedLoop {
fest_schedule: VsSchedule_fest | null = null;
league_schedule: VsSchedule_league | null = null;
x_schedule: VsSchedule_xMatch | null = null;
coop_schedule: Pick<CoopSchedule, 'startTime' | 'endTime' | 'setting'> | null = null;
coop_schedule: CoopSchedule_schedule | null = null;
fest: Fest_schedule | null = null;
fest_team_voting_status: FestTeam_votingStatus | null = null;
fest_team: FestTeam_schedule | null = null;
@ -328,7 +330,10 @@ export function callback(activity: DiscordRPC.Presence, game: Game, context?: Di
if (coop_setting) {
const coop_stage_image = new URL(coop_setting.coopStage.image.url);
const match = coop_stage_image.pathname.match(/^\/resources\/prod\/(.+)$/);
const proxy_stage_image = match ? 'https://splatoon3.ink/assets/splatnet/' + match[1] : null;
const proxy_stage_image =
coop_stage_image.host === 'splatoon3.ink' ? coop_stage_image.href :
match ? 'https://splatoon3.ink/assets/splatnet/' + match[1] :
null;
if (proxy_stage_image) {
activity.largeImageKey = proxy_stage_image;

View File

@ -1,5 +1,5 @@
import { Title } from '../types.js';
import SplatNet3Monitor, { callback as SplatNet3ActivityCallback } from './nintendo/splatoon3.js';
import SplatNet3Monitor, { callback as SplatNet3ActivityCallback } from '../monitor/splatoon3.js';
export const titles: Title[] = [
{