diff --git a/src/main.ts b/src/main.ts index 7ebaf6e..aa150f1 100644 --- a/src/main.ts +++ b/src/main.ts @@ -2410,15 +2410,24 @@ interface PublicProfileQueryResult { } | null; } -async function fetchPublicStreamerProfile(login: string): Promise<{ +interface PublicStreamerProfileResult { displayName: string; avatarUrl: string; bannerUrl: string; description: string; broadcasterType: '' | 'partner' | 'affiliate'; followerCount: number | null; - stream: { previewUrl: string; viewers: number | null; title: string | null; game: string | null } | null; -} | null> { + stream: PublicStreamInfo | null; +} + +interface PublicStreamInfo { + previewUrl: string; + viewers: number | null; + title: string | null; + game: string | null; +} + +async function fetchPublicStreamerProfile(login: string): Promise { // Same query also pulls bannerImageURL and the current stream's // preview + viewer count when live — saves a separate roundtrip. const data = await fetchPublicTwitchGql( @@ -2467,15 +2476,6 @@ async function fetchPublicStreamerProfile(login: string): Promise<{ }; } -async function fetchOnlyFollowerCount(login: string): Promise { - const data = await fetchPublicTwitchGql( - `query($login: String!) { user(login: $login) { followers { totalCount } } }`, - { login } - ); - const cnt = data?.user?.followers?.totalCount; - return typeof cnt === 'number' ? cnt : null; -} - async function getStreamerProfile(login: string, forceRefresh = false): Promise { const normalized = normalizeLogin(login); if (!normalized) return null; @@ -2502,7 +2502,7 @@ async function getStreamerProfile(login: string, forceRefresh = false): Promise< let bannerUrl = ''; let description = ''; let broadcasterType: '' | 'partner' | 'affiliate' = ''; - let streamFromPublic: Awaited> extends infer R ? (R extends null ? null : R extends { stream: infer S } ? S : null) : null = null; + let streamFromPublic: PublicStreamInfo | null = null; let followerCountFromPublic: number | null = null; const publicProfile = await fetchPublicStreamerProfile(normalized);