aboutsummaryrefslogtreecommitdiff
path: root/src/lib/stores/response_builder.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/stores/response_builder.ts')
-rw-r--r--src/lib/stores/response_builder.ts37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/lib/stores/response_builder.ts b/src/lib/stores/response_builder.ts
new file mode 100644
index 0000000..1e12243
--- /dev/null
+++ b/src/lib/stores/response_builder.ts
@@ -0,0 +1,37 @@
+/**
+ * Utilities to build responses
+ */
+
+interface AnyError {
+ message: string
+};
+
+export type StoreState<Type> = {
+ loading: boolean;
+ data: Type | void;
+ error: AnyError | void;
+};
+
+export function initialResponse<T> (initialState: T): StoreState<T> {
+ return {
+ loading: true,
+ data: initialState,
+ error: undefined
+ };
+}
+
+export function errorResponse<T> (error: AnyError): StoreState<T> {
+ return {
+ loading: false,
+ data: undefined,
+ error
+ };
+}
+
+export function response<T> (data: T): StoreState<T> {
+ return {
+ loading: false,
+ data,
+ error: undefined
+ };
+}