WT1.1.4 build 45 android fb, iap

This commit is contained in:
bossanyit
2021-01-12 16:45:43 +01:00
parent f3cc241f65
commit 4bd1950ffd
26 changed files with 772 additions and 180 deletions
+19
View File
@@ -3,6 +3,7 @@ import 'dart:convert';
import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/model/exercise_tree.dart';
import 'package:aitrainer_app/model/exercise_tree_parents.dart';
import 'package:flutter/services.dart';
import 'api.dart';
class ExerciseTreeApi {
@@ -15,10 +16,28 @@ class ExerciseTreeApi {
exerciseTree = await getExerciseTreeParents(exerciseTree);
if (exerciseTree != null) {
exerciseTree.forEach((element) async {
element.imageUrl = await _buildImage(element.imageUrl);
});
}
Cache().setExerciseTree(exerciseTree);
return exerciseTree;
}
Future<String> _buildImage(String imageUrl) async {
String assetImage = 'asset/menu/' + imageUrl.substring(7);
//print("Loading image " + assetImage);
return rootBundle.load(assetImage).then((value) {
return assetImage;
}).catchError((_) {
String imagePath = assetImage.substring(10);
String url = Cache.mediaUrl + 'images' + imagePath;
//print("Exception: " + assetImage + " will be loaded from the network " + url);
return url;
});
}
Future<List<ExerciseTree>> getExerciseTreeParents(List<ExerciseTree> exerciseTree) async {
List<ExerciseTree> copyList = this._copyList(exerciseTree);
+22
View File
@@ -3,6 +3,7 @@ import 'package:aitrainer_app/model/cache.dart';
import 'package:aitrainer_app/model/exercise_type.dart';
import 'package:aitrainer_app/service/api.dart';
import 'package:aitrainer_app/service/logging.dart';
import 'package:flutter/services.dart';
class ExerciseTypeApi with Logging {
final APIClient _client = new APIClient();
@@ -11,10 +12,31 @@ class ExerciseTypeApi with Logging {
final body = await _client.get("exercise_type", "");
final Iterable json = jsonDecode(body);
final List<ExerciseType> exerciseTypes = json.map((exerciseType) => ExerciseType.fromJson(exerciseType)).toList();
if (exerciseTypes != null) {
exerciseTypes.forEach((element) async {
element.imageUrl = await _buildImage(element.imageUrl);
});
}
Cache().setExerciseTypes(exerciseTypes);
return exerciseTypes;
}
Future<String> _buildImage(String imageUrl) async {
if (imageUrl.length > 8) {
String assetImage = 'asset/menu/' + imageUrl.substring(7);
return rootBundle.load(assetImage).then((value) {
return assetImage;
}).catchError((_) {
String imagePath = assetImage.substring(10);
String url = Cache.mediaUrl + 'images' + imagePath;
//print("Exception: " + assetImage + " will be loaded from the network " + url);
return url;
});
} else {
return imageUrl;
}
}
Future<void> saveExerciseType(ExerciseType exerciseType) async {
String body = JsonEncoder().convert(exerciseType.toJson());
log(" ===== saving exerciseType id: " + exerciseType.exerciseTypeId.toString() + ":" + body);
+6
View File
@@ -35,6 +35,12 @@ class FirebaseApi with Logging {
}
Future<String> signInEmail(String email, String password) async {
if (email == null) {
throw Exception("Please type an email address");
}
if (password == null) {
throw Exception("Password too short");
}
String rc = SIGN_IN_OK;
try {
userCredential = await FirebaseAuth.instance.signInWithEmailAndPassword(email: email, password: password);