diff --git a/src/pages/explore.jsx b/src/pages/explore.jsx index a1c8d4a..cfbfbbe 100644 --- a/src/pages/explore.jsx +++ b/src/pages/explore.jsx @@ -7,8 +7,7 @@ import Canvas from "../comps/canvas.jsx"; import Lottie from "lottie-react"; import hint_animation from '../assets/lottie/hint.json'; import egg_bg from '../assets/lottie/egg_bg.json'; -import circle from '../assets/lottie/circle.json'; -import { lookatKeyword } from "../utils/firebase.js"; +import { onLookatChange, lookatKeyword } from "../utils/firebase.js"; const State={ Intro: 'Intro', @@ -47,7 +46,7 @@ export default function Explore({onClose}) { useEffect(()=>{ // if(!lookat) - lookatKeyword(lookat); + // lookatKeyword(lookat); },[lookat]); @@ -56,8 +55,14 @@ export default function Explore({onClose}) { setState(State.Explore); }, AnimationTime); + const unsub=onLookatChange((new_lookat)=>{ + setLookat(new_lookat); + console.log("Lookat changed:", new_lookat); + }); + return () => { clearTimeout(timeoutId); + unsub(); }; },[]); @@ -108,6 +113,7 @@ export default function Explore({onClose}) {
{getText('title_observe')}
+ {/* {JSON.stringify(lookat)} */}
{/*
*/} {sortedKeywords.map((keyword, index) => ( @@ -118,9 +124,11 @@ export default function Explore({onClose}) { }} onClick={()=>{ if(lookat && lookat.title===keyword.title){ - setLookat(null); + // setLookat(null); + lookatKeyword(null); }else{ - setLookat(keyword) + // setLookat(keyword) + lookatKeyword(keyword); }; }}> {keyword.title} diff --git a/src/utils/firebase.js b/src/utils/firebase.js index 7ee1f4d..1adb033 100644 --- a/src/utils/firebase.js +++ b/src/utils/firebase.js @@ -8,15 +8,16 @@ import { exists } from "firebase/firestore/pipelines"; // Your web app's Firebase configuration // For Firebase JS SDK v7.20.0 and later, measurementId is optional const firebaseConfig = { - apiKey: "AIzaSyB3Yfrh18w5VNSb36LFHJHvegTSv_W1VOU", - authDomain: "uc-23070-grayscale.firebaseapp.com", - projectId: "uc-23070-grayscale", - storageBucket: "uc-23070-grayscale.firebasestorage.app", - messagingSenderId: "866564340708", - appId: "1:866564340708:web:31eea78e6c56eeab6825f1", - measurementId: "G-NNY50B5T9F" + apiKey: "AIzaSyBPI9CDh0rnGnFAc4xSCfTC43oDDblEAsY", + authDomain: "uc-23070-grayscale-backup.firebaseapp.com", + projectId: "uc-23070-grayscale-backup", + storageBucket: "uc-23070-grayscale-backup.firebasestorage.app", + messagingSenderId: "611635514938", + appId: "1:611635514938:web:897fdb87381a0e54166f03", + measurementId: "G-F2TFEBMWCN" }; + // Initialize Firebase const app = initializeApp(firebaseConfig); @@ -79,8 +80,9 @@ export function lookatKeyword(keyword) { // Update the keyword document with the focused state setDoc(keywordRef, { - id: keyword.id, - title: keyword.title, + // id: keyword.id, + // title: keyword.title, + ...keyword, updatedTime: new Date(), }); } @@ -128,3 +130,18 @@ export async function getState(){ } } +export function onLookatChange(callback) { + + const db = getFirestore(app); + const keywordRef = doc(collection(db, "lookat"), 'latest'); + + const unsubscribe = onSnapshot(keywordRef, (doc) => { + if (doc.exists()) { + callback(doc.data()); + } else { + console.log("No such document!"); + } + }); + + return unsubscribe; +} diff --git a/src/utils/usetext.jsx b/src/utils/usetext.jsx index 85de720..303ac6d 100644 --- a/src/utils/usetext.jsx +++ b/src/utils/usetext.jsx @@ -1,6 +1,6 @@ import { createContext, useContext, useEffect, useState } from "react"; import useSWR from "swr"; -import { onStateChange } from "./firebase"; +import { onStateChange, } from "./firebase"; const TextContent=createContext(); @@ -38,7 +38,7 @@ export function TextProvider({children}) { function getKeywords(){ return data?.keywords?.[lang] || []; } - + function select(select){ if(selectedKeyword.includes(select)){ setSelectedKeyword(selectedKeyword.filter(item=>item!==select));