WT 1.1.18+4 A/B Test sales page
This commit is contained in:
@@ -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(), "");
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user