Estoy implementando una función de comentarios de usuarios y me gustaría permitir que los usuarios comiencen a escribir antes de solicitar autenticación para reducir la fricción de UX.
El flujo de usuario sería:
Creo que este es un caso de uso muy común, pero no puedo encontrar nada en Stackoverflow o en la búsqueda de Google.
Estoy usando React con autenticación de Firebase. Mi primer intento es verificar cada segundo si el usuario está autenticado.
const submit = async (data) => { if (!isAuthenticated) { setOpenAuthDialog(true); while (!isAuthenticated) await new Promise((resolve) => setTimeout(resolve, 1000)); } setDoc(doc(firestore, "comments", postId), data); setInputField(""); };Sin embargo, no creo que esta sea la mejor práctica, porque continuará verificando incluso cuando el usuario abandone el flujo de autenticación.
Creo que usar devoluciones de llamada podría ser el mejor enfoque, pero el modo de autenticación y los comentarios son componentes hermanos. No estoy seguro de si es posible pasar la función de devolución de llamada a los métodos de inicio de sesión.
Por favor, hágame saber si hay un mejor enfoque para este problema.
Una forma de hacerlo con devoluciones de llamada podría ser:
const submit = async (data) => { if (!isAuthenticated) { setOpenAuthDialog(true); setDataWaitingForSubmission(data) return; } setDoc(doc(firestore, "comments", postId), data); setInputField(""); } // This is passed as callback to auth modal const onAuthSuccess = () => { if (dataWaitingForSubmission && isAuthenticated) { submit(dataWaitingForSubmission) } }