Skip to content

Commit 369d65c

Browse files
committed
1 parent 376310f commit 369d65c

File tree

6 files changed

+59
-4
lines changed

6 files changed

+59
-4
lines changed

packages/cloud_firestore/cloud_firestore/lib/src/firestore.dart

+8
Original file line numberDiff line numberDiff line change
@@ -283,11 +283,19 @@ class FirebaseFirestore extends FirebasePluginPlatform {
283283
///
284284
/// You must set these before invoking any other methods on this [FirebaseFirestore] instance.
285285
set settings(Settings settings) {
286+
assert(
287+
!(settings.experimentalAutoDetectLongPolling &&
288+
settings.experimentalForceLongPolling),
289+
);
286290
_delegate.settings = _delegate.settings.copyWith(
287291
sslEnabled: settings.sslEnabled,
288292
persistenceEnabled: settings.persistenceEnabled,
289293
host: settings.host,
290294
cacheSizeBytes: settings.cacheSizeBytes,
295+
ignoreUndefinedProperties: settings.ignoreUndefinedProperties,
296+
experimentalForceLongPolling: settings.experimentalForceLongPolling,
297+
experimentalAutoDetectLongPolling:
298+
settings.experimentalAutoDetectLongPolling,
291299
);
292300
}
293301

packages/cloud_firestore/cloud_firestore/pubspec.yaml

+8-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ homepage: https://firebase.google.com/docs/firestore
66
repository: https://github.com/firebase/flutterfire/tree/master/packages/cloud_firestore/cloud_firestore
77
version: 4.15.5
88

9+
publish_to: none
10+
911
false_secrets:
1012
- example/**
1113
- dartpad/**
@@ -15,8 +17,12 @@ environment:
1517
flutter: '>=3.3.0'
1618

1719
dependencies:
18-
cloud_firestore_platform_interface: ^6.1.6
19-
cloud_firestore_web: ^3.10.5
20+
# cloud_firestore_platform_interface: ^6.1.6
21+
cloud_firestore_platform_interface:
22+
path: ../cloud_firestore_platform_interface
23+
# cloud_firestore_web: ^3.10.5
24+
cloud_firestore_web:
25+
path: ../cloud_firestore_web
2026
collection: ^1.0.0
2127
firebase_core: ^2.25.4
2228
firebase_core_platform_interface: ^5.0.0

packages/cloud_firestore/cloud_firestore_platform_interface/lib/src/settings.dart

+22-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ class Settings {
1717
this.sslEnabled,
1818
this.cacheSizeBytes,
1919
this.ignoreUndefinedProperties = false,
20+
this.experimentalForceLongPolling = false,
21+
this.experimentalAutoDetectLongPolling = false,
2022
});
2123

2224
/// Constant used to indicate the LRU garbage collection should be disabled.
@@ -52,6 +54,11 @@ class Settings {
5254
/// Web only.
5355
final bool ignoreUndefinedProperties;
5456

57+
// https://github.com/firebase/firebase-js-sdk/issues/1674
58+
// https://github.com/firebase/flutterfire/issues/11149#issuecomment-1615133353
59+
final bool experimentalForceLongPolling;
60+
final bool experimentalAutoDetectLongPolling;
61+
5562
/// Returns the settings as a [Map]
5663
Map<String, dynamic> get asMap {
5764
return {
@@ -60,6 +67,9 @@ class Settings {
6067
'sslEnabled': sslEnabled,
6168
'cacheSizeBytes': cacheSizeBytes,
6269
if (kIsWeb) 'ignoreUndefinedProperties': ignoreUndefinedProperties,
70+
if (kIsWeb) 'experimentalForceLongPolling': experimentalForceLongPolling,
71+
if (kIsWeb)
72+
'experimentalAutoDetectLongPolling': experimentalAutoDetectLongPolling,
6373
};
6474
}
6575

@@ -69,6 +79,8 @@ class Settings {
6979
bool? sslEnabled,
7080
int? cacheSizeBytes,
7181
bool? ignoreUndefinedProperties,
82+
bool? experimentalForceLongPolling,
83+
bool? experimentalAutoDetectLongPolling,
7284
}) {
7385
assert(
7486
cacheSizeBytes == null ||
@@ -84,6 +96,10 @@ class Settings {
8496
cacheSizeBytes: cacheSizeBytes ?? this.cacheSizeBytes,
8597
ignoreUndefinedProperties:
8698
ignoreUndefinedProperties ?? this.ignoreUndefinedProperties,
99+
experimentalForceLongPolling:
100+
experimentalForceLongPolling ?? this.experimentalForceLongPolling,
101+
experimentalAutoDetectLongPolling: experimentalAutoDetectLongPolling ??
102+
this.experimentalAutoDetectLongPolling,
87103
);
88104
}
89105

@@ -95,7 +111,10 @@ class Settings {
95111
other.host == host &&
96112
other.sslEnabled == sslEnabled &&
97113
other.cacheSizeBytes == cacheSizeBytes &&
98-
other.ignoreUndefinedProperties == ignoreUndefinedProperties;
114+
other.ignoreUndefinedProperties == ignoreUndefinedProperties &&
115+
other.experimentalForceLongPolling == experimentalForceLongPolling &&
116+
other.experimentalAutoDetectLongPolling ==
117+
experimentalAutoDetectLongPolling;
99118

100119
@override
101120
int get hashCode => Object.hash(
@@ -105,6 +124,8 @@ class Settings {
105124
sslEnabled,
106125
cacheSizeBytes,
107126
ignoreUndefinedProperties,
127+
experimentalForceLongPolling,
128+
experimentalAutoDetectLongPolling,
108129
);
109130

110131
@override

packages/cloud_firestore/cloud_firestore_web/lib/cloud_firestore_web.dart

+8
Original file line numberDiff line numberDiff line change
@@ -148,11 +148,19 @@ class FirebaseFirestoreWeb extends FirebaseFirestorePlatform {
148148
host: settings.host?.toJS,
149149
ssl: settings.sslEnabled?.toJS,
150150
ignoreUndefinedProperties: settings.ignoreUndefinedProperties.toJS,
151+
experimentalForceLongPolling:
152+
settings.experimentalForceLongPolling.toJS,
153+
experimentalAutoDetectLongPolling:
154+
settings.experimentalAutoDetectLongPolling.toJS,
151155
);
152156
} else {
153157
_settings = firestore_interop.FirestoreSettings(
154158
localCache: localCache,
155159
ignoreUndefinedProperties: settings.ignoreUndefinedProperties.toJS,
160+
experimentalForceLongPolling:
161+
settings.experimentalForceLongPolling.toJS,
162+
experimentalAutoDetectLongPolling:
163+
settings.experimentalAutoDetectLongPolling.toJS,
156164
);
157165
}
158166
}

packages/cloud_firestore/cloud_firestore_web/lib/src/interop/firestore_interop.dart

+8
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,8 @@ abstract class FirestoreSettings {
690690
JSString? host,
691691
JSBoolean? ssl,
692692
JSBoolean? ignoreUndefinedProperties,
693+
JSBoolean? experimentalForceLongPolling,
694+
JSBoolean? experimentalAutoDetectLongPolling,
693695
JSObject localCache,
694696
});
695697
}
@@ -708,6 +710,12 @@ extension FirestoreSettingsExtension on FirestoreSettings {
708710
//ignore: avoid_setters_without_getters
709711
external set ignoreUndefinedProperties(JSBoolean u);
710712

713+
//ignore: avoid_setters_without_getters
714+
external set experimentalForceLongPolling(JSBoolean t);
715+
716+
//ignore: avoid_setters_without_getters
717+
external set experimentalAutoDetectLongPolling(JSBoolean t);
718+
711719
/// Specifies the cache used by the SDK.
712720
/// Available options are MemoryLocalCache and PersistentLocalCache, each with different configuration options.
713721
/// When unspecified, MemoryLocalCache will be used by default.

packages/cloud_firestore/cloud_firestore_web/pubspec.yaml

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ description: The web implementation of cloud_firestore
33
homepage: https://github.com/firebase/flutterfire/tree/master/packages/cloud_firestore/cloud_firestore_web
44
repository: https://github.com/firebase/flutterfire/tree/master/packages/cloud_firestore/cloud_firestore_web
55

6+
publish_to: none
7+
68
version: 3.10.5
79

810
environment:
@@ -11,7 +13,9 @@ environment:
1113

1214
dependencies:
1315
_flutterfire_internals: ^1.3.22
14-
cloud_firestore_platform_interface: ^6.1.6
16+
# cloud_firestore_platform_interface: ^6.1.6
17+
cloud_firestore_platform_interface:
18+
path: ../cloud_firestore_platform_interface
1519
collection: ^1.0.0
1620
firebase_core: ^2.25.4
1721
firebase_core_web: ^2.11.4

0 commit comments

Comments
 (0)