mirror of
https://github.com/firebase/firebase-ios-sdk
synced 2026-11-11 22:55:59 +05:45
* [skip ci] [will revert] Add debug printing to `pod_lib_lint.rb`
* Reorganize FirebaseCore libraries for SPM and CP
* [skip ci] Revert "[skip ci] [will revert] Add debug printing to `pod_lib_lint.rb`"
This reverts commit 2a837e39708c21b0a324743ab226bd6c01047de7.
* Review and fix CI
* Remove `heartbeat_logging.yml` and add `core_internal.yml`
* Remove trailing whitespace
* Fix more whitespace 😞
* Fix `core_internal.yml` scheme name
* Update `check_imports.swift` and TODO
* Review
* Add FirebaseCoreInternal pod to Firestore example's Podfile
* [skip ci] Review - remove TODOs
* [skip ci] Remove duplicate `XCTest` import
102 lines
3.4 KiB
Objective-C
102 lines
3.4 KiB
Objective-C
/*
|
|
* Copyright 2021 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#import "FirebaseAppCheck/Sources/Core/FIRAppCheckSettings.h"
|
|
|
|
#import "FirebaseCore/Extension/FirebaseCoreInternal.h"
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
NSString *const kFIRAppCheckTokenAutoRefreshEnabledUserDefaultsPrefix =
|
|
@"FIRAppCheckTokenAutoRefreshEnabled_";
|
|
NSString *const kFIRAppCheckTokenAutoRefreshEnabledInfoPlistKey =
|
|
@"FirebaseAppCheckTokenAutoRefreshEnabled";
|
|
|
|
@interface FIRAppCheckSettings ()
|
|
|
|
@property(nonatomic, weak, readonly) FIRApp *firebaseApp;
|
|
@property(nonatomic, readonly) NSUserDefaults *userDefaults;
|
|
@property(nonatomic, readonly) NSBundle *mainBundle;
|
|
@property(nonatomic, readonly) NSString *userDefaultKey;
|
|
|
|
@property(nonatomic, nullable) NSNumber *isTokenAutoRefreshEnabledNumber;
|
|
@end
|
|
|
|
@implementation FIRAppCheckSettings
|
|
|
|
@synthesize isTokenAutoRefreshEnabled = _isTokenAutoRefreshEnabled;
|
|
|
|
- (instancetype)initWithApp:(FIRApp *)firebaseApp
|
|
userDefault:(NSUserDefaults *)userDefaults
|
|
mainBundle:(NSBundle *)mainBundle {
|
|
self = [super init];
|
|
if (self) {
|
|
_firebaseApp = firebaseApp;
|
|
_userDefaults = userDefaults;
|
|
_mainBundle = mainBundle;
|
|
_userDefaultKey = [kFIRAppCheckTokenAutoRefreshEnabledUserDefaultsPrefix
|
|
stringByAppendingString:firebaseApp.name];
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (BOOL)isTokenAutoRefreshEnabled {
|
|
@synchronized(self) {
|
|
if (self.isTokenAutoRefreshEnabledNumber != nil) {
|
|
// Return value form the in-memory cache to avoid accessing the user default or bundle when
|
|
// not required.
|
|
return self.isTokenAutoRefreshEnabledNumber.boolValue;
|
|
}
|
|
|
|
// Check user defaults for a value set during the previous launch.
|
|
NSNumber *isTokenAutoRefreshEnabledNumber =
|
|
[self.userDefaults objectForKey:self.userDefaultKey];
|
|
|
|
// Check Info.plist if no user defaults value found.
|
|
if (isTokenAutoRefreshEnabledNumber == nil) {
|
|
isTokenAutoRefreshEnabledNumber = [self.mainBundle
|
|
objectForInfoDictionaryKey:kFIRAppCheckTokenAutoRefreshEnabledInfoPlistKey];
|
|
}
|
|
|
|
if (isTokenAutoRefreshEnabledNumber != nil) {
|
|
// Update in-memory cache.
|
|
self.isTokenAutoRefreshEnabledNumber = isTokenAutoRefreshEnabledNumber;
|
|
// Return the value.
|
|
return isTokenAutoRefreshEnabledNumber.boolValue;
|
|
}
|
|
|
|
// Fallback to the global data collection flag.
|
|
if (self.firebaseApp) {
|
|
return self.firebaseApp.isDataCollectionDefaultEnabled;
|
|
} else {
|
|
// If `self.firebaseApp == nil`, then the app has been de-initialized. No auto-refresh in this
|
|
// case.
|
|
return NO;
|
|
}
|
|
}
|
|
}
|
|
|
|
- (void)setIsTokenAutoRefreshEnabled:(BOOL)isTokenAutoRefreshEnabled {
|
|
@synchronized(self) {
|
|
self.isTokenAutoRefreshEnabledNumber = @(isTokenAutoRefreshEnabled);
|
|
[self.userDefaults setObject:self.isTokenAutoRefreshEnabledNumber forKey:self.userDefaultKey];
|
|
}
|
|
}
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|