aboutsummaryrefslogtreecommitdiff
path: root/src/lib/stores/response_builder.ts
diff options
context:
space:
mode:
authorRuben Beltran del Rio <ruben@unlimited.pizza>2022-05-31 01:04:10 +0200
committerRuben Beltran del Rio <ruben@unlimited.pizza>2022-05-31 01:04:10 +0200
commit852ee620f0a2f6a83cf83eba860ca951b66bb7e2 (patch)
tree3b1db871625c89f08c3c6422c135f84ec116943b /src/lib/stores/response_builder.ts
parentd2cd7f1b4c318ac8587ab3dc1dec4a44b6d592fe (diff)
Use supabase
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
+ };
+}