diff --git a/src/app/main/monitor.ts b/src/app/main/monitor.ts index f6b643e..05d5b86 100644 --- a/src/app/main/monitor.ts +++ b/src/app/main/monitor.ts @@ -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'); diff --git a/src/cli/nso/presence.ts b/src/cli/nso/presence.ts index d833c4b..b752700 100644 --- a/src/cli/nso/presence.ts +++ b/src/cli/nso/presence.ts @@ -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'); diff --git a/src/discord/titles/nintendo/splatoon3.ts b/src/discord/monitor/splatoon3.ts similarity index 94% rename from src/discord/titles/nintendo/splatoon3.ts rename to src/discord/monitor/splatoon3.ts index 39a8767..8df2dc2 100644 --- a/src/discord/titles/nintendo/splatoon3.ts +++ b/src/discord/monitor/splatoon3.ts @@ -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; 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 | 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; diff --git a/src/discord/titles/nintendo.ts b/src/discord/titles/nintendo.ts index 2cc2843..5930d3e 100644 --- a/src/discord/titles/nintendo.ts +++ b/src/discord/titles/nintendo.ts @@ -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[] = [ {