From a1da8d7603a381faf5d59fa76a977365fa4e08e0 Mon Sep 17 00:00:00 2001 From: Yeongcheol Hwang Date: Fri, 28 Apr 2023 15:09:23 -0700 Subject: [PATCH] Functionality for attending/not attending events --- components/cards/Event.js | 2 +- components/cards/EventDetails.js | 54 ++++++++++++++++++++++++++++++-- components/lists/EventList.js | 4 --- 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/components/cards/Event.js b/components/cards/Event.js index 7012d07..6ff76d2 100644 --- a/components/cards/Event.js +++ b/components/cards/Event.js @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { Card, Text } from 'react-native-paper'; import { View } from 'react-native'; diff --git a/components/cards/EventDetails.js b/components/cards/EventDetails.js index 299de71..2fb8f55 100644 --- a/components/cards/EventDetails.js +++ b/components/cards/EventDetails.js @@ -1,7 +1,51 @@ -import React from 'react'; +import React, { useState, useEffect } from 'react'; import { Card, Button, Text } from 'react-native-paper'; +import { doc, getDoc } from 'firebase/firestore'; +import { useSelector } from 'react-redux'; +import db from '../../firebaseFiles/firebase.config'; export default function Event({ event, close }) { + const [attending, setAttending] = useState(false); + const user = useSelector((state) => state.user).data; + + function getAttending() { + if (event.id) { + getDoc(doc(db, 'events', event.id)) + .then((e) => { + const members = e.data().members + const attendingTF = members.filter((member) => member.user_id === user.id).length === 1; + console.log(attendingTF); + setAttending(attendingTF); + }) + .catch(console.error); + } + } + + function updateAttending(status) { + if (event.id) { + updateDoc(doc(db, 'events', event.id)) + .then((doc) => { + const attendingTF = doc.data().members.includes(user.id); + console.log(attendingTF); + }) + .catch(console.error); + } + } + + useEffect(() => { + getAttending(); + }, [event]); + + function handleAttending() { + updateAttending(true); + close(); + } + + function handleNotAttending() { + updateAttending(false); + close(); + } + return ( {event.description || 'no description given'} + + Attending: + {attending} + - - + + ); diff --git a/components/lists/EventList.js b/components/lists/EventList.js index 7db3063..5b54976 100644 --- a/components/lists/EventList.js +++ b/components/lists/EventList.js @@ -24,10 +24,6 @@ export default function EventList({ events }) { setIsVisible(true); } - // useEffect(() => { - // console.log('in eventsList: ', events); - // }, [events]); - return ( <>