Skip to content

Commit 1b032ba

Browse files
committed
Add Firebase dependency and update data retrieval from API
1 parent 208e429 commit 1b032ba

File tree

7 files changed

+972
-147
lines changed

7 files changed

+972
-147
lines changed

app/game/page.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default function Game() {
1515
theme,
1616
easterEgg,
1717
setEasterEgg,
18-
apiData,
18+
dbData,
1919
} = useGameContext();
2020

2121
const [stage, setStage] = useState(1);
@@ -49,7 +49,7 @@ export default function Game() {
4949
spyMode,
5050
spyNumber,
5151
theme,
52-
apiData,
52+
dbData,
5353
}}
5454
nextStage={progressNextStage}
5555
setVocab={updateGlobalVocab}
@@ -90,7 +90,7 @@ export default function Game() {
9090
spyMode,
9191
spyNumber,
9292
theme,
93-
apiData,
93+
dbData,
9494
}}
9595
nextStage={progressNextStage}
9696
setVocab={updateGlobalVocab}

app/settings/page.js

+5-27
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use client";
22

3-
import { useEffect } from "react";
3+
// import { useEffect } from "react";
44
import { useGameContext } from "@/components/GameContextWrapper";
55
import Link from "next/link";
66

@@ -14,37 +14,17 @@ export default function Settings() {
1414
setSpyMode,
1515
spyNumber,
1616
setSpyNumber,
17-
theme,
1817
setTheme,
1918
themeKr,
2019
easterEgg,
21-
setEasterEgg,
22-
apiData,
23-
setApiData,
20+
dbData,
2421
} = useGameContext();
2522

26-
useEffect(() => {
27-
if (easterEgg !== "") {
28-
setEasterEgg(easterEgg);
29-
}
30-
31-
// Get data from API
32-
getDataFromDb();
33-
}, []);
34-
35-
const getDataFromDb = () => {
36-
fetch("https://liar-game-api.withoutwax.now.sh/api/getData")
37-
.then((data) => data.json())
38-
.then((res) => {
39-
setApiData(res);
40-
});
41-
};
42-
4323
let themeButton = [];
4424
// After apiData state has value from the API
45-
if (apiData) {
46-
themeButton = apiData.data.map((theme) => {
47-
return theme.easterEgg === "false" || theme.easterEgg === easterEgg ? (
25+
if (dbData) {
26+
themeButton = dbData.map((theme) => {
27+
return theme.easterEgg === false || theme.easterEgg === easterEgg ? (
4828
<Link
4929
href="/game"
5030
onClick={() => setTheme(theme.type)}
@@ -168,8 +148,6 @@ export default function Settings() {
168148
})}
169149
</div>
170150
</div>
171-
172-
{/* <div>{startGameButton}</div> */}
173151
</section>
174152
);
175153
}

components/Game.js

-104
This file was deleted.

components/GameContextWrapper.js

+37-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,22 @@
11
"use client";
2-
import { createContext, useState, useContext } from "react";
2+
import { createContext, useEffect, useState, useContext } from "react";
3+
import { initializeApp } from "firebase/app";
4+
// import { getAnalytics } from "firebase/analytics";
5+
import { getFirestore, collection, getDocs } from "firebase/firestore/lite";
36

47
const GameContext = createContext();
58

9+
// Initialize Firebase
10+
const firebaseConfig = {
11+
apiKey: "AIzaSyCVaCt88HHIpwktXRD7yvp-ocmhwOm_sks",
12+
authDomain: "liar-game-15738.firebaseapp.com",
13+
projectId: "liar-game-15738",
14+
storageBucket: "liar-game-15738.appspot.com",
15+
messagingSenderId: "604644848255",
16+
appId: "1:604644848255:web:418478bd5426c19c09854a",
17+
measurementId: "G-4JGZ8JGX1V",
18+
};
19+
620
export const GameContextWrapper = ({ children }) => {
721
const [playerNum, setPlayerNum] = useState(3);
822
const [timer, setTimer] = useState(60);
@@ -11,7 +25,25 @@ export const GameContextWrapper = ({ children }) => {
1125
const [theme, setTheme] = useState("");
1226
const [themeKr, setThemeKr] = useState("");
1327
const [easterEgg, setEasterEgg] = useState("false");
14-
const [apiData, setApiData] = useState(null);
28+
// const [apiData, setApiData] = useState(null);
29+
const [dbData, setDbData] = useState(null);
30+
31+
const app = initializeApp(firebaseConfig);
32+
// const analytics = getAnalytics(app);
33+
const db = getFirestore(app);
34+
35+
// console.log("db", db);
36+
37+
useEffect(() => {
38+
const fetchData = async () => {
39+
const querySnapshot = await getDocs(collection(db, "words"));
40+
const data = querySnapshot.docs.map((doc) => doc.data());
41+
setDbData(data);
42+
console.log(data);
43+
};
44+
45+
fetchData();
46+
}, [db]);
1547

1648
return (
1749
<GameContext.Provider
@@ -30,8 +62,9 @@ export const GameContextWrapper = ({ children }) => {
3062
setThemeKr,
3163
easterEgg,
3264
setEasterEgg,
33-
apiData,
34-
setApiData,
65+
// apiData,
66+
// setApiData,
67+
dbData,
3568
}}
3669
>
3770
{children}

components/Select.js

+4-8
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ const Select = (props) => {
1111
playerNum,
1212
spyMode,
1313
spyNumber,
14-
apiData,
14+
dbData,
1515
theme,
1616
easterEgg,
1717
setEasterEgg,
@@ -39,9 +39,7 @@ const Select = (props) => {
3939
// If the API is not present
4040
let chosenTheme;
4141
let data;
42-
console.log("theme", theme);
43-
if (apiData === null) {
44-
console.log("foodData", foodData);
42+
if (dbData === null) {
4543
chosenTheme = {
4644
food: foodData,
4745
place: placeData,
@@ -51,17 +49,15 @@ const Select = (props) => {
5149
};
5250
data = chosenTheme[theme || "food"].kr;
5351
} else {
54-
console.log("apiData", apiData);
55-
for (let i = 0; i < apiData.data.length; i++) {
56-
let words = apiData.data[i];
52+
for (let i = 0; i < dbData.length; i++) {
53+
let words = dbData[i];
5754
if (words.type === (theme || "food")) {
5855
chosenTheme = words.kr;
5956
}
6057
}
6158
data = chosenTheme;
6259
}
6360

64-
console.log("data", data);
6561
setSelectData(data);
6662
generateRandomNumber(data);
6763
}, []);

0 commit comments

Comments
 (0)