diff --git a/src/Player.tsx b/src/Player.tsx index 60509ef..2caa553 100644 --- a/src/Player.tsx +++ b/src/Player.tsx @@ -1,12 +1,11 @@ import React, { useEffect, useState } from "react"; import { motion, AnimatePresence } from "framer-motion"; import { useNakama } from "./providers/NakamaProvider"; +import { PlayerProps } from "./interfaces/props"; export default function Player({ onMatchDataCallback, -}: { - onMatchDataCallback: (msg: any) => void; -}) { +}: PlayerProps) { const { session, matchId, diff --git a/src/interfaces/contexts.ts b/src/interfaces/contexts.ts index f072ea4..4b330bc 100644 --- a/src/interfaces/contexts.ts +++ b/src/interfaces/contexts.ts @@ -11,8 +11,8 @@ import { } from "@heroiclabs/nakama-js/dist/api.gen" import { - GameMetadata, - MatchDataMessage, + GameMetadataModel, + MatchDataModel, } from './models' @@ -25,13 +25,13 @@ export interface NakamaContextType { loginOrRegister(username?: string): Promise; logout(): Promise; - joinMatchmaker(gameMetadata: GameMetadata): Promise; - exitMatchmaker(gameMetadata: GameMetadata): Promise; + joinMatchmaker(gameMetadata: GameMetadataModel): Promise; + exitMatchmaker(gameMetadata: GameMetadataModel): Promise; joinMatch(matchId: string): Promise; sendMatchData(matchId: string, op: number, data: object): void; - onMatchData(cb: (msg: MatchDataMessage) => void): void; + onMatchData(cb: (msg: MatchDataModel) => void): void; getLeaderboardTop(): Promise; listOpenMatches(): Promise; diff --git a/src/interfaces/models.ts b/src/interfaces/models.ts index 5d58753..f29644b 100644 --- a/src/interfaces/models.ts +++ b/src/interfaces/models.ts @@ -11,16 +11,16 @@ export interface MatchDataModel { userId: string | null; } -export interface Board { +export interface BoardModel { grid: string[][]; } -export interface GameMetadata { +export interface GameMetadataModel { game: string; mode: string; } -export interface MatchDataMessage { +export interface MatchDataModel { opCode: number; data: T; userId: string | null; diff --git a/src/interfaces/refs.ts b/src/interfaces/refs.ts index ad086fa..ebde484 100644 --- a/src/interfaces/refs.ts +++ b/src/interfaces/refs.ts @@ -5,11 +5,11 @@ import { } from "@heroiclabs/nakama-js"; import { - GameMetadata, + GameMetadataModel, } from './models' export interface NakamaRefs { socketRef: React.RefObject; - gameMetadataRef: React.RefObject; + gameMetadataRef: React.RefObject; } \ No newline at end of file diff --git a/src/interfaces/states.ts b/src/interfaces/states.ts index d9816a5..ea0f720 100644 --- a/src/interfaces/states.ts +++ b/src/interfaces/states.ts @@ -4,7 +4,7 @@ import { } from "@heroiclabs/nakama-js"; import { - Board, + BoardModel, PlayerModel, } from "./models" @@ -17,7 +17,7 @@ export interface NakamaProviderState { } export interface GameState { - boards: Record; + boards: Record; turn: number; winner: string | null; gameOver: boolean; diff --git a/src/providers/NakamaProvider.tsx b/src/providers/NakamaProvider.tsx index edff171..0a0f04c 100644 --- a/src/providers/NakamaProvider.tsx +++ b/src/providers/NakamaProvider.tsx @@ -22,7 +22,7 @@ import { import { NakamaContextType } from "../interfaces/contexts"; import { NakamaRefs } from "../interfaces/refs"; import { NakamaProviderState } from "../interfaces/states"; -import { GameMetadata, MatchDataMessage } from "../interfaces/models"; +import { GameMetadataModel, MatchDataModel } from "../interfaces/models"; function getOrCreateDeviceId(): string { const key = "nakama.deviceId"; @@ -68,7 +68,7 @@ export function NakamaProvider({ children }: { children: React.ReactNode }) { // -------------------------------------- const refs: NakamaRefs = { socketRef: useRef(null), - gameMetadataRef: useRef(null), + gameMetadataRef: useRef(null), }; // Helpers to update internal state cleanly @@ -202,7 +202,7 @@ export function NakamaProvider({ children }: { children: React.ReactNode }) { // ---------------------------------------------------- // MATCHMAKING // ---------------------------------------------------- - async function joinMatchmaker(gameMetadata: GameMetadata) { + async function joinMatchmaker(gameMetadata: GameMetadataModel) { const socket = refs.socketRef.current; if (!socket) throw new Error("Socket missing"); @@ -267,7 +267,7 @@ export function NakamaProvider({ children }: { children: React.ReactNode }) { // ---------------------------------------------------- // MATCH DATA LISTENER // ---------------------------------------------------- - function onMatchData(cb: (msg: MatchDataMessage) => void) { + function onMatchData(cb: (msg: MatchDataModel) => void) { if (!internal.socket) return; internal.socket.onmatchdata = (m: MatchData) => {