Skip to content

Commit

Permalink
fix(firestore): update deprecated persistence API (#11069)
Browse files Browse the repository at this point in the history
  • Loading branch information
russellwheatley committed Jun 9, 2023
1 parent 67b051f commit 076e7af
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 35 deletions.
Expand Up @@ -18,6 +18,8 @@
import com.google.firebase.firestore.FirebaseFirestoreSettings;
import com.google.firebase.firestore.GeoPoint;
import com.google.firebase.firestore.LoadBundleTaskProgress;
import com.google.firebase.firestore.MemoryCacheSettings;
import com.google.firebase.firestore.PersistentCacheSettings;
import com.google.firebase.firestore.Query;
import com.google.firebase.firestore.QuerySnapshot;
import com.google.firebase.firestore.SnapshotMetadata;
Expand Down Expand Up @@ -298,10 +300,33 @@ private FirebaseFirestoreSettings readFirestoreSettings(ByteBuffer buffer) {
Map<String, Object> settingsMap = (Map<String, Object>) readValue(buffer);

FirebaseFirestoreSettings.Builder settingsBuilder = new FirebaseFirestoreSettings.Builder();

if (settingsMap.get("persistenceEnabled") != null) {
settingsBuilder.setPersistenceEnabled(
(Boolean) Objects.requireNonNull(settingsMap.get("persistenceEnabled")));
Boolean persistenceEnabled = (Boolean) settingsMap.get("persistenceEnabled");

if (Boolean.TRUE.equals(persistenceEnabled)) {
PersistentCacheSettings.Builder persistenceSettings = PersistentCacheSettings.newBuilder();

if (settingsMap.get("cacheSizeBytes") != null) {
Long cacheSizeBytes = 104857600L;
Object value = settingsMap.get("cacheSizeBytes");

if (value instanceof Long) {
cacheSizeBytes = (Long) value;
} else if (value instanceof Integer) {
cacheSizeBytes = Long.valueOf((Integer) value);
}

if (cacheSizeBytes == -1) {
persistenceSettings.setSizeBytes(FirebaseFirestoreSettings.CACHE_SIZE_UNLIMITED);
} else {
persistenceSettings.setSizeBytes(cacheSizeBytes);
}
}

settingsBuilder.setLocalCacheSettings(persistenceSettings.build());
} else {
settingsBuilder.setLocalCacheSettings(MemoryCacheSettings.newBuilder().build());
}
}

if (settingsMap.get("host") != null) {
Expand All @@ -313,23 +338,6 @@ private FirebaseFirestoreSettings readFirestoreSettings(ByteBuffer buffer) {
}
}

if (settingsMap.get("cacheSizeBytes") != null) {
Long cacheSizeBytes = 104857600L;
Object value = settingsMap.get("cacheSizeBytes");

if (value instanceof Long) {
cacheSizeBytes = (Long) value;
} else if (value instanceof Integer) {
cacheSizeBytes = Long.valueOf((Integer) value);
}

if (cacheSizeBytes == -1) {
settingsBuilder.setCacheSizeBytes(FirebaseFirestoreSettings.CACHE_SIZE_UNLIMITED);
} else {
settingsBuilder.setCacheSizeBytes(cacheSizeBytes);
}
}

return settingsBuilder.build();
}

Expand Down
Expand Up @@ -94,7 +94,19 @@ - (FIRFirestoreSettings *)FIRFirestoreSettings {
FIRFirestoreSettings *settings = [[FIRFirestoreSettings alloc] init];

if (![values[@"persistenceEnabled"] isEqual:[NSNull null]]) {
settings.persistenceEnabled = [((NSNumber *)values[@"persistenceEnabled"]) boolValue];
bool persistEnabled = [((NSNumber *)values[@"persistenceEnabled"]) boolValue];
int size = [((NSNumber *)values[@"cacheSizeBytes"]) intValue];

if (persistEnabled) {
NSNumber *unlimitedPersistence =
[NSNumber numberWithLongLong:kFIRFirestoreCacheSizeUnlimited];
settings.cacheSettings = [[FIRPersistentCacheSettings alloc]
initWithSizeBytes:size == -1 ? unlimitedPersistence
: ((NSNumber *)values[@"cacheSizeBytes"])];
} else {
settings.cacheSettings = [[FIRMemoryCacheSettings alloc]
initWithGarbageCollectorSettings:[[FIRMemoryLRUGCSettings alloc] init]];
}
}

if (![values[@"host"] isEqual:[NSNull null]]) {
Expand All @@ -105,15 +117,6 @@ - (FIRFirestoreSettings *)FIRFirestoreSettings {
}
}

if (![values[@"cacheSizeBytes"] isEqual:[NSNull null]]) {
int size = [((NSNumber *)values[@"cacheSizeBytes"]) intValue];
if (size == -1) {
settings.cacheSizeBytes = kFIRFirestoreCacheSizeUnlimited;
} else {
settings.cacheSizeBytes = (int64_t)size;
}
}

settings.dispatchQueue = [FLTFirebaseFirestoreReader getFirestoreQueue];

return settings;
Expand Down
Expand Up @@ -85,9 +85,10 @@ class FirebaseFirestore extends FirebasePluginPlatform {
return _delegate.clearPersistence();
}

/// Enable persistence of Firestore data.
///
/// This is a web-only method. Use [Settings.persistenceEnabled] for non-web platforms.
/// Enable persistence of Firestore data for web-only. Use [Settings.persistenceEnabled] for non-web platforms.
/// If `enablePersistence()` is not called, it defaults to Memory cache.
/// If `enablePersistence(const PersistenceSettings(synchronizeTabs: false))` is called, it persists data for a single browser tab.
/// If `enablePersistence(const PersistenceSettings(synchronizeTabs: true))` is called, it persists data across multiple browser tabs.
Future<void> enablePersistence([
PersistenceSettings? persistenceSettings,
]) async {
Expand Down
Expand Up @@ -76,7 +76,10 @@ abstract class FirebaseFirestorePlatform extends PlatformInterface {
throw UnimplementedError('clearPersistence() is not implemented');
}

/// Enable persistence of Firestore data. Web only.
/// Enable persistence of Firestore data for web-only. Use [Settings.persistenceEnabled] for non-web platforms.
/// If `enablePersistence()` is not called, it defaults to Memory cache.
/// If `enablePersistence(const PersistenceSettings(synchronizeTabs: false))` is called, it persists data for a single browser tab.
/// If `enablePersistence(const PersistenceSettings(synchronizeTabs: true))` is called, it persists data across multiple browser tabs.
Future<void> enablePersistence(
[PersistenceSettings? persistenceSettings]) async {
throw UnimplementedError('enablePersistence() is not implemented');
Expand Down
Expand Up @@ -26,7 +26,7 @@ import 'src/write_batch_web.dart';
/// Web implementation for [FirebaseFirestorePlatform]
/// delegates calls to firestore web plugin
class FirebaseFirestoreWeb extends FirebaseFirestorePlatform {
/// instance of Analytics from the web plugin
/// instance of Firestore from the web plugin
firestore_interop.Firestore? _webFirestore;

firestore_interop.Settings? _settings;
Expand Down

0 comments on commit 076e7af

Please sign in to comment.