2021-12-16 09:02:22 -06:00
|
|
|
// Copyright 2021 Signal Messenger, LLC
|
|
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
|
|
|
export enum LoadingState {
|
|
|
|
Loading,
|
|
|
|
Loaded,
|
|
|
|
LoadFailed,
|
|
|
|
}
|
|
|
|
|
|
|
|
export type Loadable<ValueT, ErrorT = unknown> =
|
|
|
|
| {
|
|
|
|
loadingState: LoadingState.Loading;
|
2025-03-26 12:35:32 -07:00
|
|
|
value?: never;
|
|
|
|
error?: never;
|
2021-12-16 09:02:22 -06:00
|
|
|
}
|
2025-03-26 12:35:32 -07:00
|
|
|
| { loadingState: LoadingState.Loaded; value: ValueT; error?: never }
|
|
|
|
| { loadingState: LoadingState.LoadFailed; value?: never; error: ErrorT };
|