diff --git a/web/interfaces/application-state.ts b/web/interfaces/application-state.ts index da6c78532..96e9f6838 100644 --- a/web/interfaces/application-state.ts +++ b/web/interfaces/application-state.ts @@ -1,17 +1,53 @@ export enum AppState { - AppLoading, - ChatLoading, - Loading, + Loading, // Initial loading state as config + status is loading. + Online, // Stream is active. + Offline, // Stream is not active. + OfflineWaiting, // Period of time after going offline chat is still available. + Banned, // Certain features are disabled for this single user. } export enum ChatVisibilityState { - Hidden, // The chat is available but the user has hidden it - Visible, // The chat is available and visible + Hidden, // The chat components are not available to the user. + Visible, // The chat components are not available to the user visually. } export enum ChatState { - Available, // Normal state - NotAvailable, // Chat features are not available - Loading, // Chat is connecting and loading history - Offline, // Chat is offline/disconnected for some reason + Available, // Normal state. Chat can be visible and used. + NotAvailable, // Chat features are not available. + Loading, // Chat is connecting and loading history. + Offline, // Chat is offline/disconnected for some reason but is visible. +} + +export function getChatState(state: AppState): ChatState { + switch (state) { + case AppState.Loading: + return ChatState.NotAvailable; + case AppState.Banned: + return ChatState.NotAvailable; + case AppState.Online: + return ChatState.Available; + case AppState.Offline: + return ChatState.NotAvailable; + case AppState.OfflineWaiting: + return ChatState.Available; + default: + return ChatState.Offline; + } +} + +export function getChatVisibilityState(state: AppState): ChatVisibilityState { + switch (state) { + case AppState.Loading: + return ChatVisibilityState.Hidden; + case AppState.Banned: + return ChatVisibilityState.Hidden; + case AppState.Online: + return ChatVisibilityState.Visible; + case AppState.Offline: + return ChatVisibilityState.Hidden; + case AppState.OfflineWaiting: + return ChatVisibilityState.Visible; + default: + return ChatVisibilityState.Hidden; + } }