add firebase and sign up

This commit is contained in:
2026-06-12 18:19:45 +09:00
parent cd682f738a
commit 08d3e3ae56
11 changed files with 1667 additions and 43 deletions

View File

@@ -1,18 +1,46 @@
import { db } from '../firebase.js';
import { doc, onSnapshot, updateDoc, arrayUnion, arrayRemove } from 'firebase/firestore';
let selected = $state(new Set());
let totalCountries = $state(0);
let _uid = null;
let _unsubscribe = null;
export function initSelectionListener(uid) {
if (_unsubscribe) _unsubscribe();
_uid = uid;
const userRef = doc(db, 'users', uid);
_unsubscribe = onSnapshot(userRef, (snap) => {
if (snap.exists()) {
const codes = snap.data().visitedCountries || [];
selected = new Set(codes);
}
});
}
export function toggle(id) {
if (!_uid) return;
const was = selected.has(id);
const next = new Set(selected);
if (next.has(id)) {
if (was) {
next.delete(id);
} else {
next.add(id);
}
selected = next;
const userRef = doc(db, 'users', _uid);
if (was) {
updateDoc(userRef, { visitedCountries: arrayRemove(id) });
} else {
updateDoc(userRef, { visitedCountries: arrayUnion(id) });
}
}
export function clearAll() {
if (!_uid) return;
selected = new Set();
const userRef = doc(db, 'users', _uid);
updateDoc(userRef, { visitedCountries: [] });
}
export function getSelected() {