Browse Source

Add some state logic based on enums

pull/1893/head
Gabe Kangas 3 years ago
parent
commit
457dead455
No known key found for this signature in database
GPG Key ID: 9A56337728BC81EA
  1. 54
      web/interfaces/application-state.ts

54
web/interfaces/application-state.ts

@ -1,17 +1,53 @@ @@ -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;
}
}

Loading…
Cancel
Save