diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml index 5aa9fc47..e5d6d0c2 100644 --- a/.github/workflows/build-release.yml +++ b/.github/workflows/build-release.yml @@ -12,14 +12,15 @@ jobs: uses: actions/checkout@v4 - name: Setup Java - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: - java-version: 17.x + java-version: '17' + distribution: 'oracle' - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 3 + ruby-version: '3.2' - name: Setup Flutter uses: subosito/flutter-action@v2 @@ -71,9 +72,9 @@ jobs: WGER_API_KEY: ${{ secrets.WGER_API_KEY }} - name: Upload build to Play Store - uses: maierj/fastlane-action@v3.0.0 - with: - lane: production + run: | + bundle install + bundle exec fastlane android production - name: Make Github release uses: softprops/action-gh-release@v1 @@ -120,6 +121,6 @@ jobs: git add pubspec.yaml git commit -m "Bump version to $( flutter pub run cider version )" git tag ${{ env.VERSION }} - git push ${{ env.VERSION }} - git push --delete ${{ env.VERSION_V }} + git push origin ${{ env.VERSION }} + git push origin --delete ${{ env.VERSION_V }} git push \ No newline at end of file diff --git a/AUTHORS.md b/AUTHORS.md index cbcbda3e..b617a4a7 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -23,9 +23,14 @@ - artchiee - - Tejas Bir Singh - - Abhishek Saini - +- Hanaa Allohibi - +- Shey Alnasrawi - ## Translators +- Saudi Arabian + - Hanaa Allohibi + - German - mondstern (2) diff --git a/Gemfile.lock b/Gemfile.lock index c8df7aea..e0b3d076 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,25 +3,25 @@ GEM specs: CFPropertyList (3.0.6) rexml - addressable (2.8.5) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) artifactory (3.0.15) atomos (0.1.3) - aws-eventstream (1.2.0) - aws-partitions (1.853.0) - aws-sdk-core (3.187.0) - aws-eventstream (~> 1, >= 1.0.2) + aws-eventstream (1.3.0) + aws-partitions (1.877.0) + aws-sdk-core (3.190.2) + aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.5) + aws-sigv4 (~> 1.8) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.72.0) - aws-sdk-core (~> 3, >= 3.184.0) + aws-sdk-kms (1.76.0) + aws-sdk-core (~> 3, >= 3.188.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.137.0) - aws-sdk-core (~> 3, >= 3.181.0) + aws-sdk-s3 (1.142.0) + aws-sdk-core (~> 3, >= 3.189.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.6) - aws-sigv4 (1.6.1) + aws-sigv4 (~> 1.8) + aws-sigv4 (1.8.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.1.0) @@ -32,10 +32,10 @@ GEM declarative (0.0.20) digest-crc (0.6.5) rake (>= 12.0.0, < 14.0.0) - domain_name (0.6.20231109) + domain_name (0.6.20240107) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.104.0) + excon (0.109.0) faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -64,8 +64,8 @@ GEM faraday-retry (1.0.3) faraday_middleware (1.2.0) faraday (~> 1.0) - fastimage (2.2.7) - fastlane (2.217.0) + fastimage (2.3.0) + fastlane (2.219.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -84,6 +84,7 @@ GEM gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) + google-cloud-env (>= 1.6.0, < 2.0.0) google-cloud-storage (~> 1.31) highline (~> 2.0) http-cookie (~> 1.0.5) @@ -92,7 +93,7 @@ GEM mini_magick (>= 4.9.4, < 5.0.0) multipart-post (>= 2.0.0, < 3.0.0) naturally (~> 2.2) - optparse (~> 0.1.1) + optparse (>= 0.1.1) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) security (= 0.1.3) @@ -107,7 +108,7 @@ GEM xcpretty-travis-formatter (>= 0.0.3) fastlane-plugin-versioning (0.5.2) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.52.0) + google-apis-androidpublisher_v3 (0.54.0) google-apis-core (>= 0.11.0, < 2.a) google-apis-core (0.11.2) addressable (~> 2.5, >= 2.5.1) @@ -122,19 +123,19 @@ GEM google-apis-core (>= 0.11.0, < 2.a) google-apis-playcustomapp_v1 (0.13.0) google-apis-core (>= 0.11.0, < 2.a) - google-apis-storage_v1 (0.29.0) + google-apis-storage_v1 (0.31.0) google-apis-core (>= 0.11.0, < 2.a) - google-cloud-core (1.6.0) - google-cloud-env (~> 1.0) + google-cloud-core (1.6.1) + google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) google-cloud-errors (1.3.1) - google-cloud-storage (1.45.0) + google-cloud-storage (1.47.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.29.0) + google-apis-storage_v1 (~> 0.31.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) @@ -149,7 +150,7 @@ GEM domain_name (~> 0.5) httpclient (2.8.3) jmespath (1.6.2) - json (2.6.3) + json (2.7.1) jwt (2.7.1) mini_magick (4.12.0) mini_mime (1.1.5) @@ -157,9 +158,9 @@ GEM multipart-post (2.3.0) nanaimo (0.3.0) naturally (2.2.1) - optparse (0.1.1) + optparse (0.4.0) os (1.1.4) - plist (3.7.0) + plist (3.7.1) public_suffix (5.0.4) rake (13.1.0) representable (3.2.0) @@ -185,7 +186,7 @@ GEM unicode-display_width (>= 1.1.1, < 3) trailblazer-option (0.1.2) tty-cursor (0.7.1) - tty-screen (0.8.1) + tty-screen (0.8.2) tty-spinner (0.9.3) tty-cursor (~> 0.7) uber (0.1.0) diff --git a/README.md b/README.md index d0164856..d9f2a5b0 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,11 @@ If you want to contribute, hop on the Discord server and say hi!

- + - + - +

## Installation @@ -40,30 +40,31 @@ Alternatively, you can use the test server (the db is reset every day): ### 2 -Install Flutter, and all its dependencies, and create a new virtual device: +Install Flutter and all its dependencies, and create a new virtual device: . The app currently uses flutter 3.16 ### 3 +The application will complain about an API key not being set. You can just +ignore this during development, this is only important if you want to register +directly over the app. If you just want to login, you can skip this section. -Create a new file ``wger.properties`` in ``fastlane/metadata/envfiles/``: +If you want to register directly over the app, you need to set a user on the backend +that is allowed to do this. For this, create/register a new user, generate an api key +and run ``python3 manage.py add-user-rest theusername`` (you can later list all the +registered users with ``python3 manage.py list-users-api``). + +Then create a new file ``wger.properties`` in ``fastlane/metadata/envfiles/`` and +add the key: ```properties WGER_API_KEY=123456 ``` -On Linux and macOS, add these as environment variables, e.g. by running the `source` +Alternatively, add the key as an environment variables, e.g. by running the `source` command on the file. -To just run/develop the app it only needs to have any value for WGER_API_KEY, but -you need a correct value if you want to register via the app. For this, you need -to allow (a probably dedicated) user on the wger server to register users on its -behalf. For this, generate an API KEY by visiting -on your local instance and then run ``python3 manage.py add-user-rest the username`` - -You can later list all the registered users with: ``python3 manage.py list-users-api`` - ### 4 Start the application with ``flutter run`` or use your IDE @@ -74,7 +75,7 @@ You can run the tests with the ``flutter test`` ## Translation -Translate the app to your language on [Weblate](https://hosted.weblate.org/engage/wger/). +Translate the app to your language on [Weblate](https://hosted.weblate.org/engage/wger/). [![translation status](https://hosted.weblate.org/widgets/wger/-/mobile/multi-blue.svg)](https://hosted.weblate.org/engage/wger/) diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png index d3c5fff7..94309dd1 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ca/images/phoneScreenshots/02 - workout detail.png index dde86efc..6fe046a8 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ca/images/phoneScreenshots/03 - gym mode.png index c4eb428c..35ec1a78 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ca/images/phoneScreenshots/04 - measurements.png index 68a85478..157f90d0 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ca/images/phoneScreenshots/05 - nutritional plan.png index 8099005f..05b9ff04 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ca/images/phoneScreenshots/06 - weight.png index 1d519720..b6d9455d 100644 Binary files a/fastlane/metadata/android/ca/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/ca/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/01 - dashboard.png index 61372e4e..27908569 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/02 - workout detail.png index 097161f0..445e575d 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/03 - gym mode.png index fcf79544..461e8f9b 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/04 - measurements.png index 808a77bc..42b37da3 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/05 - nutritional plan.png index 34f96c72..aa12a8d6 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ca/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ca/images/tenInchScreenshots/06 - weight.png index df0b3d91..f6419c32 100644 Binary files a/fastlane/metadata/android/ca/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ca/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/01 - dashboard.png index bf3a8ece..83bef4fd 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/02 - workout detail.png index 070220ea..f30bdc39 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/03 - gym mode.png index d3ecec56..99cf8bb4 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/04 - measurements.png index 36e3161d..92bc0439 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/05 - nutritional plan.png index ad569028..01df4c80 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/de-DE/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/de-DE/images/phoneScreenshots/06 - weight.png index 681bbb0a..634da29f 100644 Binary files a/fastlane/metadata/android/de-DE/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/de-DE/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01 - dashboard.png index 947f780a..df1bca97 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02 - workout detail.png index 6b5d1bb9..1d5a6907 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03 - gym mode.png index 7daa84e7..3e33192d 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04 - measurements.png index c85c18e4..df92f03c 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05 - nutritional plan.png index 681db0c8..e1fc2281 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/06 - weight.png index 059aa620..0ac0f2fa 100644 Binary files a/fastlane/metadata/android/de-DE/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/de-DE/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png new file mode 100644 index 00000000..a56b3002 Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/02 - workout detail.png new file mode 100644 index 00000000..c5b80a25 Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/03 - gym mode.png new file mode 100644 index 00000000..0af70e46 Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/04 - measurements.png new file mode 100644 index 00000000..f171872b Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..ae36c68e Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/06 - weight.png new file mode 100644 index 00000000..e0d4d2bc Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..bf59e6e4 Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..e90e7775 Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..825c85b0 Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..4bdab99c Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..8eb4ab45 Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..c75b6946 Binary files /dev/null and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/01 - dashboard.png index 9a646423..591f9586 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/02 - workout detail.png index 4f099a13..d4052db6 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/03 - gym mode.png index 9bcf025e..51c15478 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/04 - measurements.png index f92f0292..b48cad2c 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/05 - nutritional plan.png index dfdd5f79..7d20ebc9 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/06 - weight.png index 174f3078..943a98dd 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/01 - dashboard.png index c2d8c6d9..486afa89 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/02 - workout detail.png index 1846b51e..f94cbb22 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/03 - gym mode.png index d2c1e70b..825c85b0 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/04 - measurements.png index 99e2fad8..09d47fd8 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/05 - nutritional plan.png index d9b2dcfe..370eb146 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/06 - weight.png index 8e56083e..8dcfa0ca 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/01 - dashboard.png index 0e2fab9a..a7707302 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/02 - workout detail.png index 19053690..e3b438f6 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/03 - gym mode.png index 0245db19..1318ae44 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/04 - measurements.png index e21483d2..191d1337 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/05 - nutritional plan.png index c830d563..76fd0663 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/es-ES/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/es-ES/images/phoneScreenshots/06 - weight.png index 2f0a7937..7d3f9515 100644 Binary files a/fastlane/metadata/android/es-ES/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/es-ES/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/01 - dashboard.png index 8b7205e0..0ad31865 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/02 - workout detail.png index 5db7020d..2642a0d3 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/03 - gym mode.png index 7f044e3a..c6ac7483 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/04 - measurements.png index 959c6b1e..689a2d20 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/05 - nutritional plan.png index 1d4e48a3..28ad6f65 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/06 - weight.png index 75c398c7..700e746e 100644 Binary files a/fastlane/metadata/android/es-ES/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/es-ES/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/01 - dashboard.png index 614385a7..1911c4b9 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02 - workout detail.png index f196593a..09ba2e03 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03 - gym mode.png index 7de86c3f..e53727fa 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04 - measurements.png index b0f61a0c..7811ff11 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05 - nutritional plan.png index 9b856c1a..2f3af904 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/06 - weight.png index a90d5f75..82bf994c 100644 Binary files a/fastlane/metadata/android/fr-FR/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/fr-FR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/01 - dashboard.png index 5a2065f0..0bc569fc 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/02 - workout detail.png index 9fbea689..6fb043d4 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/03 - gym mode.png index f5f2f355..2bbf89bf 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/04 - measurements.png index b907f735..1b3a23fe 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/05 - nutritional plan.png index 17e487cf..062a42cd 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/06 - weight.png index 1bd13e2c..87ee976b 100644 Binary files a/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/fr-FR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/01 - dashboard.png index 6424a776..44a8673b 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/02 - workout detail.png index 53633b50..1c10efc5 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/03 - gym mode.png index 556e8d9f..66d765a5 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/04 - measurements.png index 37fe29b1..0ab424a7 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/05 - nutritional plan.png index fade0968..60a06e73 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/06 - weight.png index 6fc7b59d..9f160979 100644 Binary files a/fastlane/metadata/android/hi-IN/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/hi-IN/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/01 - dashboard.png index 186619e3..8cf19109 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/02 - workout detail.png index e64e6696..599a8496 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/03 - gym mode.png index f6b42328..83187365 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/04 - measurements.png index 1d886453..2800a103 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/05 - nutritional plan.png index bbe6b5af..09efe851 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/06 - weight.png index efaa837e..d45c1acc 100644 Binary files a/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/hi-IN/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png index 610e9b17..0ca52983 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/hr/images/phoneScreenshots/02 - workout detail.png index 83ed0bab..9ef5d174 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/hr/images/phoneScreenshots/03 - gym mode.png index 4483d31a..98ac1539 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/hr/images/phoneScreenshots/04 - measurements.png index 043b8d8b..7dafde01 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hr/images/phoneScreenshots/05 - nutritional plan.png index 64a4cb30..cf64316d 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/hr/images/phoneScreenshots/06 - weight.png index 56f2f84f..0a299658 100644 Binary files a/fastlane/metadata/android/hr/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/hr/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/01 - dashboard.png index a9af66e5..f289e417 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/02 - workout detail.png index 089e1559..e0e6269b 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/03 - gym mode.png index 2addbe6e..2d24f17e 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/04 - measurements.png index f1a56388..958bd135 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/05 - nutritional plan.png index 89e57d23..08f4b0a6 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hr/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/hr/images/tenInchScreenshots/06 - weight.png index 37fe0afa..7291963c 100644 Binary files a/fastlane/metadata/android/hr/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/hr/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/01 - dashboard.png index 96369bd3..bab882df 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/02 - workout detail.png index 559cc831..77362ce1 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/03 - gym mode.png index f7cb9e10..1968f99e 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/04 - measurements.png index 0a6f75bf..fd8ec59b 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/05 - nutritional plan.png index ee0d5a46..ec303fcd 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/it-IT/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/it-IT/images/phoneScreenshots/06 - weight.png index 009444be..277d4f49 100644 Binary files a/fastlane/metadata/android/it-IT/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/it-IT/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01 - dashboard.png index 5aba2d21..aef866a2 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02 - workout detail.png index 7252a3e5..c2f2e469 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03 - gym mode.png index d452dd63..ca36f3e9 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04 - measurements.png index 7030caaa..52f05aaf 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05 - nutritional plan.png index 683286a3..8198830a 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/06 - weight.png index b0e9a213..8044c26b 100644 Binary files a/fastlane/metadata/android/it-IT/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/it-IT/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/01 - dashboard.png index 48e04cfd..23bbd7ca 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/02 - workout detail.png index d374796c..a31ea7f4 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/03 - gym mode.png index 9190a4de..51c15478 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/04 - measurements.png index 4a986a80..2e5a1730 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/05 - nutritional plan.png index 56d3b93f..4998bf60 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/06 - weight.png index 4980efb8..709723a5 100644 Binary files a/fastlane/metadata/android/nb-NO/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/nb-NO/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/01 - dashboard.png index 850463cf..4de775fe 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/02 - workout detail.png index b7af8d5a..5c291750 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/03 - gym mode.png index d2c1e70b..825c85b0 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/04 - measurements.png index 48ab7797..a81fcab7 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/05 - nutritional plan.png index 6b49ea40..9f6032cd 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/06 - weight.png index 86e9bd1f..ecad5360 100644 Binary files a/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/nb-NO/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/01 - dashboard.png index 1cd483b5..8083a3e9 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/02 - workout detail.png index 819a449a..2d881923 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/03 - gym mode.png index be469d83..47882b26 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/04 - measurements.png index a5116383..52e0dcfd 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/05 - nutritional plan.png index 617c5e0c..cdef0d8a 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/06 - weight.png index 11dbaefe..c4cba25b 100644 Binary files a/fastlane/metadata/android/pl-PL/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/pl-PL/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/01 - dashboard.png index d835451c..624ee0fd 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/02 - workout detail.png index 9f9780c5..031ad0d9 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/03 - gym mode.png index e3400420..fc382ac2 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/04 - measurements.png index 81fef6e7..957698f3 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/05 - nutritional plan.png index 1eb5b30d..203ab3d2 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/06 - weight.png index aeeb6557..1bafd3e4 100644 Binary files a/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pl-PL/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/01 - dashboard.png index 71e6f369..c5a2f9ae 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/02 - workout detail.png index ca0e53e9..e12183f3 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/03 - gym mode.png index b64be4fb..0a8b7518 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/04 - measurements.png index 9b54dad2..c2b28f20 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/05 - nutritional plan.png index 1d8b4471..a5dd947d 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/06 - weight.png index dd836bdd..3eae44a4 100644 Binary files a/fastlane/metadata/android/pt-BR/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-BR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/01 - dashboard.png index b194ca8b..81875ef5 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/02 - workout detail.png index 947e9d54..e5511614 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/03 - gym mode.png index b5a9b512..bdbf913b 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/04 - measurements.png index 98245bea..1d254684 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/05 - nutritional plan.png index 4198415b..a92d6787 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/06 - weight.png index ce03527b..a082674b 100644 Binary files a/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-BR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01 - dashboard.png index de3acf8b..278058da 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02 - workout detail.png index ea2a9803..7a70103e 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03 - gym mode.png index 9fa452b2..2320f167 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04 - measurements.png index 456ba8db..14ea73ea 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05 - nutritional plan.png index b7f00522..b4eef810 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/06 - weight.png index 263d102f..2b258801 100644 Binary files a/fastlane/metadata/android/ru-RU/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/ru-RU/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/01 - dashboard.png index b61252b7..092aa6b7 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/02 - workout detail.png index 54319748..9c295b60 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/03 - gym mode.png index 560499b8..d3b06a15 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/04 - measurements.png index 59c48ad5..9a818f6d 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/05 - nutritional plan.png index 80f6313d..bfb4795a 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/06 - weight.png index 032318fb..36a31f50 100644 Binary files a/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ru-RU/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/01 - dashboard.png index 13c48997..f79654c2 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/02 - workout detail.png index 3b17cab5..fd1a4703 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/03 - gym mode.png index 9d2e2754..fb1b8587 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/04 - measurements.png index d8ece96b..7296b352 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/05 - nutritional plan.png index 5b345f02..f7027918 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/06 - weight.png index fb063595..11e4f81c 100644 Binary files a/fastlane/metadata/android/tr-TR/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/tr-TR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/01 - dashboard.png index 8ec0b4ed..98dd2b01 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/02 - workout detail.png index fbd397eb..f0744c78 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/03 - gym mode.png index d87e7cdc..49db309a 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/04 - measurements.png index f5fea997..3dd47075 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/05 - nutritional plan.png index a67946bd..01cd830c 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/06 - weight.png index dd927851..7e2d8564 100644 Binary files a/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/tr-TR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png index dc092b53..0fae328e 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/uk/images/phoneScreenshots/02 - workout detail.png index b8dcc9e8..dae3dee7 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/uk/images/phoneScreenshots/03 - gym mode.png index a9acbb6f..fd7815e7 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/uk/images/phoneScreenshots/04 - measurements.png index 5cd1d469..6d3d57d9 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/uk/images/phoneScreenshots/05 - nutritional plan.png index 2fcacdbd..a220ec72 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/uk/images/phoneScreenshots/06 - weight.png index e71214d8..bc6a75f1 100644 Binary files a/fastlane/metadata/android/uk/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/uk/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/01 - dashboard.png index 8d975fd9..358c0816 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/02 - workout detail.png index 3417db38..760674d1 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/03 - gym mode.png index 253354da..2d6894fa 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/04 - measurements.png index c6bd5dcf..2a519ada 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/05 - nutritional plan.png index 26d5d891..e8927051 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/uk/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/uk/images/tenInchScreenshots/06 - weight.png index 9478427b..9ce072eb 100644 Binary files a/fastlane/metadata/android/uk/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/uk/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/01 - dashboard.png index 108a7e27..ae692319 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/02 - workout detail.png index f5e079ba..b2a2764a 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/03 - gym mode.png index 7b4e1435..1247c72e 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/04 - measurements.png index 9ade4727..50a908ed 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/05 - nutritional plan.png index 314092a3..15d75a91 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/06 - weight.png index 8d2c64b8..9341c45a 100644 Binary files a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/zh-CN/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/01 - dashboard.png index edc5ea27..731c23a8 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/02 - workout detail.png index 595a2e67..0ad30071 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/03 - gym mode.png index 73ddb549..9d7d5ddb 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/04 - measurements.png index ed711674..2c7edec4 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/05 - nutritional plan.png index d16422ef..08f3cd1d 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/06 - weight.png index 216bf860..379d1888 100644 Binary files a/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/zh-CN/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/report.xml b/fastlane/report.xml index c04fdec0..ec8e75e9 100644 --- a/fastlane/report.xml +++ b/fastlane/report.xml @@ -5,12 +5,12 @@ - + - + diff --git a/flatpak/scripts/flatpak_shared.dart b/flatpak/scripts/flatpak_shared.dart index d3ad12ad..4676cdf8 100644 --- a/flatpak/scripts/flatpak_shared.dart +++ b/flatpak/scripts/flatpak_shared.dart @@ -44,9 +44,8 @@ class Icon { _fileExtension = path.split('.').last; } - String getFilename(String appId) => (type == _symbolicType) - ? '$appId-symbolic.$_fileExtension' - : '$appId.$_fileExtension'; + String getFilename(String appId) => + (type == _symbolicType) ? '$appId-symbolic.$_fileExtension' : '$appId.$_fileExtension'; } class GithubReleases { @@ -75,8 +74,7 @@ class GithubReleases { final releaseJsonContent = (await http.get(Uri( scheme: 'https', host: 'api.github.com', - path: - '/repos/$githubReleaseOrganization/$githubReleaseProject/releases'))) + path: '/repos/$githubReleaseOrganization/$githubReleaseProject/releases'))) .body; final decodedJson = jsonDecode(releaseJsonContent) as List; @@ -87,29 +85,25 @@ class GithubReleases { await Future.forEach(decodedJson, (dynamic releaseDynamic) async { final releaseMap = releaseDynamic as Map; - final releaseDateAndTime = - DateTime.parse(releaseMap['published_at'] as String); - final releaseDateString = - releaseDateAndTime.toIso8601String().split('T').first; + final releaseDateAndTime = DateTime.parse(releaseMap['published_at'] as String); + final releaseDateString = releaseDateAndTime.toIso8601String().split('T').first; if (latestReleaseAssetDate == null || (latestReleaseAssetDate?.compareTo(releaseDateAndTime) == -1)) { - final assets = - await _parseGithubReleaseAssets(releaseMap['assets'] as List); + final assets = await _parseGithubReleaseAssets(releaseMap['assets'] as List); if (assets != null) { _latestReleaseAssets = assets; latestReleaseAssetDate = releaseDateAndTime; } } - releases.add(Release( - version: releaseMap['name'] as String, date: releaseDateString)); + releases.add(Release(version: releaseMap['name'] as String, date: releaseDateString)); }); if (releases.isNotEmpty || canBeEmpty) { _releases = releases; } else { - throw Exception("Github must contain at least 1 release."); + throw Exception('Github must contain at least 1 release.'); } } @@ -124,8 +118,7 @@ class GithubReleases { final downloadUrl = amMap['browser_download_url'] as String; final filename = amMap['name'] as String; final fileExtension = filename.substring(filename.indexOf('.') + 1); - final filenameWithoutExtension = - filename.substring(0, filename.indexOf('.')); + final filenameWithoutExtension = filename.substring(0, filename.indexOf('.')); final arch = filenameWithoutExtension.endsWith('aarch64') ? CPUArchitecture.aarch64 @@ -221,8 +214,7 @@ class FlatpakMeta { : _localReleases = localReleases, _localReleaseAssets = localReleaseAssets { if (githubReleaseOrganization != null && githubReleaseProject != null) { - _githubReleases = - GithubReleases(githubReleaseOrganization!, githubReleaseProject!); + _githubReleases = GithubReleases(githubReleaseOrganization!, githubReleaseProject!); } } @@ -231,20 +223,17 @@ class FlatpakMeta { final releases = List.empty(growable: true); if (addedTodaysVersion != null) { releases.add(Release( - version: addedTodaysVersion, - date: DateTime.now().toIso8601String().split("T").first)); + version: addedTodaysVersion, date: DateTime.now().toIso8601String().split('T').first)); } if (fetchReleasesFromGithub) { if (_githubReleases == null) { throw Exception( 'Metadata must include Github repository info if fetching releases from Github.'); } - releases.addAll( - await _githubReleases!.getReleases(addedTodaysVersion != null)); + releases.addAll(await _githubReleases!.getReleases(addedTodaysVersion != null)); } else { if (_localReleases == null && addedTodaysVersion == null) { - throw Exception( - 'Metadata must include releases if not fetching releases from Github.'); + throw Exception('Metadata must include releases if not fetching releases from Github.'); } if (_localReleases?.isNotEmpty ?? false) { releases.addAll(_localReleases!); @@ -253,8 +242,7 @@ class FlatpakMeta { return releases; } - Future?> getLatestReleaseAssets( - bool fetchReleasesFromGithub) async { + Future?> getLatestReleaseAssets(bool fetchReleasesFromGithub) async { if (fetchReleasesFromGithub) { if (_githubReleases == null) { throw Exception( @@ -263,8 +251,7 @@ class FlatpakMeta { return await _githubReleases!.getLatestReleaseAssets(); } else { if (_localReleases == null) { - throw Exception( - 'Metadata must include releases if not fetching releases from Github.'); + throw Exception('Metadata must include releases if not fetching releases from Github.'); } return _localReleaseAssets; } @@ -276,24 +263,20 @@ class FlatpakMeta { return FlatpakMeta( appId: json['appId'] as String, lowercaseAppName: json['lowercaseAppName'] as String, - githubReleaseOrganization: - json['githubReleaseOrganization'] as String?, + githubReleaseOrganization: json['githubReleaseOrganization'] as String?, githubReleaseProject: json['githubReleaseProject'] as String?, localReleases: skipLocalReleases ? null : (json['localReleases'] as List?)?.map((dynamic r) { final rMap = r as Map; - return Release( - version: rMap['version'] as String, - date: rMap['date'] as String); + return Release(version: rMap['version'] as String, date: rMap['date'] as String); }).toList(), localReleaseAssets: skipLocalReleases ? null : (json['localReleaseAssets'] as List?)?.map((dynamic ra) { final raMap = ra as Map; final archString = raMap['arch'] as String; - final arch = (archString == - CPUArchitecture.x86_64.flatpakArchCode) + final arch = (archString == CPUArchitecture.x86_64.flatpakArchCode) ? CPUArchitecture.x86_64 : (archString == CPUArchitecture.aarch64.flatpakArchCode) ? CPUArchitecture.aarch64 @@ -302,11 +285,10 @@ class FlatpakMeta { throw Exception( 'Architecture must be either "${CPUArchitecture.x86_64.flatpakArchCode}" or "${CPUArchitecture.aarch64.flatpakArchCode}"'); } - final tarballFile = File( - '${jsonFile.parent.path}/${raMap['tarballPath'] as String}'); + final tarballFile = + File('${jsonFile.parent.path}/${raMap['tarballPath'] as String}'); final tarballPath = tarballFile.absolute.path; - final preShasum = - Process.runSync('shasum', ['-a', '256', tarballPath]); + final preShasum = Process.runSync('shasum', ['-a', '256', tarballPath]); final shasum = preShasum.stdout.toString().split(' ').first; if (preShasum.exitCode != 0) { throw Exception(preShasum.stderr); @@ -321,17 +303,14 @@ class FlatpakMeta { appStreamPath: json['appStreamPath'] as String, desktopPath: json['desktopPath'] as String, icons: (json['icons'] as Map).entries.map((mapEntry) { - return Icon( - type: mapEntry.key as String, path: mapEntry.value as String); + return Icon(type: mapEntry.key as String, path: mapEntry.value as String); }).toList(), freedesktopRuntime: json['freedesktopRuntime'] as String, buildCommandsAfterUnpack: (json['buildCommandsAfterUnpack'] as List?) ?.map((dynamic bc) => bc as String) .toList(), extraModules: json['extraModules'] as List?, - finishArgs: (json['finishArgs'] as List) - .map((dynamic fa) => fa as String) - .toList()); + finishArgs: (json['finishArgs'] as List).map((dynamic fa) => fa as String).toList()); } catch (e) { throw Exception('Could not parse JSON file, due to this error:\n$e'); } diff --git a/flatpak/scripts/manifest_generator.dart b/flatpak/scripts/manifest_generator.dart index 8957a3d1..254bb1ae 100644 --- a/flatpak/scripts/manifest_generator.dart +++ b/flatpak/scripts/manifest_generator.dart @@ -26,8 +26,7 @@ void main(List arguments) async { 'You must run this script with a metadata file argument, using the --meta flag.'); } if (arguments.length == metaIndex + 1) { - throw Exception( - 'The --meta flag must be followed by the path to the metadata file.'); + throw Exception('The --meta flag must be followed by the path to the metadata file.'); } final metaFile = File(arguments[metaIndex + 1]); @@ -37,23 +36,19 @@ void main(List arguments) async { final fetchFromGithub = arguments.contains('--github'); - final meta = - FlatpakMeta.fromJson(metaFile, skipLocalReleases: fetchFromGithub); + final meta = FlatpakMeta.fromJson(metaFile, skipLocalReleases: fetchFromGithub); - final outputDir = - Directory('${Directory.current.path}/flatpak_generator_exports'); + final outputDir = Directory('${Directory.current.path}/flatpak_generator_exports'); outputDir.createSync(); final manifestGenerator = FlatpakManifestGenerator(meta); - final manifestContent = - await manifestGenerator.generateFlatpakManifest(fetchFromGithub); + final manifestContent = await manifestGenerator.generateFlatpakManifest(fetchFromGithub); final manifestPath = '${outputDir.path}/${meta.appId}.json'; final manifestFile = File(manifestPath); manifestFile.writeAsStringSync(manifestContent); print('Generated $manifestPath'); - final flathubJsonContent = - await manifestGenerator.generateFlathubJson(fetchFromGithub); + final flathubJsonContent = await manifestGenerator.generateFlathubJson(fetchFromGithub); if (flathubJsonContent != null) { final flathubJsonPath = '${outputDir.path}/flathub.json'; final flathubJsonFile = File(flathubJsonPath); @@ -132,8 +127,7 @@ class FlatpakManifestGenerator { const encoder = JsonEncoder.withIndent(' '); - final onlyArchListInput = - fetchFromGithub ? _githubArchSupport! : _localArchSupport!; + final onlyArchListInput = fetchFromGithub ? _githubArchSupport! : _localArchSupport!; final onlyArchList = List.empty(growable: true); for (final e in onlyArchListInput.entries) { @@ -149,8 +143,7 @@ class FlatpakManifestGenerator { } } - void _lazyGenerateArchSupportMap( - bool fetchFromGithub, List assets) { + void _lazyGenerateArchSupportMap(bool fetchFromGithub, List assets) { if (fetchFromGithub) { if (_githubArchSupport == null) { _githubArchSupport = { diff --git a/flatpak/scripts/pubspec.lock b/flatpak/scripts/pubspec.lock index d3d4f846..4da5d192 100644 --- a/flatpak/scripts/pubspec.lock +++ b/flatpak/scripts/pubspec.lock @@ -13,18 +13,18 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.18.0" http: dependency: "direct main" description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "0.13.6" http_parser: dependency: transitive description: @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.11.0" path: dependency: transitive description: @@ -77,9 +77,9 @@ packages: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" sdks: - dart: ">=2.18.5 <4.0.0" + dart: ">=2.19.0 <4.0.0" diff --git a/integration_test/1_dashboard.dart b/integration_test/1_dashboard.dart index 31578858..cbd5d2ab 100644 --- a/integration_test/1_dashboard.dart +++ b/integration_test/1_dashboard.dart @@ -14,13 +14,14 @@ import '../test/nutrition/nutritional_plan_form_test.mocks.dart'; import '../test/workout/weight_unit_form_widget_test.mocks.dart'; import '../test/workout/workout_form_test.mocks.dart'; import '../test_data/body_weight.dart'; +import '../test_data/exercises.dart'; import '../test_data/measurements.dart'; import '../test_data/nutritional_plans.dart'; import '../test_data/workouts.dart'; Widget createDashboardScreen({locale = 'en'}) { final mockWorkoutProvider = MockWorkoutPlansProvider(); - when(mockWorkoutProvider.activePlan).thenReturn(getWorkout()); + when(mockWorkoutProvider.activePlan).thenReturn(getWorkout(exercises: getScreenshotExercises())); final Map logs = { 'results': [ diff --git a/integration_test/2_workout.dart b/integration_test/2_workout.dart index 3b6f4fa9..ede8fe71 100644 --- a/integration_test/2_workout.dart +++ b/integration_test/2_workout.dart @@ -7,13 +7,14 @@ import 'package:wger/screens/workout_plan_screen.dart'; import 'package:wger/theme/theme.dart'; import '../test/workout/workout_form_test.mocks.dart'; +import '../test_data/exercises.dart'; import '../test_data/workouts.dart'; Widget createWorkoutDetailScreen({locale = 'en'}) { final key = GlobalKey(); final mockWorkoutProvider = MockWorkoutPlansProvider(); - final workout = getWorkout(); + final workout = getWorkout(exercises: getScreenshotExercises()); when(mockWorkoutProvider.activePlan).thenReturn(workout); when(mockWorkoutProvider.fetchAndSetWorkoutPlanFull(1)).thenAnswer((_) => Future.value(workout)); @@ -33,7 +34,7 @@ Widget createWorkoutDetailScreen({locale = 'en'}) { home: TextButton( onPressed: () => key.currentState!.push( MaterialPageRoute( - settings: RouteSettings(arguments: getWorkout()), + settings: RouteSettings(arguments: workout), builder: (_) => WorkoutPlanScreen(), ), ), diff --git a/integration_test/3_gym_mode.dart b/integration_test/3_gym_mode.dart index 8ffcbdc2..51ccbc75 100644 --- a/integration_test/3_gym_mode.dart +++ b/integration_test/3_gym_mode.dart @@ -16,12 +16,12 @@ import '../test_data/workouts.dart'; Widget createGymModeScreen({locale = 'en'}) { final key = GlobalKey(); final bases = getTestExerciseBases(); - final workout = getWorkout(); + final workout = getWorkout(exercises: getScreenshotExercises()); final mockExerciseProvider = MockExercisesProvider(); - when(mockExerciseProvider.findExerciseBaseById(1)).thenReturn(bases[0]); // bench press - when(mockExerciseProvider.findExerciseBaseById(6)).thenReturn(bases[5]); // side raises + when(mockExerciseProvider.findExerciseById(1)).thenReturn(bases[0]); // bench press + when(mockExerciseProvider.findExerciseById(6)).thenReturn(bases[5]); // side raises //when(mockExerciseProvider.findExerciseBaseById(2)).thenReturn(bases[1]); // crunches //when(mockExerciseProvider.findExerciseBaseById(3)).thenReturn(bases[2]); // dead lift diff --git a/integration_test/README.md b/integration_test/README.md index d4fcea9c..cdc6a593 100644 --- a/integration_test/README.md +++ b/integration_test/README.md @@ -1,10 +1,12 @@ -Start emulator and run +This will generate some screenshots and save them to the Play Store metadata folder. -`flutter drive --driver=test_driver/screenshot_driver.dart --target=integration_test/make_screenshots_test.dart` +1) Set the correct value for the device size by setting the `destination` variable +2) Start the correct emulator and + run `flutter drive --driver=test_driver/screenshot_driver.dart --target=integration_test/make_screenshots_test.dart` +3) If you get errors or the screenshots are not written to disk, edit the + `languages` list and comment some of the languages -This will generate some screenshots and save them to the Play Store metadata folder - -See +See also * * diff --git a/integration_test/make_screenshots_test.dart b/integration_test/make_screenshots_test.dart index 633d34d4..5dcddb1e 100644 --- a/integration_test/make_screenshots_test.dart +++ b/integration_test/make_screenshots_test.dart @@ -19,6 +19,7 @@ enum DeviceType { tvScreenshots, wearScreenshots } + final destination = DeviceType.phoneScreenshots.name; Future takeScreenshot(tester, binding, String language, String name) async { @@ -33,21 +34,26 @@ Future takeScreenshot(tester, binding, String language, String name) async // Available languages in weblate for the fastlane/metadata/android folder (not necessarily // those for which the application is translated) const languages = [ - //'de-DE', - // Note: it seems if too many languages are processed at once, some processes // disappear and no images are written. Doing this in smaller steps works fine + /* 'ca', 'de-DE', + 'el-GR', 'en-US', 'es-ES', - 'fr-FR', + */ + + /* + 'fr-FR', 'hi-IN', 'hr', 'it-IT', 'pt-BR', + */ + 'nb-NO', 'pl-PL', 'ru-RU', diff --git a/ios/Podfile.lock b/ios/Podfile.lock index d8fa7f91..b8acaa9e 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,9 +1,13 @@ PODS: + - camera_avfoundation (0.0.1): + - Flutter - Flutter (1.0.0) - flutter_barcode_scanner (2.0.0): - Flutter - flutter_keyboard_visibility (0.0.1): - Flutter + - flutter_zxing (0.0.1): + - Flutter - image_picker_ios (0.0.1): - Flutter - integration_test (0.0.1): @@ -19,26 +23,33 @@ PODS: - Flutter - video_player_avfoundation (0.0.1): - Flutter + - FlutterMacOS DEPENDENCIES: + - camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`) - Flutter (from `Flutter`) - flutter_barcode_scanner (from `.symlinks/plugins/flutter_barcode_scanner/ios`) - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) + - flutter_zxing (from `.symlinks/plugins/flutter_zxing/ios`) - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - integration_test (from `.symlinks/plugins/integration_test/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - rive_common (from `.symlinks/plugins/rive_common/ios`) - - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/ios`) + - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) EXTERNAL SOURCES: + camera_avfoundation: + :path: ".symlinks/plugins/camera_avfoundation/ios" Flutter: :path: Flutter flutter_barcode_scanner: :path: ".symlinks/plugins/flutter_barcode_scanner/ios" flutter_keyboard_visibility: :path: ".symlinks/plugins/flutter_keyboard_visibility/ios" + flutter_zxing: + :path: ".symlinks/plugins/flutter_zxing/ios" image_picker_ios: :path: ".symlinks/plugins/image_picker_ios/ios" integration_test: @@ -48,24 +59,26 @@ EXTERNAL SOURCES: rive_common: :path: ".symlinks/plugins/rive_common/ios" shared_preferences_foundation: - :path: ".symlinks/plugins/shared_preferences_foundation/ios" + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" video_player_avfoundation: - :path: ".symlinks/plugins/video_player_avfoundation/ios" + :path: ".symlinks/plugins/video_player_avfoundation/darwin" SPEC CHECKSUMS: + camera_avfoundation: 3125e8cd1a4387f6f31c6c63abb8a55892a9eeeb Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_barcode_scanner: 7a1144744c28dc0c57a8de7218ffe5ec59a9e4bf flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 + flutter_zxing: 19a866d17c8a87ee1026d68521c69d2f008635f6 image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5 - integration_test: a1e7d09bd98eca2fc37aefd79d4f41ad37bdbbe5 - package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e - rive_common: b5b1aa30c63b8f0f00f32cddc9ea394d3d3473b5 - shared_preferences_foundation: 986fc17f3d3251412d18b0265f9c64113a8c2472 - url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4 - video_player_avfoundation: 81e49bb3d9fb63dccf9fa0f6d877dc3ddbeac126 + integration_test: 13825b8a9334a850581300559b8839134b124670 + package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85 + rive_common: 3a4c254c6e4db7e4b9e05daeb3d1f47ae4f7bf76 + shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 + url_launcher_ios: 68d46cc9766d0c41dbdc884310529557e3cd7a86 + video_player_avfoundation: 8563f13d8fc8b2c29dc2d09e60b660e4e8128837 PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048 -COCOAPODS: 1.12.0 +COCOAPODS: 1.14.3 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index 7bccdc01..08905a67 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -155,7 +155,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -204,6 +204,7 @@ files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 3db53b6e..b52b2e69 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ _singleton; + + ServiceLocator._internal(); + + static final ServiceLocator _singleton = ServiceLocator._internal(); + + Future _initDB() async { + ExerciseDatabase exerciseDB; + IngredientDatabase ingredientDB; + // final exerciseDB = ExerciseDatabase(); + // final ingredientDB = IngredientDatabase(); + + if (Platform.environment.containsKey('FLUTTER_TEST')) { + exerciseDB = ExerciseDatabase.inMemory(NativeDatabase.memory()); + ingredientDB = IngredientDatabase.inMemory(NativeDatabase.memory()); + } else { + exerciseDB = ExerciseDatabase(); + ingredientDB = IngredientDatabase(); + } + + locator.registerSingleton(exerciseDB); + locator.registerSingleton(ingredientDB); + } + + Future configure() async { + try { + await _initDB(); + } catch (e, _) { + log(e.toString()); + rethrow; + } + } +} diff --git a/lib/database/exercises/exercise_database.dart b/lib/database/exercises/exercise_database.dart new file mode 100644 index 00000000..b68d1980 --- /dev/null +++ b/lib/database/exercises/exercise_database.dart @@ -0,0 +1,85 @@ +import 'dart:io'; + +import 'package:drift/drift.dart'; +import 'package:drift/native.dart'; +import 'package:path/path.dart' as p; +import 'package:path_provider/path_provider.dart'; +import 'package:wger/database/exercises/type_converters.dart'; +import 'package:wger/models/exercises/category.dart'; +import 'package:wger/models/exercises/equipment.dart'; +import 'package:wger/models/exercises/language.dart'; +import 'package:wger/models/exercises/muscle.dart'; + +part 'exercise_database.g.dart'; + +@DataClassName('ExerciseTable') +class Exercises extends Table { + IntColumn get id => integer()(); + + TextColumn get data => text()(); + + // TextColumn get data => text().map(const ExerciseBaseConverter())(); + + DateTimeColumn get lastUpdate => dateTime()(); + + /// The date when the exercise was last fetched from the API. While we know + /// when the exercise itself was last updated in `lastUpdate`, we can save + /// ourselves a lot of requests if we don't check too often + DateTimeColumn get lastFetched => dateTime()(); +} + +@DataClassName('MuscleTable') +class Muscles extends Table { + IntColumn get id => integer()(); + + TextColumn get data => text().map(const MuscleConverter())(); +} + +@DataClassName('CategoryTable') +class Categories extends Table { + IntColumn get id => integer()(); + + TextColumn get data => text().map(const ExerciseCategoryConverter())(); +} + +@DataClassName('LanguagesTable') +class Languages extends Table { + IntColumn get id => integer()(); + + TextColumn get data => text().map(const LanguageConverter())(); +} + +@DataClassName('EquipmentTable') +class Equipments extends Table { + IntColumn get id => integer()(); + + TextColumn get data => text().map(const EquipmentConverter())(); +} + +@DriftDatabase(tables: [Exercises, Muscles, Equipments, Categories, Languages]) +class ExerciseDatabase extends _$ExerciseDatabase { + ExerciseDatabase() : super(_openConnection()); + + // Named constructor for creating in-memory database + ExerciseDatabase.inMemory(super.e); + + @override + // TODO: implement schemaVersion + int get schemaVersion => 1; + + Future deleteEverything() { + return transaction(() async { + for (final table in allTables) { + await delete(table).go(); + } + }); + } +} + +LazyDatabase _openConnection() { + return LazyDatabase(() async { + final dbFolder = await getApplicationCacheDirectory(); + final file = File(p.join(dbFolder.path, 'exercises.sqlite')); + return NativeDatabase.createInBackground(file); + }); +} diff --git a/lib/database/exercises/exercise_database.g.dart b/lib/database/exercises/exercise_database.g.dart new file mode 100644 index 00000000..3e09c0ef --- /dev/null +++ b/lib/database/exercises/exercise_database.g.dart @@ -0,0 +1,968 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'exercise_database.dart'; + +// ignore_for_file: type=lint +class $ExercisesTable extends Exercises with TableInfo<$ExercisesTable, ExerciseTable> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $ExercisesTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn('id', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + static const VerificationMeta _dataMeta = const VerificationMeta('data'); + @override + late final GeneratedColumn data = GeneratedColumn('data', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true); + static const VerificationMeta _lastUpdateMeta = const VerificationMeta('lastUpdate'); + @override + late final GeneratedColumn lastUpdate = GeneratedColumn( + 'last_update', aliasedName, false, + type: DriftSqlType.dateTime, requiredDuringInsert: true); + static const VerificationMeta _lastFetchedMeta = const VerificationMeta('lastFetched'); + @override + late final GeneratedColumn lastFetched = GeneratedColumn( + 'last_fetched', aliasedName, false, + type: DriftSqlType.dateTime, requiredDuringInsert: true); + @override + List get $columns => [id, data, lastUpdate, lastFetched]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'exercises'; + @override + VerificationContext validateIntegrity(Insertable instance, + {bool isInserting = false}) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + if (data.containsKey('data')) { + context.handle(_dataMeta, this.data.isAcceptableOrUnknown(data['data']!, _dataMeta)); + } else if (isInserting) { + context.missing(_dataMeta); + } + if (data.containsKey('last_update')) { + context.handle( + _lastUpdateMeta, lastUpdate.isAcceptableOrUnknown(data['last_update']!, _lastUpdateMeta)); + } else if (isInserting) { + context.missing(_lastUpdateMeta); + } + if (data.containsKey('last_fetched')) { + context.handle(_lastFetchedMeta, + lastFetched.isAcceptableOrUnknown(data['last_fetched']!, _lastFetchedMeta)); + } else if (isInserting) { + context.missing(_lastFetchedMeta); + } + return context; + } + + @override + Set get $primaryKey => const {}; + @override + ExerciseTable map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return ExerciseTable( + id: attachedDatabase.typeMapping.read(DriftSqlType.int, data['${effectivePrefix}id'])!, + data: attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}data'])!, + lastUpdate: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}last_update'])!, + lastFetched: attachedDatabase.typeMapping + .read(DriftSqlType.dateTime, data['${effectivePrefix}last_fetched'])!, + ); + } + + @override + $ExercisesTable createAlias(String alias) { + return $ExercisesTable(attachedDatabase, alias); + } +} + +class ExerciseTable extends DataClass implements Insertable { + final int id; + final String data; + final DateTime lastUpdate; + + /// The date when the exercise was last fetched from the API. While we know + /// when the exercise itself was last updated in `lastUpdate`, we can save + /// ourselves a lot of requests if we don't check too often + final DateTime lastFetched; + const ExerciseTable( + {required this.id, required this.data, required this.lastUpdate, required this.lastFetched}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['data'] = Variable(data); + map['last_update'] = Variable(lastUpdate); + map['last_fetched'] = Variable(lastFetched); + return map; + } + + ExercisesCompanion toCompanion(bool nullToAbsent) { + return ExercisesCompanion( + id: Value(id), + data: Value(data), + lastUpdate: Value(lastUpdate), + lastFetched: Value(lastFetched), + ); + } + + factory ExerciseTable.fromJson(Map json, {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return ExerciseTable( + id: serializer.fromJson(json['id']), + data: serializer.fromJson(json['data']), + lastUpdate: serializer.fromJson(json['lastUpdate']), + lastFetched: serializer.fromJson(json['lastFetched']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'data': serializer.toJson(data), + 'lastUpdate': serializer.toJson(lastUpdate), + 'lastFetched': serializer.toJson(lastFetched), + }; + } + + ExerciseTable copyWith({int? id, String? data, DateTime? lastUpdate, DateTime? lastFetched}) => + ExerciseTable( + id: id ?? this.id, + data: data ?? this.data, + lastUpdate: lastUpdate ?? this.lastUpdate, + lastFetched: lastFetched ?? this.lastFetched, + ); + @override + String toString() { + return (StringBuffer('ExerciseTable(') + ..write('id: $id, ') + ..write('data: $data, ') + ..write('lastUpdate: $lastUpdate, ') + ..write('lastFetched: $lastFetched') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, data, lastUpdate, lastFetched); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is ExerciseTable && + other.id == this.id && + other.data == this.data && + other.lastUpdate == this.lastUpdate && + other.lastFetched == this.lastFetched); +} + +class ExercisesCompanion extends UpdateCompanion { + final Value id; + final Value data; + final Value lastUpdate; + final Value lastFetched; + final Value rowid; + const ExercisesCompanion({ + this.id = const Value.absent(), + this.data = const Value.absent(), + this.lastUpdate = const Value.absent(), + this.lastFetched = const Value.absent(), + this.rowid = const Value.absent(), + }); + ExercisesCompanion.insert({ + required int id, + required String data, + required DateTime lastUpdate, + required DateTime lastFetched, + this.rowid = const Value.absent(), + }) : id = Value(id), + data = Value(data), + lastUpdate = Value(lastUpdate), + lastFetched = Value(lastFetched); + static Insertable custom({ + Expression? id, + Expression? data, + Expression? lastUpdate, + Expression? lastFetched, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (data != null) 'data': data, + if (lastUpdate != null) 'last_update': lastUpdate, + if (lastFetched != null) 'last_fetched': lastFetched, + if (rowid != null) 'rowid': rowid, + }); + } + + ExercisesCompanion copyWith( + {Value? id, + Value? data, + Value? lastUpdate, + Value? lastFetched, + Value? rowid}) { + return ExercisesCompanion( + id: id ?? this.id, + data: data ?? this.data, + lastUpdate: lastUpdate ?? this.lastUpdate, + lastFetched: lastFetched ?? this.lastFetched, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (data.present) { + map['data'] = Variable(data.value); + } + if (lastUpdate.present) { + map['last_update'] = Variable(lastUpdate.value); + } + if (lastFetched.present) { + map['last_fetched'] = Variable(lastFetched.value); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('ExercisesCompanion(') + ..write('id: $id, ') + ..write('data: $data, ') + ..write('lastUpdate: $lastUpdate, ') + ..write('lastFetched: $lastFetched, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $MusclesTable extends Muscles with TableInfo<$MusclesTable, MuscleTable> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $MusclesTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn('id', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + static const VerificationMeta _dataMeta = const VerificationMeta('data'); + @override + late final GeneratedColumnWithTypeConverter data = GeneratedColumn( + 'data', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true) + .withConverter($MusclesTable.$converterdata); + @override + List get $columns => [id, data]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'muscles'; + @override + VerificationContext validateIntegrity(Insertable instance, + {bool isInserting = false}) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + context.handle(_dataMeta, const VerificationResult.success()); + return context; + } + + @override + Set get $primaryKey => const {}; + @override + MuscleTable map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return MuscleTable( + id: attachedDatabase.typeMapping.read(DriftSqlType.int, data['${effectivePrefix}id'])!, + data: $MusclesTable.$converterdata.fromSql( + attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}data'])!), + ); + } + + @override + $MusclesTable createAlias(String alias) { + return $MusclesTable(attachedDatabase, alias); + } + + static TypeConverter $converterdata = const MuscleConverter(); +} + +class MuscleTable extends DataClass implements Insertable { + final int id; + final Muscle data; + const MuscleTable({required this.id, required this.data}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + { + map['data'] = Variable($MusclesTable.$converterdata.toSql(data)); + } + return map; + } + + MusclesCompanion toCompanion(bool nullToAbsent) { + return MusclesCompanion( + id: Value(id), + data: Value(data), + ); + } + + factory MuscleTable.fromJson(Map json, {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return MuscleTable( + id: serializer.fromJson(json['id']), + data: serializer.fromJson(json['data']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'data': serializer.toJson(data), + }; + } + + MuscleTable copyWith({int? id, Muscle? data}) => MuscleTable( + id: id ?? this.id, + data: data ?? this.data, + ); + @override + String toString() { + return (StringBuffer('MuscleTable(') + ..write('id: $id, ') + ..write('data: $data') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, data); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is MuscleTable && other.id == this.id && other.data == this.data); +} + +class MusclesCompanion extends UpdateCompanion { + final Value id; + final Value data; + final Value rowid; + const MusclesCompanion({ + this.id = const Value.absent(), + this.data = const Value.absent(), + this.rowid = const Value.absent(), + }); + MusclesCompanion.insert({ + required int id, + required Muscle data, + this.rowid = const Value.absent(), + }) : id = Value(id), + data = Value(data); + static Insertable custom({ + Expression? id, + Expression? data, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (data != null) 'data': data, + if (rowid != null) 'rowid': rowid, + }); + } + + MusclesCompanion copyWith({Value? id, Value? data, Value? rowid}) { + return MusclesCompanion( + id: id ?? this.id, + data: data ?? this.data, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (data.present) { + map['data'] = Variable($MusclesTable.$converterdata.toSql(data.value)); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('MusclesCompanion(') + ..write('id: $id, ') + ..write('data: $data, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $EquipmentsTable extends Equipments with TableInfo<$EquipmentsTable, EquipmentTable> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $EquipmentsTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn('id', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + static const VerificationMeta _dataMeta = const VerificationMeta('data'); + @override + late final GeneratedColumnWithTypeConverter data = GeneratedColumn( + 'data', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true) + .withConverter($EquipmentsTable.$converterdata); + @override + List get $columns => [id, data]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'equipments'; + @override + VerificationContext validateIntegrity(Insertable instance, + {bool isInserting = false}) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + context.handle(_dataMeta, const VerificationResult.success()); + return context; + } + + @override + Set get $primaryKey => const {}; + @override + EquipmentTable map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return EquipmentTable( + id: attachedDatabase.typeMapping.read(DriftSqlType.int, data['${effectivePrefix}id'])!, + data: $EquipmentsTable.$converterdata.fromSql( + attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}data'])!), + ); + } + + @override + $EquipmentsTable createAlias(String alias) { + return $EquipmentsTable(attachedDatabase, alias); + } + + static TypeConverter $converterdata = const EquipmentConverter(); +} + +class EquipmentTable extends DataClass implements Insertable { + final int id; + final Equipment data; + const EquipmentTable({required this.id, required this.data}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + { + map['data'] = Variable($EquipmentsTable.$converterdata.toSql(data)); + } + return map; + } + + EquipmentsCompanion toCompanion(bool nullToAbsent) { + return EquipmentsCompanion( + id: Value(id), + data: Value(data), + ); + } + + factory EquipmentTable.fromJson(Map json, {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return EquipmentTable( + id: serializer.fromJson(json['id']), + data: serializer.fromJson(json['data']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'data': serializer.toJson(data), + }; + } + + EquipmentTable copyWith({int? id, Equipment? data}) => EquipmentTable( + id: id ?? this.id, + data: data ?? this.data, + ); + @override + String toString() { + return (StringBuffer('EquipmentTable(') + ..write('id: $id, ') + ..write('data: $data') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, data); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is EquipmentTable && other.id == this.id && other.data == this.data); +} + +class EquipmentsCompanion extends UpdateCompanion { + final Value id; + final Value data; + final Value rowid; + const EquipmentsCompanion({ + this.id = const Value.absent(), + this.data = const Value.absent(), + this.rowid = const Value.absent(), + }); + EquipmentsCompanion.insert({ + required int id, + required Equipment data, + this.rowid = const Value.absent(), + }) : id = Value(id), + data = Value(data); + static Insertable custom({ + Expression? id, + Expression? data, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (data != null) 'data': data, + if (rowid != null) 'rowid': rowid, + }); + } + + EquipmentsCompanion copyWith({Value? id, Value? data, Value? rowid}) { + return EquipmentsCompanion( + id: id ?? this.id, + data: data ?? this.data, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (data.present) { + map['data'] = Variable($EquipmentsTable.$converterdata.toSql(data.value)); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('EquipmentsCompanion(') + ..write('id: $id, ') + ..write('data: $data, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $CategoriesTable extends Categories with TableInfo<$CategoriesTable, CategoryTable> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $CategoriesTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn('id', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + static const VerificationMeta _dataMeta = const VerificationMeta('data'); + @override + late final GeneratedColumnWithTypeConverter data = + GeneratedColumn('data', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true) + .withConverter($CategoriesTable.$converterdata); + @override + List get $columns => [id, data]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'categories'; + @override + VerificationContext validateIntegrity(Insertable instance, + {bool isInserting = false}) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + context.handle(_dataMeta, const VerificationResult.success()); + return context; + } + + @override + Set get $primaryKey => const {}; + @override + CategoryTable map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return CategoryTable( + id: attachedDatabase.typeMapping.read(DriftSqlType.int, data['${effectivePrefix}id'])!, + data: $CategoriesTable.$converterdata.fromSql( + attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}data'])!), + ); + } + + @override + $CategoriesTable createAlias(String alias) { + return $CategoriesTable(attachedDatabase, alias); + } + + static TypeConverter $converterdata = const ExerciseCategoryConverter(); +} + +class CategoryTable extends DataClass implements Insertable { + final int id; + final ExerciseCategory data; + const CategoryTable({required this.id, required this.data}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + { + map['data'] = Variable($CategoriesTable.$converterdata.toSql(data)); + } + return map; + } + + CategoriesCompanion toCompanion(bool nullToAbsent) { + return CategoriesCompanion( + id: Value(id), + data: Value(data), + ); + } + + factory CategoryTable.fromJson(Map json, {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return CategoryTable( + id: serializer.fromJson(json['id']), + data: serializer.fromJson(json['data']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'data': serializer.toJson(data), + }; + } + + CategoryTable copyWith({int? id, ExerciseCategory? data}) => CategoryTable( + id: id ?? this.id, + data: data ?? this.data, + ); + @override + String toString() { + return (StringBuffer('CategoryTable(') + ..write('id: $id, ') + ..write('data: $data') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, data); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is CategoryTable && other.id == this.id && other.data == this.data); +} + +class CategoriesCompanion extends UpdateCompanion { + final Value id; + final Value data; + final Value rowid; + const CategoriesCompanion({ + this.id = const Value.absent(), + this.data = const Value.absent(), + this.rowid = const Value.absent(), + }); + CategoriesCompanion.insert({ + required int id, + required ExerciseCategory data, + this.rowid = const Value.absent(), + }) : id = Value(id), + data = Value(data); + static Insertable custom({ + Expression? id, + Expression? data, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (data != null) 'data': data, + if (rowid != null) 'rowid': rowid, + }); + } + + CategoriesCompanion copyWith({Value? id, Value? data, Value? rowid}) { + return CategoriesCompanion( + id: id ?? this.id, + data: data ?? this.data, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (data.present) { + map['data'] = Variable($CategoriesTable.$converterdata.toSql(data.value)); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('CategoriesCompanion(') + ..write('id: $id, ') + ..write('data: $data, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +class $LanguagesTable extends Languages with TableInfo<$LanguagesTable, LanguagesTable> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $LanguagesTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn('id', aliasedName, false, + type: DriftSqlType.int, requiredDuringInsert: true); + static const VerificationMeta _dataMeta = const VerificationMeta('data'); + @override + late final GeneratedColumnWithTypeConverter data = GeneratedColumn( + 'data', aliasedName, false, + type: DriftSqlType.string, requiredDuringInsert: true) + .withConverter($LanguagesTable.$converterdata); + @override + List get $columns => [id, data]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'languages'; + @override + VerificationContext validateIntegrity(Insertable instance, + {bool isInserting = false}) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } else if (isInserting) { + context.missing(_idMeta); + } + context.handle(_dataMeta, const VerificationResult.success()); + return context; + } + + @override + Set get $primaryKey => const {}; + @override + LanguagesTable map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return LanguagesTable( + id: attachedDatabase.typeMapping.read(DriftSqlType.int, data['${effectivePrefix}id'])!, + data: $LanguagesTable.$converterdata.fromSql( + attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}data'])!), + ); + } + + @override + $LanguagesTable createAlias(String alias) { + return $LanguagesTable(attachedDatabase, alias); + } + + static TypeConverter $converterdata = const LanguageConverter(); +} + +class LanguagesTable extends DataClass implements Insertable { + final int id; + final Language data; + const LanguagesTable({required this.id, required this.data}); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + { + map['data'] = Variable($LanguagesTable.$converterdata.toSql(data)); + } + return map; + } + + LanguagesCompanion toCompanion(bool nullToAbsent) { + return LanguagesCompanion( + id: Value(id), + data: Value(data), + ); + } + + factory LanguagesTable.fromJson(Map json, {ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return LanguagesTable( + id: serializer.fromJson(json['id']), + data: serializer.fromJson(json['data']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'data': serializer.toJson(data), + }; + } + + LanguagesTable copyWith({int? id, Language? data}) => LanguagesTable( + id: id ?? this.id, + data: data ?? this.data, + ); + @override + String toString() { + return (StringBuffer('LanguagesTable(') + ..write('id: $id, ') + ..write('data: $data') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash(id, data); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is LanguagesTable && other.id == this.id && other.data == this.data); +} + +class LanguagesCompanion extends UpdateCompanion { + final Value id; + final Value data; + final Value rowid; + const LanguagesCompanion({ + this.id = const Value.absent(), + this.data = const Value.absent(), + this.rowid = const Value.absent(), + }); + LanguagesCompanion.insert({ + required int id, + required Language data, + this.rowid = const Value.absent(), + }) : id = Value(id), + data = Value(data); + static Insertable custom({ + Expression? id, + Expression? data, + Expression? rowid, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (data != null) 'data': data, + if (rowid != null) 'rowid': rowid, + }); + } + + LanguagesCompanion copyWith({Value? id, Value? data, Value? rowid}) { + return LanguagesCompanion( + id: id ?? this.id, + data: data ?? this.data, + rowid: rowid ?? this.rowid, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (data.present) { + map['data'] = Variable($LanguagesTable.$converterdata.toSql(data.value)); + } + if (rowid.present) { + map['rowid'] = Variable(rowid.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('LanguagesCompanion(') + ..write('id: $id, ') + ..write('data: $data, ') + ..write('rowid: $rowid') + ..write(')')) + .toString(); + } +} + +abstract class _$ExerciseDatabase extends GeneratedDatabase { + _$ExerciseDatabase(QueryExecutor e) : super(e); + late final $ExercisesTable exercises = $ExercisesTable(this); + late final $MusclesTable muscles = $MusclesTable(this); + late final $EquipmentsTable equipments = $EquipmentsTable(this); + late final $CategoriesTable categories = $CategoriesTable(this); + late final $LanguagesTable languages = $LanguagesTable(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => + [exercises, muscles, equipments, categories, languages]; +} diff --git a/lib/database/exercises/type_converters.dart b/lib/database/exercises/type_converters.dart new file mode 100644 index 00000000..b494aa2a --- /dev/null +++ b/lib/database/exercises/type_converters.dart @@ -0,0 +1,134 @@ +import 'dart:convert'; + +import 'package:drift/drift.dart'; +import 'package:wger/models/exercises/alias.dart'; +import 'package:wger/models/exercises/category.dart'; +import 'package:wger/models/exercises/comment.dart'; +import 'package:wger/models/exercises/equipment.dart'; +import 'package:wger/models/exercises/exercise.dart'; +import 'package:wger/models/exercises/image.dart'; +import 'package:wger/models/exercises/language.dart'; +import 'package:wger/models/exercises/muscle.dart'; +import 'package:wger/models/exercises/translation.dart'; +import 'package:wger/models/exercises/variation.dart'; +import 'package:wger/models/exercises/video.dart'; + +class ExerciseBaseConverter extends TypeConverter { + const ExerciseBaseConverter(); + + @override + Exercise fromSql(String fromDb) { + final Map baseData = json.decode(fromDb); + + final category = ExerciseCategory.fromJson(baseData['categories']); + final musclesPrimary = baseData['muscless'].map((e) => Muscle.fromJson(e)).toList(); + final musclesSecondary = baseData['musclesSecondary'].map((e) => Muscle.fromJson(e)).toList(); + final equipment = baseData['equipments'].map((e) => Equipment.fromJson(e)).toList(); + final images = baseData['images'].map((e) => ExerciseImage.fromJson(e)).toList(); + final videos = baseData['videos'].map((e) => Video.fromJson(e)).toList(); + + final List translations = []; + for (final exerciseData in baseData['translations']) { + final translation = Translation( + id: exerciseData['id'], + name: exerciseData['name'], + description: exerciseData['description'], + exerciseId: baseData['id'], + ); + translation.aliases = exerciseData['aliases'].map((e) => Alias.fromJson(e)).toList(); + translation.notes = exerciseData['notes'].map((e) => Comment.fromJson(e)).toList(); + translation.language = Language.fromJson(exerciseData['languageObj']); + translations.add(translation); + } + + final exerciseBase = Exercise( + id: baseData['id'], + uuid: baseData['uuid'], + created: null, + //creationDate: toDate(baseData['creation_date']), + musclesSecondary: musclesSecondary.cast(), + muscles: musclesPrimary.cast(), + equipment: equipment.cast(), + category: category, + images: images.cast(), + translations: translations, + videos: videos.cast