diff --git a/SignalMessaging/contacts/OWSSyncManager.m b/SignalMessaging/contacts/OWSSyncManager.m index 07e2ad32a..d2b2ac0bc 100644 --- a/SignalMessaging/contacts/OWSSyncManager.m +++ b/SignalMessaging/contacts/OWSSyncManager.m @@ -106,6 +106,11 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag return TSAccountManager.sharedInstance; } +- (id)typingIndicators +{ + return SSKEnvironment.shared.typingIndicators; +} + #pragma mark - Notifications - (void)signalAccountsDidChange:(id)notification { @@ -219,10 +224,12 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag BOOL areReadReceiptsEnabled = SSKEnvironment.shared.readReceiptManager.areReadReceiptsEnabled; BOOL showUnidentifiedDeliveryIndicators = Environment.shared.preferences.shouldShowUnidentifiedDeliveryIndicators; + BOOL showTypingIndicators = self.typingIndicators.areTypingIndicatorsEnabled; OWSSyncConfigurationMessage *syncConfigurationMessage = [[OWSSyncConfigurationMessage alloc] initWithReadReceiptsEnabled:areReadReceiptsEnabled - showUnidentifiedDeliveryIndicators:showUnidentifiedDeliveryIndicators]; + showUnidentifiedDeliveryIndicators:showUnidentifiedDeliveryIndicators + showTypingIndicators:showTypingIndicators]; [self.editingDatabaseConnection readWriteWithBlock:^(YapDatabaseReadWriteTransaction *_Nonnull transaction) { [self.messageSenderJobQueue addMessage:syncConfigurationMessage transaction:transaction]; diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.h b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.h index 8cf32a566..6655d9df4 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.h +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.h @@ -11,7 +11,9 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)init NS_UNAVAILABLE; - (instancetype)initWithReadReceiptsEnabled:(BOOL)readReceiptsEnabled - showUnidentifiedDeliveryIndicators:(BOOL)showUnidentifiedDeliveryIndicators NS_DESIGNATED_INITIALIZER; + showUnidentifiedDeliveryIndicators:(BOOL)showUnidentifiedDeliveryIndicators + showTypingIndicators:(BOOL)showTypingIndicators NS_DESIGNATED_INITIALIZER; + - (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; @end diff --git a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.m b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.m index b92e6522d..cb359f2ae 100644 --- a/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.m +++ b/SignalServiceKit/src/Messages/DeviceSyncing/OWSSyncConfigurationMessage.m @@ -11,13 +11,15 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, readonly) BOOL areReadReceiptsEnabled; @property (nonatomic, readonly) BOOL showUnidentifiedDeliveryIndicators; +@property (nonatomic, readonly) BOOL showTypingIndicators; @end @implementation OWSSyncConfigurationMessage - (instancetype)initWithReadReceiptsEnabled:(BOOL)areReadReceiptsEnabled - showUnidentifiedDeliveryIndicators:(BOOL)showUnidentifiedDeliveryIndicators { + showUnidentifiedDeliveryIndicators:(BOOL)showUnidentifiedDeliveryIndicators + showTypingIndicators:(BOOL)showTypingIndicators { self = [super init]; if (!self) { return nil; @@ -25,6 +27,7 @@ NS_ASSUME_NONNULL_BEGIN _areReadReceiptsEnabled = areReadReceiptsEnabled; _showUnidentifiedDeliveryIndicators = showUnidentifiedDeliveryIndicators; + _showTypingIndicators = showTypingIndicators; return self; } @@ -39,6 +42,7 @@ NS_ASSUME_NONNULL_BEGIN SSKProtoSyncMessageConfigurationBuilder *configurationBuilder = [SSKProtoSyncMessageConfiguration builder]; configurationBuilder.readReceipts = self.areReadReceiptsEnabled; configurationBuilder.unidentifiedDeliveryIndicators = self.showUnidentifiedDeliveryIndicators; + configurationBuilder.typingIndicators = self.showTypingIndicators; NSError *error; SSKProtoSyncMessageConfiguration *_Nullable configurationProto = [configurationBuilder buildAndReturnError:&error]; diff --git a/SignalServiceKit/src/Util/TypingIndicators.swift b/SignalServiceKit/src/Util/TypingIndicators.swift index 37378fc98..b10ec2d7d 100644 --- a/SignalServiceKit/src/Util/TypingIndicators.swift +++ b/SignalServiceKit/src/Util/TypingIndicators.swift @@ -67,6 +67,10 @@ public class TypingIndicatorsImpl: NSObject, TypingIndicators { return SSKEnvironment.shared.primaryStorage } + private var syncManager: OWSSyncManagerProtocol { + return SSKEnvironment.shared.syncManager + } + // MARK: - @objc @@ -76,6 +80,8 @@ public class TypingIndicatorsImpl: NSObject, TypingIndicators { _areTypingIndicatorsEnabled = value primaryStorage.dbReadWriteConnection.setBool(value, forKey: kDatabaseKey_TypingIndicatorsEnabled, inCollection: kDatabaseCollection) + + syncManager.sendConfigurationSyncMessage() } @objc