WT 1.1.24+7 traning plan fixes

This commit is contained in:
bossanyit 2021-11-08 21:48:55 +01:00
parent 4c5aff91db
commit 0496f96da6
13 changed files with 295 additions and 256 deletions

View File

@ -33,7 +33,7 @@ if (keystorePropertiesFile.exists()) {
} }
android { android {
compileSdkVersion 28 compileSdkVersion 30
sourceSets { sourceSets {
main.java.srcDirs += 'src/main/kotlin' main.java.srcDirs += 'src/main/kotlin'
@ -46,7 +46,7 @@ android {
defaultConfig { defaultConfig {
applicationId "com.aitrainer.aitrainer_app" applicationId "com.aitrainer.aitrainer_app"
minSdkVersion 20 minSdkVersion 20
targetSdkVersion 29 targetSdkVersion 30
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName
multiDexEnabled true multiDexEnabled true
@ -75,9 +75,11 @@ flutter {
dependencies { dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
implementation 'com.google.firebase:firebase-analytics:18.0.0' implementation 'com.google.firebase:firebase-analytics:20.0.0'
implementation 'com.facebook.android:facebook-login:5.15.3' implementation 'com.facebook.android:facebook-login:5.15.3'
implementation 'com.android.support:multidex:1.0.3' implementation 'com.android.support:multidex:1.0.3'
implementation 'com.google.firebase:firebase-messaging:20.1.0' implementation 'com.google.firebase:firebase-messaging:20.1.0'
implementation 'com.google.firebase:firebase-core:20.0.0'
implementation 'com.google.firebase:firebase-inappmessaging-display:20.1.1'
} }
sourceCompatibility = '1.8' sourceCompatibility = '1.8'

View File

@ -27,12 +27,13 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
<!-- Deep Links --> <!-- Deep Links -->
<intent-filter> <intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with YOUR_SCHEME://YOUR_HOST --> <!-- Accepts URIs that begin with YOUR_SCHEME://YOUR_HOST -->
<data android:scheme="https" android:host="aitrainer.page.link" /> <data android:scheme="https" android:host="aitrainer.page.link" />
<data android:scheme="http" android:host="aitrainer.page.link" />
</intent-filter> </intent-filter>
</activity> </activity>
<!-- Don't delete the meta-data below. <!-- Don't delete the meta-data below.

View File

@ -25,117 +25,117 @@ PODS:
- FBSDKLoginKit/Login (11.2.1): - FBSDKLoginKit/Login (11.2.1):
- FBSDKCoreKit (~> 11.2.1) - FBSDKCoreKit (~> 11.2.1)
- FBSDKCoreKit_Basics (~> 11.2.1) - FBSDKCoreKit_Basics (~> 11.2.1)
- Firebase/Analytics (8.7.0): - Firebase/Analytics (8.9.0):
- Firebase/Core - Firebase/Core
- Firebase/Auth (8.7.0): - Firebase/Auth (8.9.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseAuth (~> 8.7.0) - FirebaseAuth (~> 8.9.0)
- Firebase/Core (8.7.0): - Firebase/Core (8.9.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseAnalytics (~> 8.7.0) - FirebaseAnalytics (~> 8.9.0)
- Firebase/CoreOnly (8.7.0): - Firebase/CoreOnly (8.9.0):
- FirebaseCore (= 8.7.0) - FirebaseCore (= 8.9.0)
- Firebase/DynamicLinks (8.7.0): - Firebase/DynamicLinks (8.9.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseDynamicLinks (~> 8.7.0) - FirebaseDynamicLinks (~> 8.9.0)
- Firebase/InAppMessaging (8.7.0): - Firebase/InAppMessaging (8.9.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseInAppMessaging (~> 8.7.0-beta) - FirebaseInAppMessaging (~> 8.9.0-beta)
- Firebase/Messaging (8.7.0): - Firebase/Messaging (8.9.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseMessaging (~> 8.7.0) - FirebaseMessaging (~> 8.9.0)
- Firebase/RemoteConfig (8.7.0): - Firebase/RemoteConfig (8.9.0):
- Firebase/CoreOnly - Firebase/CoreOnly
- FirebaseRemoteConfig (~> 8.7.0) - FirebaseRemoteConfig (~> 8.9.0)
- firebase_analytics (8.3.3): - firebase_analytics (8.3.3):
- Firebase/Analytics (= 8.7.0) - Firebase/Analytics (= 8.9.0)
- firebase_core - firebase_core
- Flutter - Flutter
- firebase_auth (3.1.2): - firebase_auth (3.1.2):
- Firebase/Auth (= 8.7.0) - Firebase/Auth (= 8.9.0)
- firebase_core - firebase_core
- Flutter - Flutter
- firebase_core (1.7.0): - firebase_core (1.10.0):
- Firebase/CoreOnly (= 8.7.0) - Firebase/CoreOnly (= 8.9.0)
- Flutter - Flutter
- firebase_dynamic_links (2.0.10): - firebase_dynamic_links (2.0.10):
- Firebase/DynamicLinks (= 8.7.0) - Firebase/DynamicLinks (= 8.9.0)
- firebase_core - firebase_core
- Flutter - Flutter
- firebase_in_app_messaging (0.5.0-10): - firebase_in_app_messaging (0.5.0-13):
- Firebase/InAppMessaging (= 8.7.0) - Firebase/InAppMessaging (= 8.9.0)
- firebase_core - firebase_core
- Flutter - Flutter
- firebase_messaging (10.0.8): - firebase_messaging (10.0.8):
- Firebase/Messaging (= 8.7.0) - Firebase/Messaging (= 8.9.0)
- firebase_core - firebase_core
- Flutter - Flutter
- firebase_remote_config (0.10.0-5): - firebase_remote_config (0.10.0-5):
- Firebase/RemoteConfig (= 8.7.0) - Firebase/RemoteConfig (= 8.9.0)
- firebase_core - firebase_core
- Flutter - Flutter
- FirebaseABTesting (8.8.0): - FirebaseABTesting (8.9.0):
- FirebaseCore (~> 8.0) - FirebaseCore (~> 8.0)
- FirebaseAnalytics (8.7.0): - FirebaseAnalytics (8.9.1):
- FirebaseAnalytics/AdIdSupport (= 8.7.0) - FirebaseAnalytics/AdIdSupport (= 8.9.1)
- FirebaseCore (~> 8.0) - FirebaseCore (~> 8.0)
- FirebaseInstallations (~> 8.0) - FirebaseInstallations (~> 8.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.4) - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
- GoogleUtilities/MethodSwizzler (~> 7.4) - GoogleUtilities/MethodSwizzler (~> 7.6)
- GoogleUtilities/Network (~> 7.4) - GoogleUtilities/Network (~> 7.6)
- "GoogleUtilities/NSData+zlib (~> 7.4)" - "GoogleUtilities/NSData+zlib (~> 7.6)"
- nanopb (~> 2.30908.0) - nanopb (~> 2.30908.0)
- FirebaseAnalytics/AdIdSupport (8.7.0): - FirebaseAnalytics/AdIdSupport (8.9.1):
- FirebaseCore (~> 8.0) - FirebaseCore (~> 8.0)
- FirebaseInstallations (~> 8.0) - FirebaseInstallations (~> 8.0)
- GoogleAppMeasurement (= 8.7.0) - GoogleAppMeasurement (= 8.9.1)
- GoogleUtilities/AppDelegateSwizzler (~> 7.4) - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
- GoogleUtilities/MethodSwizzler (~> 7.4) - GoogleUtilities/MethodSwizzler (~> 7.6)
- GoogleUtilities/Network (~> 7.4) - GoogleUtilities/Network (~> 7.6)
- "GoogleUtilities/NSData+zlib (~> 7.4)" - "GoogleUtilities/NSData+zlib (~> 7.6)"
- nanopb (~> 2.30908.0) - nanopb (~> 2.30908.0)
- FirebaseAuth (8.7.0): - FirebaseAuth (8.9.0):
- FirebaseCore (~> 8.0) - FirebaseCore (~> 8.0)
- GoogleUtilities/AppDelegateSwizzler (~> 7.4) - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
- GoogleUtilities/Environment (~> 7.4) - GoogleUtilities/Environment (~> 7.6)
- GTMSessionFetcher/Core (~> 1.5) - GTMSessionFetcher/Core (~> 1.5)
- FirebaseCore (8.7.0): - FirebaseCore (8.9.0):
- FirebaseCoreDiagnostics (~> 8.0) - FirebaseCoreDiagnostics (~> 8.0)
- GoogleUtilities/Environment (~> 7.4) - GoogleUtilities/Environment (~> 7.6)
- GoogleUtilities/Logger (~> 7.4) - GoogleUtilities/Logger (~> 7.6)
- FirebaseCoreDiagnostics (8.8.0): - FirebaseCoreDiagnostics (8.9.0):
- GoogleDataTransport (~> 9.0) - GoogleDataTransport (~> 9.1)
- GoogleUtilities/Environment (~> 7.4) - GoogleUtilities/Environment (~> 7.6)
- GoogleUtilities/Logger (~> 7.4) - GoogleUtilities/Logger (~> 7.6)
- nanopb (~> 2.30908.0) - nanopb (~> 2.30908.0)
- FirebaseDynamicLinks (8.7.0): - FirebaseDynamicLinks (8.9.0):
- FirebaseCore (~> 8.0) - FirebaseCore (~> 8.0)
- FirebaseInAppMessaging (8.7.0-beta): - FirebaseInAppMessaging (8.9.0-beta):
- FirebaseABTesting (~> 8.0) - FirebaseABTesting (~> 8.0)
- FirebaseCore (~> 8.0) - FirebaseCore (~> 8.0)
- FirebaseInstallations (~> 8.0) - FirebaseInstallations (~> 8.0)
- GoogleUtilities/Environment (~> 7.4) - GoogleUtilities/Environment (~> 7.6)
- nanopb (~> 2.30908.0) - nanopb (~> 2.30908.0)
- FirebaseInstallations (8.8.0): - FirebaseInstallations (8.9.0):
- FirebaseCore (~> 8.0) - FirebaseCore (~> 8.0)
- GoogleUtilities/Environment (~> 7.4) - GoogleUtilities/Environment (~> 7.6)
- GoogleUtilities/UserDefaults (~> 7.4) - GoogleUtilities/UserDefaults (~> 7.6)
- PromisesObjC (< 3.0, >= 1.2) - PromisesObjC (< 3.0, >= 1.2)
- FirebaseMessaging (8.7.0): - FirebaseMessaging (8.9.0):
- FirebaseCore (~> 8.0) - FirebaseCore (~> 8.0)
- FirebaseInstallations (~> 8.0) - FirebaseInstallations (~> 8.0)
- GoogleDataTransport (~> 9.0) - GoogleDataTransport (~> 9.1)
- GoogleUtilities/AppDelegateSwizzler (~> 7.4) - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
- GoogleUtilities/Environment (~> 7.4) - GoogleUtilities/Environment (~> 7.6)
- GoogleUtilities/Reachability (~> 7.4) - GoogleUtilities/Reachability (~> 7.6)
- GoogleUtilities/UserDefaults (~> 7.4) - GoogleUtilities/UserDefaults (~> 7.6)
- nanopb (~> 2.30908.0) - nanopb (~> 2.30908.0)
- FirebaseRemoteConfig (8.7.0): - FirebaseRemoteConfig (8.9.0):
- FirebaseABTesting (~> 8.0) - FirebaseABTesting (~> 8.0)
- FirebaseCore (~> 8.0) - FirebaseCore (~> 8.0)
- FirebaseInstallations (~> 8.0) - FirebaseInstallations (~> 8.0)
- GoogleUtilities/Environment (~> 7.4) - GoogleUtilities/Environment (~> 7.6)
- "GoogleUtilities/NSData+zlib (~> 7.4)" - "GoogleUtilities/NSData+zlib (~> 7.6)"
- Flutter (1.0.0) - Flutter (1.0.0)
- flutter_app_badger (0.0.1): - flutter_app_badger (0.0.1):
- Flutter - Flutter
@ -154,20 +154,27 @@ PODS:
- google_sign_in (0.0.1): - google_sign_in (0.0.1):
- Flutter - Flutter
- GoogleSignIn (~> 5.0) - GoogleSignIn (~> 5.0)
- GoogleAppMeasurement (8.7.0): - GoogleAppMeasurement (8.9.1):
- GoogleAppMeasurement/AdIdSupport (= 8.7.0) - GoogleAppMeasurement/AdIdSupport (= 8.9.1)
- GoogleUtilities/AppDelegateSwizzler (~> 7.4) - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
- GoogleUtilities/MethodSwizzler (~> 7.4) - GoogleUtilities/MethodSwizzler (~> 7.6)
- GoogleUtilities/Network (~> 7.4) - GoogleUtilities/Network (~> 7.6)
- "GoogleUtilities/NSData+zlib (~> 7.4)" - "GoogleUtilities/NSData+zlib (~> 7.6)"
- nanopb (~> 2.30908.0) - nanopb (~> 2.30908.0)
- GoogleAppMeasurement/AdIdSupport (8.7.0): - GoogleAppMeasurement/AdIdSupport (8.9.1):
- GoogleUtilities/AppDelegateSwizzler (~> 7.4) - GoogleAppMeasurement/WithoutAdIdSupport (= 8.9.1)
- GoogleUtilities/MethodSwizzler (~> 7.4) - GoogleUtilities/AppDelegateSwizzler (~> 7.6)
- GoogleUtilities/Network (~> 7.4) - GoogleUtilities/MethodSwizzler (~> 7.6)
- "GoogleUtilities/NSData+zlib (~> 7.4)" - GoogleUtilities/Network (~> 7.6)
- "GoogleUtilities/NSData+zlib (~> 7.6)"
- nanopb (~> 2.30908.0) - nanopb (~> 2.30908.0)
- GoogleDataTransport (9.1.0): - GoogleAppMeasurement/WithoutAdIdSupport (8.9.1):
- GoogleUtilities/AppDelegateSwizzler (~> 7.6)
- GoogleUtilities/MethodSwizzler (~> 7.6)
- GoogleUtilities/Network (~> 7.6)
- "GoogleUtilities/NSData+zlib (~> 7.6)"
- nanopb (~> 2.30908.0)
- GoogleDataTransport (9.1.2):
- GoogleUtilities/Environment (~> 7.2) - GoogleUtilities/Environment (~> 7.2)
- nanopb (~> 2.30908.0) - nanopb (~> 2.30908.0)
- PromisesObjC (< 3.0, >= 1.2) - PromisesObjC (< 3.0, >= 1.2)
@ -175,24 +182,24 @@ PODS:
- AppAuth (~> 1.2) - AppAuth (~> 1.2)
- GTMAppAuth (~> 1.0) - GTMAppAuth (~> 1.0)
- GTMSessionFetcher/Core (~> 1.1) - GTMSessionFetcher/Core (~> 1.1)
- GoogleUtilities/AppDelegateSwizzler (7.5.2): - GoogleUtilities/AppDelegateSwizzler (7.6.0):
- GoogleUtilities/Environment - GoogleUtilities/Environment
- GoogleUtilities/Logger - GoogleUtilities/Logger
- GoogleUtilities/Network - GoogleUtilities/Network
- GoogleUtilities/Environment (7.5.2): - GoogleUtilities/Environment (7.6.0):
- PromisesObjC (< 3.0, >= 1.2) - PromisesObjC (< 3.0, >= 1.2)
- GoogleUtilities/Logger (7.5.2): - GoogleUtilities/Logger (7.6.0):
- GoogleUtilities/Environment - GoogleUtilities/Environment
- GoogleUtilities/MethodSwizzler (7.5.2): - GoogleUtilities/MethodSwizzler (7.6.0):
- GoogleUtilities/Logger - GoogleUtilities/Logger
- GoogleUtilities/Network (7.5.2): - GoogleUtilities/Network (7.6.0):
- GoogleUtilities/Logger - GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib" - "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability - GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (7.5.2)" - "GoogleUtilities/NSData+zlib (7.6.0)"
- GoogleUtilities/Reachability (7.5.2): - GoogleUtilities/Reachability (7.6.0):
- GoogleUtilities/Logger - GoogleUtilities/Logger
- GoogleUtilities/UserDefaults (7.5.2): - GoogleUtilities/UserDefaults (7.6.0):
- GoogleUtilities/Logger - GoogleUtilities/Logger
- GTMAppAuth (1.2.2): - GTMAppAuth (1.2.2):
- AppAuth/Core (~> 1.4) - AppAuth/Core (~> 1.4)
@ -240,7 +247,7 @@ PODS:
- FMDB (>= 2.7.5) - FMDB (>= 2.7.5)
- url_launcher (0.0.1): - url_launcher (0.0.1):
- Flutter - Flutter
- UXCam (3.3.7) - UXCam (3.3.9)
- video_player (0.0.1): - video_player (0.0.1):
- Flutter - Flutter
- wakelock (0.0.1): - wakelock (0.0.1):
@ -383,24 +390,24 @@ SPEC CHECKSUMS:
FBSDKCoreKit: bf655f808b040ed66a72b9922911b39d703e64f4 FBSDKCoreKit: bf655f808b040ed66a72b9922911b39d703e64f4
FBSDKCoreKit_Basics: 73ebe3a27eb688ac5b5aa7e99f68992993042115 FBSDKCoreKit_Basics: 73ebe3a27eb688ac5b5aa7e99f68992993042115
FBSDKLoginKit: 2e76831ef08d356b8f9150ea51cce865074ea304 FBSDKLoginKit: 2e76831ef08d356b8f9150ea51cce865074ea304
Firebase: bc9325d5ee2041524bac78a5213d0e530c651309 Firebase: 13d8d96499e2635428d5bf0ec675df21f95d9a95
firebase_analytics: 72e3c5d712e43eeb0cb6f194f7cc10bc81e7d3fe firebase_analytics: b4b760056b69bcb2bf0ebbbb8cf6f969921a86fe
firebase_auth: 3193124aa14a62b8abec3fd069df73ef378d2c5b firebase_auth: 45e41687f7d88ce8016c1f411320911b842245d7
firebase_core: f5ac1f2726a2bd0468cea0161eddeea3d83d7e3e firebase_core: f770e033e790657b3505f04be4cb24c482912f11
firebase_dynamic_links: 3c5f941aee6d2364c59e0ccb97218f55733a535c firebase_dynamic_links: db82b85aee9c6066de135cdb4bee41e5b9e281ac
firebase_in_app_messaging: 28508aa171a3032569910af896ca98a32cdfc827 firebase_in_app_messaging: 180fcaea83c2c0555c5c0243bc9dc2c3b3358b2a
firebase_messaging: cfee8830477d2f1875e027a65cce7f6239ebf583 firebase_messaging: 51b1029537c74503e935e4ccb221da8be8cbf26e
firebase_remote_config: 1835382fd6c6de8f44a196548b5ebe317726ff3e firebase_remote_config: 2a43c3a6d3430fedb4f9f7360acc757d4d962bff
FirebaseABTesting: 981336dd14d84787e33466e4247f77ec2343f8d9 FirebaseABTesting: 9de50b34bf9eb4a07d4edb7af82c14152fd905aa
FirebaseAnalytics: 52768800c2add1d84b751420cb4caaf8195f2c41 FirebaseAnalytics: 4ab446ce08a3fe52e8a4303dd997cf26276bf968
FirebaseAuth: 2e7d029977648c67a5d51a263d4cbab76d34cf12 FirebaseAuth: 2b78b2a32c07b3ecfa4970bdf1d3632b8304099b
FirebaseCore: f4804c1d3f4bbbefc88904d15653038f2c99ddf7 FirebaseCore: 599ee609343eaf4941bd188f85e3aa077ffe325b
FirebaseCoreDiagnostics: fe77f42da6329d6d83d21fd9d621a6b704413bfc FirebaseCoreDiagnostics: 5daa63f1c1409d981a2d5007daa100b36eac6a34
FirebaseDynamicLinks: e3fd315f43196811df8eac95803f10ff47c3b026 FirebaseDynamicLinks: 50980cbe21d2bbe8374afcdccd94dc2db20dffca
FirebaseInAppMessaging: d1cff11faa69d294bef9c0773b91a6c84f771ac5 FirebaseInAppMessaging: 2fc3754e9e63dd44daff52930f075525cc9a518c
FirebaseInstallations: 2563cb18a723ef9c6ef18318a49519b75dce613c FirebaseInstallations: caa7c8e0d3e2345b8829d2fa9ca1b4dfbf2fcc85
FirebaseMessaging: 93227dd71d7888e200baef65043f81acb2b6596e FirebaseMessaging: 82c4a48638f53f7b184f3cc9f6cd2cbe533ab316
FirebaseRemoteConfig: 34300dd83055c06e2768d0932dd8fb2c1575745f FirebaseRemoteConfig: a75c1bd44ebd3ed4ad3fa1ff09414a8b133be405
Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a
flutter_app_badger: 65de4d6f0c34a891df49e6cfb8a1c0496426fa68 flutter_app_badger: 65de4d6f0c34a891df49e6cfb8a1c0496426fa68
flutter_facebook_auth: 870a465b1afff3ace7a592bd44665d921991726c flutter_facebook_auth: 870a465b1afff3ace7a592bd44665d921991726c
@ -408,10 +415,10 @@ SPEC CHECKSUMS:
flutter_uxcam: 32e4e8b4355be6bf9d512ad36aed6d86c98a5cdf flutter_uxcam: 32e4e8b4355be6bf9d512ad36aed6d86c98a5cdf
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
google_sign_in: de494e5e993986afae63e22a32441e30c35c9823 google_sign_in: de494e5e993986afae63e22a32441e30c35c9823
GoogleAppMeasurement: 2be61ce546ad074dbe4dd545f222ac6033bb1d9e GoogleAppMeasurement: 837649ad3987936c232f6717c5680216f6243d24
GoogleDataTransport: 85fd18ff3019bb85d3f2c551d04c481dedf71fc9 GoogleDataTransport: 629c20a4d363167143f30ea78320d5a7eb8bd940
GoogleSignIn: 7137d297ddc022a7e0aa4619c86d72c909fa7213 GoogleSignIn: 7137d297ddc022a7e0aa4619c86d72c909fa7213
GoogleUtilities: 8de2a97a17e15b6b98e38e8770e2d129a57c0040 GoogleUtilities: 684ee790a24f73ebb2d1d966e9711c203f2a4237
GTMAppAuth: ad5c2b70b9a8689e1a04033c9369c4915bfcbe89 GTMAppAuth: ad5c2b70b9a8689e1a04033c9369c4915bfcbe89
GTMSessionFetcher: 43748f93435c2aa068b1cbe39655aaf600652e91 GTMSessionFetcher: 43748f93435c2aa068b1cbe39655aaf600652e91
modal_progress_hud_nsn: f6fb744cd060653d66ed8f325360ef3650eb2fde modal_progress_hud_nsn: f6fb744cd060653d66ed8f325360ef3650eb2fde
@ -432,7 +439,7 @@ SPEC CHECKSUMS:
smartlook: bbc5c73a85c752a31dabf100c8930838c646342e smartlook: bbc5c73a85c752a31dabf100c8930838c646342e
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904 sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
UXCam: 846259f745486b5d702423c8cbedf08e2cd8eb2c UXCam: fb294bf954e708fc308a645ae65bb967cac0760e
video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e video_player: 9cc823b1d9da7e8427ee591e8438bfbcde500e6e
wakelock: b0843b2479edbf6504d8d262c2959446f35373aa wakelock: b0843b2479edbf6504d8d262c2959446f35373aa
webview_flutter: 9f491a9b5a66f2573946a389b2677987b0ff8c0b webview_flutter: 9f491a9b5a66f2573946a389b2677987b0ff8c0b

View File

@ -388,7 +388,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 5; CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_TEAM = SFJJBDCU6Z; DEVELOPMENT_TEAM = SFJJBDCU6Z;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
@ -531,7 +531,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 5; CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_TEAM = SFJJBDCU6Z; DEVELOPMENT_TEAM = SFJJBDCU6Z;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
@ -566,7 +566,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = 5; CURRENT_PROJECT_VERSION = 6;
DEVELOPMENT_TEAM = SFJJBDCU6Z; DEVELOPMENT_TEAM = SFJJBDCU6Z;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (

View File

@ -44,6 +44,8 @@
<string>Workout Test</string> <string>Workout Test</string>
<key>FirebaseAppDelegateProxyEnabled</key> <key>FirebaseAppDelegateProxyEnabled</key>
<string>NO</string> <string>NO</string>
<key>FlutterDeepLinkingEnabled</key>
<true/>
<key>LSApplicationQueriesSchemes</key> <key>LSApplicationQueriesSchemes</key>
<array> <array>
<string>https</string> <string>https</string>

View File

@ -110,7 +110,7 @@ class TrainingPlanBloc extends Bloc<TrainingPlanEvent, TrainingPlanState> {
} else if (event is TrainingPlanWeightChangeRecalculate) { } else if (event is TrainingPlanWeightChangeRecalculate) {
yield TrainingPlanExerciseLoading(); yield TrainingPlanExerciseLoading();
if (event.detail.baseOneRepMax > 0) { if (event.detail.baseOneRepMax > 0 && event.detail.repeats != -1) {
if (_myTrainingPlan == null) { if (_myTrainingPlan == null) {
setTrainingPlanFromCache(); setTrainingPlanFromCache();
} }
@ -642,7 +642,7 @@ class TrainingPlanBloc extends Bloc<TrainingPlanEvent, TrainingPlanState> {
final String day = dayNames[this.activeDayIndex]; final String day = dayNames[this.activeDayIndex];
CustomerTrainingPlanDetails? prev; CustomerTrainingPlanDetails? prev;
for (var detail in _myPlan!.days[day]!) { for (var detail in _myPlan!.days[day]!) {
print("Offset detail $detail"); //print("Offset detail $detail");
if (detail.state == ExercisePlanDetailState.inProgress || detail.state == ExercisePlanDetailState.start) { if (detail.state == ExercisePlanDetailState.inProgress || detail.state == ExercisePlanDetailState.start) {
prev = detail; prev = detail;
break; break;
@ -818,7 +818,7 @@ class TrainingPlanBloc extends Bloc<TrainingPlanEvent, TrainingPlanState> {
allFinished = allFinished =
allFinished && (listDetail.exercises.length >= listDetail.set! || listDetail.state.equalsTo(ExercisePlanDetailState.skipped)); allFinished && (listDetail.exercises.length >= listDetail.set! || listDetail.state.equalsTo(ExercisePlanDetailState.skipped));
} }
print("All finished: $allFinished for ${detail.exerciseTypeId}"); //print("All finished: $allFinished for ${detail.exerciseTypeId}");
return allFinished; return allFinished;
} }
} }

View File

@ -28,6 +28,7 @@ class Customer {
DateTime? trialDate; DateTime? trialDate;
String? firebaseRegToken; String? firebaseRegToken;
String? lang; String? lang;
int? lifeLong;
LinkedHashMap<String, CustomerProperty> properties = LinkedHashMap(); LinkedHashMap<String, CustomerProperty> properties = LinkedHashMap();
@ -67,6 +68,7 @@ class Customer {
this.fitnessLevel = json['fitnessLevel']; this.fitnessLevel = json['fitnessLevel'];
this.goal = json['goal']; this.goal = json['goal'];
this.admin = json['admin']; this.admin = json['admin'];
this.lifeLong = json['lifeLong'];
this.trainer = json['trainer']; this.trainer = json['trainer'];
this.firebaseUid = json['firebaseUid']; this.firebaseUid = json['firebaseUid'];
@ -106,6 +108,7 @@ class Customer {
"trialDate": this.trialDate == null ? null : DateFormat('yyyy-MM-dd HH:mm:ss').format(this.trialDate!), "trialDate": this.trialDate == null ? null : DateFormat('yyyy-MM-dd HH:mm:ss').format(this.trialDate!),
"firebaseRegToken": this.firebaseRegToken, "firebaseRegToken": this.firebaseRegToken,
"lang": this.lang, "lang": this.lang,
"lifeLong": this.lifeLong,
}; };
@override @override

View File

@ -83,6 +83,7 @@ class TrainingPlanRepository {
detail.parallel = elem.parallel; detail.parallel = elem.parallel;
detail.restingTime = elem.restingTime; detail.restingTime = elem.restingTime;
detail.exerciseType = Cache().getExerciseTypeById(detail.exerciseTypeId!); detail.exerciseType = Cache().getExerciseTypeById(detail.exerciseTypeId!);
detail.alternatives = Common.getExerciseTypeAlternatives(detail.exerciseTypeId);
if (elem.weight == -1) { if (elem.weight == -1) {
if (detail.exerciseType!.unitQuantityUnit != null) { if (detail.exerciseType!.unitQuantityUnit != null) {
detail = getCalculatedWeightRepeats(elem.exerciseTypeId, detail); detail = getCalculatedWeightRepeats(elem.exerciseTypeId, detail);

View File

@ -48,7 +48,7 @@ class RevenueCatPurchases with Logging {
} }
bool inTrial = Cache().userLoggedIn!.trialDate != null && DateTime.now().difference(Cache().userLoggedIn!.trialDate!).inDays < 10; bool inTrial = Cache().userLoggedIn!.trialDate != null && DateTime.now().difference(Cache().userLoggedIn!.trialDate!).inDays < 10;
log("Trial mode: $inTrial date: ${Cache().userLoggedIn!.trialDate}"); log("Trial mode: $inTrial date: ${Cache().userLoggedIn!.trialDate}");
if (Cache().userLoggedIn!.admin == 1 || inTrial) { if (Cache().userLoggedIn!.admin == 1 || inTrial || Cache().userLoggedIn!.lifeLong == 1) {
Cache().hasPurchased = true; Cache().hasPurchased = true;
} }
} }

View File

@ -198,12 +198,12 @@ class ExerciseLogPage extends StatelessWidget with Trans, Common {
child: Badge( child: Badge(
elevation: 0, elevation: 0,
padding: EdgeInsets.all(0), padding: EdgeInsets.all(0),
position: BadgePosition.topStart(top: -25, start: -25), position: BadgePosition.topStart(top: -5, start: -10),
animationDuration: Duration(milliseconds: 1500), animationDuration: Duration(milliseconds: 1500),
animationType: BadgeAnimationType.fade, animationType: BadgeAnimationType.fade,
badgeColor: Colors.transparent, badgeColor: Colors.transparent,
showBadge: true, showBadge: true,
badgeContent: IconButton( badgeContent: /* IconButton(
iconSize: 36, iconSize: 36,
onPressed: () => showDialog( onPressed: () => showDialog(
context: context, context: context,
@ -218,11 +218,12 @@ class ExerciseLogPage extends StatelessWidget with Trans, Common {
text: '', text: '',
); );
}), }),
icon: Icon( icon: */
Icons.star, Icon(
size: 14, Icons.star,
color: Colors.orange[400], size: 14,
)), color: Colors.orange[400],
),
child: Image.asset( child: Image.asset(
"asset/image/kupa.png", "asset/image/kupa.png",
width: 35, width: 35,
@ -230,12 +231,12 @@ class ExerciseLogPage extends StatelessWidget with Trans, Common {
Badge( Badge(
elevation: 0, elevation: 0,
padding: EdgeInsets.all(0), padding: EdgeInsets.all(0),
position: BadgePosition.topStart(top: -18, start: -17), position: BadgePosition.topStart(top: 2, start: 5),
animationDuration: Duration(milliseconds: 1500), animationDuration: Duration(milliseconds: 1500),
animationType: BadgeAnimationType.fade, animationType: BadgeAnimationType.fade,
badgeColor: Colors.transparent, badgeColor: Colors.transparent,
showBadge: true, showBadge: true,
badgeContent: IconButton( badgeContent: /* Icon(
iconSize: 36, iconSize: 36,
onPressed: () => showDialog( onPressed: () => showDialog(
context: context, context: context,
@ -249,12 +250,12 @@ class ExerciseLogPage extends StatelessWidget with Trans, Common {
onTap: () => Navigator.of(context).pop(), onTap: () => Navigator.of(context).pop(),
text: '', text: '',
); );
}), }), */
icon: Icon( Icon(
Icons.star, Icons.star,
size: 14, size: 14,
color: Colors.orange[400], color: Colors.orange[400],
)), ),
child: IconButton( child: IconButton(
icon: Icon(Icons.delete, color: Colors.black12), icon: Icon(Icons.delete, color: Colors.black12),
onPressed: () { onPressed: () {

View File

@ -1,5 +1,5 @@
import 'dart:collection'; import 'dart:collection';
import 'dart:math' show pi;
import 'package:aitrainer_app/bloc/training_plan/training_plan_bloc.dart'; import 'package:aitrainer_app/bloc/training_plan/training_plan_bloc.dart';
import 'package:aitrainer_app/library/custom_icon_icons.dart'; import 'package:aitrainer_app/library/custom_icon_icons.dart';
import 'package:aitrainer_app/model/customer_training_plan_details.dart'; import 'package:aitrainer_app/model/customer_training_plan_details.dart';
@ -9,6 +9,7 @@ import 'package:aitrainer_app/util/trans.dart';
import 'package:aitrainer_app/widgets/app_bar.dart'; import 'package:aitrainer_app/widgets/app_bar.dart';
import 'package:aitrainer_app/widgets/dialog_common.dart'; import 'package:aitrainer_app/widgets/dialog_common.dart';
import 'package:aitrainer_app/widgets/dialog_html.dart'; import 'package:aitrainer_app/widgets/dialog_html.dart';
import 'package:aitrainer_app/widgets/menu_image.dart'; import 'package:aitrainer_app/widgets/menu_image.dart';
import 'package:badges/badges.dart'; import 'package:badges/badges.dart';
import 'package:extended_tabs/extended_tabs.dart'; import 'package:extended_tabs/extended_tabs.dart';
@ -510,131 +511,152 @@ class ExerciseTile extends StatelessWidget with Trans {
final CustomerTrainingPlanDetails? next = bloc.getNext(); final CustomerTrainingPlanDetails? next = bloc.getNext();
final bool noFilter = next != null && next.exerciseTypeId == detail.exerciseTypeId; final bool noFilter = next != null && next.exerciseTypeId == detail.exerciseTypeId;
final bool done = detail.state == ExercisePlanDetailState.finished; final bool done = bloc.isAllDetailsSameExerciseFinished(detail); //detail.state == ExercisePlanDetailState.finished;
final int step = bloc.getStep(detail); //detail.exercises.length; final int step = bloc.getStep(detail); //detail.exercises.length;
final bool buddyWarning = detail.exerciseType == null ? false : detail.exerciseType!.buddyWarning; final bool buddyWarning = detail.exerciseType == null ? false : detail.exerciseType!.buddyWarning;
final bool hasAlternative = false; //detail.alternatives.length > 0;
return Container( return Container(
child: Stack(alignment: Alignment.bottomLeft, children: [ child: Stack(alignment: Alignment.centerRight, children: [
Badge( Stack(alignment: Alignment.centerLeft, children: [
elevation: 0, Stack(alignment: Alignment.bottomLeft, children: [
padding: EdgeInsets.all(0), Badge(
position: BadgePosition.topEnd(top: 5, end: 5), elevation: 0,
animationDuration: Duration(milliseconds: 1500), padding: EdgeInsets.all(0),
animationType: BadgeAnimationType.fade, position: BadgePosition.topEnd(top: 5, end: 5),
badgeColor: Colors.transparent, animationDuration: Duration(milliseconds: 1500),
showBadge: noFilter || done, animationType: BadgeAnimationType.fade,
badgeContent: IconButton( badgeColor: Colors.transparent,
iconSize: 40, showBadge: noFilter || done,
onPressed: () => !done ? skip() : {}, badgeContent: IconButton(
icon: Icon( iconSize: 40,
done ? CustomIcon.ok_circled : Icons.cancel, onPressed: () => !done ? skip() : {},
color: done ? Colors.green[600] : Colors.red[600], icon: Icon(
)), done ? CustomIcon.ok_circled : Icons.cancel,
child: Badge( color: done ? Colors.green[600] : Colors.red[600],
elevation: 0, )),
padding: EdgeInsets.all(0), child: Badge(
position: BadgePosition.topStart(top: 5, start: 5), elevation: 0,
animationDuration: Duration(milliseconds: 1000), padding: EdgeInsets.all(0),
animationType: BadgeAnimationType.scale, position: BadgePosition.topStart(top: 5, start: 5),
badgeColor: Colors.transparent, animationDuration: Duration(milliseconds: 1000),
showBadge: true, animationType: BadgeAnimationType.scale,
badgeContent: IconButton( badgeColor: Colors.transparent,
iconSize: 36, showBadge: true,
onPressed: () => showDialog( badgeContent: IconButton(
context: context, iconSize: 36,
builder: (BuildContext context) { onPressed: () => showDialog(
return DialogHTML( context: context,
title: detail.exerciseType!.nameTranslation, builder: (BuildContext context) {
htmlData: '<p>' + detail.exerciseType!.descriptionTranslation + '</p>'); return DialogHTML(
}), title: detail.exerciseType!.nameTranslation,
icon: Icon( htmlData: '<p>' + detail.exerciseType!.descriptionTranslation + '</p>');
Icons.info_outline, }),
color: Colors.yellow[200], icon: Icon(
)), Icons.info_outline,
child: Badge( color: Colors.yellow[200],
elevation: 0, )),
padding: EdgeInsets.all(0), child: Badge(
position: BadgePosition.topEnd(top: 65, end: 1), elevation: 0,
animationDuration: Duration(milliseconds: 500), padding: EdgeInsets.all(0),
animationType: BadgeAnimationType.fade, position: BadgePosition.topEnd(top: 65, end: 1),
badgeColor: Colors.transparent, animationDuration: Duration(milliseconds: 500),
showBadge: buddyWarning, animationType: BadgeAnimationType.fade,
badgeContent: IconButton( badgeColor: Colors.transparent,
iconSize: 50, showBadge: buddyWarning,
onPressed: () => showDialog( badgeContent: IconButton(
context: context, iconSize: 50,
builder: (BuildContext context) { onPressed: () => showDialog(
return DialogCommon( context: context,
warning: true, builder: (BuildContext context) {
text: "Warning", return DialogCommon(
descriptions: t("Attention!"), warning: true,
description2: t("The safe and exact execution of this exercise you need a training buddy or a trainer"), text: "Warning",
description3: t("Execution at your own risk!"), descriptions: t("Attention!"),
onTap: () => Navigator.of(context).pop(), description2: t("The safe and exact execution of this exercise you need a training buddy or a trainer"),
onCancel: () => Navigator.of(context).pop(), description3: t("Execution at your own risk!"),
title: t('Training Buddy'), onTap: () => Navigator.of(context).pop(),
); onCancel: () => Navigator.of(context).pop(),
}), title: t('Training Buddy'),
icon: Icon( );
CustomIcon.exclamation_circle, }),
color: Colors.red[800], icon: Icon(
)), CustomIcon.exclamation_circle,
child: Column(children: [ color: Colors.red[800],
MenuImage( )),
imageName: bloc.getActualImageName(detail.exerciseType!.exerciseTypeId), child: Column(children: [
workoutTreeId: bloc.getActualWorkoutTreeId(detail.exerciseType!.exerciseTypeId)!, MenuImage(
radius: 0, imageName: bloc.getActualImageName(detail.exerciseType!.exerciseTypeId),
filter: !noFilter, workoutTreeId: bloc.getActualWorkoutTreeId(detail.exerciseType!.exerciseTypeId)!,
), radius: 0,
Container( filter: !noFilter,
padding: EdgeInsets.only(left: 20, top: 10, bottom: 0),
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('asset/image/WT_zold.jpg'),
fit: BoxFit.cover,
alignment: Alignment.center,
),
), ),
foregroundDecoration: !noFilter Container(
? BoxDecoration( padding: EdgeInsets.only(left: 20, top: 10, bottom: 0),
color: Colors.black38, decoration: BoxDecoration(
backgroundBlendMode: BlendMode.darken, image: DecorationImage(
) image: AssetImage('asset/image/WT_zold.jpg'),
: null, fit: BoxFit.cover,
height: 80, alignment: Alignment.center,
width: double.infinity, ),
child: getExerciseQuantities(detail, step, noFilter), ),
) foregroundDecoration: !noFilter
])))), ? BoxDecoration(
Container( color: Colors.black38,
padding: EdgeInsets.only(left: 15, bottom: 80, right: 15), backgroundBlendMode: BlendMode.darken,
width: double.infinity, )
color: Colors.transparent, : null,
child: Text( height: 80,
detail.exerciseType!.nameTranslation, width: double.infinity,
maxLines: 3, child: getExerciseQuantities(detail, step, noFilter),
style: GoogleFonts.archivoBlack( )
color: noFilter ? Colors.white : Colors.grey, ])))),
fontSize: 36, Container(
height: 1.1, padding: EdgeInsets.only(left: 15, bottom: 80, right: 15),
shadows: <Shadow>[ width: double.infinity,
Shadow( color: Colors.transparent,
offset: Offset(16.0, 16.0), child: Text(
blurRadius: 16.0, detail.exerciseType!.nameTranslation,
color: Colors.black54, maxLines: 3,
), style: GoogleFonts.archivoBlack(
Shadow( color: noFilter ? Colors.white : Colors.grey,
offset: Offset(16.0, 16.0), fontSize: 36,
blurRadius: 16.0, height: 1.1,
color: Colors.black54, shadows: <Shadow>[
), Shadow(
], offset: Offset(16.0, 16.0),
blurRadius: 16.0,
color: Colors.black54,
),
Shadow(
offset: Offset(16.0, 16.0),
blurRadius: 16.0,
color: Colors.black54,
),
],
),
), ),
), ),
), ]),
hasAlternative
? Image.asset(
'asset/image/alternatives_arrow.png',
height: 100,
width: 100,
)
: Offstage(),
]), ]),
); hasAlternative
? Transform.rotate(
angle: pi,
alignment: Alignment.center,
child: Image.asset(
'asset/image/alternatives_arrow.png',
height: 100,
width: 100,
),
)
: Offstage(),
]));
} }
void skip() { void skip() {

View File

@ -378,21 +378,21 @@ packages:
name: firebase_core name: firebase_core
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.7.0" version: "1.10.0"
firebase_core_platform_interface: firebase_core_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_platform_interface name: firebase_core_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.1" version: "4.1.0"
firebase_core_web: firebase_core_web:
dependency: transitive dependency: transitive
description: description:
name: firebase_core_web name: firebase_core_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0" version: "1.2.0"
firebase_dynamic_links: firebase_dynamic_links:
dependency: "direct main" dependency: "direct main"
description: description:
@ -406,7 +406,7 @@ packages:
name: firebase_in_app_messaging name: firebase_in_app_messaging
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.5.0+10" version: "0.5.0+13"
firebase_messaging: firebase_messaging:
dependency: "direct main" dependency: "direct main"
description: description:

View File

@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at # Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.1.24+99 version: 1.1.24+101
environment: environment:
sdk: ">=2.12.0 <3.0.0" sdk: ">=2.12.0 <3.0.0"
@ -67,7 +67,7 @@ dependencies:
firebase_auth: ^3.0.2 firebase_auth: ^3.0.2
firebase_remote_config: ^0.10.0+4 firebase_remote_config: ^0.10.0+4
firebase_dynamic_links: ^2.0.8 firebase_dynamic_links: ^2.0.8
firebase_in_app_messaging: ^0.5.0+8 firebase_in_app_messaging: ^0.5.0+13
syncfusion_flutter_gauges: ^19.3.48 syncfusion_flutter_gauges: ^19.3.48
syncfusion_flutter_datagrid: ^19.1.63 syncfusion_flutter_datagrid: ^19.1.63