Spaces:
Sleeping
Sleeping
File size: 1,088 Bytes
90cbf22 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
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,
};
}
}
|