mirror of
https://github.com/vodemn/m3_lightmeter.git
synced 2024-11-23 07:50:42 +00:00
43 lines
1.5 KiB
Dart
43 lines
1.5 KiB
Dart
|
import 'dart:async';
|
||
|
import 'dart:developer';
|
||
|
|
||
|
import 'package:firebase_core/firebase_core.dart';
|
||
|
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||
|
import 'package:firebase_remote_config/firebase_remote_config.dart';
|
||
|
import 'package:flutter/foundation.dart';
|
||
|
import 'package:lightmeter/data/models/feature.dart';
|
||
|
|
||
|
class RemoteConfigService {
|
||
|
const RemoteConfigService();
|
||
|
|
||
|
Future<void> activeAndFetchFeatures() async {
|
||
|
final FirebaseRemoteConfig remoteConfig = FirebaseRemoteConfig.instance;
|
||
|
const cacheStaleDuration = kDebugMode ? Duration(minutes: 1) : Duration(hours: 12);
|
||
|
|
||
|
try {
|
||
|
await remoteConfig.setConfigSettings(
|
||
|
RemoteConfigSettings(
|
||
|
fetchTimeout: const Duration(seconds: 15),
|
||
|
minimumFetchInterval: cacheStaleDuration,
|
||
|
),
|
||
|
);
|
||
|
await remoteConfig.setDefaults(featuresDefaultValues.map((key, value) => MapEntry(key.name, value)));
|
||
|
await remoteConfig.activate();
|
||
|
await remoteConfig.ensureInitialized();
|
||
|
unawaited(remoteConfig.fetch());
|
||
|
|
||
|
log('Firebase remote config initialized successfully');
|
||
|
} on FirebaseException catch (e) {
|
||
|
_logError('Firebase exception during Firebase Remote Config initialization: $e');
|
||
|
} on Exception catch (e) {
|
||
|
_logError('Error during Firebase Remote Config initialization: $e');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
bool isEnabled(Feature feature) => FirebaseRemoteConfig.instance.getBool(feature.name);
|
||
|
|
||
|
void _logError(dynamic throwable, {StackTrace? stackTrace}) {
|
||
|
FirebaseCrashlytics.instance.recordError(throwable, stackTrace);
|
||
|
}
|
||
|
}
|