From 2ede20f81cdca5737d1cd521e30537d9e6e48428 Mon Sep 17 00:00:00 2001 From: Andres Date: Thu, 24 Apr 2025 01:17:18 +0200 Subject: [PATCH] update stream card, update leaderboards on match finished webhook --- src/env.js | 3 ++- src/server/api/routers/player-state.ts | 31 +++++++++++++++----------- src/trpc/react.tsx | 11 ++++++--- 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/env.js b/src/env.js index fec5f67..3d9a20c 100644 --- a/src/env.js +++ b/src/env.js @@ -29,7 +29,7 @@ export const env = createEnv({ * `NEXT_PUBLIC_`. */ client: { - // NEXT_PUBLIC_CLIENTVAR: z.string(), + NEXT_PUBLIC_API_URL: z.string(), }, /** @@ -46,6 +46,7 @@ export const env = createEnv({ NODE_ENV: process.env.NODE_ENV, CRON_SECRET: process.env.CRON_SECRET, WEBHOOK_QUERY_SECRET: process.env.WEBHOOK_QUERY_SECRET, + NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL, }, /** * Run `build` or `dev` with `SKIP_ENV_VALIDATION` to skip env validation. This is especially diff --git a/src/server/api/routers/player-state.ts b/src/server/api/routers/player-state.ts index 25e7dbc..74d67e0 100644 --- a/src/server/api/routers/player-state.ts +++ b/src/server/api/routers/player-state.ts @@ -30,21 +30,26 @@ export const playerStateRouter = createTRPCRouter({ }) ) .subscription(async function* ({ input, ctx, signal }) { - const iterator = createEventIterator( - globalEmitter, - `state-change:${input.userId}`, - { signal: signal } - ) + console.log('subscription started for user:', input.userId) - // get initial state - const initialState = await redis.get(PLAYER_STATE_KEY(input.userId)) - if (initialState) { - yield tracked('initial', JSON.parse(initialState) as PlayerState) - } + try { + const iterator = createEventIterator( + globalEmitter, + `state-change:${input.userId}`, + { signal: signal } + ) - // listen for updates - for await (const [state] of iterator) { - yield tracked(Date.now().toString(), state) + console.log('iterator created') + + for await (const [state] of iterator) { + console.log('emitting state:', state) + yield tracked(Date.now().toString(), state) + } + } catch (error) { + console.error('subscription error:', error) + throw error + } finally { + console.log('subscription ended for user:', input.userId) } }), }) diff --git a/src/trpc/react.tsx b/src/trpc/react.tsx index 8aa199a..3de03ad 100644 --- a/src/trpc/react.tsx +++ b/src/trpc/react.tsx @@ -87,7 +87,12 @@ export function TRPCReactProvider(props: { children: React.ReactNode }) { } function getBaseUrl() { - if (typeof window !== 'undefined') return window.location.origin - if (process.env.VERCEL_URL) return `https://${process.env.VERCEL_URL}` - return `http://localhost:${process.env.PORT ?? 3000}` + const url = + process.env.NEXT_PUBLIC_API_URL || + (typeof window !== 'undefined' + ? window.location.origin + : `http://localhost:${process.env.PORT ?? 3000}`) + + console.log('using base url:', url) + return url }