diff --git a/Signal/src/ViewControllers/ConversationView/CVViewState.swift b/Signal/src/ViewControllers/ConversationView/CVViewState.swift index 803e28fbc0..71553d4af9 100644 --- a/Signal/src/ViewControllers/ConversationView/CVViewState.swift +++ b/Signal/src/ViewControllers/ConversationView/CVViewState.swift @@ -95,6 +95,7 @@ public class CVViewState: NSObject { public var groupCallTooltip: GroupCallTooltip? public var groupCallTooltipTailReferenceView: UIView? + public var didAlreadyShowGroupCallTooltipEnoughTimes: Bool public var hasIncrementedGroupCallTooltipShownCount = false public var groupCallBarButtonItem: UIBarButtonItem? @@ -151,9 +152,14 @@ public class CVViewState: NSObject { // MARK: - - public required init(threadUniqueId: String, conversationStyle: ConversationStyle) { + public required init( + threadUniqueId: String, + conversationStyle: ConversationStyle, + didAlreadyShowGroupCallTooltipEnoughTimes: Bool + ) { self.threadUniqueId = threadUniqueId self.conversationStyle = conversationStyle + self.didAlreadyShowGroupCallTooltipEnoughTimes = didAlreadyShowGroupCallTooltipEnoughTimes } } diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Calls.swift b/Signal/src/ViewControllers/ConversationView/ConversationViewController+Calls.swift index e5580f7104..b5ed492e1f 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Calls.swift +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController+Calls.swift @@ -117,7 +117,7 @@ public extension ConversationViewController { guard canCall, isGroupConversation else { return } - if preferences.wasGroupCallTooltipShown() { + if viewState.didAlreadyShowGroupCallTooltipEnoughTimes { return } @@ -126,7 +126,10 @@ public extension ConversationViewController { // as the navbar items change. if !hasIncrementedGroupCallTooltipShownCount { preferences.incrementGroupCallTooltipShownCount() - self.hasIncrementedGroupCallTooltipShownCount = true + viewState.didAlreadyShowGroupCallTooltipEnoughTimes = databaseStorage.read { tx in + preferences.wasGroupCallTooltipShown(with: tx) + } + hasIncrementedGroupCallTooltipShownCount = true } if conversationViewModel.groupCallInProgress { diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.swift b/Signal/src/ViewControllers/ConversationView/ConversationViewController.swift index 81d4c004a5..e3c0d6a52d 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.swift +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.swift @@ -92,12 +92,14 @@ public final class ConversationViewController: OWSViewController { let conversationStyle = ConversationViewController.buildInitialConversationStyle(for: thread, tx: tx) let conversationViewModel = ConversationViewModel.load(for: thread, tx: tx) + let didAlreadyShowGroupCallTooltipEnoughTimes = preferences.wasGroupCallTooltipShown(with: tx) return ConversationViewController( threadViewModel: threadViewModel, conversationViewModel: conversationViewModel, action: action, conversationStyle: conversationStyle, + didAlreadyShowGroupCallTooltipEnoughTimes: didAlreadyShowGroupCallTooltipEnoughTimes, loadAroundMessageId: loadAroundMessageId, scrollToMessageId: scrollToMessageId, oldestUnreadMessage: oldestUnreadMessage @@ -109,6 +111,7 @@ public final class ConversationViewController: OWSViewController { conversationViewModel: ConversationViewModel, action: ConversationViewAction, conversationStyle: ConversationStyle, + didAlreadyShowGroupCallTooltipEnoughTimes: Bool, loadAroundMessageId: String?, scrollToMessageId: String?, oldestUnreadMessage: TSInteraction? @@ -117,7 +120,8 @@ public final class ConversationViewController: OWSViewController { self.viewState = CVViewState( threadUniqueId: threadViewModel.threadRecord.uniqueId, - conversationStyle: conversationStyle + conversationStyle: conversationStyle, + didAlreadyShowGroupCallTooltipEnoughTimes: didAlreadyShowGroupCallTooltipEnoughTimes ) self.loadCoordinator = CVLoadCoordinator( viewState: viewState, diff --git a/SignalMessaging/utils/OWSPreferences.h b/SignalMessaging/utils/OWSPreferences.h index fc3ec780d5..cd900155be 100644 --- a/SignalMessaging/utils/OWSPreferences.h +++ b/SignalMessaging/utils/OWSPreferences.h @@ -78,7 +78,7 @@ extern NSString *const OWSPreferencesCallLoggingDidChangeNotification; - (BOOL)wasViewOnceTooltipShown; - (void)setWasViewOnceTooltipShown; -- (BOOL)wasGroupCallTooltipShown; +- (BOOL)wasGroupCallTooltipShownWithTransaction:(SDSAnyReadTransaction *)tx; - (void)incrementGroupCallTooltipShownCount; - (void)setWasGroupCallTooltipShown; diff --git a/SignalMessaging/utils/OWSPreferences.m b/SignalMessaging/utils/OWSPreferences.m index 8952497317..095f6943a3 100644 --- a/SignalMessaging/utils/OWSPreferences.m +++ b/SignalMessaging/utils/OWSPreferences.m @@ -350,9 +350,9 @@ NSString *const OWSPreferencesKeyDeviceScale = @"OWSPreferencesKeyDeviceScale"; [self setBool:YES forKey:OWSPreferencesKeyWasViewOnceTooltipShown]; } -- (BOOL)wasGroupCallTooltipShown +- (BOOL)wasGroupCallTooltipShownWithTransaction:(SDSAnyReadTransaction *)tx { - return [self boolForKey:OWSPreferencesKeyWasGroupCallTooltipShown defaultValue:NO]; + return [self.keyValueStore getBool:OWSPreferencesKeyWasGroupCallTooltipShown defaultValue:NO transaction:tx]; } - (void)incrementGroupCallTooltipShownCount