lifetracker/apps/web/server/api/ws.ts

31 lines
948 B
TypeScript

import { inferAsyncReturnType } from '@trpc/server';
import { CreateWSSContextFnOptions } from '@trpc/server/adapters/ws';
import { Session } from 'next-auth';
// Base context - available in all requests
interface CreateContextOptions {
session: Session | null;
req?: Request;
}
// Helper to create base context
const createContextInner = async (opts: CreateContextOptions) => {
return {
session: opts.session,
// Add any other context properties you need
};
};
// Context for WebSocket connections
export const createWSContext = async (opts: CreateWSSContextFnOptions) => {
// Get session from WebSocket connection
// You'll need to implement your session extraction logic here
const session = null; // Replace with actual session extraction
return await createContextInner({
session,
req: opts.req,
});
};
export type Context = inferAsyncReturnType<typeof createWSContext>;