ML-134 Firebase Remote Config issues (#135)

* Unable to connect to the server

* internal remote config fetch error

* fixed tests
This commit is contained in:
Vadim 2023-11-07 11:57:36 +01:00 committed by GitHub
parent 3bb3f12641
commit 068834bfe5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 2 deletions

View file

@ -24,7 +24,6 @@ class RemoteConfigService {
await remoteConfig.setDefaults(featuresDefaultValues.map((key, value) => MapEntry(key.name, value))); await remoteConfig.setDefaults(featuresDefaultValues.map((key, value) => MapEntry(key.name, value)));
await remoteConfig.activate(); await remoteConfig.activate();
await remoteConfig.ensureInitialized(); await remoteConfig.ensureInitialized();
unawaited(remoteConfig.fetch());
log('Firebase remote config initialized successfully'); log('Firebase remote config initialized successfully');
} on FirebaseException catch (e) { } on FirebaseException catch (e) {
@ -34,6 +33,12 @@ class RemoteConfigService {
} }
} }
Future<void> fetchConfig() async {
// https://github.com/firebase/flutterfire/issues/6196#issuecomment-927751667
await Future.delayed(const Duration(seconds: 1));
await FirebaseRemoteConfig.instance.fetch();
}
dynamic getValue(Feature feature) => FirebaseRemoteConfig.instance.getValue(feature.name).toValue(feature); dynamic getValue(Feature feature) => FirebaseRemoteConfig.instance.getValue(feature.name).toValue(feature);
Map<Feature, dynamic> getAll() { Map<Feature, dynamic> getAll() {

View file

@ -1,4 +1,5 @@
import 'dart:async'; import 'dart:async';
import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:lightmeter/data/models/feature.dart'; import 'package:lightmeter/data/models/feature.dart';
@ -25,7 +26,11 @@ class RemoteConfigProviderState extends State<RemoteConfigProvider> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
_updatesSubscription = widget.remoteConfigService.onConfigUpdated().listen(_updateFeatures); widget.remoteConfigService.fetchConfig();
_updatesSubscription = widget.remoteConfigService.onConfigUpdated().listen(
_updateFeatures,
onError: (e) => log(e.toString()),
);
} }
@override @override

View file

@ -18,6 +18,7 @@ void main() {
}); });
setUp(() { setUp(() {
when(() => mockRemoteConfigService.fetchConfig()).thenAnswer((_) async {});
when(() => mockRemoteConfigService.getValue(Feature.unlockProFeaturesText)).thenReturn(false); when(() => mockRemoteConfigService.getValue(Feature.unlockProFeaturesText)).thenReturn(false);
when(() => mockRemoteConfigService.getAll()).thenReturn({Feature.unlockProFeaturesText: false}); when(() => mockRemoteConfigService.getAll()).thenReturn({Feature.unlockProFeaturesText: false});
}); });