Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -25,5 +25,5 @@
- (instancetype)initWithManagedObjectContext:(NSManagedObjectContext *)context changeTrackers:(NSArray *)changeTrackers;

- (void)fetchObjectsForChangeTrackers;

- (void)addChangeTrackers:(NSArray *)changeTrackers;
@end
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,15 @@ - (NSEntityDescription *)entityForEntityName:(NSString *)name;
return entity;
}

- (void)fetchObjectsForChangeTrackers
{
NSArray *fetchRequests = [self.changeTrackers mapWithBlock:^id(id tracker) {
- (void)fetchObjectsForChangeTrackers:(NSArray*)trackers {
NSArray *fetchRequests = [trackers mapWithBlock:^id(id tracker) {
return [tracker fetchRequestForTrackedObjects];
}];

NSMapTable *entityToRequestMap = [self sortFetchRequestsByEntity:fetchRequests];
NSMapTable *entityToResultsMap = [self executeMappedFetchRequests:entityToRequestMap];

for (id <ZMContextChangeTracker> tracker in self.changeTrackers) {
for (id <ZMContextChangeTracker> tracker in trackers) {
NSFetchRequest *request = [tracker fetchRequestForTrackedObjects];
if (request == nil) {
continue;
Expand All @@ -84,6 +83,20 @@ - (void)fetchObjectsForChangeTrackers
}
}

- (void)fetchObjectsForChangeTrackers
{
[self fetchObjectsForChangeTrackers:self.changeTrackers];
}

- (void)addChangeTrackers:(NSArray *)changeTrackers
{
[self fetchObjectsForChangeTrackers:changeTrackers];

NSMutableArray* allTrackers = changeTrackers.mutableCopy;
[allTrackers addObjectsFromArray:changeTrackers];
self.changeTrackers = allTrackers;
}

- (NSMapTable *)sortFetchRequestsByEntity:(NSArray *)fetchRequests;
{
NSMapTable *requestsMap = [NSMapTable strongToStrongObjectsMapTable];
Expand Down
22 changes: 12 additions & 10 deletions wire-ios-sync-engine/Source/Synchronization/StrategyDirectory.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
var eventAsyncConsumers: [ZMEventAsyncConsumer] { get }
var requestStrategies: [RequestStrategy] { get }
var contextChangeTrackers: [ZMContextChangeTracker] { get }
var clientContextChangeTrackers: [ZMContextChangeTracker] { get }

}

Expand All @@ -40,6 +41,7 @@
public private(set) var eventConsumers: [ZMEventConsumer]
public private(set) var eventAsyncConsumers: [ZMEventAsyncConsumer]
public private(set) var contextChangeTrackers: [ZMContextChangeTracker]
public private(set) var clientContextChangeTrackers: [ZMContextChangeTracker] = []
public private(set) var initiateResetMLSConversationUseCaseFactory: (NSManagedObjectContext) -> WireRequestStrategy
.InitiateResetMLSConversationUseCaseProtocol

Expand Down Expand Up @@ -389,7 +391,7 @@
SelfSupportedProtocolsRequestStrategy(
context: syncMOC,
applicationStatus: applicationStatusDirectory,
syncProgress: applicationStatusDirectory.syncStatus,

Check warning on line 394 in wire-ios-sync-engine/Source/Synchronization/StrategyDirectory.swift

View workflow job for this annotation

GitHub Actions / Test Results

'SelfUserProvider' is deprecated: Use UserRepository instead

'SelfUserProvider' is deprecated: Use UserRepository instead

Check warning on line 394 in wire-ios-sync-engine/Source/Synchronization/StrategyDirectory.swift

View workflow job for this annotation

GitHub Actions / Test Results

'SelfUserProvider' is deprecated: Use UserRepository instead

'SelfUserProvider' is deprecated: Use UserRepository instead
selfUserProvider: WireDomain.SelfUserProvider(context: syncMOC)
),
EvaluateOneOnOneConversationsStrategy(
Expand Down Expand Up @@ -472,16 +474,16 @@
self.requestStrategies.append(contentsOf: strategies.compactMap { $0 as? RequestStrategy })
self.eventConsumers.append(contentsOf: strategies.compactMap { $0 as? ZMEventConsumer })
self.eventAsyncConsumers.append(contentsOf: strategies.compactMap { $0 as? ZMEventAsyncConsumer })
self.contextChangeTrackers
.append(contentsOf: strategies.flatMap { (object: Any) -> [ZMContextChangeTracker] in
if let source = object as? ZMContextChangeTrackerSource {
return source.contextChangeTrackers
} else if let tracker = object as? ZMContextChangeTracker {
return [tracker]
} else {
return []
}
})
self.clientContextChangeTrackers = strategies.flatMap { (object: Any) -> [ZMContextChangeTracker] in
if let source = object as? ZMContextChangeTrackerSource {
return source.contextChangeTrackers
} else if let tracker = object as? ZMContextChangeTracker {
return [tracker]
} else {
return []
}
}
self.contextChangeTrackers.append(contentsOf: clientContextChangeTrackers)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
eventProcessingTracker:(id<EventProcessingTrackerProtocol> _Nonnull)eventProcessingTracker;

- (void)tearDown;
- (void)updateStrategyClientContextChangeTrackers;

@property (nonatomic, readonly, nonnull) NSManagedObjectContext *syncMOC;
@property (nonatomic, nullable) id<EventProcessingTrackerProtocol> eventProcessingTracker;
Expand Down
7 changes: 7 additions & 0 deletions wire-ios-sync-engine/Source/Synchronization/ZMSyncStrategy.m
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,13 @@ - (void)appTerminated:(NSNotification *)note
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)updateStrategyClientContextChangeTrackers
{
[self.syncMOC performBlock:^{
[self.changeTrackerBootStrap addChangeTrackers:self.strategyDirectory.clientContextChangeTrackers];
}];
}

- (NSManagedObjectContext *)moc
{
return self.syncMOC;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -676,6 +676,7 @@ public final class ZMUserSession: NSObject {
incrementalSyncObserver: incrementalSyncObserver,
metadata: resolvedBackendMetadata
)
syncStrategy?.updateClientContextChangeTrackers()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import Foundation

@objcMembers
public class MockStrategyDirectory: NSObject, StrategyDirectoryProtocol {
public var clientContextChangeTrackers: [any ZMContextChangeTracker] = []

public var eventConsumers: [ZMEventConsumer] = []

Expand Down
Loading