WT 1.1.18+4 A/B Test sales page

This commit is contained in:
bossanyit
2021-06-05 15:39:12 +02:00
parent d5deaf48a9
commit 0ca3b71c03
48 changed files with 734 additions and 1223 deletions
+3
View File
@@ -33,6 +33,9 @@ class ExerciseApi with Logging {
}
Future<void> deleteExercise(Exercise exercise) async {
if (exercise.exerciseId == null) {
return;
}
int exerciseId = exercise.exerciseId!;
log(" ===== delete exercise: " + exerciseId.toString());
await _client.post("exercises/" + exerciseId.toString(), "");
+19 -15
View File
@@ -291,21 +291,25 @@ class FirebaseApi with logging.Logging {
Future<void> setupRemoteConfig() async {
initializeFlutterFire();
final RemoteConfig remoteConfig = RemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(seconds: 10),
minimumFetchInterval: const Duration(seconds: 1),
));
await remoteConfig.setDefaults(<String, dynamic>{
'sales_page_text': '0',
'sales_page_bkg': 'dark',
'sales_page_offer': 'monthly',
'please_log_in': '',
});
RemoteConfigValue(null, ValueSource.valueStatic);
Cache().setRemoteConfig(remoteConfig);
RemoteConfig? remoteConfig;
try {
remoteConfig = RemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(seconds: 60),
minimumFetchInterval: const Duration(hours: 6),
));
Map config = remoteConfig.getAll();
print("RemoteConfig sales_page_text Value : ${config['sales_page_text'].asString()}");
RemoteConfigValue(null, ValueSource.valueStatic);
Cache().setRemoteConfig(remoteConfig);
} on Exception catch (e) {
print('Unable to fetch remote config. Cached or default values will be used: $e');
if (remoteConfig != null) {
await remoteConfig.setDefaults(<String, dynamic>{
'sales_page_text_a': '',
'product_set_2': '',
});
Cache().setRemoteConfig(remoteConfig);
}
}
}
}
+6 -5
View File
@@ -15,9 +15,9 @@ import 'package:aitrainer_app/model/exercise_tree_parents.dart';
import 'package:aitrainer_app/model/exercise_type.dart';
import 'package:aitrainer_app/model/faq.dart';
import 'package:aitrainer_app/model/product.dart';
import 'package:aitrainer_app/model/product_test.dart';
import 'package:aitrainer_app/model/property.dart';
import 'package:aitrainer_app/model/purchase.dart';
import 'package:aitrainer_app/model/split_test.dart';
import 'package:aitrainer_app/model/training_plan.dart';
import 'package:aitrainer_app/model/tutorial.dart';
import 'package:aitrainer_app/service/api.dart';
@@ -92,6 +92,11 @@ class PackageApi {
final List<TrainingPlan>? plans = json.map((plan) => TrainingPlan.fromJson(plan)).toList();
Cache().setTrainingPlans(plans);
} else if (headRecord[0] == "SplitTests") {
final Iterable json = jsonDecode(headRecord[1]);
final List<SplitTest>? tests = json.map((test) => SplitTest.fromJson(test)).toList();
//print("A/B tests: $tests");
Cache().setSplitTests(tests);
}
});
@@ -156,10 +161,6 @@ class PackageApi {
final Iterable json = jsonDecode(headRecord[1]);
final List<Exercise> exercises = json.map((exerciseType) => Exercise.fromJson(exerciseType)).toList();
Cache().setExercises(exercises);
} else if (headRecord[0] == "ProductTest") {
final Iterable json = jsonDecode(headRecord[1]);
final List<ProductTest> productTests = json.map((productTest) => ProductTest.fromJson(productTest)).toList();
Cache().productTests = productTests;
} else if (headRecord[0] == "Purchase") {
final Iterable json = jsonDecode(headRecord[1]);
final List<Purchase> purchases = json.map((purchase) => Purchase.fromJson(purchase)).toList();
-23
View File
@@ -1,23 +0,0 @@
import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/model/product_test.dart';
import 'package:aitrainer_app/service/logging.dart';
import 'dart:convert';
import 'api.dart';
class ProductTestApi with Logging {
final APIClient _client = new APIClient();
Future<List<ProductTest>> getProductTestByCustomer(int customerId) async {
final body = await _client.get("product_test/customer/" + customerId.toString(), "");
final Iterable json = jsonDecode(body);
final List<ProductTest> productTests = json.map((productTest) => ProductTest.fromJson(productTest)).toList();
Cache().productTests = productTests;
return productTests;
}
Future<void> saveProductTest(ProductTest productTest) async {
String body = JsonEncoder().convert(productTest.toJson());
log(" ===== saving productTest:" + body);
await _client.post("product_test/", body);
}
}