Cache dark theme preference

This is a hot path
pull/2/head
Michael Kirk 6 years ago
parent 4f43c24851
commit 7a4041cdde

@ -16,24 +16,60 @@ NSString *const ThemeDidChangeNotification = @"ThemeDidChangeNotification";
NSString *const ThemeCollection = @"ThemeCollection"; NSString *const ThemeCollection = @"ThemeCollection";
NSString *const ThemeKeyThemeEnabled = @"ThemeKeyThemeEnabled"; NSString *const ThemeKeyThemeEnabled = @"ThemeKeyThemeEnabled";
@interface Theme ()
@property (nonatomic) NSNumber *isDarkThemeEnabledNumber;
@end
@implementation Theme @implementation Theme
+ (instancetype)sharedInstance
{
static dispatch_once_t onceToken;
static Theme *instance;
dispatch_once(&onceToken, ^{
instance = [Theme new];
});
return instance;
}
+ (BOOL)isDarkThemeEnabled + (BOOL)isDarkThemeEnabled
{ {
return [self.sharedInstance isDarkThemeEnabled];
}
- (BOOL)isDarkThemeEnabled
{
OWSAssertIsOnMainThread();
if (!CurrentAppContext().isMainApp) { if (!CurrentAppContext().isMainApp) {
// Ignore theme in app extensions. // Ignore theme in app extensions.
return NO; return NO;
} }
return [OWSPrimaryStorage.sharedManager.dbReadConnection boolForKey:ThemeKeyThemeEnabled if (self.isDarkThemeEnabledNumber == nil) {
inCollection:ThemeCollection BOOL isDarkThemeEnabled = [OWSPrimaryStorage.sharedManager.dbReadConnection boolForKey:ThemeKeyThemeEnabled
defaultValue:NO]; inCollection:ThemeCollection
defaultValue:NO];
self.isDarkThemeEnabledNumber = @(isDarkThemeEnabled);
}
return self.isDarkThemeEnabledNumber.boolValue;
} }
+ (void)setIsDarkThemeEnabled:(BOOL)value + (void)setIsDarkThemeEnabled:(BOOL)value
{
return [self.sharedInstance setIsDarkThemeEnabled:value];
}
- (void)setIsDarkThemeEnabled:(BOOL)value
{ {
OWSAssertIsOnMainThread(); OWSAssertIsOnMainThread();
self.isDarkThemeEnabledNumber = @(value);
[OWSPrimaryStorage.sharedManager.dbReadWriteConnection setBool:value [OWSPrimaryStorage.sharedManager.dbReadWriteConnection setBool:value
forKey:ThemeKeyThemeEnabled forKey:ThemeKeyThemeEnabled
inCollection:ThemeCollection]; inCollection:ThemeCollection];

Loading…
Cancel
Save