From 6ec7436cdfab209f75d595f79369681ad709191c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o?= <43091603+glazk0@users.noreply.github.com> Date: Sat, 22 Apr 2023 10:18:01 +0200 Subject: [PATCH] Adding leave group --- app/dashboard/puzzles/[id]/not-found.tsx | 1 + app/dashboard/settings/page.tsx | 59 ++++++++++++++++++++++++ lib/nav-items.ts | 2 +- ui/Puzzle.tsx | 1 - ui/Puzzles.tsx | 6 +-- 5 files changed, 63 insertions(+), 6 deletions(-) create mode 100644 app/dashboard/settings/page.tsx diff --git a/app/dashboard/puzzles/[id]/not-found.tsx b/app/dashboard/puzzles/[id]/not-found.tsx index d4965df..44d91bd 100644 --- a/app/dashboard/puzzles/[id]/not-found.tsx +++ b/app/dashboard/puzzles/[id]/not-found.tsx @@ -1,4 +1,5 @@ import Image from 'next/image'; + import error404 from '@/public/assets/404.png'; export default function NotFound() { diff --git a/app/dashboard/settings/page.tsx b/app/dashboard/settings/page.tsx new file mode 100644 index 0000000..e14bd37 --- /dev/null +++ b/app/dashboard/settings/page.tsx @@ -0,0 +1,59 @@ +'use client'; + +import cookies from 'js-cookie'; +import { useContext } from 'react'; +import { useForm } from 'react-hook-form'; +import { useSWRConfig } from 'swr'; + +import { UserContext } from '@/context/user'; +import Button from '@/ui/Button'; +import Select from '@/ui/Select'; + +type SettingsData = { + group: string; +}; + +export default function Page() { + const { data: me } = useContext(UserContext); + const { mutate } = useSWRConfig(); + const { register, handleSubmit } = useForm({ + defaultValues: { + group: '' + } + }); + + const groups = + me?.groups.map((group) => ({ + title: group.name, + value: group.name + })) || []; + + async function onSubmit(data: SettingsData) { + const formData = new FormData(); + + formData.append('group', data.group); + + const res = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/groupQuit`, { + method: 'POST', + body: formData, + headers: { + Authorization: `Bearer ${cookies.get('token')}}` + } + }); + + if (res.ok) { + mutate('me'); + } + } + + return ( +
+
+