diff --git a/apps/web/src/components/sidebar.test.tsx b/apps/web/src/components/sidebar.test.tsx deleted file mode 100644 index 7527664..0000000 --- a/apps/web/src/components/sidebar.test.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { describe, expect, it } from "vitest"; - -import { mtp } from "@tensamin/shared/data"; -import { onlineStatusOptions } from "./status-options"; - -describe("sidebar status requests", () => { - it.each(onlineStatusOptions)("sends $label as $value", ({ value }) => { - expect(mtp.SetUserState.request.parse({ UserState: value })).toEqual({ - UserState: value, - }); - }); - - it("keeps status text on the profile operation", () => { - expect(mtp.ChangeUserData.request.parse({ Status: "At lunch" })).toEqual({ - Status: "At lunch", - }); - }); -}); diff --git a/apps/web/src/components/sidebar.tsx b/apps/web/src/components/sidebar.tsx index 7a7c58b..10baf34 100644 --- a/apps/web/src/components/sidebar.tsx +++ b/apps/web/src/components/sidebar.tsx @@ -36,19 +36,23 @@ import { useShowMobileNavbar } from "@/routes/app/useShowMobileNavbar"; import { Ellipsis, Check } from "lucide-react"; import { useState } from "react"; import type { User } from "@tensamin/user/context"; -import { mtp, userPresencePreferenceSchema } from "@tensamin/shared/data"; +import type z from "zod"; +import { mtp } from "@tensamin/shared/data"; import { useMTP } from "@tensamin/mtp"; -import { - onlineStatusLabels, - onlineStatusOptions, - type OnlineStatus, -} from "./status-options"; -function accountPreference(status: User["OnlineStatus"]): OnlineStatus { - return userPresencePreferenceSchema.safeParse(status).success - ? (status as OnlineStatus) - : "user_online"; -} +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, @@ -83,7 +87,7 @@ function StatusDialog({ onOpenChange={(nextOpen) => { if (!nextOpen) { setDraftStatus(user.Status ?? ""); - setDraftOnlineStatus(accountPreference(user.OnlineStatus)); + setDraftOnlineStatus(user.OnlineStatus); setErrorMessage(""); setSaveSucceeded(false); } @@ -122,11 +126,10 @@ function StatusDialog({ - {onlineStatusOptions.map((option) => ( - - {option.label} - - ))} + Online + Offline + Idle + Do not disturb @@ -137,9 +140,12 @@ function StatusDialog({ Cancel} />