Don’t check for tooltip after every load

This commit is contained in:
Max Radermacher 2023-05-20 01:25:55 -07:00
parent 0b08f5b8da
commit f9bc032c5b
5 changed files with 20 additions and 7 deletions

View File

@ -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
}
}

View File

@ -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 {

View File

@ -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,

View File

@ -78,7 +78,7 @@ extern NSString *const OWSPreferencesCallLoggingDidChangeNotification;
- (BOOL)wasViewOnceTooltipShown;
- (void)setWasViewOnceTooltipShown;
- (BOOL)wasGroupCallTooltipShown;
- (BOOL)wasGroupCallTooltipShownWithTransaction:(SDSAnyReadTransaction *)tx;
- (void)incrementGroupCallTooltipShownCount;
- (void)setWasGroupCallTooltipShown;

View File

@ -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