diff --git a/src/components/main/main.component.tsx b/src/components/main/main.component.tsx index 52e084a..2b19add 100644 --- a/src/components/main/main.component.tsx +++ b/src/components/main/main.component.tsx @@ -12,7 +12,7 @@ import { getQuoteFromGemini } from "../../services/gemini"; import { QuoteResponse } from "../../types/common"; import { getQuoteFromNinja } from "../../services/ninja"; import { Input } from "baseui/input"; -import { addSubscriber } from "../../services/firebase"; +import { addSubscriber, isSubscribedAlready } from "../../services/firebase"; let firstLoad = true; @@ -84,6 +84,14 @@ export const Main = () => { setIsEmailValid(true); setIsButtonLoading(true); + + if (await isSubscribedAlready(email)) { + localStorage.setItem('isSubscribed', 'true'); + setIsSubscribed(true); + setIsButtonLoading(false); + return; + } + await addSubscriber(email).then(() => { setEmail(''); localStorage.setItem('isSubscribed', 'true'); diff --git a/src/services/firebase.ts b/src/services/firebase.ts index f06adc0..d09ca9d 100644 --- a/src/services/firebase.ts +++ b/src/services/firebase.ts @@ -1,5 +1,5 @@ import { initializeApp } from "firebase/app"; -import { getFirestore, collection, addDoc } from 'firebase/firestore' +import { getFirestore, collection, addDoc, getDocs, where, query } from 'firebase/firestore' const firebaseConfig = { apiKey: process.env.REACT_APP_FIREBASE_API_KEY, @@ -19,4 +19,12 @@ export const addSubscriber = async (email: string) => { email, status: 'ACTIVE' }); +} + +export const isSubscribedAlready = async (email: string) => { + const querySnapshot = await getDocs( + query(collection(db, 'subscribers'), where('email', '==', email)) + ); + + return !querySnapshot.empty; } \ No newline at end of file