Spaces:
Sleeping
Sleeping
import { ObjectType, v } from 'convex/values'; | |
import { GameId, parseGameId, playerId } from './ids'; | |
export const serializedConversationMembership = { | |
playerId, | |
invited: v.number(), | |
status: v.union( | |
v.object({ kind: v.literal('invited') }), | |
v.object({ kind: v.literal('walkingOver') }), | |
v.object({ kind: v.literal('participating'), started: v.number() }), | |
), | |
}; | |
export type SerializedConversationMembership = ObjectType<typeof serializedConversationMembership>; | |
export class ConversationMembership { | |
playerId: GameId<'players'>; | |
invited: number; | |
status: | |
| { kind: 'invited' } | |
| { kind: 'walkingOver' } | |
| { kind: 'participating'; started: number }; | |
constructor(serialized: SerializedConversationMembership) { | |
const { playerId, invited, status } = serialized; | |
this.playerId = parseGameId('players', playerId); | |
this.invited = invited; | |
this.status = status; | |
} | |
serialize(): SerializedConversationMembership { | |
const { playerId, invited, status } = this; | |
return { | |
playerId, | |
invited, | |
status, | |
}; | |
} | |
} | |