("connecting");
+
+ const onConnectionDone = () => {
+ setConnetionState("connected");
+ };
+ const onConnectionLost = () => {
+ connectToServer("reconnecting");
+ };
+ const onConnectionError = (event: Event) => {
+ setConnetionState("error");
+ };
+ const connectToServer = (connectionState: ConnectionState) => {
+ setConnetionState(connectionState);
+ context.userKeyStore.getUserKey((userKey: string) => {
+ setUserKey(userKey);
+ const rtmtws = context.rtmt as RTMTWS;
+ if (rtmtws) {
+ rtmtws.initWebSocket(
+ userKey,
+ onConnectionDone,
+ onConnectionLost,
+ onConnectionError
+ );
+ } else {
+ console.error("context.rtmt is not RTMTWS");
+ }
+ });
+ };
+ React.useEffect(() => {
+ connectToServer("connecting");
+ return () => {
+ // todo: dispose rtmt.dispose
+ //context.rtmt.dispose();
+ };
+ }, []);
+
+ const showConnectionState = connectionState != "connected";
+ const floatingPanelColor = context.themeManager.theme.boardColor;
+ const connectionStateText = () => {
+ const map: { [key: string]: string } = {
+ connecting: context.texts.Connecting,
+ connected: context.texts.Connected,
+ error: context.texts.CannotConnect,
+ reconnecting: context.texts.ConnectingAgain,
+ };
+ return map[connectionState];
+ };
+ const textColorOnBoard = getColorByBrightness(
+ context.themeManager.theme.boardColor,
+ context.themeManager.theme.textColor,
+ context.themeManager.theme.textLightColor
+ );
+ return (
+ <>
+
+
+ } />
+
+
+ } >
+
+
+
+
+
+ {connectionStateText()}
+
+ >
+ );
+}
+
+export default MancalaApp;
\ No newline at end of file
diff --git a/src/context/context.tsx b/src/context/context.tsx
index 28d2485..4825b3c 100644
--- a/src/context/context.tsx
+++ b/src/context/context.tsx
@@ -11,7 +11,7 @@ export type Context = {
themeManager: ThemeManager;
};
-export const initContext = () => {
+export const initContext = () : Context => {
const rtmt = new RTMTWS();
const userKeyStore = new UserKeyStoreImpl();
const texts = TrTr;
@@ -23,5 +23,3 @@ export const initContext = () => {
themeManager,
};
};
-
-export const context: Context = initContext();
diff --git a/src/models/ConnectionState.ts b/src/models/ConnectionState.ts
new file mode 100644
index 0000000..5010944
--- /dev/null
+++ b/src/models/ConnectionState.ts
@@ -0,0 +1 @@
+export type ConnectionState = "connecting" | "error" | "connected" | "reconnecting";
\ No newline at end of file
diff --git a/src/routes/GamePage.tsx b/src/routes/GamePage.tsx
new file mode 100644
index 0000000..8c02d4b
--- /dev/null
+++ b/src/routes/GamePage.tsx
@@ -0,0 +1,18 @@
+import * as React from 'react';
+import { FunctionComponent } from 'react';
+import { useParams } from 'react-router';
+import { Context } from '../context/context';
+
+const GamePage: FunctionComponent<{ context: Context }> = ({ context }) => {
+ let params = useParams<{gameId : string}>();
+ return (
+
+ Game Route {params.gameId}
+
+
+ );
+}
+
+export default GamePage;
\ No newline at end of file
diff --git a/src/routes/Home.tsx b/src/routes/Home.tsx
index 0485672..3ff6022 100644
--- a/src/routes/Home.tsx
+++ b/src/routes/Home.tsx
@@ -1,7 +1,6 @@
import * as React from "react";
import { FunctionComponent, useEffect, useState } from "react";
import BoardView from "../components/board/BoardView";
-import { context } from "../context/context";
import { RTMTWS } from "../rtmt/rtmt_websocket";
import {
channel_game_move,
@@ -21,7 +20,6 @@ import { v4 } from "uuid";
import { getColorByBrightness } from "../util/ColorUtil";
import { Theme } from "../theme/Theme";
import HeaderBar from "../components/headerbar/HeaderBar";
-import FloatingPanel from "../components/FloatingPanel";
import PageContainer from "../components/PageContainer";
import Row from "../components/Row";
import HeaderbarIcon from "../components/headerbar/HeaderbarIcon";
@@ -34,14 +32,14 @@ import Center from "../components/Center";
import CircularPanel from "../components/CircularPanel";
import useWindowDimensions from "../hooks/useWindowDimensions";
import { UserConnectionInfo } from "../models/UserConnectionInfo";
+import { Context } from "../context/context";
+import { ConnectionState } from "../models/ConnectionState";
-type ConnectionState = "connecting" | "error" | "connected" | "reconnecting";
-
-const Home: FunctionComponent<{ initial?: number }> = ({ initial = 0 }) => {
- const [userKey, setUserKey] = useState(undefined);
-
- const [connectionState, setConnetionState] =
- useState("connecting");
+const Home: FunctionComponent<{
+ context: Context,
+ userKey?: string,
+ connectionState: ConnectionState
+}> = ({ context, userKey, connectionState }) => {
const [searchingOpponent, setSearchingOpponent] = useState(false);
@@ -67,36 +65,6 @@ const Home: FunctionComponent<{ initial?: number }> = ({ initial = 0 }) => {
const [isOpponentOnline, setIsOpponentOnline] = useState(false);
- const onConnectionDone = () => {
- setConnetionState("connected");
- };
-
- const onConnectionLost = () => {
- connectToServer("reconnecting");
- };
-
- const onConnectionError = (event: Event) => {
- setConnetionState("error");
- };
-
- const connectToServer = (connectionState: ConnectionState) => {
- setConnetionState(connectionState);
- context.userKeyStore.getUserKey((userKey: string) => {
- setUserKey(userKey);
- const rtmtws = context.rtmt as RTMTWS;
- if (rtmtws) {
- rtmtws.initWebSocket(
- userKey,
- onConnectionDone,
- onConnectionLost,
- onConnectionError
- );
- } else {
- console.error("context.rtmt is not RTMTWS");
- }
- });
- };
-
const listenMessages = (pitAnimator: PitAnimator) => {
context.rtmt.listenMessage(channel_on_game_start, (message: Object) => {
const newGame: CommonMancalaGame = message as CommonMancalaGame;
@@ -163,7 +131,6 @@ const Home: FunctionComponent<{ initial?: number }> = ({ initial = 0 }) => {
const pitAnimator = new PitAnimator(context, updateBoardViewModel);
setPitAnimator(pitAnimator);
listenMessages(pitAnimator);
- connectToServer("connecting");
return () => {
pitAnimator.dispose();
};
@@ -204,19 +171,6 @@ const Home: FunctionComponent<{ initial?: number }> = ({ initial = 0 }) => {
context.rtmt.sendMessage(channel_game_move, gameMove);
};
- const showConnectionState = connectionState != "connected";
-
- const connectionStateText = () => {
- let map: { [key: string]: string } = {
- connecting: context.texts.Connecting,
- connected: context.texts.Connected,
- error: context.texts.CannotConnect,
- reconnecting: context.texts.ConnectingAgain,
- };
-
- return map[connectionState];
- };
-
const textColorOnBoard = getColorByBrightness(
context.themeManager.theme.boardColor,
context.themeManager.theme.textColor,
@@ -236,9 +190,6 @@ const Home: FunctionComponent<{ initial?: number }> = ({ initial = 0 }) => {
return (
-
- {connectionStateText()}
-