getAllFlags method
- bool forceRefresh = false,
Retrieves all available feature flags, merging defaults with user overrides.
If forceRefresh is true, it triggers a fetch from the remote server.
Implementation
Future<List<FeatureFlag>> getAllFlags({bool forceRefresh = false}) async {
if (forceRefresh) {
log('Forcing fresh load of feature flags', name: 'FeatureFlagRepository');
_defaultsCache = null;
_flagsCache = null;
await firebaseService.fetch();
}
if (_flagsCache != null) return _flagsCache!;
final defaults = await _getDefaults(forceRefresh: forceRefresh);
final forceOverrides = _parseForceOverrides(defaults);
final futures = defaults.entries
.where((e) => e.key != '_force_override_flags')
.map(
(entry) => _createFeatureFlag(entry.key, entry.value, forceOverrides),
);
final result = await Future.wait(futures);
final logMap = {for (final f in result) f.key: f.value};
log('Feature flags loaded: $logMap', name: 'FeatureFlagRepository');
firebaseService.log('Feature flags loaded: $logMap');
return _flagsCache = result;
}