From 0955410ea66f5940c9664ab6e239edfffbe2b295 Mon Sep 17 00:00:00 2001 From: Brandon Fancher Date: Tue, 8 Oct 2024 20:10:53 +0000 Subject: [PATCH] Archive/unarchive UI tweaks. --- .../ui/src/components/mail-display.tsx | 78 +++++++++++++++---- .../Chainmail/ui/src/components/mail-list.tsx | 26 ------- 2 files changed, 63 insertions(+), 41 deletions(-) diff --git a/services/user/Chainmail/ui/src/components/mail-display.tsx b/services/user/Chainmail/ui/src/components/mail-display.tsx index 8806ee172..eadfa700d 100644 --- a/services/user/Chainmail/ui/src/components/mail-display.tsx +++ b/services/user/Chainmail/ui/src/components/mail-display.tsx @@ -4,14 +4,16 @@ import { useEffect, useRef } from "react"; import { MilkdownProvider, useInstance } from "@milkdown/react"; import { ProsemirrorAdapterProvider } from "@prosemirror-adapter/react"; import { format } from "date-fns"; -import { Trash2 } from "lucide-react"; +import { Archive, ArchiveRestore, Trash2 } from "lucide-react"; import { replaceAll } from "@milkdown/utils"; +import { toast } from "sonner"; import { Avatar, AvatarFallback, AvatarImage } from "@shadcn/avatar"; import { Button } from "@shadcn/button"; import { Separator } from "@shadcn/separator"; import { Tooltip, TooltipContent, TooltipTrigger } from "@shadcn/tooltip"; import { ScrollArea } from "@shadcn/scroll-area"; +import { Dialog } from "@shadcn/dialog"; import { ComposeDialog, @@ -21,8 +23,7 @@ import { ReplyDialogTriggerIconWithTooltip, } from "@components"; import { Message, useDraftMessages, useIncomingMessages } from "@hooks"; - -import { Dialog } from "@shadcn/dialog"; +import { getSupervisor } from "@lib/supervisor"; export function MailDisplay({ message, @@ -91,33 +92,80 @@ const ActionBar = ({ deleteDraftById, } = useDraftMessages(); - const onDelete = () => { - if (mailbox === "inbox") { - setInboxMessageId(""); - } else if (mailbox === "drafts") { - setDraftMessageId(""); - if (!selectedDraftMessage?.id) return; - deleteDraftById(selectedDraftMessage.id); - } + const onArchive = async (itemId: string) => { + let id = parseInt(itemId); + const supervisor = await getSupervisor(); + // TODO: Improve error detection. This promise resolves with success before the transaction is pushed. + await supervisor.functionCall({ + service: "chainmail", + intf: "api", + method: "archive", + params: [id], + }); + setInboxMessageId(""); + toast.success("Your message has been archived"); + }; + + const onUnArchive = (itemId: string) => { + toast.error("Not implemented"); + }; + + const onDeleteDraft = () => { + setDraftMessageId(""); + if (!selectedDraftMessage?.id) return; + deleteDraftById(selectedDraftMessage.id); + toast.success("Your draft has been deleted"); }; return (
- {mailbox !== "sent" ? ( + {mailbox === "inbox" ? ( + + + + + Archive message + + ) : null} + {mailbox === "archived" ? ( + + + + + Move to inbox + + ) : null} + {mailbox === "drafts" ? ( - Move to trash + Delete draft ) : null}
diff --git a/services/user/Chainmail/ui/src/components/mail-list.tsx b/services/user/Chainmail/ui/src/components/mail-list.tsx index e09a5705b..6e0431c50 100644 --- a/services/user/Chainmail/ui/src/components/mail-list.tsx +++ b/services/user/Chainmail/ui/src/components/mail-list.tsx @@ -5,11 +5,7 @@ import { formatDistanceToNow } from "date-fns"; import { cn } from "@lib/utils"; import { ScrollArea } from "@shadcn/scroll-area"; import { Tooltip, TooltipContent, TooltipTrigger } from "@shadcn/tooltip"; -import { Archive } from "lucide-react"; -import { Button } from "@shadcn/button"; import { type Message } from "@hooks"; -import { toast } from "sonner"; -import { getSupervisor } from "@lib/supervisor"; interface SharedProps { mailbox: Mailbox; @@ -21,20 +17,6 @@ interface MailListProps extends SharedProps { messages: Message[]; } -const onArchive = async (itemId: string) => { - console.info(`onArchive.top(itemid[${itemId}])`); - let id = parseInt(itemId); - const supervisor = await getSupervisor(); - // TODO: Improve error detection. This promise resolves with success before the transaction is pushed. - await supervisor.functionCall({ - service: "chainmail", - intf: "api", - method: "archive", - params: [id], - }); - toast.success("Your message has been archived"); -}; - export function MailList({ mailbox, messages, @@ -103,14 +85,6 @@ const MailItem = ({ )} */}
-