Skip to content

Commit ac5fa34

Browse files
Update boardgame.io (#143)
* WIP: Update dependencies * Use provided LobbyClient instead of custom implementation * Remove old API client implementation * Update media queries * Fix storybooks * Revert reformatting svg images * Fix lobby client * Fix page reload when sending first chat message * Rename gameMetadata to matchData * WIP: Update socketio connection * Update bg.io to 0.43.2 * Use messages system for sending drawings * Change unsafe to ignoreStaleStateID * Sync connected players and fix API changes * Fix hook dependencies * Fix import * Fix media query Co-authored-by: Patryk Pastewski <[email protected]>
1 parent 842b6cb commit ac5fa34

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+23831
-19429
lines changed

.prettierignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.svg

.storybook/preview.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { withKnobs } from "@storybook/addon-knobs";
55
import StoryRouter from "storybook-react-router";
66
import { HelmetProvider } from "react-helmet-async";
77
import UserContextMock from "./UserContextMock";
8+
import { MediaContextProvider } from "config/media";
89
import "../src/i18n";
910

1011
import "semantic-ui-css/semantic.min.css";
@@ -13,6 +14,7 @@ import "../src/index.css";
1314
addDecorator(withKnobs);
1415
addDecorator(StoryRouter());
1516
addDecorator((storyFn) => <Suspense fallback="Loading...">{storyFn()}</Suspense>);
17+
addDecorator((storyFn) => <MediaContextProvider>{storyFn()}</MediaContextProvider>);
1618
addDecorator((storyFn) => <HelmetProvider>{storyFn()}</HelmetProvider>);
1719
addDecorator((storyFn) => <UserContextMock>{storyFn()}</UserContextMock>);
1820
addDecorator((storyFn) => <Suspense fallback="Loading">{storyFn()}</Suspense>);

package-lock.json

Lines changed: 23191 additions & 18837 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,35 @@
44
"private": true,
55
"dependencies": {
66
"@airbrake/browser": "^1.0.6",
7+
"@artsy/fresnel": "^1.2.2",
78
"@testing-library/jest-dom": "^4.2.4",
8-
"@testing-library/react": "^9.5.0",
9+
"@testing-library/react": "^11.1.0",
910
"@testing-library/user-event": "^7.2.1",
10-
"boardgame.io": "file:vendor/boardgame.io-0.39.7-with-unsafe-calls.tgz",
11+
"boardgame.io": "^0.43.2",
1112
"esm": "^3.2.25",
12-
"firebase": "^7.12.0",
13-
"firebase-admin": "^8.10.0",
13+
"firebase": "^7.24.0",
14+
"firebase-admin": "^9.2.0",
1415
"husky": "^4.2.3",
1516
"i18next": "^19.3.4",
1617
"i18next-browser-languagedetector": "^4.0.2",
1718
"i18next-xhr-backend": "^3.2.2",
18-
"lodash": "^4.17.15",
19+
"lodash": "^4.17.20",
1920
"moment": "^2.24.0",
2021
"mongodb": "^3.5.5",
2122
"pretty-quick": "^2.0.1",
2223
"prop-types": "^15.7.2",
23-
"react": "^16.13.1",
24-
"react-dom": "^16.13.1",
25-
"react-dom-confetti": "^0.1.3",
26-
"react-helmet-async": "^1.0.4",
27-
"react-i18next": "^11.3.4",
28-
"react-query": "^1.2.0",
29-
"react-router-dom": "^5.1.2",
30-
"react-scripts": "3.4.1",
31-
"react-toastify": "^5.5.0",
24+
"react": "^16.14.0",
25+
"react-dom": "^16.14.0",
26+
"react-dom-confetti": "^0.2.0",
27+
"react-helmet-async": "^1.0.7",
28+
"react-i18next": "^11.7.3",
29+
"react-query": "^2.23.1",
30+
"react-router-dom": "^5.2.0",
31+
"react-scripts": "^3.4.3",
32+
"react-toastify": "^6.0.9",
3233
"remove-accents": "^0.4.2",
3334
"semantic-ui-css": "^2.4.1",
34-
"semantic-ui-react": "^0.88.2"
35+
"semantic-ui-react": "^2.0.0"
3536
},
3637
"scripts": {
3738
"start": "react-scripts start",
@@ -60,15 +61,17 @@
6061
]
6162
},
6263
"devDependencies": {
63-
"@prettier/plugin-xml": "^0.7.2",
64-
"@storybook/addon-actions": "^5.3.18",
65-
"@storybook/addon-knobs": "^5.3.18",
66-
"@storybook/addon-storysource": "^5.3.18",
67-
"@storybook/addon-viewport": "^5.3.18",
68-
"@storybook/addons": "^5.3.18",
69-
"@storybook/preset-create-react-app": "^2.1.1",
70-
"@storybook/react": "^5.3.18",
71-
"prettier": "^2.0.5",
64+
"@prettier/plugin-xml": "^0.12.0",
65+
"@storybook/addon-actions": "^6.0.26",
66+
"@storybook/addon-knobs": "^6.0.26",
67+
"@storybook/addon-storysource": "^6.0.26",
68+
"@storybook/addon-viewport": "^6.0.26",
69+
"@storybook/addons": "^6.0.26",
70+
"@storybook/cli": "^6.0.26",
71+
"@storybook/preset-create-react-app": "^3.1.4",
72+
"@storybook/react": "^6.0.26",
73+
"prettier": "^2.1.2",
74+
"storybook": "^6.0.26",
7275
"storybook-react-router": "^1.0.8"
7376
},
7477
"husky": {

public/locales/en/lobby.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
"subheader": "We are connecting you to the game lobby."
88
},
99
"list": {
10-
"title": "Available rooms",
11-
"empty": "No rooms available at the moment",
12-
"loading": "Loading rooms",
10+
"title": "Available matches",
11+
"empty": "No matches available at the moment",
12+
"loading": "Loading matches",
1313
"game": {
1414
"full": "Full",
1515
"join": "Join",
@@ -18,13 +18,13 @@
1818
}
1919
},
2020
"create": {
21-
"title": "Create room",
21+
"title": "Create match",
2222
"game_type": "Game",
2323
"max_players": "Maximum number of players",
2424
"button": "Create",
2525
"private": {
26-
"true": "Private room 🙈",
27-
"false": "Public room 🐵"
26+
"true": "Private match 🙈",
27+
"false": "Public match 🐵"
2828
}
2929
},
3030
"login": {
@@ -39,7 +39,7 @@
3939
"errors": {
4040
"no_game": "Game not found",
4141
"not_in_game": "You are not in a game",
42-
"no_space": "No space left in this room",
42+
"no_space": "No space left in this match",
4343
"already_in_game": "You are currently in another game"
4444
},
4545
"sidebar": {

public/locales/en/translation.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
},
77
"game": {
88
"leave": {
9-
"button": "Leave Room",
9+
"button": "Leave Match",
1010
"modal": {
11-
"content": "Do you really want to leave this room?",
11+
"content": "Do you really want to leave this match?",
1212
"confirm": "Yes",
1313
"cancel": "No"
1414
}

src/App.js

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import React, { Suspense } from "react";
22
import { Router, Switch, Route } from "react-router-dom";
3-
import { HelmetProvider } from "react-helmet-async";
3+
import { Helmet, HelmetProvider } from "react-helmet-async";
44
import { Dimmer, Loader } from "semantic-ui-react";
55

66
import { routes } from "config/routes";
77
import history from "config/history";
8+
import { mediaStyle, MediaContextProvider } from "config/media";
89

910
import { UserProvider } from "contexts/UserContext";
1011
import { PrivateRoute } from "utils/router/Private";
@@ -27,34 +28,39 @@ const Loading = () => (
2728
const App = () => {
2829
return (
2930
<Suspense fallback={<Loading />}>
30-
<ErrorBoundary>
31-
<UserProvider>
32-
<HelmetProvider>
33-
<Router history={history}>
34-
<Switch>
35-
<Route exact path={routes.lobby()}>
36-
<LobbyPage />
37-
</Route>
38-
<NotLoggedInRoute exact path={routes.login()}>
39-
<LoginPage />
40-
</NotLoggedInRoute>
41-
<NotLoggedInRoute exact path={routes.login_guest()}>
42-
<AnonymousLoginPage />
43-
</NotLoggedInRoute>
44-
<NotLoggedInRoute exact path={routes.register()}>
45-
<RegisterPage />
46-
</NotLoggedInRoute>
47-
<PrivateRoute path={routes.game()}>
48-
<GamePage />
49-
</PrivateRoute>
50-
<PrivateRoute path={routes.change_password()}>
51-
<ChangePassword />
52-
</PrivateRoute>
53-
</Switch>
54-
</Router>
55-
</HelmetProvider>
56-
</UserProvider>
57-
</ErrorBoundary>
31+
<MediaContextProvider>
32+
<ErrorBoundary>
33+
<UserProvider>
34+
<HelmetProvider>
35+
<Helmet>
36+
<style type="text/css">{mediaStyle}</style>
37+
</Helmet>
38+
<Router history={history}>
39+
<Switch>
40+
<Route exact path={routes.lobby()}>
41+
<LobbyPage />
42+
</Route>
43+
<NotLoggedInRoute exact path={routes.login()}>
44+
<LoginPage />
45+
</NotLoggedInRoute>
46+
<NotLoggedInRoute exact path={routes.login_guest()}>
47+
<AnonymousLoginPage />
48+
</NotLoggedInRoute>
49+
<NotLoggedInRoute exact path={routes.register()}>
50+
<RegisterPage />
51+
</NotLoggedInRoute>
52+
<PrivateRoute path={routes.game()}>
53+
<GamePage />
54+
</PrivateRoute>
55+
<PrivateRoute path={routes.change_password()}>
56+
<ChangePassword />
57+
</PrivateRoute>
58+
</Switch>
59+
</Router>
60+
</HelmetProvider>
61+
</UserProvider>
62+
</ErrorBoundary>
63+
</MediaContextProvider>
5864
</Suspense>
5965
);
6066
};

src/components/game/GameContextMock.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ const BoardGameContextMock = ({ children }) => {
1414
actions: [
1515
{ action: "message", text: text("Message text", "Hello there, shall we begin?", ref) },
1616
],
17-
privateRoom: boolean("Private", true, ref),
17+
privateMatch: boolean("Private", true, ref),
1818
players: {
19-
"0": {},
20-
"1": {},
19+
0: {},
20+
1: {},
2121
},
2222
}}
2323
moves={{}}
@@ -28,8 +28,7 @@ const BoardGameContextMock = ({ children }) => {
2828
numPlayers: number("Player count", 4, { range: true, min: 2, max: 10, step: 1 }, ref),
2929
}}
3030
playerID={"0"}
31-
gameID={"qwe123"}
32-
rawClient={{ transport: { socket: null } }}
31+
matchID={"qwe123"}
3332
gameMetadata={[
3433
{ id: 0, name: "user-0", isConnected: true },
3534
{ id: 1, name: "user-1", isConnected: false },

src/components/game/LeaveButton.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,24 @@ import { useTranslation } from "react-i18next";
33
import { useHistory, Redirect } from "react-router-dom";
44
import { Button, Icon, Confirm } from "semantic-ui-react";
55
import { useUser } from "contexts/UserContext";
6-
import { apiRequests } from "services/API";
6+
import { lobbyClient } from "services/LobbyClient";
77
import DataStore from "services/DataStore";
88
import { useBoardGame } from "contexts/BoardGameContext";
99
import { routes } from "config/routes";
1010

1111
const LeaveButton = () => {
1212
const history = useHistory();
1313
const { t } = useTranslation();
14-
const { playerID, gameID, gameName, credentials } = useBoardGame();
14+
const { playerID, matchID, gameName, credentials } = useBoardGame();
1515
const [confirmOpen, setConfirmOpen] = useState(false);
1616
const [error, setError] = useState();
1717
const user = useUser();
1818

1919
const handleLeave = () => {
20-
apiRequests
21-
.leaveGame(gameName, gameID, playerID, credentials)
20+
lobbyClient
21+
.leaveMatch(gameName, matchID, { playerID, credentials })
2222
.then(async () => {
23-
await DataStore.deleteCredentials(user.uid, gameID);
23+
await DataStore.deleteCredentials(user.uid, matchID);
2424
history.push(routes.lobby());
2525
})
2626
.catch((e) => {

src/components/game/RoomTypeBadge.js renamed to src/components/game/MatchTypeBadge.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ import React from "react";
22
import { Icon, Label } from "semantic-ui-react";
33
import { useTranslation } from "react-i18next";
44

5-
const RoomTypeBadge = ({ privateRoom, detailed, style }) => {
5+
const MatchTypeBadge = ({ privateMatch, detailed, style }) => {
66
const { t } = useTranslation("lobby");
77

88
return (
99
<Label as="span" size="small" style={style || {}}>
10-
<Icon name={privateRoom ? "lock" : "open lock"} />
10+
<Icon name={privateMatch ? "lock" : "open lock"} />
1111
{detailed && (
12-
<Label.Detail>{privateRoom ? t("game.private") : t("game.public")}</Label.Detail>
12+
<Label.Detail>{privateMatch ? t("game.private") : t("game.public")}</Label.Detail>
1313
)}
1414
</Label>
1515
);
1616
};
1717

18-
export default RoomTypeBadge;
18+
export default MatchTypeBadge;

0 commit comments

Comments
 (0)