import 'package:aitrainer_app/model/cache.dart'; import 'package:aitrainer_app/repository/description_repository.dart'; import 'package:aitrainer_app/service/logging.dart'; import 'package:firebase_remote_config/firebase_remote_config.dart'; class SplitTestRepository with Logging { final RemoteConfig? _remoteConfig = Cache().remoteConfig; final DescriptionRepository descriptionRepository = DescriptionRepository(); String getSplitTestValue(String remoteConfigKey) { String testValue = ""; if (_remoteConfig != null) { _remoteConfig!.fetchAndActivate(); Map configs = _remoteConfig!.getAll(); RemoteConfigValue? value = configs[remoteConfigKey]; if (value != null) { log("A/B Test RemoteConfig $remoteConfigKey value: ${value.asString()}"); final String remoteConfigValue = value.asString(); testValue = this.getSplitTestValueByRemoteConfig(remoteConfigKey, remoteConfigValue); } else { log("RemoteConfig value $remoteConfigKey is null!!"); } } else { log(" !! remoteConfig isnull"); } return testValue; } String getSource(String remoteConfigKey) { String source = ""; return source; } String getSplitTestValueByRemoteConfig(String key, String value) { String testValue = ""; if (Cache().getSplitTests().isEmpty) { log("Splittests empty"); return testValue; } Cache().getSplitTests().forEach((element) { if (element.remoteConfigKey == key && element.remoteConfigValue == value && element.active) { testValue = element.testValue; log("A/B Test testValue: $testValue"); if (element.source != null && element.source!.isNotEmpty) { final List sourceElements = element.source!.split("."); if (sourceElements.length > 1) { final String modelName = sourceElements[0]; if (modelName == "description") { testValue = descriptionRepository.getDescriptionByName(element.testValue); } } } } }); return testValue; } }