diff --git a/packages/frontend/src/pages/mahjong/room.game.vue b/packages/frontend/src/pages/mahjong/room.game.vue index 61b1280d33..20cec2dd14 100644 --- a/packages/frontend/src/pages/mahjong/room.game.vue +++ b/packages/frontend/src/pages/mahjong/room.game.vue @@ -307,7 +307,7 @@ const $i = ensureSignin(); const props = defineProps<{ room: Misskey.entities.MahjongRoomDetailed; - connection?: Misskey.ChannelConnection | null; + connection?: Misskey.ChannelConnection | null; }>(); const room = ref(deepClone(props.room)); diff --git a/packages/frontend/src/pages/mahjong/room.setting.vue b/packages/frontend/src/pages/mahjong/room.setting.vue index 63f7d72e65..29504013f6 100644 --- a/packages/frontend/src/pages/mahjong/room.setting.vue +++ b/packages/frontend/src/pages/mahjong/room.setting.vue @@ -69,7 +69,7 @@ const router = useRouter(); const props = defineProps<{ room: Misskey.entities.MahjongRoomDetailed; - connection: Misskey.ChannelConnection; + connection: Misskey.ChannelConnection; }>(); const room = ref(deepClone(props.room)); diff --git a/packages/frontend/src/pages/mahjong/room.vue b/packages/frontend/src/pages/mahjong/room.vue index 16bcda1726..b4962d2a53 100644 --- a/packages/frontend/src/pages/mahjong/room.vue +++ b/packages/frontend/src/pages/mahjong/room.vue @@ -32,7 +32,7 @@ const props = defineProps<{ }>(); const room = shallowRef(null); -const connection = shallowRef(null); +const connection = shallowRef | null>(null); const shareWhenStart = ref(false); watch(() => props.roomId, () => { diff --git a/packages/misskey-js/src/streaming.types.ts b/packages/misskey-js/src/streaming.types.ts index 10204fb2c9..102ad24b24 100644 --- a/packages/misskey-js/src/streaming.types.ts +++ b/packages/misskey-js/src/streaming.types.ts @@ -4,6 +4,7 @@ import { ChatMessageLite, DriveFile, DriveFolder, + MahjongRoomDetailed, Note, Notification, Signin, @@ -32,6 +33,8 @@ type ReversiUpdateSettings = { value: ReversiGameDetailed[K]; }; +type MmjHouse = 'e' | 's' | 'w' | 'n'; + export type Channels = { main: { params: null; @@ -277,6 +280,106 @@ export type Channels = { }; }; }; + mahjongRoom: { + params: { + roomId: string; + }; + events: { + joined: (payload: { + index: number; + user: UserLite | null; + }) => void; + changeReadyStates: (payload: { + user1: boolean; + user2: boolean; + user3: boolean; + user4: boolean; + }) => void; + started: (payload: { room: MahjongRoomDetailed }) => void; + nextKyoku: (payload: { room: MahjongRoomDetailed }) => void; + tsumo: (payload: { + house: MmjHouse; + tile: number; + }) => void; + dahai: (payload: { + house: MmjHouse; + tile: number; + riichi: boolean; + }) => void; + dahaiAndTsumo: (payload: { + dahaiHouse: MmjHouse; + dahaiTile: number; + tsumoTile: number; + riichi: boolean; + }) => void; + ponned: (payload: { + caller: MmjHouse; + callee: MmjHouse; + tiles: readonly [number, number, number]; + }) => void; + kanned: (payload: { + caller: MmjHouse; + callee: MmjHouse; + tiles: readonly [number, number, number, number]; + rinsyan: number; + }) => void; + ciied: (payload: { + caller: MmjHouse; + callee: MmjHouse; + tiles: readonly [number, number, number]; + }) => void; + ronned: (payload: { + callers: MmjHouse[]; + callee: MmjHouse; + handTiles: Record; + }) => void; + ryuukyoku: (payload: unknown) => void; + ankanned: (payload: { + house: MmjHouse; + tiles: readonly [number, number, number, number]; + rinsyan: number; + }) => void; + kakanned: (payload: { + house: MmjHouse; + tiles: readonly [number, number, number, number]; + rinsyan: number; + from: MmjHouse; + }) => void; + tsumoHora: (payload: { + house: MmjHouse; + handTiles: number[]; + tsumoTile: number; + }) => void; + }; + receives: { + ready: boolean; + updateSettings: { + key: string; + body: unknown; + }; + addAi: Record; + confirmNextKyoku: Record; + dahai: { + tile: number; + riichi?: boolean; + }; + tsumoHora: Record; + ronHora: Record; + pon: Record; + cii: { + pattern: string; + }; + kan: Record; + ankan: { + tile: number; + }; + kakan: { + tile: number; + }; + nop: Record; + claimTimeIsUp: Record; + }; + }; }; export type NoteUpdatedEvent = { id: Note['id'] } & ({