updateFeatureToggle method

Future<void> updateFeatureToggle(
  1. FeatureToggleModel model
)

Implementation

Future<void> updateFeatureToggle(FeatureToggleModel model) async {
  try {
    if (model.uid is String) {
      var ref = this._firestore.collection('FeatureToggles');
      if (model.parent is Map<String, String>) {
        final keys = model.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 = model.parent![key];

        final collectionPath = key.split(RegExp(r'(?=[A-Z])'));

        final parentRef =
            _firestore.collection(collectionPath.join('/')).doc(value);

        ref = parentRef.collection('FeatureToggles');
      }

      var doc = ref.doc(model.uid);
      await doc.set(model.toJson(), SetOptions(merge: true));
    } else {
      throw FeatureTogglesDataServiceException(
          code: RdevCode.InvalidArgument,
          message: 'Feature toggle uid is required');
    }
  } catch (err) {
    throw FeatureTogglesDataServiceException(message: err.toString());
  }
}