getFeatureToggles method
Implementation
Future<List<FeatureToggleModel>> getFeatureToggles({
Map<String, String>? parent,
}) async {
if (parent is Map<String, String> && parent.isNotEmpty) {
final keys = parent.keys.toList();
if (keys.length > 1) {
throw FeatureTogglesDataServiceException(
code: RdevCode.InvalidArgument,
message: 'Parent can only have one key');
}
final key = keys.first;
final value = parent[key];
final collectionPath = key.split(RegExp(r'(?=[A-Z])'));
final parentRef =
_firestore.collection(collectionPath.join('/')).doc(value);
final parentFeatureToggleRef = parentRef.collection('FeatureToggles');
try {
final parentFeatureToggleDoc = await parentFeatureToggleRef.get();
final models = parentFeatureToggleDoc.docs.map((e) {
final featureToggleModel = FeatureToggleModel.fromJson(e.data());
featureToggleModel.uid = e.id;
return featureToggleModel;
}).toList();
return models;
} catch (err) {
log.warning('Error getting workspace feature toggle: $err');
}
}
// Use root level
final featureToggleRef = _firestore.collection('FeatureToggles');
try {
final featureToggleDoc = await featureToggleRef.get();
final models = featureToggleDoc.docs.map((e) {
final featureToggleModel = FeatureToggleModel.fromJson(e.data());
featureToggleModel.uid = e.id;
return featureToggleModel;
}).toList();
return models;
} catch (err) {
throw FeatureTogglesDataServiceException(message: err.toString());
}
}