Files
multica/apps/web/platform/client-os.ts
Multica Eve 216aee5629 [MUL-5125] Add daily Desktop/Web usage and runtime reporting (#5763)
* feat(analytics): add daily client usage reporting (MUL-5125)

Co-authored-by: multica-agent <github@multica.ai>

* fix(analytics): clarify daily usage semantics (MUL-5125)

Co-authored-by: multica-agent <github@multica.ai>

* fix(analytics): resolve usage review blockers (MUL-5125)

Co-authored-by: multica-agent <github@multica.ai>

---------

Co-authored-by: Eve <eve@multica-ai.local>
Co-authored-by: multica-agent <github@multica.ai>
2026-07-22 16:52:34 +08:00

25 lines
783 B
TypeScript

export type CoarseClientOS =
| "macos"
| "windows"
| "linux"
| "ios"
| "android"
| "chromeos"
| "unknown";
/** Maps browser hints to a coarse OS bucket without retaining the raw user agent. */
export function detectWebOS(
nav: Pick<Navigator, "platform" | "userAgent"> | undefined =
typeof navigator === "undefined" ? undefined : navigator,
): CoarseClientOS {
if (!nav) return "unknown";
const hint = `${nav.platform} ${nav.userAgent}`.toLowerCase();
if (/iphone|ipad|ipod/.test(hint)) return "ios";
if (hint.includes("android")) return "android";
if (hint.includes("cros")) return "chromeos";
if (/mac|darwin/.test(hint)) return "macos";
if (/win/.test(hint)) return "windows";
if (/linux|x11/.test(hint)) return "linux";
return "unknown";
}