Signal-Desktop/ts/util/loadable.ts

16 lines
370 B
TypeScript

// 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;
}
| { loadingState: LoadingState.Loaded; value: ValueT }
| { loadingState: LoadingState.LoadFailed; error: ErrorT };