useEffect(() => {
authService.onAuthStateChanged((user) => {
if (user) {
setIsLoggedIn(true);
saveUserData(user); // 서버에 user 정보가 없다면 저장
sessionStorage.setItem("user", user.uid); // 세션에 uid 저장
} else {
setIsLoggedIn(false);
sessionStorage.removeItem("user");
}
setInit(true);
});
}, []);
import firebase from "firebase/compat/app";
export interface userProps {
isLoggedIn: boolean;
userObj: userObjDTO;
}
export type userObjDTO = firebase.User | null;
export interface GetUserRef {
uid: string | null;
collection: firebase.firestore.CollectionReference<firebase.firestore.DocumentData>;
userRef: firebase.firestore.Query<firebase.firestore.DocumentData>;
user: firebase.firestore.QueryDocumentSnapshot<firebase.firestore.DocumentData>;
}
{
userId: string,
userName: string,
providerId: string,
totalPokemonNumber: number,
lastLoggedIn: firebase.firestore.Timestamp;,
lastDrawTime: firebase.firestore.Timestamp;,
pokemonList: PokemonDTO[],
}
/** 새 포켓몬을 추가합니다. */
const addPokemonToList = async (pokemon: PokemonDTO) => {
const { userRef } = await getFirestoreRefObject();
try {
const user = (await userRef.get()).docs[0];
// 새로운 pokemonList 배열을 생성
const updatedPokemonList = [...user.data().pokemonList, pokemon];
// 새로운 버전의 user 문서 저장
await user.ref.update({
pokemonList: updatedPokemonList,
});
} catch (error) {
console.error("새 포켓몬 저장에 실패 했습니다 : ", error);
}
};
import firebase from "firebase/compat/app";
...
const pokemonData: PokemonDTO = {
no,
names: mapNamesObj,
imgUrl,
catched_at: firebase.firestore.Timestamp.fromDate(catched_at),
};
theme: {
extend: {
...
screens: {
xs: "500px", // 추가함
xxs: "360px", // 추가함
},
},