From 30dbc49653ec28e5e023410b761375dc8d03208c Mon Sep 17 00:00:00 2001 From: amel Date: Mon, 9 Sep 2024 17:35:24 +0800 Subject: [PATCH] upd: diskusi deskripsi - update pembatasan No Issues --- src/app/api/discussion/[id]/route.ts | 1 + src/module/discussion/lib/type_discussion.ts | 31 ++++++++-------- .../discussion/ui/detail_discussion.tsx | 36 ++++++++++++++++--- .../discussion/ui/form_create_discussion.tsx | 4 +-- .../ui/navbar_detail_discussion.tsx | 4 ++- 5 files changed, 53 insertions(+), 23 deletions(-) diff --git a/src/app/api/discussion/[id]/route.ts b/src/app/api/discussion/[id]/route.ts index a0e0c29..00d0936 100644 --- a/src/app/api/discussion/[id]/route.ts +++ b/src/app/api/discussion/[id]/route.ts @@ -41,6 +41,7 @@ export async function GET(request: Request, context: { params: { id: string } }) desc: true, status: true, createdAt: true, + createdBy: true, User: { select: { name: true, diff --git a/src/module/discussion/lib/type_discussion.ts b/src/module/discussion/lib/type_discussion.ts index d688100..dcc59d4 100644 --- a/src/module/discussion/lib/type_discussion.ts +++ b/src/module/discussion/lib/type_discussion.ts @@ -17,7 +17,7 @@ export interface IFormDiscussion { export interface IStatusDiscussion { status: number } - + export interface IDetailDiscussion { id: string @@ -29,25 +29,26 @@ export interface IDetailDiscussion { username: string user_img: string totalComments: number - } - - export interface IAllComents { + createdBy: string +} + +export interface IAllComents { id: string comment: string createdAt: string - User: User - img: string + User: User + img: string username: string - } - - export interface User { - name: string - } - -export interface IDeleteDicussion { - id: string } - + +export interface User { + name: string +} + +export interface IDeleteDicussion { + id: string +} + export interface IEditDiscussion { desc: string } diff --git a/src/module/discussion/ui/detail_discussion.tsx b/src/module/discussion/ui/detail_discussion.tsx index 942afb7..ee87f58 100644 --- a/src/module/discussion/ui/detail_discussion.tsx +++ b/src/module/discussion/ui/detail_discussion.tsx @@ -1,6 +1,6 @@ "use client" import { ActionIcon, Avatar, Badge, Box, Center, Divider, Flex, Grid, Group, Input, rem, Skeleton, Spoiler, Text, TextInput } from "@mantine/core"; -import { SkeletonDetailDiscussionComment, SkeletonDetailDiscussionMember, SkeletonSingle, WARNA } from "@/module/_global"; +import { globalRole, LayoutDrawer, LayoutNavbarNew, SkeletonDetailDiscussionComment, SkeletonDetailDiscussionMember, SkeletonSingle, WARNA } from "@/module/_global"; import { GrChatOption } from "react-icons/gr"; import { LuSendHorizonal } from "react-icons/lu"; import NavbarDetailDiscussion from "@/module/discussion/ui/navbar_detail_discussion"; @@ -14,6 +14,10 @@ import { useParams, useRouter } from "next/navigation"; import toast from "react-hot-toast"; import { useHookstate } from "@hookstate/core"; import { globalRefreshDiscussion } from "../lib/val_discussion"; +import { HiMenu } from "react-icons/hi"; +import DrawerDetailDiscussion from "./drawer_detail_discussion"; +import { funGetUserByCookies } from "@/module/auth"; +import { funGetDivisionById } from "@/module/division_new"; export default function DetailDiscussion({ id, idDivision }: { id: string, idDivision: string }) { const [isData, setData] = useState() @@ -22,13 +26,21 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv const [isLoad, setIsLoad] = useState(true) const router = useRouter() const refresh = useHookstate(globalRefreshDiscussion) + const roleLogin = useHookstate(globalRole) + const [isAdmin, setAdmin] = useState(false) + const [isCreator, setCreator] = useState(false) const getData = async () => { try { setIsLoad(true) const response = await funGetDiscussionById(id) + const res = await funGetDivisionById(param.id); + const login = await funGetUserByCookies() + const cek = res.data.member.some((i: any) => i.idUser == login.id && i.isAdmin == true) + setAdmin(cek) setData(response.data) setIsLoad(false) + setCreator(response.data.createdBy == login.id) } catch (error) { console.error(error) } finally { @@ -61,11 +73,27 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv } } + const [openDrawer, setOpenDrawer] = useState(false) + return ( - + {/* */} + setOpenDrawer(true)} bg={WARNA.bgIcon} size="lg" radius="lg" aria-label="Settings"> + + + : <> + } + /> + setOpenDrawer(false)}> + setOpenDrawer(false)} id={id} status={Number(isData?.status)} idDivision={idDivision} /> + + + {isLoad ? Array(1) @@ -217,12 +245,12 @@ export default function DetailDiscussion({ id, idDivision }: { id: string, idDiv - + - {v.username} + {v.username} diff --git a/src/module/discussion/ui/form_create_discussion.tsx b/src/module/discussion/ui/form_create_discussion.tsx index ae401b3..3e12c85 100644 --- a/src/module/discussion/ui/form_create_discussion.tsx +++ b/src/module/discussion/ui/form_create_discussion.tsx @@ -52,7 +52,6 @@ export default function FormCreateDiscussion({ id }: { id: string }) { toast.success(response.message) router.push(`/division/${param.id}/discussion/`) setValModal(false) - router.back() } else { toast.error(response.message) } @@ -123,8 +122,7 @@ export default function FormCreateDiscussion({ id }: { id: string }) { setValModal(false)} - description="Apakah Anda yakin ingin - menambah data?" + description="Apakah Anda yakin ingin menambah data?" onYes={(val) => { createDiscussion(val) }} /> ) diff --git a/src/module/discussion/ui/navbar_detail_discussion.tsx b/src/module/discussion/ui/navbar_detail_discussion.tsx index 31ec216..911899c 100644 --- a/src/module/discussion/ui/navbar_detail_discussion.tsx +++ b/src/module/discussion/ui/navbar_detail_discussion.tsx @@ -1,14 +1,16 @@ 'use client' -import { LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global"; +import { globalRole, LayoutDrawer, LayoutNavbarNew, WARNA } from "@/module/_global"; import { ActionIcon } from "@mantine/core"; import { useState } from "react"; import { HiMenu } from "react-icons/hi"; import DrawerDetailDiscussion from "./drawer_detail_discussion"; import { useParams } from "next/navigation"; +import { useHookstate } from "@hookstate/core"; export default function NavbarDetailDiscussion({id, status, idDivision}: {id: string, status: number, idDivision:string}) { const [openDrawer, setOpenDrawer] = useState(false) const param = useParams<{ id: string }>() + const roleLogin = useHookstate(globalRole) return ( <>