import { removeCookie, setCookie } from "@workspace/ui/lib/cookies"; import { isBrowser } from "@workspace/ui/utils/index"; import { intlFormat } from "date-fns"; export function getPlatform(): string { if (typeof window === "undefined") return "unknown"; const userAgent = navigator.userAgent.toLowerCase(); if (userAgent.includes("win")) return "windows"; if (userAgent.includes("mac")) return "macos"; if (userAgent.includes("linux")) return "linux"; if (userAgent.includes("android")) return "android"; if (userAgent.includes("iphone") || userAgent.includes("ipad")) return "ios"; return "unknown"; } export function differenceInDays(date1: Date, date2: Date): number { const diffTime = Math.abs(date1.getTime() - date2.getTime()); const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); return diffDays; } export function formatDate(date?: Date | number, showTime = true) { if (!date) return; // Backend returns Unix timestamps in seconds; convert to milliseconds for JS Date // Unix timestamps (seconds): 10 digits e.g. 1771936457 // JavaScript timestamps (milliseconds): 13 digits let dateValue = date; if (typeof date === "number" && date < 10_000_000_000) { dateValue = date * 1000; } const timeZone = localStorage.getItem("timezone") || "UTC"; return intlFormat(dateValue, { year: "numeric", month: "numeric", day: "numeric", ...(showTime && { hour: "numeric", minute: "numeric", second: "numeric", }), hour12: false, timeZone, }); } export function setAuthorization(token: string): void { setCookie("Authorization", token); } export function getRedirectUrl(): string { if (typeof window === "undefined") return "/dashboard"; const params = new URLSearchParams(window.location.search); const redirect = params.get("redirect"); return redirect?.startsWith("/") ? redirect : "/dashboard"; } export function setRedirectUrl(value?: string) { if (value) { sessionStorage.setItem("redirect-url", value); } } export function Logout() { if (!isBrowser()) return; removeCookie("Authorization"); const pathname = location.pathname; const hash = location.hash.slice(1); if (!["", "/"].includes(pathname)) { setRedirectUrl(pathname); location.href = "/"; return; } if (hash && !["", "/"].includes(hash)) { setRedirectUrl(hash); location.href = "/"; } }