import React, { useState } from "react"; import { Text, View } from "react-native"; import { useGlobal } from "reactn"; import { background } from "../assets"; import GradientButton from "../components/GradientButton"; import { Input } from "../components/Input"; import ItemContainer from "../components/ItemContainer/ItemContainer"; import firebase, { usersRef } from "../config/firebase"; import Page from "../layouts/Page"; import { isWeb } from "../hooks/useLayoutType"; import { Routes } from "../navigation"; import { navigate } from "../navigation/NavigationService"; import { Palette } from "../styles"; import { FONT_FAMILY } from "../styles/Fonts"; const CreatePseudo = () => { const [userName, setUserName] = useState(""); const [loading, setLoading] = useState(false); const [, setTooltip] = useGlobal("_tooltip"); const onCreate = async () => { const raw = userName || ""; const val = raw.trim(); if (!val) return; try { setLoading(true); const uid = firebase.auth().currentUser?.uid; if (!uid) { return navigate(Routes.Login); } // Check uniqueness (case-insensitive) const lower = val.toLowerCase(); const snap = await usersRef .where("userNameLower", "==", lower) .limit(1) .get(); if (!snap.empty && snap.docs[0].id !== uid) { setTooltip({ text: "Ce pseudo est déjà pris", type: "error" }); return; } await usersRef.doc(uid).set( { userName: val, userNameLower: lower, updatedAt: firebase.firestore.FieldValue.serverTimestamp(), createdAt: firebase.firestore.FieldValue.serverTimestamp(), email: firebase.auth().currentUser?.email || null, }, { merge: true } ); setTooltip({ text: `Bienvenue ${val}`, type: "success" }); navigate(Routes.BottomTab); } catch (e) { console.log("CreatePseudo error", e?.message); setTooltip({ text: e?.message || "Enregistrement impossible", type: "error", }); } finally { setLoading(false); } }; return ( Choisis ton pseudo Visible par les autres utilisateurs. ); }; export default CreatePseudo;