aboutsummaryrefslogtreecommitdiff
path: root/src/lib/stores/apollo.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/stores/apollo.ts')
-rw-r--r--src/lib/stores/apollo.ts84
1 files changed, 41 insertions, 43 deletions
diff --git a/src/lib/stores/apollo.ts b/src/lib/stores/apollo.ts
index 12463c3..4ef1986 100644
--- a/src/lib/stores/apollo.ts
+++ b/src/lib/stores/apollo.ts
@@ -10,55 +10,53 @@ import type { Readable } from 'svelte/store';
*/
type ApolloStoreConfiguration<Type> = {
- key: string,
- query: DocumentNode,
- initialValue?: Type | void
- variables?: object
+ key: string;
+ query: DocumentNode;
+ initialValue?: Type | void;
+ variables?: object;
};
type ApolloStoreState<Type> = {
- loading: boolean,
- data: Type | void,
- error: Error | void
+ loading: boolean;
+ data: Type | void;
+ error: Error | void;
};
-export const store = function store<Type>({ key, query, initialValue = null, variables = {} }: ApolloStoreConfiguration<Type>): Readable<ApolloStoreState<Type>> {
+export const store = function store<Type>({
+ key,
+ query,
+ initialValue = null,
+ variables = {}
+}: ApolloStoreConfiguration<Type>): Readable<ApolloStoreState<Type>> {
+ const initialState: ApolloStoreState<Type> = {
+ loading: true,
+ data: initialValue,
+ error: undefined
+ };
- const initialState: ApolloStoreState<Type> = {
- loading: true,
- data: initialValue,
- error: undefined
- };
+ return readable(initialState, (set) => {
+ const handleError = function (error: Error) {
+ return set({
+ loading: false,
+ data: initialValue,
+ error
+ });
+ };
- return readable(
- initialState,
- (set) => {
+ client.watchQuery({ query, variables }).subscribe(
+ (result: ApolloQueryResult<Type>) => {
+ if (result.errors) {
+ const error = new ApolloError({ graphQLErrors: result.errors });
+ return handleError(error);
+ }
- const handleError = function (error: Error) {
-
- return set({
- loading: false,
- data: initialValue,
- error
- });
- };
-
- client.watchQuery({ query, variables }).subscribe(
- (result: ApolloQueryResult<Type>) => {
-
- if (result.errors) {
- const error = new ApolloError({ graphQLErrors: result.errors });
- return handleError(error);
- }
-
- set({
- loading: false,
- data: result.data[key],
- error: undefined
- });
- },
- (error: Error) => handleError(error)
- );
- }
- );
+ set({
+ loading: false,
+ data: result.data[key],
+ error: undefined
+ });
+ },
+ (error: Error) => handleError(error)
+ );
+ });
};