diff --git a/examples/vue-client/src/App.vue b/examples/vue-client/src/App.vue index c7658c5..818150d 100644 --- a/examples/vue-client/src/App.vue +++ b/examples/vue-client/src/App.vue @@ -3,6 +3,8 @@ + +
List Original
@@ -36,17 +38,23 @@ const todoState = useTodoState() const todoDubplicateState = useTodoState() const counter = ref(1) + const find = () => todoState.find() + const findMars = () => + todoState.find({ filter: { title: { contains: 'Mars' } } }) onMounted(async () => { const isReplicating = await todoModel.startReplication() console.log({ isReplicating }) todoState.find() }) - const addTodo = async (arg?: { standalone?: boolean }) => { + const addTodo = async (arg?: { + standalone?: boolean + title?: string + }) => { const todo: CreateTodoInput = { _version: 1, _lastUpdatedAt: Date.now().toString(), - title: `New todo ${counter.value}`, + title: `${arg?.title ?? 'New todo'} ${counter.value}`, } counter.value++ if (arg?.standalone) { @@ -59,7 +67,7 @@ }) } } - const addTodoModel = () => addTodo({ standalone: true }) + const addTodoModel = () => addTodo({ standalone: true, title: 'Mars' }) const removeTodo = async (todo: Todo) => { await todoState.remove({ input: { @@ -72,6 +80,8 @@ addTodo, addTodoModel, removeTodo, + find, + findMars, todoList: todoState.list, todoDuplicateList: todoDubplicateState.list, } diff --git a/packages/cactus-sync-client/lib/src/abstract/ApolloRunner.ts b/packages/cactus-sync-client/lib/src/abstract/ApolloRunner.ts index 02ed6d5..40c556e 100644 --- a/packages/cactus-sync-client/lib/src/abstract/ApolloRunner.ts +++ b/packages/cactus-sync-client/lib/src/abstract/ApolloRunner.ts @@ -1,6 +1,7 @@ import { ApolloClient, ApolloClientOptions, + FetchPolicy, FetchResult, ObservableSubscription, Observer, @@ -33,11 +34,13 @@ interface ApolloRunnerSubscribes extends ModelNameReplicationI { interface ApolloRunnerI { apollo: ApolloClient schema: GraphQLSchema + defaultFetchPolicy?: Maybe } interface ApolloRunnerInitI { db: Dexie options: ApolloClientOptions schema: GraphQLSchema + defaultFetchPolicy?: Maybe } export type ApolloSubscription = { @@ -62,9 +65,15 @@ export type ApolloSubscription = { export class ApolloRunner { schema: GraphQLSchema apollo: ApolloClient - constructor({ schema, apollo }: ApolloRunnerI) { + defaultFetchPolicy: FetchPolicy + constructor({ + schema, + apollo, + defaultFetchPolicy, + }: ApolloRunnerI) { this.apollo = apollo this.schema = schema + this.defaultFetchPolicy = defaultFetchPolicy ?? 'network-only' } static init({ options, @@ -93,6 +102,7 @@ export class ApolloRunner { return await this.apollo.query({ query: parse(query), variables: variableValues, + fetchPolicy: this.defaultFetchPolicy, }) } } diff --git a/packages/cactus-sync-client/lib/src/abstract/CactusSync.ts b/packages/cactus-sync-client/lib/src/abstract/CactusSync.ts index 2f16fe9..f1cf01e 100644 --- a/packages/cactus-sync-client/lib/src/abstract/CactusSync.ts +++ b/packages/cactus-sync-client/lib/src/abstract/CactusSync.ts @@ -1,6 +1,7 @@ import { ApolloClientOptions, ApolloQueryResult, + FetchPolicy, FetchResult, OperationVariables, } from '@apollo/client/core' @@ -25,6 +26,7 @@ interface CactusSyncI { interface CactusSyncInitI extends CactusSyncI { schema: GraphQLSchema apolloOptions: ApolloClientOptions + defaultFetchPolicy?: Maybe } /** * Function type to run after CactusSync(Dexie) change @@ -79,6 +81,7 @@ export class CactusSync extends Dexie { dbVersion, apolloOptions, schema, + defaultFetchPolicy, }: CactusSyncInitI) { super(dbName ?? 'cactusSyncDb', dexieOptions ?? undefined) const db = this @@ -89,6 +92,7 @@ export class CactusSync extends Dexie { db: db, options: apolloOptions, schema, + defaultFetchPolicy, }) } /**