From 03fffc984965d1f49dcbab6f13acff4f49f695d3 Mon Sep 17 00:00:00 2001 From: Lea Date: Fri, 11 Aug 2023 19:38:46 +0200 Subject: [PATCH] feat: object notes --- app/panel/inspect/account/[id]/page.tsx | 2 + app/panel/inspect/channel/[id]/page.tsx | 3 + app/panel/inspect/message/[id]/page.tsx | 3 + app/panel/inspect/server/[id]/page.tsx | 2 + app/panel/inspect/user/[id]/page.tsx | 2 + app/panel/page.tsx | 6 +- components/cards/SafetyNotesCard.tsx | 89 +++++++++++++++++++++++++ lib/accessPermissions.ts | 21 +++++- lib/db.ts | 37 ++++++++++ 9 files changed, 162 insertions(+), 3 deletions(-) create mode 100644 components/cards/SafetyNotesCard.tsx diff --git a/app/panel/inspect/account/[id]/page.tsx b/app/panel/inspect/account/[id]/page.tsx index 5c4e189..3bcde3a 100644 --- a/app/panel/inspect/account/[id]/page.tsx +++ b/app/panel/inspect/account/[id]/page.tsx @@ -24,6 +24,7 @@ import { User } from "revolt-api"; import { decodeTime } from "ulid"; import relativeTime from "dayjs/plugin/relativeTime"; +import SafetyNotesCard from "@/components/cards/SafetyNotesCard"; dayjs.extend(relativeTime); export default async function User({ @@ -43,6 +44,7 @@ export default async function User({ {user && } + diff --git a/app/panel/inspect/channel/[id]/page.tsx b/app/panel/inspect/channel/[id]/page.tsx index 4229cd7..50a4ee0 100644 --- a/app/panel/inspect/channel/[id]/page.tsx +++ b/app/panel/inspect/channel/[id]/page.tsx @@ -1,5 +1,6 @@ import { ChannelCard } from "@/components/cards/ChannelCard"; import { JsonCard } from "@/components/cards/JsonCard"; +import SafetyNotesCard from "@/components/cards/SafetyNotesCard"; import { ServerCard } from "@/components/cards/ServerCard"; import { UserCard } from "@/components/cards/UserCard"; import { NavigationToolbar } from "@/components/common/NavigationToolbar"; @@ -34,6 +35,8 @@ export default async function Message({ params }: { params: { id: string } }) { )} + + {participants.length ? ( <> diff --git a/app/panel/inspect/message/[id]/page.tsx b/app/panel/inspect/message/[id]/page.tsx index b9b8702..d4b8ab2 100644 --- a/app/panel/inspect/message/[id]/page.tsx +++ b/app/panel/inspect/message/[id]/page.tsx @@ -1,5 +1,6 @@ import { ChannelCard } from "@/components/cards/ChannelCard"; import { JsonCard } from "@/components/cards/JsonCard"; +import SafetyNotesCard from "@/components/cards/SafetyNotesCard"; import { UserCard } from "@/components/cards/UserCard"; import { NavigationToolbar } from "@/components/common/NavigationToolbar"; import { Card, CardHeader } from "@/components/ui/card"; @@ -28,6 +29,8 @@ export default async function Message({ + + {author && ( diff --git a/app/panel/inspect/server/[id]/page.tsx b/app/panel/inspect/server/[id]/page.tsx index 41d6cd3..2f10bab 100644 --- a/app/panel/inspect/server/[id]/page.tsx +++ b/app/panel/inspect/server/[id]/page.tsx @@ -1,4 +1,5 @@ import { JsonCard } from "@/components/cards/JsonCard"; +import SafetyNotesCard from "@/components/cards/SafetyNotesCard"; import { ServerCard } from "@/components/cards/ServerCard"; import { UserCard } from "@/components/cards/UserCard"; import { NavigationToolbar } from "@/components/common/NavigationToolbar"; @@ -21,6 +22,7 @@ export default async function Server({ params }: { params: { id: string } }) { Inspecting Server + {server.description && ( diff --git a/app/panel/inspect/user/[id]/page.tsx b/app/panel/inspect/user/[id]/page.tsx index 52a3f6a..1e88faa 100644 --- a/app/panel/inspect/user/[id]/page.tsx +++ b/app/panel/inspect/user/[id]/page.tsx @@ -1,4 +1,5 @@ import { JsonCard } from "@/components/cards/JsonCard"; +import SafetyNotesCard from "@/components/cards/SafetyNotesCard"; import { UserCard } from "@/components/cards/UserCard"; import { NavigationToolbar } from "@/components/common/NavigationToolbar"; import { RecentMessages } from "@/components/pages/inspector/RecentMessages"; @@ -76,6 +77,7 @@ export default async function User({ + {user.profile?.content && ( diff --git a/app/panel/page.tsx b/app/panel/page.tsx index fa1735a..8160e4b 100644 --- a/app/panel/page.tsx +++ b/app/panel/page.tsx @@ -1,3 +1,7 @@ +import SafetyNotesCard from "@/components/cards/SafetyNotesCard"; + export default function Home() { - return
this is the admin panel ever
; + return
+ +
; } diff --git a/components/cards/SafetyNotesCard.tsx b/components/cards/SafetyNotesCard.tsx new file mode 100644 index 0000000..93f842f --- /dev/null +++ b/components/cards/SafetyNotesCard.tsx @@ -0,0 +1,89 @@ +"use client" + +import { useEffect, useState } from "react"; +import { Textarea } from "../ui/textarea"; +import { toast } from "../ui/use-toast"; +import { SafetyNotes, fetchSafetyNote, updateSafetyNote } from "@/lib/db"; +import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "../ui/card"; +import { useSession } from "next-auth/react"; +import dayjs from "dayjs"; +import relativeTime from "dayjs/plugin/relativeTime"; +dayjs.extend(relativeTime); + +export default function SafetyNotesCard({ objectId, type, title }: { + objectId: string, + type: SafetyNotes["_id"]["type"], + title?: string +}) { + const session = useSession(); + const [draft, setDraft] = useState(""); + const [value, setValue] = useState(null); + const [ready, setReady] = useState(false); + const [error, setError] = useState(null); + + useEffect(() => { + fetchSafetyNote(objectId, type) + .then((note) => { + setDraft(note?.text || ""); + setValue(note); + setReady(true); + }) + .catch((e) => { + setError(String(e)); + }); + }, [objectId, type]); + + return ( + + + {title ?? type.charAt(0).toUpperCase() + type.slice(1) + " notes"} + + +