From eeb3155cfff3f886192138ad3d7baf196a6b19ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Wed, 4 Mar 2026 19:36:05 +0000 Subject: [PATCH] add useServerEnvironment hook with document title prefix Co-Authored-By: Claude Opus 4.6 --- src/apps/officer-web/App.tsx | 2 ++ src/workspaces/state/src/index.ts | 2 ++ .../state/src/useServerEnvironment.ts | 25 +++++++++++++++++++ 3 files changed, 29 insertions(+) create mode 100644 src/workspaces/state/src/useServerEnvironment.ts diff --git a/src/apps/officer-web/App.tsx b/src/apps/officer-web/App.tsx index 1630e4c5..191f9e21 100644 --- a/src/apps/officer-web/App.tsx +++ b/src/apps/officer-web/App.tsx @@ -3,11 +3,13 @@ import * as Authentication from './Screens/Authentication'; import * as Dashboard from './Screens/Dashboard'; import { useAuth } from 'hooks/useAuth'; import { useServerSettings } from 'state/useServerSettings'; +import { useServerEnvironment } from 'state/useServerEnvironment'; import { useInitialData } from '@/state/useInitialData'; export function App() { const { isLoading, isAuthenticated, user } = useAuth(); const { onboardingComplete, plugins, isLoading: isServerSettingsLoading } = useServerSettings(); + useServerEnvironment(); useInitialData(); if (isLoading || isServerSettingsLoading) return null; diff --git a/src/workspaces/state/src/index.ts b/src/workspaces/state/src/index.ts index d2c96238..1267b224 100644 --- a/src/workspaces/state/src/index.ts +++ b/src/workspaces/state/src/index.ts @@ -16,3 +16,5 @@ export type { UseChatSessionsType } from './useChatSessions'; export { useChatGroups } from './useChatGroups'; export { useUserApps } from './useUserApps'; export type { AppManifest } from './useUserApps'; +export { useServerEnvironment } from './useServerEnvironment'; +export type { ServerEnvironment } from './useServerEnvironment'; diff --git a/src/workspaces/state/src/useServerEnvironment.ts b/src/workspaces/state/src/useServerEnvironment.ts new file mode 100644 index 00000000..cc8c6b72 --- /dev/null +++ b/src/workspaces/state/src/useServerEnvironment.ts @@ -0,0 +1,25 @@ +import { useGlobal } from 'hooks/useGlobal'; + +export type ServerEnvironment = 'dev' | 'alpha' | 'edge' | 'production'; + +function detectEnvironment(): ServerEnvironment { + const host = window.location.host; + if (host === 'officer.dev' || host === 'www.officer.dev') return 'production'; + if (host.startsWith('edge.')) return 'edge'; + if (host.startsWith('alpha.')) return 'alpha'; + return 'dev'; +} + +const env = detectEnvironment(); + +if (env !== 'production') { + const prefix = env.toUpperCase(); + if (!document.title.startsWith(prefix)) { + document.title = `${prefix} | ${document.title}`; + } +} + +export const useServerEnvironment = () => { + const [environment] = useGlobal('SERVER_ENVIRONMENT', env); + return environment; +};