From fcf2e2a64fa3770c1c3c3dcfcea25168ed18e7fe Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Fri, 7 Feb 2020 14:55:25 -0500 Subject: [PATCH] Support delivering initial cache.watch results immediately, if requested. I needed this functionality for some tests of cache.modify, but I think I can expand it into a version of cache.watch that returns an async iterator if you do not supply a callback. --- src/cache/core/types/Cache.ts | 1 + src/cache/inmemory/inMemoryCache.ts | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cache/core/types/Cache.ts b/src/cache/core/types/Cache.ts index 911e15c2d66..596a4cd5ceb 100644 --- a/src/cache/core/types/Cache.ts +++ b/src/cache/core/types/Cache.ts @@ -21,6 +21,7 @@ export namespace Cache { } export interface WatchOptions extends ReadOptions { + immediate?: boolean; callback: WatchCallback; } diff --git a/src/cache/inmemory/inMemoryCache.ts b/src/cache/inmemory/inMemoryCache.ts index bb5016247fc..5a55cc2eeb8 100644 --- a/src/cache/inmemory/inMemoryCache.ts +++ b/src/cache/inmemory/inMemoryCache.ts @@ -165,7 +165,9 @@ export class InMemoryCache extends ApolloCache { public watch(watch: Cache.WatchOptions): () => void { this.watches.add(watch); - + if (watch.immediate) { + this.maybeBroadcastWatch(watch); + } return () => { this.watches.delete(watch); };