Skip to content

Commit fa5bc8c

Browse files
authored
fix: send message - WPB-20880 (#3815)
1 parent bfa1b08 commit fa5bc8c

File tree

7 files changed

+40
-15
lines changed

7 files changed

+40
-15
lines changed

wire-ios-request-strategy/Sources/Object Syncs/Helpers/ZMChangeTrackerBootstrap.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,5 @@
2525
- (instancetype)initWithManagedObjectContext:(NSManagedObjectContext *)context changeTrackers:(NSArray *)changeTrackers;
2626

2727
- (void)fetchObjectsForChangeTrackers;
28-
28+
- (void)addChangeTrackers:(NSArray *)changeTrackers;
2929
@end

wire-ios-request-strategy/Sources/Object Syncs/Helpers/ZMChangeTrackerBootstrap.m

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,16 +55,15 @@ - (NSEntityDescription *)entityForEntityName:(NSString *)name;
5555
return entity;
5656
}
5757

58-
- (void)fetchObjectsForChangeTrackers
59-
{
60-
NSArray *fetchRequests = [self.changeTrackers mapWithBlock:^id(id tracker) {
58+
- (void)fetchObjectsForChangeTrackers:(NSArray*)trackers {
59+
NSArray *fetchRequests = [trackers mapWithBlock:^id(id tracker) {
6160
return [tracker fetchRequestForTrackedObjects];
6261
}];
6362

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

67-
for (id <ZMContextChangeTracker> tracker in self.changeTrackers) {
66+
for (id <ZMContextChangeTracker> tracker in trackers) {
6867
NSFetchRequest *request = [tracker fetchRequestForTrackedObjects];
6968
if (request == nil) {
7069
continue;
@@ -84,6 +83,20 @@ - (void)fetchObjectsForChangeTrackers
8483
}
8584
}
8685

86+
- (void)fetchObjectsForChangeTrackers
87+
{
88+
[self fetchObjectsForChangeTrackers:self.changeTrackers];
89+
}
90+
91+
- (void)addChangeTrackers:(NSArray *)changeTrackers
92+
{
93+
[self fetchObjectsForChangeTrackers:changeTrackers];
94+
95+
NSMutableArray* allTrackers = changeTrackers.mutableCopy;
96+
[allTrackers addObjectsFromArray:changeTrackers];
97+
self.changeTrackers = allTrackers;
98+
}
99+
87100
- (NSMapTable *)sortFetchRequestsByEntity:(NSArray *)fetchRequests;
88101
{
89102
NSMapTable *requestsMap = [NSMapTable strongToStrongObjectsMapTable];

wire-ios-sync-engine/Source/Synchronization/StrategyDirectory.swift

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public protocol StrategyDirectoryProtocol {
2929
var eventAsyncConsumers: [ZMEventAsyncConsumer] { get }
3030
var requestStrategies: [RequestStrategy] { get }
3131
var contextChangeTrackers: [ZMContextChangeTracker] { get }
32+
var clientContextChangeTrackers: [ZMContextChangeTracker] { get }
3233

3334
}
3435

@@ -40,6 +41,7 @@ public class StrategyDirectory: NSObject, StrategyDirectoryProtocol {
4041
public private(set) var eventConsumers: [ZMEventConsumer]
4142
public private(set) var eventAsyncConsumers: [ZMEventAsyncConsumer]
4243
public private(set) var contextChangeTrackers: [ZMContextChangeTracker]
44+
public private(set) var clientContextChangeTrackers: [ZMContextChangeTracker] = []
4345
public private(set) var initiateResetMLSConversationUseCaseFactory: (NSManagedObjectContext) -> WireRequestStrategy
4446
.InitiateResetMLSConversationUseCaseProtocol
4547

@@ -472,16 +474,16 @@ public class StrategyDirectory: NSObject, StrategyDirectoryProtocol {
472474
self.requestStrategies.append(contentsOf: strategies.compactMap { $0 as? RequestStrategy })
473475
self.eventConsumers.append(contentsOf: strategies.compactMap { $0 as? ZMEventConsumer })
474476
self.eventAsyncConsumers.append(contentsOf: strategies.compactMap { $0 as? ZMEventAsyncConsumer })
475-
self.contextChangeTrackers
476-
.append(contentsOf: strategies.flatMap { (object: Any) -> [ZMContextChangeTracker] in
477-
if let source = object as? ZMContextChangeTrackerSource {
478-
return source.contextChangeTrackers
479-
} else if let tracker = object as? ZMContextChangeTracker {
480-
return [tracker]
481-
} else {
482-
return []
483-
}
484-
})
477+
self.clientContextChangeTrackers = strategies.flatMap { (object: Any) -> [ZMContextChangeTracker] in
478+
if let source = object as? ZMContextChangeTrackerSource {
479+
return source.contextChangeTrackers
480+
} else if let tracker = object as? ZMContextChangeTracker {
481+
return [tracker]
482+
} else {
483+
return []
484+
}
485+
}
486+
self.contextChangeTrackers.append(contentsOf: clientContextChangeTrackers)
485487
}
486488
}
487489

wire-ios-sync-engine/Source/Synchronization/ZMSyncStrategy.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
eventProcessingTracker:(id<EventProcessingTrackerProtocol> _Nonnull)eventProcessingTracker;
4444

4545
- (void)tearDown;
46+
- (void)updateStrategyClientContextChangeTrackers;
4647

4748
@property (nonatomic, readonly, nonnull) NSManagedObjectContext *syncMOC;
4849
@property (nonatomic, nullable) id<EventProcessingTrackerProtocol> eventProcessingTracker;

wire-ios-sync-engine/Source/Synchronization/ZMSyncStrategy.m

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,13 @@ - (void)appTerminated:(NSNotification *)note
123123
[[NSNotificationCenter defaultCenter] removeObserver:self];
124124
}
125125

126+
- (void)updateStrategyClientContextChangeTrackers
127+
{
128+
[self.syncMOC performBlock:^{
129+
[self.changeTrackerBootStrap addChangeTrackers:self.strategyDirectory.clientContextChangeTrackers];
130+
}];
131+
}
132+
126133
- (NSManagedObjectContext *)moc
127134
{
128135
return self.syncMOC;

wire-ios-sync-engine/Source/UserSession/ZMUserSession/ZMUserSession.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -676,6 +676,7 @@ public final class ZMUserSession: NSObject {
676676
incrementalSyncObserver: incrementalSyncObserver,
677677
metadata: resolvedBackendMetadata
678678
)
679+
syncStrategy?.updateClientContextChangeTrackers()
679680
}
680681
}
681682

wire-ios-sync-engine/Tests/Source/Synchronization/MockStrategyDirectory.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import Foundation
2020

2121
@objcMembers
2222
public class MockStrategyDirectory: NSObject, StrategyDirectoryProtocol {
23+
public var clientContextChangeTrackers: [any ZMContextChangeTracker] = []
2324

2425
public var eventConsumers: [ZMEventConsumer] = []
2526

0 commit comments

Comments
 (0)