Skip to content

Commit 11bdedf

Browse files
authored
fix(database,android): fix an issue where setPersistenceEnabled needed to be called first (#18259)
1 parent b0bc6e8 commit 11bdedf

2 files changed

Lines changed: 35 additions & 2 deletions

File tree

packages/firebase_database/firebase_database/android/src/main/kotlin/io/flutter/plugins/firebase/database/FirebaseDatabasePlugin.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,9 @@ class FirebaseDatabasePlugin :
516516
override fun setPersistenceEnabled(app: DatabasePigeonFirebaseApp, enabled: Boolean, callback: (KotlinResult<Unit>) -> Unit) {
517517
try {
518518
val database = getDatabaseFromPigeonApp(app)
519-
database.setPersistenceEnabled(enabled)
519+
if (app.settings.persistenceEnabled == null) {
520+
database.setPersistenceEnabled(enabled)
521+
}
520522
callback(KotlinResult.success(Unit))
521523
} catch (e: Exception) {
522524
callback(KotlinResult.failure(e))
@@ -526,7 +528,9 @@ class FirebaseDatabasePlugin :
526528
override fun setPersistenceCacheSizeBytes(app: DatabasePigeonFirebaseApp, cacheSize: Long, callback: (KotlinResult<Unit>) -> Unit) {
527529
try {
528530
val database = getDatabaseFromPigeonApp(app)
529-
database.setPersistenceCacheSizeBytes(cacheSize)
531+
if (app.settings.cacheSizeBytes == null) {
532+
database.setPersistenceCacheSizeBytes(cacheSize)
533+
}
530534
callback(KotlinResult.success(Unit))
531535
} catch (e: Exception) {
532536
callback(KotlinResult.failure(e))

tests/integration_test/firebase_database/firebase_database_configuration_e2e.dart

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5+
import 'package:firebase_core/firebase_core.dart';
6+
import 'package:firebase_database/firebase_database.dart';
57
import 'package:flutter/foundation.dart';
68
import 'package:flutter_test/flutter_test.dart';
9+
import 'package:tests/firebase_options.dart';
710

811
import 'firebase_database_e2e_test.dart';
912

@@ -37,5 +40,31 @@ void setupConfigurationTests() {
3740
test('setLoggingEnabled to false', () {
3841
database.setLoggingEnabled(false);
3942
});
43+
44+
test(
45+
'setPersistenceEnabled can be followed immediately by goOnline',
46+
() async {
47+
for (var i = 0; i < 5; i++) {
48+
final app = await Firebase.initializeApp(
49+
name:
50+
'firebase-database-persistence-${DateTime.now().microsecondsSinceEpoch}-$i',
51+
options: DefaultFirebaseOptions.currentPlatform,
52+
);
53+
addTearDown(app.delete);
54+
55+
final database = FirebaseDatabase.instanceFor(app: app);
56+
57+
database.setPersistenceEnabled(true);
58+
await database.goOnline();
59+
60+
await database.ref('persistence-enabled-regression').keepSynced(true);
61+
await database
62+
.ref('persistence-enabled-regression')
63+
.keepSynced(false);
64+
await database.goOffline();
65+
}
66+
},
67+
skip: kIsWeb || defaultTargetPlatform != TargetPlatform.android,
68+
);
4069
});
4170
}

0 commit comments

Comments
 (0)