64 lines
2.1 KiB
Dart
64 lines
2.1 KiB
Dart
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<String> sourceElements = element.source!.split(".");
|
|
if (sourceElements.length > 1) {
|
|
final String modelName = sourceElements[0];
|
|
if (modelName == "description") {
|
|
testValue = descriptionRepository.getDescriptionByName(element.testValue);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
|
|
return testValue;
|
|
}
|
|
}
|