Skip to content

Commit f5ede65

Browse files
Don't look up TargetId in notifyLocalViewChanges (#1607)
1 parent c0fcc09 commit f5ede65

File tree

7 files changed

+39
-37
lines changed

7 files changed

+39
-37
lines changed

Firestore/Example/Tests/Local/FSTLocalStoreTests.mm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -726,7 +726,7 @@ - (void)testPinsDocumentsInTheLocalView {
726726
FSTAssertContains(FSTTestDoc("foo/bar", 1, @{@"foo" : @"bar"}, NO));
727727
FSTAssertContains(FSTTestDoc("foo/baz", 0, @{@"foo" : @"baz"}, YES));
728728

729-
[self notifyLocalViewChanges:FSTTestViewChanges(query, @[ @"foo/bar", @"foo/baz" ], @[])];
729+
[self notifyLocalViewChanges:FSTTestViewChanges(targetID, @[ @"foo/bar", @"foo/baz" ], @[])];
730730
FSTAssertContains(FSTTestDoc("foo/bar", 1, @{@"foo" : @"bar"}, NO));
731731
[self applyRemoteEvent:FSTTestUpdateRemoteEvent(FSTTestDoc("foo/bar", 1, @{@"foo" : @"bar"}, NO),
732732
@[], @[ @(targetID) ])];
@@ -738,7 +738,7 @@ - (void)testPinsDocumentsInTheLocalView {
738738
FSTAssertContains(FSTTestDoc("foo/bar", 1, @{@"foo" : @"bar"}, NO));
739739
FSTAssertContains(FSTTestDoc("foo/baz", 2, @{@"foo" : @"baz"}, NO));
740740

741-
[self notifyLocalViewChanges:FSTTestViewChanges(query, @[], @[ @"foo/bar", @"foo/baz" ])];
741+
[self notifyLocalViewChanges:FSTTestViewChanges(targetID, @[], @[ @"foo/bar", @"foo/baz" ])];
742742
[self.localStore releaseQuery:query];
743743

744744
FSTAssertNotContains(@"foo/bar");

Firestore/Example/Tests/Util/FSTHelpers.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ FSTRemoteEvent *FSTTestUpdateRemoteEventWithLimboTargets(FSTMaybeDocument *doc,
305305
NSArray<NSNumber *> *limboTargets);
306306

307307
/** Creates a test view changes. */
308-
FSTLocalViewChanges *FSTTestViewChanges(FSTQuery *query,
308+
FSTLocalViewChanges *FSTTestViewChanges(FSTTargetID targetID,
309309
NSArray<NSString *> *addedKeys,
310310
NSArray<NSString *> *removedKeys);
311311

Firestore/Example/Tests/Util/FSTHelpers.mm

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ - (nullable FSTQueryData *)queryDataForTarget:(FSTBoxedTargetID *)targetID {
445445
return [snapshotString dataUsingEncoding:NSUTF8StringEncoding];
446446
}
447447

448-
FSTLocalViewChanges *FSTTestViewChanges(FSTQuery *query,
448+
FSTLocalViewChanges *FSTTestViewChanges(FSTTargetID targetID,
449449
NSArray<NSString *> *addedKeys,
450450
NSArray<NSString *> *removedKeys) {
451451
DocumentKeySet added;
@@ -456,9 +456,9 @@ - (nullable FSTQueryData *)queryDataForTarget:(FSTBoxedTargetID *)targetID {
456456
for (NSString *keyPath in removedKeys) {
457457
removed = removed.insert(testutil::Key(util::MakeStringView(keyPath)));
458458
}
459-
return [FSTLocalViewChanges changesForQuery:query
460-
addedKeys:std::move(added)
461-
removedKeys:std::move(removed)];
459+
return [FSTLocalViewChanges changesForTarget:targetID
460+
addedKeys:std::move(added)
461+
removedKeys:std::move(removed)];
462462
}
463463

464464
NS_ASSUME_NONNULL_END

Firestore/Source/Core/FSTSyncEngine.mm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -490,7 +490,8 @@ - (void)emitNewSnapshotsWithChanges:(FSTMaybeDocumentDictionary *)changes
490490
if (viewChange.snapshot) {
491491
[newSnapshots addObject:viewChange.snapshot];
492492
FSTLocalViewChanges *docChanges =
493-
[FSTLocalViewChanges changesForViewSnapshot:viewChange.snapshot];
493+
[FSTLocalViewChanges changesForViewSnapshot:viewChange.snapshot
494+
withTargetID:queryView.targetID];
494495
[documentChangesInAllViews addObject:docChanges];
495496
}
496497
}];

Firestore/Source/Local/FSTLocalStore.mm

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -340,15 +340,12 @@ - (FSTMaybeDocumentDictionary *)applyRemoteEvent:(FSTRemoteEvent *)remoteEvent {
340340
- (void)notifyLocalViewChanges:(NSArray<FSTLocalViewChanges *> *)viewChanges {
341341
self.persistence.run("NotifyLocalViewChanges", [&]() {
342342
FSTReferenceSet *localViewReferences = self.localViewReferences;
343-
for (FSTLocalViewChanges *view in viewChanges) {
344-
FSTQueryData *queryData = [self.queryCache queryDataForQuery:view.query];
345-
HARD_ASSERT(queryData, "Local view changes contain unallocated query.");
346-
FSTTargetID targetID = queryData.targetID;
347-
for (const DocumentKey &key : view.removedKeys) {
343+
for (FSTLocalViewChanges *viewChange in viewChanges) {
344+
for (const DocumentKey &key : viewChange.removedKeys) {
348345
[self->_persistence.referenceDelegate removeReference:key];
349346
}
350-
[localViewReferences addReferencesToKeys:view.addedKeys forID:targetID];
351-
[localViewReferences removeReferencesToKeys:view.removedKeys forID:targetID];
347+
[localViewReferences addReferencesToKeys:viewChange.addedKeys forID:viewChange.targetID];
348+
[localViewReferences removeReferencesToKeys:viewChange.removedKeys forID:viewChange.targetID];
352349
}
353350
});
354351
}

Firestore/Source/Local/FSTLocalViewChanges.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
#import <Foundation/Foundation.h>
1818

19+
#import "Firestore/Source/Core/FSTTypes.h"
20+
1921
#include "Firestore/core/src/firebase/firestore/model/document_key_set.h"
2022

2123
@class FSTDocumentSet;
@@ -33,15 +35,16 @@ NS_ASSUME_NONNULL_BEGIN
3335
*/
3436
@interface FSTLocalViewChanges : NSObject
3537

36-
+ (instancetype)changesForQuery:(FSTQuery *)query
37-
addedKeys:(firebase::firestore::model::DocumentKeySet)addedKeys
38-
removedKeys:(firebase::firestore::model::DocumentKeySet)removedKeys;
38+
+ (instancetype)changesForTarget:(FSTTargetID)targetID
39+
addedKeys:(firebase::firestore::model::DocumentKeySet)addedKeys
40+
removedKeys:(firebase::firestore::model::DocumentKeySet)removedKeys;
3941

40-
+ (instancetype)changesForViewSnapshot:(FSTViewSnapshot *)viewSnapshot;
42+
+ (instancetype)changesForViewSnapshot:(FSTViewSnapshot *)viewSnapshot
43+
withTargetID:(FSTTargetID)targetID;
4144

4245
- (id)init NS_UNAVAILABLE;
4346

44-
@property(nonatomic, strong, readonly) FSTQuery *query;
47+
@property(readonly) FSTTargetID targetID;
4548

4649
- (const firebase::firestore::model::DocumentKeySet &)addedKeys;
4750
- (const firebase::firestore::model::DocumentKeySet &)removedKeys;

Firestore/Source/Local/FSTLocalViewChanges.mm

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,18 @@
2626
NS_ASSUME_NONNULL_BEGIN
2727

2828
@interface FSTLocalViewChanges ()
29-
- (instancetype)initWithQuery:(FSTQuery *)query
30-
addedKeys:(DocumentKeySet)addedKeys
31-
removedKeys:(DocumentKeySet)removedKeys NS_DESIGNATED_INITIALIZER;
29+
- (instancetype)initWithTarget:(FSTTargetID)targetID
30+
addedKeys:(DocumentKeySet)addedKeys
31+
removedKeys:(DocumentKeySet)removedKeys NS_DESIGNATED_INITIALIZER;
3232
@end
3333

3434
@implementation FSTLocalViewChanges {
3535
DocumentKeySet _addedKeys;
3636
DocumentKeySet _removedKeys;
3737
}
3838

39-
+ (instancetype)changesForViewSnapshot:(FSTViewSnapshot *)viewSnapshot {
39+
+ (instancetype)changesForViewSnapshot:(FSTViewSnapshot *)viewSnapshot
40+
withTargetID:(FSTTargetID)targetID {
4041
DocumentKeySet addedKeys;
4142
DocumentKeySet removedKeys;
4243

@@ -56,25 +57,25 @@ + (instancetype)changesForViewSnapshot:(FSTViewSnapshot *)viewSnapshot {
5657
}
5758
}
5859

59-
return [self changesForQuery:viewSnapshot.query
60-
addedKeys:std::move(addedKeys)
61-
removedKeys:std::move(removedKeys)];
60+
return [self changesForTarget:targetID
61+
addedKeys:std::move(addedKeys)
62+
removedKeys:std::move(removedKeys)];
6263
}
6364

64-
+ (instancetype)changesForQuery:(FSTQuery *)query
65-
addedKeys:(DocumentKeySet)addedKeys
66-
removedKeys:(DocumentKeySet)removedKeys {
67-
return [[FSTLocalViewChanges alloc] initWithQuery:query
68-
addedKeys:std::move(addedKeys)
69-
removedKeys:std::move(removedKeys)];
65+
+ (instancetype)changesForTarget:(FSTTargetID)targetID
66+
addedKeys:(DocumentKeySet)addedKeys
67+
removedKeys:(DocumentKeySet)removedKeys {
68+
return [[FSTLocalViewChanges alloc] initWithTarget:targetID
69+
addedKeys:std::move(addedKeys)
70+
removedKeys:std::move(removedKeys)];
7071
}
7172

72-
- (instancetype)initWithQuery:(FSTQuery *)query
73-
addedKeys:(DocumentKeySet)addedKeys
74-
removedKeys:(DocumentKeySet)removedKeys {
73+
- (instancetype)initWithTarget:(FSTTargetID)targetID
74+
addedKeys:(DocumentKeySet)addedKeys
75+
removedKeys:(DocumentKeySet)removedKeys {
7576
self = [super init];
7677
if (self) {
77-
_query = query;
78+
_targetID = targetID;
7879
_addedKeys = std::move(addedKeys);
7980
_removedKeys = std::move(removedKeys);
8081
}

0 commit comments

Comments
 (0)