import Wrapper from "@tensamin/user/wrapper"; import { Basic, Loading } from "./modals/basic"; import List from "@/features/conversation/list/body"; import { Sidebar as SidebarRoot, SidebarContent, SidebarFooter, useSidebar, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuGroup, Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, Input, DialogClose, Button, Label, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, } from "@methanium/ui"; import { isTauri } from "@tauri-apps/api/core"; import { useIsMobile } from "@methanium/ui"; import { MobileNavbar } from "./navbar"; import SidebarBox from "@tensamin/call/sidebarBox"; import { useShowMobileNavbar } from "@/routes/app/useShowMobileNavbar"; import { Ellipsis, Check } from "lucide-react"; import { useState } from "react"; import type { User } from "@tensamin/user/context"; import type z from "zod"; import { mtp } from "@tensamin/shared/data"; import { useMTP } from "@tensamin/mtp"; type OnlineStatus = z.infer; const onlineStatusLabels: Record = { user_online: "Online", user_offline: "Offline", user_dnd: "Do not disturb", user_idle: "Idle", user_wc: "Away", user_borked: "Borked", iota_offline: "Iota offline", iota_online: "Iota online", iota_borked: "Iota borked", }; function StatusDialog({ user, open, onOpenChange, send, draftStatus, setDraftStatus, draftOnlineStatus, setDraftOnlineStatus, errorMessage, setErrorMessage, saveSucceeded, setSaveSucceeded, }: { user: User; open: boolean; onOpenChange: (open: boolean) => void; send: ReturnType["send"]; draftStatus: string; setDraftStatus: (value: string) => void; draftOnlineStatus: OnlineStatus; setDraftOnlineStatus: (value: OnlineStatus) => void; errorMessage: string; setErrorMessage: (value: string) => void; saveSucceeded: boolean; setSaveSucceeded: (value: boolean) => void; }) { return ( { if (!nextOpen) { setDraftStatus(user.Status ?? ""); setDraftOnlineStatus(user.OnlineStatus); setErrorMessage(""); setSaveSucceeded(false); } onOpenChange(nextOpen); }} > Update Status
{ setSaveSucceeded(false); setErrorMessage(""); setDraftStatus(e.target.value); }} />
{errorMessage && (

{errorMessage}

)} Cancel} />
); } export default function Sidebar() { const isMobile = useIsMobile(); const showMobileNavbar = useShowMobileNavbar(); const { openMobile, setOpenMobile } = useSidebar(); const [draftStatus, setDraftStatus] = useState(""); const [draftOnlineStatus, setDraftOnlineStatus] = useState("user_online"); const [dialogOpen, setDialogOpen] = useState(false); const [statusErrorMessage, setStatusErrorMessage] = useState(""); const [statusSaveSucceeded, setStatusSaveSucceeded] = useState(false); const { send } = useMTP(); const content = ( <>
} userId={"own"} component={(user) => ( <> } /> { setDraftStatus(user.Status ?? ""); setDraftOnlineStatus(user.OnlineStatus); setStatusErrorMessage(""); setStatusSaveSucceeded(false); setDialogOpen(true); }} > Set Status } /> { if (!nextOpen) { setDraftStatus(user.Status ?? ""); setDraftOnlineStatus(user.OnlineStatus); setStatusErrorMessage(""); setStatusSaveSucceeded(false); } setDialogOpen(nextOpen); }} send={send} draftStatus={draftStatus} setDraftStatus={setDraftStatus} draftOnlineStatus={draftOnlineStatus} setDraftOnlineStatus={setDraftOnlineStatus} errorMessage={statusErrorMessage} setErrorMessage={setStatusErrorMessage} saveSucceeded={statusSaveSucceeded} setSaveSucceeded={setStatusSaveSucceeded} /> )} />
{isMobile && !showMobileNavbar && ( )} {!isMobile && ( )} ); if (isMobile) { return ( <> {openMobile && (
setOpenMobile(false)} /> )}
{content}
); } return {content}; }