From 3f517220bd9ae87e00d20946ab11f2cee45882c0 Mon Sep 17 00:00:00 2001 From: Juthatip McDevitt Date: Sun, 28 Apr 2024 18:36:32 -0500 Subject: [PATCH] created meeting/event list --- .../create_meeting/_components/meetingForm.js | 10 ++-- .../dashboard/_components/dashboardHeader.js | 4 +- .../meeting/_components/MeetingEventList.js | 55 +++++++++++++++++++ .../app/(routes)/dashboard/meeting/page.js | 13 ++++- scheduler_app/next.config.mjs | 1 + 5 files changed, 75 insertions(+), 8 deletions(-) create mode 100644 scheduler_app/app/(routes)/dashboard/meeting/_components/MeetingEventList.js diff --git a/scheduler_app/app/(routes)/create_meeting/_components/meetingForm.js b/scheduler_app/app/(routes)/create_meeting/_components/meetingForm.js index c469d3a..adb29b5 100644 --- a/scheduler_app/app/(routes)/create_meeting/_components/meetingForm.js +++ b/scheduler_app/app/(routes)/create_meeting/_components/meetingForm.js @@ -2,7 +2,7 @@ import { Input } from '@/components/ui/input' import { ChevronLeft } from 'lucide-react' import React, { useEffect, useState } from 'react' -import {DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger,} from "@/components/ui/dropdown-menu" +import {DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger,} from "@/components/ui/dropdown-menu" import LocationOption from '@/app/_utils/LocationOption' import Image from 'next/image' import { Button } from '@/components/ui/button' @@ -38,11 +38,11 @@ const MeetingForm = ({setFormEvent}) => { locationMeeting: locationMeeting, urlMeeting: urlMeeting, themeColor: themeColor, - businessId: doc(db, 'Business', user?.email) - }).then(res => { - toast('New event/meeting is created') - router.replace('/dashboard/meeting') + businessId: doc(db, 'Business', user?.email), + createdBy: user?.email }) + toast('New event/meeting is created'); + router.replace('/dashboard/meeting'); } useEffect(() => { diff --git a/scheduler_app/app/(routes)/dashboard/_components/dashboardHeader.js b/scheduler_app/app/(routes)/dashboard/_components/dashboardHeader.js index 6e153f9..3c850d6 100644 --- a/scheduler_app/app/(routes)/dashboard/_components/dashboardHeader.js +++ b/scheduler_app/app/(routes)/dashboard/_components/dashboardHeader.js @@ -3,7 +3,7 @@ import { LogoutLink, useKindeBrowserClient } from '@kinde-oss/kinde-auth-nextjs' import { BsThreeDotsVertical } from "react-icons/bs"; import Image from 'next/image'; import React from 'react' -import {DropdownMenu, ropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger,} from "@/components/ui/dropdown-menu" +import {DropdownMenu, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger,} from "@/components/ui/dropdown-menu" import { DropdownMenuContent } from '@radix-ui/react-dropdown-menu'; @@ -18,7 +18,7 @@ const DashboardHeader = () => { user-img - + {user.given_name} Profile diff --git a/scheduler_app/app/(routes)/dashboard/meeting/_components/MeetingEventList.js b/scheduler_app/app/(routes)/dashboard/meeting/_components/MeetingEventList.js new file mode 100644 index 0000000..5192d95 --- /dev/null +++ b/scheduler_app/app/(routes)/dashboard/meeting/_components/MeetingEventList.js @@ -0,0 +1,55 @@ +"use client" +import React, { useEffect, useState } from 'react' +import { app } from '@/config/FirebaseConfig' +import { useKindeBrowserClient } from '@kinde-oss/kinde-auth-nextjs' +import { collection, getDocs, getFirestore, orderBy, query, where } from 'firebase/firestore' +import { GoClock } from "react-icons/go"; +import { PiMapPinLight, PiCopyLight, PiShareFatLight } from 'react-icons/pi' +import { IoSettingsOutline } from "react-icons/io5"; +import { toast } from 'sonner' + +const MeetingEventList = () => { + const [eventList, setEventList] = useState([]); + const db = getFirestore(app); + const {user} = useKindeBrowserClient(); + + const getEventList = async () => { + setEventList([]); + const q = query(collection(db, "MeetingEvent"), where("createdBy", "==", user?.email), orderBy('id', 'desc')); + const querySnapshot = await getDocs(q); + querySnapshot.forEach((doc) => { + console.log(doc.id, " => ", doc.data()); + setEventList(prevEvent => [...prevEvent, doc.data()]) + }); + } + + useEffect(() => { + user && getEventList() + }, [user]) + + + return ( +
+ {eventList.length > 0 ? eventList?.map((event, index) => ( +
+

{event?.eventName}

+
+

{event.timeDuration} minutes

+

{event.locationMeeting}

+
+
+
+
+ + +
+ +
+
+ )):

Loading...

+ } +
+ ) +} + +export default MeetingEventList \ No newline at end of file diff --git a/scheduler_app/app/(routes)/dashboard/meeting/page.js b/scheduler_app/app/(routes)/dashboard/meeting/page.js index 1185b0f..52dab47 100644 --- a/scheduler_app/app/(routes)/dashboard/meeting/page.js +++ b/scheduler_app/app/(routes)/dashboard/meeting/page.js @@ -1,8 +1,19 @@ +"use client" +import { Input } from '@/components/ui/input' import React from 'react' +import MeetingEventList from './_components/MeetingEventList' + const Meeting = () => { + return ( -
This is a meeting page
+
+
+

Event/Meeting

+
+
+ +
) } diff --git a/scheduler_app/next.config.mjs b/scheduler_app/next.config.mjs index 9127ee7..31de1f9 100644 --- a/scheduler_app/next.config.mjs +++ b/scheduler_app/next.config.mjs @@ -1,5 +1,6 @@ /** @type {import('next').NextConfig} */ const nextConfig = { + reactStrictMode: false, images:{ domains:['lh3.googleusercontent.com'] }