diff options
author | Michael Lehenbauer <mikelehen@gmail.com> | 2018-01-10 10:46:09 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-10 10:46:09 -0800 |
commit | 90dedd3d024a2859d0cf514efbfc97e471891c18 (patch) | |
tree | a1096470f09686afd94cbb140335c31366038fc5 /Firestore/Source/Core/FSTView.m | |
parent | 4dd07c6ea00d01fe1645b635fd4dfa2940b06de7 (diff) | |
parent | dc0b29e9cf7febe201a3845782655ec80d9e19f4 (diff) |
Merge pull request #639 from firebase/firestore-api-changes
Merge firestore-api-changes to master for next release.
Diffstat (limited to 'Firestore/Source/Core/FSTView.m')
-rw-r--r-- | Firestore/Source/Core/FSTView.m | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/Firestore/Source/Core/FSTView.m b/Firestore/Source/Core/FSTView.m index 9b44bf4..78019c6 100644 --- a/Firestore/Source/Core/FSTView.m +++ b/Firestore/Source/Core/FSTView.m @@ -94,6 +94,12 @@ NS_ASSUME_NONNULL_BEGIN return self.type == otherChange.type && [self.key isEqual:otherChange.key]; } +- (NSUInteger)hash { + NSUInteger hash = self.type; + hash = hash * 31u + [self.key hash]; + return hash; +} + @end #pragma mark - FSTViewChange @@ -330,6 +336,24 @@ static NSComparisonResult FSTCompareDocumentViewChangeTypes(FSTDocumentViewChang } } +- (FSTViewChange *)applyChangedOnlineState:(FSTOnlineState)onlineState { + if (self.isCurrent && onlineState == FSTOnlineStateFailed) { + // If we're offline, set `current` to NO and then call applyChanges to refresh our syncState + // and generate an FSTViewChange as appropriate. We are guaranteed to get a new FSTTargetChange + // that sets `current` back to YES once the client is back online. + self.current = NO; + return + [self applyChangesToDocuments:[[FSTViewDocumentChanges alloc] + initWithDocumentSet:self.documentSet + changeSet:[FSTDocumentViewChangeSet changeSet] + needsRefill:NO + mutatedKeys:self.mutatedKeys]]; + } else { + // No effect, just return a no-op FSTViewChange. + return [[FSTViewChange alloc] initWithSnapshot:nil limboChanges:@[]]; + } +} + #pragma mark - Private methods /** Returns whether the doc for the given key should be in limbo. */ |