diff --git a/.github/ISSUE_TEMPLATE/1_bug.md b/.github/ISSUE_TEMPLATE/1_bug.md deleted file mode 100644 index e12f7506..00000000 --- a/.github/ISSUE_TEMPLATE/1_bug.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: I found a problem with wger -about: While using wger the application crashes or throws an exception, a - widget is buggy, or something looks wrong. -title: '' -labels: '' -assignees: '' - ---- - -## Steps to Reproduce - - - -1. ... -2. ... -3. ... - -**Expected results:** - -**Actual results:** - -
- Logs - - - -``` -``` - - -
diff --git a/.github/ISSUE_TEMPLATE/1_bug.yml b/.github/ISSUE_TEMPLATE/1_bug.yml new file mode 100644 index 00000000..385e5cc8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1_bug.yml @@ -0,0 +1,53 @@ +# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms +# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema + +name: Bug report +description: Report an error or unexpected behavior +type: bug +body: + - type: dropdown + id: priority + attributes: + label: Priority/Impact + description: How severe is the issue? + options: + - Low (minor inconvenience) + - Medium (affects some functionality) + - High (critical issue, blocks workflow) + + - type: textarea + id: description + attributes: + label: Description + description: | + A clear and concise description of the bug. + placeholder: | + Please include any information you think is relevant to the issue you are experiencing. + This could include any steps to reproduce it (if it happens consistently), expected vs. + actual behavior, logs, screenshots, links to related issues, etc. + validations: + required: true + + - type: input + id: server-version + attributes: + label: Server version + description: | + What version of wger are you using and how did you install it (you use our server, + docker compose, manual installation, etc)? + placeholder: | + Check https:///software/about-us or the git sha1 of the last commit you pulled + validations: + required: false + + - type: input + id: app-version + attributes: + label: Mobile app version + description: | + What version of the mobile app are you using and how did you install it + (Play Store, App Store, Flathub, self compiled, etc.)? + placeholder: | + Check the "about wger" dialog + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/2_feature_request.md b/.github/ISSUE_TEMPLATE/2_feature_request.md deleted file mode 100644 index 924b1e42..00000000 --- a/.github/ISSUE_TEMPLATE/2_feature_request.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -name: Feature request -about: Suggest a new idea for wger. -title: '' -labels: '' -assignees: '' - ---- - -## Use case - - - -## Proposal - - diff --git a/.github/ISSUE_TEMPLATE/2_feature_request.yml b/.github/ISSUE_TEMPLATE/2_feature_request.yml new file mode 100644 index 00000000..5ea0dff8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2_feature_request.yml @@ -0,0 +1,33 @@ +name: Feature request +description: Suggest a new idea for wger +type: enhancement +body: + - type: textarea + id: description + attributes: + label: Use case + description: | + A description of what new feature or behavior you would like to see. + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposal + description: | + Why is this feature needed? What problems does it solve? + validations: + required: false + + - type: textarea + id: additional-context + attributes: + label: Additional Context + description: | + Any extra details, related issues, or mockups + placeholder: | + Screenshots or mockups, links to similar features in other applications, or other relevant + information. + validations: + required: false diff --git a/.github/actions/flutter-common/action.yml b/.github/actions/flutter-common/action.yml new file mode 100644 index 00000000..cfeeac9b --- /dev/null +++ b/.github/actions/flutter-common/action.yml @@ -0,0 +1,23 @@ +name: 'Flutter common setup' +description: 'Common steps needed to setup the application' + +runs: + using: "composite" + steps: + + - name: Setup Flutter + uses: subosito/flutter-action@v2 + with: + channel: stable + flutter-version: 3.35.5 + cache: true + + - name: Install Flutter dependencies + run: flutter pub get + shell: bash + + - name: Install Flutter dependencies + run: | + dart --version + flutter --version + shell: bash \ No newline at end of file diff --git a/.github/contributing.md b/.github/contributing.md new file mode 100644 index 00000000..a1f8dfc8 --- /dev/null +++ b/.github/contributing.md @@ -0,0 +1,27 @@ +# Contributing to wger + +🎉 Thanks for showing interest in contributing! 🎉 + +We have centralized the documentation for contributing to wger in the online +docs, especially for non-code contributions such as documentation, translations, +etc.: + + + +## Questions + +Are you just using the software and have a question or improvement? Let us know! + +* Discord: +* Mastodon: + +## Issues + +If you run into a bug describe the problem as well as you can. + +- Steps and any useful information to reproduce the issue +- If you use our server, the time when this happened, we might be able to get some + information from the logs +- Environment details (app type: web / mobile, installation method, OS, etc.) +- Screenshots or logs if applicable +- Git SHA1 if installed from source diff --git a/.github/dependabot.yml b/.github/dependabot.yml index deaa72b2..e541de6d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -11,6 +11,11 @@ updates: schedule: interval: "weekly" + - package-ecosystem: "pub" + directory: "/flatpak/scripts" + schedule: + interval: "weekly" + - package-ecosystem: "github-actions" directory: "/" schedule: diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 4cf8375a..5d11748c 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,25 +1,17 @@ -## Description (Proposed Changes) -(Please try to mention in bullet points.) +# Proposed Changes - - -## Link to the issue : +## Related Issue(s) -(Add link of the issue you have proposed changes to) +If applicable, please link to any related issues (`Closes #123`, +`Closes wger-project/other-repo#123`, `See also #123`, etc.) -- Link : +## Please check that the PR fulfills these requirements -## Tests - -Please make sure to add tests when implementing new features. - -## Checklist - -Please check that the PR fulfills all requirements listed below by checking the relevant checkboxes (`[x]`). This will ensure a smooth and quick review process. - -- [ ] Set a 100 character limit in your editor/IDE to avoid white space diffs in the PR - [ ] Tests for the changes have been added (for bug fixes / features) -- [ ] Added yourself to AUTHORS.md +- [ ] Set a 100 character limit in your editor/IDE to avoid white space diffs in the PR + (run `dart format .`) - [ ] Updated/added relevant documentation (doc comments with `///`). - [ ] Added relevant reviewers. diff --git a/.github/workflows/build-android.yml b/.github/workflows/build-android.yml new file mode 100644 index 00000000..f07a7066 --- /dev/null +++ b/.github/workflows/build-android.yml @@ -0,0 +1,73 @@ +name: Build Android +on: + workflow_call: + inputs: + ref: + required: true + type: string + secrets: + DECRYPTKEY_PLAYSTORE_SIGNING_KEY: + required: true + DECRYPTKEY_PROPERTIES: + required: true +jobs: + build_android_apk: + name: APK file + runs-on: ubuntu-latest + steps: + - name: Checkout application + uses: actions/checkout@v5 + with: + ref: ${{ inputs.ref }} + + - name: Common flutter setup + uses: ./.github/actions/flutter-common + + - name: Decrypt config files + run: | + cd ./fastlane/metadata/envfiles + chmod +x ./decrypt_secrets.sh + ./decrypt_secrets.sh + shell: bash + env: + DECRYPTKEY_PLAYSTORE_SIGNING_KEY: ${{ secrets.DECRYPTKEY_PLAYSTORE_SIGNING_KEY }} + DECRYPTKEY_PROPERTIES: ${{ secrets.DECRYPTKEY_PROPERTIES }} + + - name: Build APK + run: flutter build apk --release + + - uses: actions/upload-artifact@v4 + with: + name: builds-apk + path: build/app/outputs/flutter-apk/app-release.apk + + build_android_aab: + name: AAB file + runs-on: ubuntu-latest + steps: + - name: Checkout application + uses: actions/checkout@v5 + with: + ref: ${{ inputs.ref }} + + - name: Common setup + uses: ./.github/actions/flutter-common + + - name: Decrypt config files + run: | + cd ./fastlane/metadata/envfiles + chmod +x ./decrypt_secrets.sh + ./decrypt_secrets.sh + shell: bash + env: + DECRYPTKEY_PLAYSTORE: ${{ secrets.DECRYPTKEY_PLAYSTORE }} + DECRYPTKEY_PLAYSTORE_SIGNING_KEY: ${{ secrets.DECRYPTKEY_PLAYSTORE_SIGNING_KEY }} + DECRYPTKEY_PROPERTIES: ${{ secrets.DECRYPTKEY_PROPERTIES }} + + - name: Build AAB + run: flutter build appbundle --release + + - uses: actions/upload-artifact@v4 + with: + name: builds-aab + path: build/app/outputs/bundle/release/app-release.aab \ No newline at end of file diff --git a/.github/workflows/build-apple.yml b/.github/workflows/build-apple.yml new file mode 100644 index 00000000..4faa7313 --- /dev/null +++ b/.github/workflows/build-apple.yml @@ -0,0 +1,90 @@ +name: Build Apple +on: + workflow_call: + inputs: + ref: + required: true + type: string +jobs: + build_ios: + name: iOS + runs-on: macos-latest + steps: + - name: Checkout application + uses: actions/checkout@v5 + with: + ref: ${{ inputs.ref }} + + # This seems to be related to https://github.com/actions/runner-images/issues/12758 + # Select appropriate Xcode version from + # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md#xcode + - name: Xcode setup + run: | + sudo xcode-select --switch /Applications/Xcode_16.4.app + + - name: Common flutter setup + uses: ./.github/actions/flutter-common + + - name: Build .app + run: | + flutter build ios --release --no-codesign + cd build/ios/iphoneos + zip -r Runner.app.zip Runner.app + + - uses: actions/upload-artifact@v4 + with: + name: builds-ios + path: build/ios/iphoneos/Runner.app.zip + + build_ipa: + name: IPA + runs-on: macos-latest + steps: + - name: Checkout application + uses: actions/checkout@v5 + with: + ref: ${{ inputs.ref }} + + - name: Common flutter setup + uses: ./.github/actions/flutter-common + + # This seems to be related to https://github.com/actions/runner-images/issues/12758 + # Select appropriate Xcode version from + # https://github.com/actions/runner-images/blob/main/images/macos/macos-15-arm64-Readme.md#xcode + - name: Xcode setup + run: | + sudo xcode-select --switch /Applications/Xcode_16.4.app + + - name: Build .xcarchive + run: | + flutter build ipa --release --no-codesign + cd build/ios/archive + zip -r Runner.xcarchive.zip Runner.xcarchive + + - uses: actions/upload-artifact@v4 + with: + name: builds-ipa + path: build/ios/archive/Runner.xcarchive.zip + + build_macos: + name: macOS + runs-on: macos-latest + steps: + - name: Checkout application + uses: actions/checkout@v5 + with: + ref: ${{ inputs.ref }} + + - name: Common flutter setup + uses: ./.github/actions/flutter-common + + - name: Build .app + run: | + flutter build macos --release + cd build/macos/Build/Products/Release + zip -r wger.app.zip wger.app + + - uses: actions/upload-artifact@v4 + with: + name: builds-macos + path: build/macos/Build/Products/Release/wger.app.zip \ No newline at end of file diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml new file mode 100644 index 00000000..a3d3e461 --- /dev/null +++ b/.github/workflows/build-linux.yml @@ -0,0 +1,80 @@ +name: Build Linux +on: + workflow_call: + inputs: + ref: + required: true + type: string + secrets: + SSH_DEPLOY_KEY: + required: true +jobs: + + # TODO: note that we currently only build for x64, as arm64 is not supported by + # subosito/flutter-action@v2 yet and we don't want to install flutter manually + # just for this workflow: https://github.com/subosito/flutter-action/issues/345 + build_linux: + name: Build application - ${{ matrix.platform }} + runs-on: ${{ matrix.runner }} + strategy: + matrix: + include: + - platform: x64 + runner: ubuntu-latest + # - platform: arm64 + # runner: ubuntu-24.04-arm + steps: + - name: Checkout application + uses: actions/checkout@v5 + with: + ref: ${{ inputs.ref }} + + - name: Common setup + uses: ./.github/actions/flutter-common + + # https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md + - name: Build application for linux + run: | + sudo apt update + sudo apt install -y pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev --no-install-recommends + flutter build linux --release + tar -zcvf linux-${{ matrix.platform }}.tar.gz build/linux/${{ matrix.platform }}/release/bundle + - uses: actions/upload-artifact@v4 + with: + name: builds-linux + path: | + linux-${{ matrix.platform }}.tar.gz + + generate_flathub_manifest: + runs-on: ubuntu-latest + name: Update flathub manifest + + # If the job fails just continue, this can be done manually later + continue-on-error: true + needs: + - build_linux + steps: + + - name: Checkout flatpak-flathub repo + uses: actions/checkout@v5 + with: + repository: wger-project/de.wger.flutter + + - name: Bump version and update manifest + run: | + pip install pyyaml toml packaging + git clone https://github.com/TheAppgineer/flatpak-flutter.git --branch 0.7.3 ../flatpak-flutter + python bump-wger-version.py ${{ inputs.ref }} + ../flatpak-flutter/flatpak-flutter.py --app-module wger flatpak-flutter.json + + - name: Push updated config to flathub repository + uses: cpina/github-action-push-to-another-repository@main + env: + SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} + with: + destination-github-username: wger-project + destination-repository-name: de.wger.flutter + user-email: github-actions@github.com + target-branch: release-${{ inputs.ref }} + create-target-branch-if-needed: true + commit-message: Update to ${{ inputs.ref }} diff --git a/.github/workflows/build-release.yml b/.github/workflows/build-release.yml deleted file mode 100644 index c9a06a0a..00000000 --- a/.github/workflows/build-release.yml +++ /dev/null @@ -1,131 +0,0 @@ -name: Build release artefacts -on: - push: - tags: - - 'v[0-9]+.[0-9]+.[0-9]+' - -jobs: - deploy_android: - runs-on: ubuntu-latest - steps: - - name: Checkout application code - uses: actions/checkout@v4 - - - name: Setup Java - uses: actions/setup-java@v4 - with: - java-version: '17' - distribution: 'oracle' - - - name: Setup Ruby - uses: ruby/setup-ruby@v1 - with: - ruby-version: '3.2' - - - name: Setup Flutter - uses: subosito/flutter-action@v2 - with: - channel: stable - flutter-version: 3.24.x - - - name: Flutter info - run: | - dart --version - flutter --version - - - name: Install Flutter dependencies - run: flutter pub get - - - name: Decrypt config files - run: | - cd ./fastlane/metadata/envfiles - chmod +x ./decrypt_secrets.sh - ./decrypt_secrets.sh - env: - DECRYPTKEY_PLAYSTORE: ${{ secrets.DECRYPTKEY_PLAYSTORE }} - DECRYPTKEY_PLAYSTORE_SIGNING_KEY: ${{ secrets.DECRYPTKEY_PLAYSTORE_SIGNING_KEY }} - DECRYPTKEY_PROPERTIES: ${{ secrets.DECRYPTKEY_PROPERTIES }} - - - name: Extract version information - run: | - echo "VERSION_V=$(echo $GITHUB_REF | cut -d / -f 3)" >> $GITHUB_ENV - echo "VERSION=$(echo $GITHUB_REF | cut -d / -f 3 | cut -c 2-)" >> $GITHUB_ENV - echo "BUILD=$(flutter pub run cider version | cut -d '+' -f 2)" >> $GITHUB_ENV - - - name: Bump pubspec version - run: | - flutter pub run cider version ${{ env.VERSION }}+${{ env.BUILD }} - flutter pub run cider bump build - - - name: Build application for linux - run: | - sudo apt update - sudo apt install -y clang cmake ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev - flutter build linux --release - cd flatpak/scripts - dart pub get - dart flatpak_packager.dart --meta ../flatpak_meta.json --github --addTodaysVersion ${{ env.VERSION }} - - - name: Build AAB - run: flutter build appbundle --release - env: - WGER_API_KEY: ${{ secrets.WGER_API_KEY }} - - - name: Build APK - run: flutter build apk --release - env: - WGER_API_KEY: ${{ secrets.WGER_API_KEY }} - - - name: Upload build to Play Store - run: | - bundle install - bundle exec fastlane android production - - - name: Make Github release - uses: softprops/action-gh-release@v2 - with: - tag_name: ${{ env.VERSION }} - files: | - build/app/outputs/bundle/release/app-release.aab - build/app/outputs/flutter-apk/app-release.apk - flatpak/scripts/flatpak_generator_exports/wger-linux-x86_64.tar.gz - flatpak/scripts/flatpak_generator_exports/wger-linux-x86_64.sha256 - - - name: Generate flathub manifest - run: | - cd flatpak/scripts - dart pub get - dart manifest_generator.dart --meta ../flatpak_meta.json --github - mkdir ../../flathub - cp flatpak_generator_exports/de.wger.flutter.json ../../flathub - cp flatpak_generator_exports/flathub.json ../../flathub - - - name: Push updated config to flathub repository - uses: cpina/github-action-push-to-another-repository@main - env: - SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} - with: - source-directory: flathub - destination-github-username: wger-project - destination-repository-name: de.wger.flutter - user-email: github-actions@github.com - target-branch: release-${{ env.VERSION }} - create-target-branch-if-needed: true - commit-message: Update to ${{ env.VERSION }} - - # Note: the original tag that triggered the workflow is in the form vX.Y.Z - # but the pubspec.yaml is committed in the commit after that one. - # Since we need the tag to point to the correct commit for other workflows - # such as f-droid we need a way to correct it. Only moving the tag - # would not work, as it would trigger this workflow again. So as - # a workaround, we use the v-tag to trigger this workflow, add a new - # one without the v and push it. - - name: Commit pubspec version and delete tag - run: | - git config user.name Github-Actions - git config user.email github-actions@github.com - git checkout -b release-${{ env.VERSION }} - git add pubspec.yaml - git commit -m "Bump version to $( flutter pub run cider version )" - git push origin --delete ${{ env.VERSION_V }} - git push --set-upstream origin release-${{ env.VERSION }} \ No newline at end of file diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml new file mode 100644 index 00000000..adc64f80 --- /dev/null +++ b/.github/workflows/build-windows.yml @@ -0,0 +1,31 @@ +name: Build Windows +on: + workflow_call: + inputs: + ref: + required: true + type: string +jobs: + # TODO: note that we currently only upload the .exe file, which is not + # sufficient for a proper Windows release. See the documentation + # for what would be necessary (low priority, but nice to have): + # https://docs.flutter.dev/platform-integration/windows/building + build_windows: + name: Windows + runs-on: windows-latest + steps: + - name: Checkout application + uses: actions/checkout@v5 + with: + ref: ${{ inputs.ref }} + + - name: Common flutter setup + uses: ./.github/actions/flutter-common + + - name: Build .exe + run: flutter build windows --release + + - uses: actions/upload-artifact@v4 + with: + name: builds-windows + path: build\windows\x64\runner\Release\wger.exe \ No newline at end of file diff --git a/.github/workflows/bump-version.yml b/.github/workflows/bump-version.yml new file mode 100644 index 00000000..55efba77 --- /dev/null +++ b/.github/workflows/bump-version.yml @@ -0,0 +1,57 @@ +name: Bump version +on: + workflow_call: + inputs: + app_version: + required: true + type: string + +jobs: + determine_version: + name: Create tag + runs-on: ubuntu-latest + steps: + + - name: Checkout application + uses: actions/checkout@v5 + with: + fetch-depth: 0 # needed to push changes + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Common flutter setup + uses: ./.github/actions/flutter-common + + - name: Setup uv + uses: astral-sh/setup-uv@v7 + + - name: Validate version + run: | + RELEASE_VERSION="${{ inputs.app_version }}" + if [[ ! "${{ inputs.app_version }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + echo "Error: Input version '${{ inputs.app_version }}' is not in X.Y.Z format." + exit 1 + fi + + # In order to make sure the build number is the same across all platforms, + # increase to the next multiple of 10. This is needed because the iOS process + # is a bit more brittle and might need to be repeated if the App needs + # to be re-submitted. + - name: Bump pubspec version + run: | + CURRENT_BUILD=$(flutter pub run cider version | cut -d '+' -f 2) + NEXT_BUILD=$(( (CURRENT_BUILD / 10 + 1) * 10 )) + flutter pub run cider version ${{ inputs.app_version }}+${NEXT_BUILD} + + - name: Bump flatpak version + run: | + cd flatpak + uv run bump-flatpak-version.py ${{ inputs.app_version }} + + - name: Tag release and commit pubspec + run: | + git config user.name Github-Actions + git config user.email github-actions@github.com + git add pubspec.yaml flatpak/de.wger.flutter.metainfo.xml + git commit -m "Bump version to ${{ inputs.app_version }}" + git tag ${{ inputs.app_version }} + git push origin HEAD:master --tags diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8cac3b0..1fe851a3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,29 +9,32 @@ on: paths: - '**.dart' - 'pubspec.yaml' + workflow_call: + workflow_dispatch: + jobs: test: + name: Run tests runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - - name: Install Flutter - uses: subosito/flutter-action@v2 - with: - cache: true - channel: 'stable' - flutter-version: '3.24.x' + - name: Common flutter setup + uses: ./.github/actions/flutter-common - - run: dart --version - - run: flutter --version - - - name: Install app dependencies - run: flutter pub get + - name: Install dependencies + run: | + sudo apt install libsqlite3-dev lcov --no-install-recommends + flutter pub get + # Removing some folders from the coverage since these files are not really + # part of the app code and just get in the way of the report - name: Test app - run: flutter test --coverage + run: | + flutter test --coverage + lcov --remove coverage/lcov.info 'lib/l10n/generated/*' 'lib/theme/*' -o coverage/lcov.info - name: Coveralls - uses: coverallsapp/github-action@master + uses: coverallsapp/github-action@v2 with: github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/linter.yml.bak b/.github/workflows/linter.yml.bak index 6339805d..e3665a58 100644 --- a/.github/workflows/linter.yml.bak +++ b/.github/workflows/linter.yml.bak @@ -26,7 +26,7 @@ jobs: run: flutter pub get - name: Check for formatting issues (run "dart format . ") - run: dart format --line-length=100 . + run: dart format . - name: Push a commit with the changed files continue-on-error: true diff --git a/.github/workflows/make-release.yml b/.github/workflows/make-release.yml new file mode 100644 index 00000000..1b5b5f9a --- /dev/null +++ b/.github/workflows/make-release.yml @@ -0,0 +1,152 @@ +name: Build release artefacts +on: + workflow_dispatch: + inputs: + version: + description: Version to tag and release (X.Y.Z) + required: true + type: string + +jobs: + + ci: + name: CI + uses: ./.github/workflows/ci.yml + + determine_version: + needs: ci + name: Prepare + uses: ./.github/workflows/bump-version.yml + with: + app_version: ${{ github.event.inputs.version }} + + build_linux: + name: Linux + needs: determine_version + uses: ./.github/workflows/build-linux.yml + with: + ref: ${{ github.event.inputs.version }} + secrets: + SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }} + + build_android: + name: Android + needs: determine_version + uses: ./.github/workflows/build-android.yml + with: + ref: ${{ github.event.inputs.version }} + secrets: + DECRYPTKEY_PLAYSTORE_SIGNING_KEY: ${{ secrets.DECRYPTKEY_PLAYSTORE_SIGNING_KEY }} + DECRYPTKEY_PROPERTIES: ${{ secrets.DECRYPTKEY_PROPERTIES }} + + build_apple: + name: Apple + needs: determine_version + uses: ./.github/workflows/build-apple.yml + with: + ref: ${{ github.event.inputs.version }} + + build_windows: + name: Microsoft + needs: determine_version + uses: ./.github/workflows/build-windows.yml + with: + ref: ${{ github.event.inputs.version }} + + upload_play_store: + name: Upload to Play Store + runs-on: ubuntu-latest + needs: + - build_android + - build_linux + steps: + - name: Checkout application + uses: actions/checkout@v5 + with: + ref: ${{ github.event.inputs.version }} + + - name: Download builds + uses: actions/download-artifact@v5 + with: + path: /tmp/ + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: 3.4 + + - name: Decrypt config files + run: | + cd ./fastlane/metadata/envfiles + chmod +x ./decrypt_secrets.sh + ./decrypt_secrets.sh + shell: bash + env: + DECRYPTKEY_PLAYSTORE: ${{ secrets.DECRYPTKEY_PLAYSTORE }} + + - name: Upload build to Play Store + run: | + mkdir -p ./build/app/outputs/bundle/release/ + cp /tmp/builds-aab/app-release.aab ./build/app/outputs/bundle/release/app-release.aab + bundle install + bundle exec fastlane android production + + # + # This is currently commented out since the iOS upload are currently being handled + # by the fastlane script in the ios folder. We use the account of pthaler for this + # and he runs the script manually. + # + + # upload_app_store: + # name: Upload to App Store (placeholder) + # runs-on: ubuntu-latest + # needs: + # - build_android + # - build_apple + # steps: + # - name: Checkout application + # uses: actions/checkout@v5 + # with: + # ref: feature/build-process + # # ref: ${{ github.event.inputs.version }} + # + # - name: Common flutter setup + # uses: ./.github/actions/flutter-common + # + # - name: Download builds + # uses: actions/download-artifact@v5 + # with: + # path: /tmp/ + # + # - name: Upload build to App Store + # run: | + # # bundle exec fastlane todo + + make_gh_release: + name: Make Github Release + runs-on: ubuntu-latest + needs: + - upload_play_store + - build_linux + - build_windows + - build_apple + + steps: + - name: Download builds + uses: actions/download-artifact@v5 + + - name: Make Github release + uses: softprops/action-gh-release@v2 + with: + generate_release_notes: true + tag_name: ${{ inputs.version }} + files: | + builds-aab/app-release.aab + builds-apk/app-release.apk + builds-linux/linux-x64.tar.gz + builds-ios/Runner.app.zip + builds-ipa/Runner.xcarchive.zip + builds-macos/wger.app.zip + builds-windows/wger.exe + + diff --git a/.gitignore b/.gitignore index 0df000b8..b3dc0686 100644 --- a/.gitignore +++ b/.gitignore @@ -30,12 +30,11 @@ .pub-cache/ .pub/ /build/ +/**/build/ +/android/app/.cxx **/failures/*.png -# Web related -lib/generated_plugin_registrant.dart - # Symbolication related app.*.symbols @@ -53,3 +52,16 @@ app.*.map.json # Others /vendor/bundle/ruby/ /coverage/ +/lib/l10n/generated/ + +# ios build and fastlane +ios/fastlane/.env +ios/fastlane/*.p8 +ios/fastlane/test_output +ios/fastlane/screenshots +ios/fastlane/report.xml +ios/fastlane/Preview.html +ios/fastlane/output +ios/Runner.ipa +ios/Runner.app.dSYM.zip + diff --git a/.metadata b/.metadata index bcef94eb..0edb585d 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,42 @@ # This file should be version controlled and should not be manually edited. version: - revision: bbfbf1770cca2da7c82e887e4e4af910034800b6 - channel: stable + revision: "8495dee1fd4aacbe9de707e7581203232f591b2f" + channel: "stable" project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + base_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + - platform: android + create_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + base_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + - platform: ios + create_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + base_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + - platform: linux + create_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + base_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + - platform: macos + create_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + base_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + - platform: web + create_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + base_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + - platform: windows + create_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + base_revision: 8495dee1fd4aacbe9de707e7581203232f591b2f + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/.vscode/settings.json b/.vscode/settings.json index 9619dd65..a318ce4a 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,4 @@ { "dart.lineLength": 100, - "diffEditor.ignoreTrimWhitespace": true, + "diffEditor.ignoreTrimWhitespace": true } diff --git a/AUTHORS.md b/AUTHORS.md index ee664bf4..43571c48 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -1,81 +1,349 @@ -# Authors +# Contributors and translators to this repository -## Developers +Thank you all for contributing to the project, you are true heroes! 🫶 -- Jigar Prajapati - -- Roland Geider – -- Dylan Aird - -- Jannik Norden - -- Arun Muralidharan - -- Khushbu Bora - -- Patrick Witter - -- Tomer Ben-Rachel - -- Thilina Herath - -- Marko Milosevic - -- Karthik Reddy (Axel) - -- Ogundoyin Toluwani - -- Nenza Nurfirmansyah - -- Florian Schmitz - -- Adam Bujdoš - -- Aman Negi - -- Sandi Milohanic - -- Miroslav Mazel - -- artchiee - -- Tejas Bir Singh - -- Abhishek Saini - -- Hanaa Allohibi - -- Shey Alnasrawi - -- Costas Korai - -- Bassam Mutairi - -- Dieter Plaetinck - -- Dennis van Peer - -- sizzlesloth - +## Contributors + +- thisisyoussef - [https://github.com/thisisyoussef](https://github.com/thisisyoussef) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Yashas H Majmudar - [https://github.com/yashas-hm](https://github.com/yashas-hm) +- Github-actions - [https://github.com/invalid-email-address](https://github.com/invalid-email-address) +- Christijan - [https://github.com/ChrispyM](https://github.com/ChrispyM) +- Jackpkn - [https://github.com/Jackpkn](https://github.com/Jackpkn) +- sangharshdeveloper - [https://github.com/Sangharshdeveloper](https://github.com/Sangharshdeveloper) +- ImgBotApp - [https://github.com/ImgBotApp](https://github.com/ImgBotApp) +- தமிழ்நேரம் - [https://github.com/TamilNeram](https://github.com/TamilNeram) +- Xianglin Zeng - [https://github.com/FutureYL3](https://github.com/FutureYL3) +- Arya Pratap Singh - [https://github.com/ARYPROGRAMMER](https://github.com/ARYPROGRAMMER) +- ARYPROGRAMMER - [https://github.com/ARYPROGRAMMER](https://github.com/ARYPROGRAMMER) +- Dieter Plaetinck - [https://github.com/Dieterbe](https://github.com/Dieterbe) +- szalas - [https://github.com/szalas](https://github.com/szalas) +- dan - [https://github.com/sizzlesloth](https://github.com/sizzlesloth) +- DVPeer - [https://github.com/Denpeer](https://github.com/Denpeer) +- Marco Rimoldi - [https://github.com/marcor](https://github.com/marcor) +- Licaon_Kter - [https://github.com/licaon-kter](https://github.com/licaon-kter) +- Bassam A - [https://github.com/mutairibassam](https://github.com/mutairibassam) +- Costas Korai +- null - [https://github.com/hn-n](https://github.com/hn-n) +- Miroslav Mazel +- Milksheyke - [https://github.com/sheyaln](https://github.com/sheyaln) +- Abhishek Saini - [https://github.com/Abhisheksainii](https://github.com/Abhisheksainii) +- dimii27 - [https://github.com/dimii27](https://github.com/dimii27) +- Antonis-geo - [https://github.com/Antonis-geo](https://github.com/Antonis-geo) +- artchiee - [https://github.com/artchiee](https://github.com/artchiee) +- artchiee - [https://github.com/artchiee](https://github.com/artchiee) +- Jigar Prajapati - [https://github.com/Jiggy9](https://github.com/Jiggy9) +- Dalton Scavassa +- Jigar - [https://github.com/Jiggy9](https://github.com/Jiggy9) +- Deepanshu - [https://github.com/Deepanshu-Sharma-18](https://github.com/Deepanshu-Sharma-18) +- tejasbirsingh - [https://github.com/tejasbirsingh](https://github.com/tejasbirsingh) +- Freddy Cunningham - [https://github.com/freddy-c](https://github.com/freddy-c) +- Freddy Cunningham - [https://github.com/freddy-c](https://github.com/freddy-c) +- Malay Pandit - [https://github.com/DeveloperMalay](https://github.com/DeveloperMalay) +- Mirek Mazel - [https://github.com/12people](https://github.com/12people) +- Miroslav Mazel +- Roman Kalivoda - [https://github.com/RKCZ](https://github.com/RKCZ) +- Tiisetso Dinoko - [https://github.com/Dinokojt7](https://github.com/Dinokojt7) +- Harshit - [https://github.com/Harshit933](https://github.com/Harshit933) +- Harshit - [https://github.com/Harshit933](https://github.com/Harshit933) +- Raman Tank - [https://github.com/raman04-byte](https://github.com/raman04-byte) +- Mohammad Rafigh - [https://github.com/mohammadrafigh](https://github.com/mohammadrafigh) +- Edmundo Meyer - [https://github.com/e-meyer](https://github.com/e-meyer) +- Bujdy - [https://github.com/bujdy](https://github.com/bujdy) +- amannegi - [https://github.com/AmanNegi](https://github.com/AmanNegi) +- Aman Negi - [https://github.com/AmanNegi](https://github.com/AmanNegi) +- Aaliya Ali - [https://github.com/Aaliya-Ali](https://github.com/Aaliya-Ali) +- Aaliya Ali - [https://github.com/Aaliya-Ali](https://github.com/Aaliya-Ali) +- Sandi Milohanic +- Hissabat Manager - [https://github.com/Chinguetti-Quizz](https://github.com/Chinguetti-Quizz) +- Nenza Nurfirmansyah - [https://github.com/nenzan](https://github.com/nenzan) +- Vinod - [https://github.com/skdotv](https://github.com/skdotv) +- Aditya - [https://github.com/adeeteya](https://github.com/adeeteya) +- JustinBenito - [https://github.com/JustinBenito](https://github.com/JustinBenito) +- Florian Schmitz - [https://github.com/floodoo](https://github.com/floodoo) +- avinash - [https://github.com/HeyAvi](https://github.com/HeyAvi) +- Tolu ogundoyin - [https://github.com/Tolu007](https://github.com/Tolu007) +- Daniil Kovalev - [https://github.com/kovdan01](https://github.com/kovdan01) +- Saint Gabriel - [https://github.com/saintgabriel0](https://github.com/saintgabriel0) +- Artem - [https://github.com/defaultpage](https://github.com/defaultpage) +- WMs784 - [https://github.com/WMs784](https://github.com/WMs784) +- KenXRan - [https://github.com/kenxran](https://github.com/kenxran) +- João Goulart - [https://github.com/usehalter](https://github.com/usehalter) +- yaseenagwan - [https://github.com/agwanyaseen](https://github.com/agwanyaseen) +- G. Buendía - [https://github.com/gbuendia](https://github.com/gbuendia) +- Sylvia van Os - [https://github.com/TheLastProject](https://github.com/TheLastProject) +- Debayan Sutradhar - [https://github.com/rnayabed](https://github.com/rnayabed) +- Poussinou - [https://github.com/Poussinou](https://github.com/Poussinou) +- Nikita Epifanov +- Ady - [https://github.com/adyhnat](https://github.com/adyhnat) +- Adrian Halko +- Tomáš Konkoľ - [https://github.com/TomasKonkol](https://github.com/TomasKonkol) +- Marko Milosevic - [https://github.com/TaarnStar](https://github.com/TaarnStar) +- Sandi Milohanić - [https://github.com/sandimilohanic](https://github.com/sandimilohanic) +- AxelBlaz3 - [https://github.com/AxelBlaz3](https://github.com/AxelBlaz3) +- Marvin M - [https://github.com/M123-dev](https://github.com/M123-dev) +- himikat89 - [https://github.com/himikat89](https://github.com/himikat89) +- infiniteoverflow - [https://github.com/infiniteoverflow](https://github.com/infiniteoverflow) +- Tomer Ben Rachel - [https://github.com/TomerPacific](https://github.com/TomerPacific) +- Thilina TCH - [https://github.com/ThilinaTCH](https://github.com/ThilinaTCH) +- Thilina Herath - [https://github.com/thilinatnt](https://github.com/thilinatnt) +- ToldYouThat +- Yair Chen - [https://github.com/chenyair](https://github.com/chenyair) +- henok3878 - [https://github.com/henok3878](https://github.com/henok3878) +- Patrick Witter - [https://github.com/patrickwitter](https://github.com/patrickwitter) +- ton-An - [https://github.com/ton-An](https://github.com/ton-An) +- Prakash Shekhar - [https://github.com/prakash-shekhar](https://github.com/prakash-shekhar) +- Khushbu Bora - [https://github.com/KhushbuBora](https://github.com/KhushbuBora) +- Arun Muralidharan - [https://github.com/arun-muralidharan](https://github.com/arun-muralidharan) +- yiter +- Henio Szewczyk - [https://github.com/hszewczyk](https://github.com/hszewczyk) +- Jannik Norden +- Allan Nordhøy - [https://github.com/comradekingu](https://github.com/comradekingu) +- Stefano Rossi - [https://github.com/stefanorossiti](https://github.com/stefanorossiti) +- Dylan Aird - [https://github.com/Dolaned](https://github.com/Dolaned) ## Translators -- Saudi Arabian - - Hanaa Allohibi +### Chinese (Traditional Han script) -- German +- Peter Dave Hello - [https://github.com/PeterDaveHello](https://github.com/PeterDaveHello) - - mondstern (2) - - J. Lavoie (19) - - Roland Geider (142) +### Polish -- English +- Karol Solecki - [https://github.com/karolsol](https://github.com/karolsol) +- Piotr Strebski - [https://github.com/strebski](https://github.com/strebski) +- Dawid Panyło +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Marcin Schoenknecht +- Patryk - [https://github.com/byakurau](https://github.com/byakurau) +- Michał Homza - [https://github.com/HagiaHaya](https://github.com/HagiaHaya) +- Jacob - [https://github.com/devzom](https://github.com/devzom) - - Roland Geider (3) - - Allan Nordhøy (8) +### Serbian -- Italian +- Mladen Trišić - [https://github.com/mtrisic](https://github.com/mtrisic) - - mondstern (2) - - DT (4) - - J. Lavoie (24) - - Stefano Rossi (120) +### Dutch -- Spanish +- Joey Haalboom - [https://github.com/JoeyHaalboom](https://github.com/JoeyHaalboom) - - Roland Geider (1) - - martingetzel (119) +### Russian -- French +- Алексей Курышко - [https://github.com/alexkuryshko](https://github.com/alexkuryshko) +- lightningcpu - [https://github.com/lightningcpu](https://github.com/lightningcpu) +- Кирилл Александрович Злобин - [https://github.com/gungstarbeiter](https://github.com/gungstarbeiter) +- Ivan Katkov - [https://github.com/Porphyrion](https://github.com/Porphyrion) +- Nikita Epifanov - - J. Lavoie (92) - - Stefano Rossi (94) +### Croatian -- Norwegian Bokmål +- Milo Ivir - [https://github.com/milotype](https://github.com/milotype) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- SMilohanic - [https://github.com/sandimilohanic](https://github.com/sandimilohanic) - - Allan Nordhøy (98) +### Portuguese -- Japanese +- Edson Wolf - [https://github.com/edsonblwolf](https://github.com/edsonblwolf) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Wilton Rodrigues +- Guilherme Salomão - [https://github.com/salomaoparkour](https://github.com/salomaoparkour) +- Bruno de Moura - [https://github.com/bruunomooura](https://github.com/bruunomooura) +- Dalton Scavassa +- Stefan Taiguara - [https://github.com/Teitei011](https://github.com/Teitei011) +- Eduardo Menges Mattje - [https://github.com/EduMenges](https://github.com/EduMenges) +- Edu Cavalheiro - [https://github.com/EduCavalheiro](https://github.com/EduCavalheiro) +- João Goulart - [https://github.com/usehalter](https://github.com/usehalter) - - Kosei TANAKA (97) +### Italian -- Bahasa Indonesia +- Antenore Gatta - [https://github.com/antenore](https://github.com/antenore) +- Gab Gat +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Federico Pierantoni - [https://github.com/F3FFO](https://github.com/F3FFO) +- oarion - [https://github.com/oarion](https://github.com/oarion) +- Alessandro Faucci - [https://github.com/Dhy19971](https://github.com/Dhy19971) +- Sfizio Purea +- Mirko Ferrati - [https://github.com/MirkoFerrati](https://github.com/MirkoFerrati) +- Stefano Camillo - [https://github.com/djste](https://github.com/djste) +- MARCO ACORTE - [https://github.com/marco-acorte](https://github.com/marco-acorte) +- J. Lavoie +- DT +- mondstern +- Stefano Rossi - [https://github.com/stefanorossiti](https://github.com/stefanorossiti) - - Nenza Nurfirmansyah (73) +### French -- Croatian +- William - [https://github.com/WilliamR312](https://github.com/WilliamR312) +- florent4014 - [https://github.com/florent4014](https://github.com/florent4014) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Xav Basco +- David Olewski - [https://github.com/Arigowin](https://github.com/Arigowin) +- yoyomax80400 - [https://github.com/yoyomax80400](https://github.com/yoyomax80400) +- loued - [https://github.com/Loued](https://github.com/Loued) +- Célian +- MrSniikyz - [https://github.com/BabyGeek](https://github.com/BabyGeek) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- J. Lavoie +- Antoine Vibien - [https://github.com/r1llettes](https://github.com/r1llettes) +- Stefano Rossi - [https://github.com/stefanorossiti](https://github.com/stefanorossiti) - - Sandi Milohaic +### Ukrainian + +- Максим Горпиніч - [https://github.com/Maksim2005UA](https://github.com/Maksim2005UA) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Максим Горпиніч +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Dan - [https://github.com/Kefir2105](https://github.com/Kefir2105) +- Dan +- Tymofii Lytvynenko +- Artem - [https://github.com/defaultpage](https://github.com/defaultpage) + +### Portuguese (Brazil) + +- Ricardo Lima - [https://github.com/rhrlima](https://github.com/rhrlima) +- Clerton Araujo - [https://github.com/clertonraf](https://github.com/clertonraf) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Wilton Rodrigues +- Nao interessa +- Lucas Mezêncio - [https://github.com/lucasmezencio](https://github.com/lucasmezencio) +- Felipe Antônio Rodrigues Cardoso +- Luigi Henrick Feitoza Silva - [https://github.com/luigihenrick](https://github.com/luigihenrick) +- João Hortêncio Moraes - [https://github.com/joaohortencio](https://github.com/joaohortencio) + +### Tamil + +- தமிழ்நேரம் - [https://github.com/TamilNeram](https://github.com/TamilNeram) + +### Chinese (Simplified Han script) + +- Herb Huang + +### Hindi + +- pavan arun bagwe - [https://github.com/pavanb0](https://github.com/pavanb0) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Debayan Sutradhar - [https://github.com/rnayabed](https://github.com/rnayabed) + +### Turkish + +- Oğuz Ersen - [https://github.com/oersen](https://github.com/oersen) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Cem Avcı - [https://github.com/cem256](https://github.com/cem256) +- Oğuz Ersen +- Cenk Cidecio - [https://github.com/ccidecio](https://github.com/ccidecio) +- ToldYouThat + +### German + +- kvnrmnn - [https://github.com/rmnn92](https://github.com/rmnn92) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Victor Jouhoff - [https://github.com/jouhoffv](https://github.com/jouhoffv) +- m4skedbyte +- Axel Steinbrecher +- Christoph Suesser - [https://github.com/TheFitzZZ](https://github.com/TheFitzZZ) +- Luis Lüscher - [https://github.com/lslschr](https://github.com/lslschr) +- mondstern +- J. Lavoie +- Marvin M - [https://github.com/M123-dev](https://github.com/M123-dev) +- Lydia +- Allan Nordhøy - [https://github.com/comradekingu](https://github.com/comradekingu) + +### Indonesian + +- aryakdaniswara - [https://github.com/aryakdaniswara](https://github.com/aryakdaniswara) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Debi Maulana Ahsan Halla +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) + +### Catalan + +- Zixu Sun - [https://github.com/ziixu](https://github.com/ziixu) +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- guillem - [https://github.com/gbuendia](https://github.com/gbuendia) + +### Chinese (Simplified) + +- 纪颖志 - [https://github.com/jiyingzhi](https://github.com/jiyingzhi) +- Yi-Han Hsiung - [https://github.com/AaronHsiung](https://github.com/AaronHsiung) +- Tsz Hong CHAN - [https://github.com/tomyan112](https://github.com/tomyan112) +- Eddie Tang - [https://github.com/EDED2314](https://github.com/EDED2314) +- Jing - [https://github.com/jingcheng16](https://github.com/jingcheng16) +- sr-c - [https://github.com/sr-c](https://github.com/sr-c) +- tony - [https://github.com/tonyxxliu](https://github.com/tonyxxliu) +- yiter + +### Greek + +- Dimitrys Meliates +- Antonis-geo - [https://github.com/Antonis-geo](https://github.com/Antonis-geo) + +### Czech + +- Fjuro - [https://github.com/Fjuro](https://github.com/Fjuro) +- Fjuro +- CaptainDolphy - [https://github.com/CaptainDolphy](https://github.com/CaptainDolphy) +- Roman Kalivoda - [https://github.com/RKCZ](https://github.com/RKCZ) + +### Arabic + +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Hanaa - [https://github.com/hn-n](https://github.com/hn-n) +- Ahmed zein - [https://github.com/Ahmed-Zein](https://github.com/Ahmed-Zein) + +### Hebrew + +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- n,rdo +- Tomer Ben Rachel - [https://github.com/TomerPacific](https://github.com/TomerPacific) + +### Japanese + +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Tsz Hong CHAN - [https://github.com/tomyan112](https://github.com/tomyan112) +- sasukeiscool - [https://github.com/sasukeiscool](https://github.com/sasukeiscool) +- yiter + +### Spanish + +- Anonymous - [https://github.com/weblate](https://github.com/weblate) +- Roberto Iglesias - [https://github.com/iglesiasroberto14](https://github.com/iglesiasroberto14) +- c06c3abb8f +- Javier - [https://github.com/dysk0zero](https://github.com/dysk0zero) +- facu-d - [https://github.com/facu-d](https://github.com/facu-d) +- Biologia Libros - [https://github.com/bio201922](https://github.com/bio201922) +- guillem - [https://github.com/gbuendia](https://github.com/gbuendia) +- Chris Klempau - [https://github.com/yoinkers1337](https://github.com/yoinkers1337) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- martingetzel - [https://github.com/martingetzel](https://github.com/martingetzel) + +### Chinese (Traditional) + +- hugoalh +- Tsz Hong CHAN - [https://github.com/tomyan112](https://github.com/tomyan112) +- Chung-Wei Chung - [https://github.com/webb790709](https://github.com/webb790709) +- HY Cheng + +### Portuguese (Portugal) + +- Anonymous - [https://github.com/weblate](https://github.com/weblate) + +### Romanian + +- Bogdan Bujor - [https://github.com/qSharpy](https://github.com/qSharpy) +- dimii27 - [https://github.com/dimii27](https://github.com/dimii27) + +### English + +- guillem - [https://github.com/gbuendia](https://github.com/gbuendia) +- Allan Nordhøy - [https://github.com/comradekingu](https://github.com/comradekingu) +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) + +### Norwegian Bokmål + +- Roland Geider - [https://github.com/rolandgeider](https://github.com/rolandgeider) +- Allan Nordhøy - [https://github.com/comradekingu](https://github.com/comradekingu) + +### Amharic + +- henok3878 - [https://github.com/henok3878](https://github.com/henok3878) diff --git a/Gemfile b/Gemfile index 2ccf2ecb..73fd0e0c 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,9 @@ source "https://rubygems.org" gem "fastlane" +gem 'logger' +gem 'mutex_m' +gem 'abbrev' + plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') eval_gemfile(plugins_path) if File.exist?(plugins_path) diff --git a/Gemfile.lock b/Gemfile.lock index b4b74e3c..a12426e7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,41 +5,46 @@ GEM base64 nkf rexml + abbrev (0.1.2) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) artifactory (3.0.17) atomos (0.1.3) - aws-eventstream (1.3.0) - aws-partitions (1.960.0) - aws-sdk-core (3.201.3) + aws-eventstream (1.4.0) + aws-partitions (1.1163.0) + aws-sdk-core (3.232.0) aws-eventstream (~> 1, >= 1.3.0) - aws-partitions (~> 1, >= 1.651.0) - aws-sigv4 (~> 1.8) + aws-partitions (~> 1, >= 1.992.0) + aws-sigv4 (~> 1.9) + base64 + bigdecimal jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.88.0) - aws-sdk-core (~> 3, >= 3.201.0) + logger + aws-sdk-kms (1.112.0) + aws-sdk-core (~> 3, >= 3.231.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.156.0) - aws-sdk-core (~> 3, >= 3.201.0) + aws-sdk-s3 (1.199.0) + aws-sdk-core (~> 3, >= 3.231.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) - aws-sigv4 (1.9.1) + aws-sigv4 (1.12.1) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) - base64 (0.2.0) + base64 (0.3.0) + bigdecimal (3.2.3) claide (1.1.0) colored (1.2) colored2 (3.1.2) commander (4.6.0) highline (~> 2.0.0) declarative (0.0.20) - digest-crc (0.6.5) + digest-crc (0.7.0) rake (>= 12.0.0, < 14.0.0) domain_name (0.6.20240107) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.111.0) - faraday (1.10.3) + excon (0.112.0) + faraday (1.10.4) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -55,20 +60,20 @@ GEM faraday (>= 0.8.0) http-cookie (~> 1.0.0) faraday-em_http (1.0.0) - faraday-em_synchrony (1.0.0) + faraday-em_synchrony (1.0.1) faraday-excon (1.1.0) faraday-httpclient (1.0.1) - faraday-multipart (1.0.4) - multipart-post (~> 2) + faraday-multipart (1.1.1) + multipart-post (~> 2.0) faraday-net_http (1.0.2) faraday-net_http_persistent (1.2.0) faraday-patron (1.0.0) faraday-rack (1.0.0) faraday-retry (1.0.3) - faraday_middleware (1.2.0) + faraday_middleware (1.2.1) faraday (~> 1.0) - fastimage (2.3.1) - fastlane (2.222.0) + fastimage (2.4.0) + fastlane (2.228.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -84,6 +89,7 @@ GEM faraday-cookie_jar (~> 0.0.6) faraday_middleware (~> 1.0) fastimage (>= 2.1.0, < 3.0.0) + fastlane-sirp (>= 1.0.0) gh_inspector (>= 1.1.2, < 2.0.0) google-apis-androidpublisher_v3 (~> 0.3) google-apis-playcustomapp_v1 (~> 0.1) @@ -107,9 +113,11 @@ GEM tty-spinner (>= 0.8.0, < 1.0.0) word_wrap (~> 1.0.0) xcodeproj (>= 1.13.0, < 2.0.0) - xcpretty (~> 0.3.0) + xcpretty (~> 0.4.1) xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) - fastlane-plugin-versioning (0.5.2) + fastlane-plugin-versioning (0.7.1) + fastlane-sirp (1.0.0) + sysrandom (~> 1.0) gh_inspector (1.1.3) google-apis-androidpublisher_v3 (0.54.0) google-apis-core (>= 0.11.0, < 2.a) @@ -127,12 +135,12 @@ GEM google-apis-core (>= 0.11.0, < 2.a) google-apis-storage_v1 (0.31.0) google-apis-core (>= 0.11.0, < 2.a) - google-cloud-core (1.7.0) + google-cloud-core (1.8.0) 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.4.0) + google-cloud-errors (1.5.0) google-cloud-storage (1.47.0) addressable (~> 2.8) digest-crc (~> 0.4) @@ -148,45 +156,47 @@ GEM os (>= 0.9, < 2.0) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.6) + http-cookie (1.0.8) domain_name (~> 0.5) - httpclient (2.8.3) + httpclient (2.9.0) + mutex_m jmespath (1.6.2) - json (2.7.2) - jwt (2.8.2) + json (2.15.0) + jwt (2.10.2) base64 + logger (1.7.0) mini_magick (4.13.2) mini_mime (1.1.5) - multi_json (1.15.0) + multi_json (1.17.0) multipart-post (2.4.1) - nanaimo (0.3.0) - naturally (2.2.1) + mutex_m (0.3.0) + nanaimo (0.4.0) + naturally (2.3.0) nkf (0.2.0) - optparse (0.5.0) + optparse (0.6.0) os (1.1.4) - plist (3.7.1) - public_suffix (6.0.1) - rake (13.2.1) + plist (3.7.2) + public_suffix (6.0.2) + rake (13.3.0) representable (3.2.0) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) uber (< 0.2.0) retriable (3.1.2) - rexml (3.2.9) - strscan - rouge (2.0.7) + rexml (3.4.4) + rouge (3.28.0) ruby2_keywords (0.0.5) - rubyzip (2.3.2) + rubyzip (2.4.1) security (0.1.5) - signet (0.19.0) + signet (0.21.0) addressable (~> 2.8) faraday (>= 0.17.5, < 3.a) - jwt (>= 1.5, < 3.0) + jwt (>= 1.5, < 4.0) multi_json (~> 1.10) simctl (1.6.10) CFPropertyList naturally - strscan (3.1.0) + sysrandom (1.0.5) terminal-notifier (2.0.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) @@ -196,17 +206,17 @@ GEM tty-spinner (0.9.3) tty-cursor (~> 0.7) uber (0.1.0) - unicode-display_width (2.5.0) + unicode-display_width (2.6.0) word_wrap (1.0.0) - xcodeproj (1.24.0) + xcodeproj (1.27.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) - nanaimo (~> 0.3.0) - rexml (~> 3.2.4) - xcpretty (0.3.0) - rouge (~> 2.0.7) + nanaimo (~> 0.4.0) + rexml (>= 3.3.6, < 4.0) + xcpretty (0.4.1) + rouge (~> 3.28.0) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) @@ -214,11 +224,15 @@ PLATFORMS arm64-darwin-21 arm64-darwin-22 arm64-darwin-23 + arm64-darwin-24 x86_64-linux DEPENDENCIES + abbrev fastlane fastlane-plugin-versioning + logger + mutex_m BUNDLED WITH - 2.2.32 + 2.6.9 diff --git a/README.md b/README.md index 8476a249..cf31f6d3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Mobile app for wger Workout Manager +# Mobile app for wger wger is a free, open-source flutter application that manages and tracks/logs your exercises and personal workouts, weight, and diet plans. This is the mobile @@ -7,7 +7,7 @@ app written with Flutter, it talks via REST with the main server. If you want to contribute, hop on the Discord server and say hi! -

+

@@ -17,61 +17,45 @@ If you want to contribute, hop on the Discord server and say hi! ## Installation -[Get it on Google Play](https://play.google.com/store/apps/details?id=de.wger.flutter) -[](https://play.google.com/store/apps/details?id=de.wger.flutter) +[Get it on F-Droid](https://f-droid.org/packages/de.wger.flutter/) +height="55">](https://f-droid.org/packages/de.wger.flutter/) +[](https://apps.apple.com/us/app/wger-workout-manager/id6502226792) +[](https://flathub.org/apps/de.wger.flutter) -## Development +## Developing and contributing -### 1 +Our goal is to build an awesome and flexible fitness and nutrition manager, +along with a comprehensive list of exercises and ingredients, all released +under a free license. -Install the [wger server](https://github.com/wger-project/wger), the easiest way -is to start the development docker-compose: +For this, we’d love your help! Whether it’s code, translations, exercises or +reporting issues and ideas, check out our +[contribution guide](https://wger.readthedocs.io/en/latest/contributing.html) +to get started. -Alternatively, you can use the test server (the db is reset every day): +A huge thank you to everyone who has contributed so far! ❤️ See the full list +in [AUTHORS.md](AUTHORS.md). + +**TLDR** + +```bash +flutter run +``` + +This is a regular flutter application, so there's no magic. You will need a backend +for this, so feel free to use the test server for this (the db is reset daily): * URL: `https://wger-master.rge.uber.space` * username: `user` * password: `flutteruser` -* API key: `31e2ea0322c07b9df583a9b6d1e794f7139e78d4` - -### 2 - -Install Flutter and all its dependencies, and create a new virtual device: -. - -The app currently uses flutter 3.22 - -### 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. - -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 -``` - -Alternatively, add the key as an environment variables, e.g. by running the `source` -command on the file. - -### 4 - -Start the application with ``flutter run`` or use your IDE -(please note that depending on how you run your emulator you will need to change the IP address of -the server) - -You can run the tests with the ``flutter test`` ## Translation diff --git a/analysis_options.yaml b/analysis_options.yaml index 15127111..b7abc707 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -19,6 +19,10 @@ analyzer: # Please see https://github.com/flutter/flutter/pull/24528 for details. sdk_version_async_exported_from_core: ignore +formatter: + page_width: 100 + trailing_commas: preserve + linter: rules: # These rules are documented on and in the same order as @@ -165,8 +169,6 @@ dart_code_metrics: - avoid-passing-self-as-argument: false # fairly harmless. and e.g. drift calls are like this - avoid-passing-async-when-sync-expected: false # we really like to do this in onTap() etc, and it seems harmless - prefer-match-file-name: false # dieter wants to enable this. but requires a lot of renames. what does roland think? - formatter: indent: 0 - line-length: 100 cascading-widget-extensions: false diff --git a/android/app/build.gradle b/android/app/build.gradle index a4fd4951..da8fd1dc 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -12,16 +12,6 @@ if (localPropertiesFile.exists()) { } } -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - // Keys for the android play store def keystoreProperties = new Properties() @@ -30,57 +20,29 @@ if (keystorePropertiesFile.exists()) { keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) } -// Key for wger.de REST API -def wgerProperties = new Properties() -def localMapsPropertiesFile = rootProject.file('../fastlane/metadata/envfiles/wger.properties') -if (localMapsPropertiesFile.exists()) { - project.logger.info('Load maps properties from local file') - localMapsPropertiesFile.withReader('UTF-8') { reader -> - wgerProperties.load(reader) - } -} else { - project.logger.info('Load maps properties from environment') - try { - wgerProperties['WGER_API_KEY'] = System.getenv('WGER_API_KEY') - } catch (NullPointerException e) { - project.logger.warn('Failed to load WGER_API_KEY from environment.', e) - } -} -def wgerApiKey = wgerProperties.getProperty('WGER_API_KEY') -if (wgerApiKey == null) { - wgerApiKey = "" - project.logger.error('Wger Api Key not configured. Set it in `/fastlane/metadata/android/envfiles/wger.properties` or in the environment variable `WGER_API_KEY`') -} android { - compileSdkVersion 34 - ndkVersion "25.1.8937393" + namespace = "de.wger.flutter" + compileSdkVersion 36 + ndkVersion "28.2.13676358" compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = '11' } - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - lintOptions { - disable 'InvalidPackage' - } defaultConfig { // Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "de.wger.flutter" - minSdkVersion 21 - targetSdkVersion 34 - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - manifestPlaceholders += [WGER_API_KEY: wgerApiKey] + minSdkVersion = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName } signingConfigs { @@ -93,8 +55,6 @@ android { } buildTypes { release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.release } debug { diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 34614bd6..4e50bad4 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -26,15 +26,9 @@ android:name="${applicationName}" android:label="wger" android:icon="@mipmap/ic_launcher" + android:enableOnBackInvokedCallback="true" android:networkSecurityConfig="@xml/network_security_config"> - - - + if (project.extensions.findByName("android") != null) { + Integer pluginCompileSdk = project.android.compileSdk + if (pluginCompileSdk != null && pluginCompileSdk < 31) { + project.logger.error( + "Warning: Overriding compileSdk version in Flutter plugin: " + + project.name + + " from " + + pluginCompileSdk + + " to 31 (to work around https://issuetracker.google.com/issues/199180389)." + + "\nIf there is not a new version of " + project.name + ", consider filing an issue against " + + project.name + + " to increase their compileSdk to the latest (otherwise try updating to the latest version)." + ) + project.android { + compileSdk 34 + } + } + } + } +} + +// Workaround for " Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl." error +// Note that this instance seems to be caused by flutter_barcode_scanner, which hasn't been +// updated in three years, might be time to look for a different package +subprojects { + afterEvaluate { project -> + if (project.hasProperty('android')) { + project.android { + if (namespace == null) { + project.logger.error( + "Warning: project " + + project.name + + " has no namespace set, this will prevent compilation, " + + " setting one now to " + + project.group + + "\nIf there is not a new version of " + project.name + ", consider filing an issue against " + + project.name + ) + + namespace project.group + } + } + } + } +} + subprojects { project.evaluationDependsOn(':app') } + tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/android/gradle.properties b/android/gradle.properties index 38c8d454..399dfe11 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,4 +1,4 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx2048M android.enableR8=true android.useAndroidX=true android.enableJetifier=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 6b665338..d5ce57cb 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Fri Jun 23 08:50:38 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip \ No newline at end of file diff --git a/android/settings.gradle b/android/settings.gradle index 1c38bbdf..ed68c2f2 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -18,8 +18,8 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "7.3.1" apply false - id "org.jetbrains.kotlin.android" version "2.0.21" apply false + id "com.android.application" version "8.6.0" apply false + id "org.jetbrains.kotlin.android" version "2.1.20" apply false } include ":app" diff --git a/assets/icons/ingredient-add.svg b/assets/icons/ingredient-add.svg index 5a1e962c..1972f1de 100644 --- a/assets/icons/ingredient-add.svg +++ b/assets/icons/ingredient-add.svg @@ -1,72 +1 @@ - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/icons/ingredient-check.svg b/assets/icons/ingredient-check.svg index e66e14f5..b8fbb224 100644 --- a/assets/icons/ingredient-check.svg +++ b/assets/icons/ingredient-check.svg @@ -1,65 +1 @@ - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/icons/ingredient-diary.svg b/assets/icons/ingredient-diary.svg index f99aa57f..120f1e0b 100644 --- a/assets/icons/ingredient-diary.svg +++ b/assets/icons/ingredient-diary.svg @@ -1,86 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/icons/ingredient-edit.svg b/assets/icons/ingredient-edit.svg index 28634547..8d9ef593 100644 --- a/assets/icons/ingredient-edit.svg +++ b/assets/icons/ingredient-edit.svg @@ -1,68 +1 @@ - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/icons/meal-add.svg b/assets/icons/meal-add.svg index b4539154..13559980 100644 --- a/assets/icons/meal-add.svg +++ b/assets/icons/meal-add.svg @@ -1,68 +1 @@ - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/icons/meal-check.svg b/assets/icons/meal-check.svg index a0975410..ad9b5c2a 100644 --- a/assets/icons/meal-check.svg +++ b/assets/icons/meal-check.svg @@ -1,61 +1 @@ - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/icons/meal-diary.svg b/assets/icons/meal-diary.svg index c639e1d1..50167e22 100644 --- a/assets/icons/meal-diary.svg +++ b/assets/icons/meal-diary.svg @@ -1,82 +1 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/assets/icons/meal-edit.svg b/assets/icons/meal-edit.svg index 51899ad9..c9f68bce 100644 --- a/assets/icons/meal-edit.svg +++ b/assets/icons/meal-edit.svg @@ -1,64 +1 @@ - - - - - - - - - - - - - - - - + \ No newline at end of file diff --git a/dart_test.yaml b/dart_test.yaml new file mode 100644 index 00000000..cfa1c9fd --- /dev/null +++ b/dart_test.yaml @@ -0,0 +1,2 @@ +tags: + golden: { } \ No newline at end of file diff --git a/devtools_options.yaml b/devtools_options.yaml new file mode 100644 index 00000000..75bd2b67 --- /dev/null +++ b/devtools_options.yaml @@ -0,0 +1,3 @@ +extensions: + - drift: true + - provider: true \ No newline at end of file diff --git a/fastlane/Appfile b/fastlane/Appfile index 9a5da25e..88754926 100644 --- a/fastlane/Appfile +++ b/fastlane/Appfile @@ -1,2 +1,2 @@ json_key_file("fastlane/metadata/android/envfiles/playstore.json") -package_name("de.wger.flutter") +package_name("de.wger.flutter") \ No newline at end of file diff --git a/fastlane/metadata/android/README.md b/fastlane/metadata/android/README.md index e07f3c1b..9a311bc1 100644 --- a/fastlane/metadata/android/README.md +++ b/fastlane/metadata/android/README.md @@ -1,45 +1,3 @@ # Release process -## 1. Update flutter version - -If we use a new version, update the version used by - -* Github Actions in `android-release.yaml` in this repository -* Fdroid build recipe - in [their repo](https://gitlab.com/fdroid/fdroiddata/-/blob/master/metadata/de.wger.flutter.yml). - Since this can potentially take some time, it should happen well in advance - -## 2. Dry-run release before uploading - -* Increase build nr in pubspec.yaml (revert after the dry-run was successful) -* `flutter build appbundle --release` -* `bundle install` -* `bundle update fastlane` -* `bundle exec fastlane android test_configuration` (needs the different keys available) - -It might be necessary to repeat these steps if upload_to_play_store returns any errors -such as a missing title or similar. - -Also note that if a language was added over the weblate UI, it might be necessary -to set the correct language code: - - -## 3. Push tags to trigger release - -Make sure that the commit that will be tagged was already pushed or didn't change -any dart code, otherwise the automatic linter might push a "correction" commit -and the build step will fail. - -Set the vX.Y.Z tag locally, push it and delete it. It will get recreated to X.Y.Z. -by github actions. - -`TAG=vX.Y.Z && git tag $TAG && git push origin $TAG && git tag -d $TAG` - -## 4. Edit release - -If necessary, edit the created release on github - -## 5. Merge pull requests - -* in the flathub repo: https://github.com/flathub/de.wger.flutter -* in the flutter repo: https://github.com/wger-project/flutter/branches \ No newline at end of file +Moved to \ No newline at end of file diff --git a/fastlane/metadata/android/ar/full_description.txt b/fastlane/metadata/android/ar/full_description.txt new file mode 100644 index 00000000..ac48461b --- /dev/null +++ b/fastlane/metadata/android/ar/full_description.txt @@ -0,0 +1,39 @@ +من عُشاق اللياقة إلى عُشاق اللياقة – حان الوقت لتنظيم صحتك مع WGER، رفيقك المثالي لإدارة تمارينك! + +هل وجدت تطبيقك الرياضي المفضل، وتستمتع بابتكار برامجك التدريبية الخاصة؟ مهما كان شغفك بالرياضة – يجمعنا قاسم مشترك: وهو شغفنا بمتابعة بياناتنا الصحية <3 + +لا تقلق إن كنت لا تزال تدير رحلتك الرياضية بدفتر ملاحظاتك التقليدي، ولكن ندعوك للانضمام إلى مستقبل اللياقة في 2025! + +طورنا لك تطبيقًا رقميًا مجانيًا 100% لمتابعة صحتك ولياقتك، يركز على أهم الميزات الأساسية لتسهيل حياتك. ابدأ الآن، واصل تدريبك، واحتفل بكل إنجاز تحققه! + +wger مشروع مفتوح المصدر، يتمحور حول: + +صحة جسمك +برامجك التدريبية +تطورك وإنجازاتك +بياناتك الخاصة +صحة جسمك: +لا داعي للبحث عن مكونات أطعمتك المفضلة، اختر وجباتك اليومية من قاعدة بيانات تضم أكثر من 78000 منتج، واطّلع على قيمها الغذائية. أضف وجباتك إلى خطتك الغذائية وتابع نظامك الغذائي بسهولة عبر التقويم. + +برامجك التدريبية: +أنت أدرى بما يناسب جسمك. صمّم برامجك التدريبية الخاصة بالاختيار من بين أكثر من 200 تمرين متنوع ومتجدد. ثم، استخدم "وضع النادي الرياضي" ليرشدك خلال التمرين، وسجّل أوزانك بضغطة زر واحدة. + +تطورك وإنجازاتك: +اجعل أهدافك نصب عينيك دائمًا. تابع وزنك وسجل إحصاءاتك بانتظام. + +بياناتك الخاصة: +wger بمثابة سجلك الرياضي الشخصي – ولكن بياناتك ملكك وحدك. استخدم واجهة برمجة التطبيقات (REST API) للوصول إليها واستثمارها كما تشاء. + +ملاحظة هامة: هذا التطبيق مجاني تمامًا ولا يعتمد على أي تمويل إضافي، كما أننا لا نطلب أي تبرعات. الأهم من ذلك، أنه مشروع مجتمعي يتطور باستمرار. لذا، ترقبوا ميزات جديدة ومثيرة في أي وقت! + +#مفتوح_المصدر – ما المقصود بذلك؟ + +مفتوح المصدر يعني أن الشفرة المصدرية الكاملة للتطبيق والخادم الخاص به متاحة ومجانية للجميع: + +هل ترغب في تشغيل wger على خادمك الخاص أو لصالح ناديك الرياضي المحلي؟ لا تتردد! +هل هناك ميزة تفتقدها وتريد إضافتها؟ يمكنك البدء فورًا! +هل تريد التأكد من أن بياناتك لا تُرسل إلى أي جهة خارجية؟ لك ذلك! +انضم إلى مجتمعنا وكن واحدًا من عشاق الرياضة وخبراء التقنية من كل أنحاء العالم. نعمل باستمرار على تطوير وتحسين التطبيق ليلائم احتياجاتنا. نرحب دائمًا بمساهماتك، فلا تتردد في مشاركتنا مقترحاتك وأفكارك في أي وقت! + +-> تجدون الشفرة المصدرية على: https://github.com/wger-project +-> لطرح استفساراتكم أو حتى لإلقاء التحية، انضموا إلينا على خادم ديسكورد: https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ar/images/phoneScreenshots/01 - dashboard.png new file mode 100644 index 00000000..8eb00d16 Binary files /dev/null and b/fastlane/metadata/android/ar/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ar/images/phoneScreenshots/02 - workout detail.png new file mode 100644 index 00000000..58eae411 Binary files /dev/null and b/fastlane/metadata/android/ar/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ar/images/phoneScreenshots/03 - gym mode.png new file mode 100644 index 00000000..612cd926 Binary files /dev/null and b/fastlane/metadata/android/ar/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ar/images/phoneScreenshots/04 - measurements.png new file mode 100644 index 00000000..efa1a844 Binary files /dev/null and b/fastlane/metadata/android/ar/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ar/images/phoneScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..1c4efb40 Binary files /dev/null and b/fastlane/metadata/android/ar/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ar/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ar/images/phoneScreenshots/06 - weight.png new file mode 100644 index 00000000..055c9baa Binary files /dev/null and b/fastlane/metadata/android/ar/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..0dec5182 Binary files /dev/null and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..b4df3945 Binary files /dev/null and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..a3ae957c Binary files /dev/null and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..598ac9e1 Binary files /dev/null and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..d839cb6d Binary files /dev/null and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ar/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ar/images/sevenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..07201906 Binary files /dev/null and b/fastlane/metadata/android/ar/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..a6ff13b7 Binary files /dev/null and b/fastlane/metadata/android/ar/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..8cbe77bb Binary files /dev/null and b/fastlane/metadata/android/ar/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..283e811a Binary files /dev/null and b/fastlane/metadata/android/ar/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..4cafbbdb Binary files /dev/null and b/fastlane/metadata/android/ar/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..8bd892d8 Binary files /dev/null and b/fastlane/metadata/android/ar/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ar/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ar/images/tenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..38ec821b Binary files /dev/null and b/fastlane/metadata/android/ar/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ar/short_description.txt b/fastlane/metadata/android/ar/short_description.txt new file mode 100644 index 00000000..62434f42 --- /dev/null +++ b/fastlane/metadata/android/ar/short_description.txt @@ -0,0 +1 @@ +متتبع التمارين الرياضية، التغذية، ومراقبة الوزن diff --git a/fastlane/metadata/android/ar/title.txt b/fastlane/metadata/android/ar/title.txt new file mode 100644 index 00000000..d35e4087 --- /dev/null +++ b/fastlane/metadata/android/ar/title.txt @@ -0,0 +1 @@ +wger Workout Manager diff --git a/fastlane/metadata/android/ca/full_description.txt b/fastlane/metadata/android/ca/full_description.txt index 7318552d..8e72f266 100644 --- a/fastlane/metadata/android/ca/full_description.txt +++ b/fastlane/metadata/android/ca/full_description.txt @@ -2,7 +2,7 @@ From fitness lovers to fitness lovers – get your health organized with WGER, y Have you already found your #1 fitness app and do you love to create your own sports routines? No matter what type of sporty beast you are – we all have something in common: We love to keep track of our health data <3 -So we don’t judge you for still managing your fitness journey with your handy little workout log book but welcome to 2024! +So we don’t judge you for still managing your fitness journey with your handy little workout log book but welcome to 2025! We have developed a 100% free digital health and fitness tracker app for you, sized down to the most relevant features to make your life easier. Get started, keep training and celebrate your progress! diff --git a/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ca/images/phoneScreenshots/01 - dashboard.png index c7c9ed60..39025648 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 5b1221f0..f76fa96c 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 e56174fc..4b863968 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 d8be824b..cb69065f 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 a5916e21..cc1193b5 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 8d342b67..6c0edb30 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/01 - dashboard.png index 3275a3bb..98aafa06 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/02 - workout detail.png index 612bb0a8..7faf5e2d 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/03 - gym mode.png index 6d5b3054..397b822c 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/04 - measurements.png index c0cdec15..30f8b3fa 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/05 - nutritional plan.png index 0fa0d8f7..0fa2f6eb 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ca/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ca/images/sevenInchScreenshots/06 - weight.png index 1099a39e..08b0ef86 100644 Binary files a/fastlane/metadata/android/ca/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ca/images/sevenInchScreenshots/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 01a42339..6414d7f1 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 4d8cabd2..244f29b1 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 ed3d2da8..2e4a8ac0 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 42b37da3..6b4a3f5d 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 7b4e972d..c4f54fff 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 dfbb37ba..99fe9f20 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/cs-CZ/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/01 - dashboard.png index c5c675c0..e08a1144 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/02 - workout detail.png index a2159e65..f76fa96c 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/03 - gym mode.png index 83cd7fa3..eee98421 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/04 - measurements.png index 6b6eabc0..52a5ced7 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/05 - nutritional plan.png index c00ab9b4..afb31f54 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/06 - weight.png index 2e886781..48159e4b 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/cs-CZ/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/01 - dashboard.png index 8b372337..85f6530e 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/02 - workout detail.png index 90362984..7faf5e2d 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/03 - gym mode.png index 9b970a84..ee6e1013 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/04 - measurements.png index 12916432..53814b4b 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/05 - nutritional plan.png index 65933301..ce95448a 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/06 - weight.png index c6fb0592..3ff9b25a 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/cs-CZ/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/01 - dashboard.png index 5562153b..444c00e9 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/02 - workout detail.png index 3f800e55..244f29b1 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/03 - gym mode.png index f10631ba..e0b1bb7f 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/04 - measurements.png index ffa50c8e..51ba6ad0 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/05 - nutritional plan.png index f29f3a5c..5ad0b00f 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/06 - weight.png index 320c0c60..db0dceba 100644 Binary files a/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/cs-CZ/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt index f2408a20..637133cc 100644 --- a/fastlane/metadata/android/de-DE/full_description.txt +++ b/fastlane/metadata/android/de-DE/full_description.txt @@ -2,7 +2,7 @@ Von Fitnessliebhabern für Fitnessliebhaber, organisiere deine Gesundheit mit wg Hast du schon deine Nr. 1 Fitness-Anwendung gefunden und liebst es, deine eigene Trainingspläne zu erstellen? Egal was für ein sportliches Biest du bist sind – wir haben alle etwas gemeinsam: wir lieben es, den Überblick über unsere Gesundheitsdaten zu behalten <3 -Wir verurteilen dich also nicht dafür, dass du deine Fitness-Reise immer noch mit deinem kleinen Tagebuch verwaltest, aber willkommen im Jahr 2024! +Wir verurteilen dich also nicht dafür, dass du deine Fitness-Reise immer noch mit deinem kleinen Tagebuch verwaltest, aber willkommen im Jahr 2025! Wir haben eine 100 % kostenlose digitale Gesundheits- und Fitnesstracker-Anwendung für dich entwickelt, die auf die wichtigsten Funktionen reduziert ist, um dein Leben einfacher zu machen. Lege jetzt lost, trainiere weiter und feiere deine Fortschritte! 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 ffcd71ee..0254ffc5 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 c7091243..93071ff8 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 adb0dbb6..c2b4159b 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 61008932..f3521ca6 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 12fb3d80..d44812b0 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 10f884d7..e7f3711a 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01 - dashboard.png index 231bac45..7f9ab10d 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02 - workout detail.png index 8753afb4..2ed36353 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03 - gym mode.png index 174b363a..36d05986 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04 - measurements.png index a94c4b9b..b03ac571 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05 - nutritional plan.png index ea450f61..f85c55ea 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/06 - weight.png index 1a1f8afa..92154af3 100644 Binary files a/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/de-DE/images/sevenInchScreenshots/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 8f553c61..b1a9020e 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 fa776ede..9c38dd78 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 9e6183a7..9e251576 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 df92f03c..32e2b06d 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 4a019310..abfaa4cf 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 c80e6bde..35f9b9b0 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/full_description.txt b/fastlane/metadata/android/el-GR/full_description.txt index 952f2038..f45c3dab 100644 --- a/fastlane/metadata/android/el-GR/full_description.txt +++ b/fastlane/metadata/android/el-GR/full_description.txt @@ -2,7 +2,7 @@ Έχετε ήδη βρει την #1 εφαρμογή γυμναστικής σας και σας αρέσει να δημιουργείτε τις δικές σας αθλητικές ρουτίνες; Ανεξάρτητα από το είδος του σπορ θηρίου που είστε – όλοι έχουμε κάτι κοινό: Μας αρέσει να παρακολουθούμε τα δεδομένα υγείας μας <3 -Επομένως, δεν σας κρίνουμε επειδή εξακολουθείτε να διαχειρίζεστε το ταξίδι σας στη φυσική κατάσταση με το εύχρηστο μικρό ημερολόγιο προπόνησης, αλλά καλώς ήρθατε στο 2024! +Επομένως, δεν σας κρίνουμε επειδή εξακολουθείτε να διαχειρίζεστε το ταξίδι σας στη φυσική κατάσταση με το εύχρηστο μικρό ημερολόγιο προπόνησης, αλλά καλώς ήρθατε στο 2025! Έχουμε αναπτύξει μια 100% δωρεάν ψηφιακή εφαρμογή παρακολούθησης υγείας και φυσικής κατάστασης για εσάς, με μέγεθος στις πιο σχετικές λειτουργίες για να διευκολύνει τη ζωή σας. Ξεκινήστε, συνεχίστε την προπόνηση και γιορτάστε την πρόοδό σας! diff --git a/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png index 8eed818f..6f78cbed 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/01 - dashboard.png 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 index 5b996828..278bcebe 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/02 - workout detail.png 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 index e7439c9d..99102631 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/03 - gym mode.png 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 index 9367bec1..2a7eb1e9 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/04 - measurements.png 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 index dd7c17c1..51130f48 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/05 - nutritional plan.png 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 index 5b163840..fd079f02 100644 Binary files a/fastlane/metadata/android/el-GR/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/el-GR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/01 - dashboard.png index 192aa684..ff81630b 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/02 - workout detail.png index 0267187f..220793e7 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/03 - gym mode.png index 16985d01..91c92b49 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/04 - measurements.png index 03bebcd2..28136128 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/05 - nutritional plan.png index ff4db838..d6910c55 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/06 - weight.png index 1ef1a145..a452de1c 100644 Binary files a/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/el-GR/images/sevenInchScreenshots/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 index d0ff22fa..264c899b 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/01 - dashboard.png 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 index ba455bef..a1404272 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/02 - workout detail.png 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 index 3aad3261..0b631fe1 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/03 - gym mode.png 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 index 4bdab99c..54fd3dfe 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/04 - measurements.png 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 index e927ffa9..c4702dc8 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/05 - nutritional plan.png 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 index 96536b40..f6c034b8 100644 Binary files a/fastlane/metadata/android/el-GR/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/el-GR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index 7318552d..8e72f266 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -2,7 +2,7 @@ From fitness lovers to fitness lovers – get your health organized with WGER, y Have you already found your #1 fitness app and do you love to create your own sports routines? No matter what type of sporty beast you are – we all have something in common: We love to keep track of our health data <3 -So we don’t judge you for still managing your fitness journey with your handy little workout log book but welcome to 2024! +So we don’t judge you for still managing your fitness journey with your handy little workout log book but welcome to 2025! We have developed a 100% free digital health and fitness tracker app for you, sized down to the most relevant features to make your life easier. Get started, keep training and celebrate your progress! 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 92882df1..5f66b00a 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 f8661037..f76fa96c 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 e7439c9d..475be41d 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 0e54293d..6f43309a 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 4b37a08b..41c0d200 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 73159b68..4b6ad3b8 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01 - dashboard.png index 40351d17..4e56a3fa 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02 - workout detail.png index 8fb10ef9..7faf5e2d 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03 - gym mode.png index 16985d01..191f32fe 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04 - measurements.png index aa07f80b..4e7d43bd 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05 - nutritional plan.png index d59c4d77..7adc9b6b 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/06 - weight.png index a5904937..de1b35bc 100644 Binary files a/fastlane/metadata/android/en-US/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/en-US/images/sevenInchScreenshots/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 61df3d8f..72a6bd5d 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 7c9b1b4c..244f29b1 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 3aad3261..5fb16610 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 09d47fd8..6d1575cd 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 765d39d0..deed1969 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 f6406648..aeeabd16 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/en-US/video.txt b/fastlane/metadata/android/en-US/video.txt deleted file mode 100644 index e69de29b..00000000 diff --git a/fastlane/metadata/android/es-ES/full_description.txt b/fastlane/metadata/android/es-ES/full_description.txt index d6b8aceb..64846275 100644 --- a/fastlane/metadata/android/es-ES/full_description.txt +++ b/fastlane/metadata/android/es-ES/full_description.txt @@ -1,6 +1,6 @@ Por amantes del fitness para amantes del fitness – ¡Organiza tu salud con WGER, tu gestor de entrenamientos! -¿Has encontrado ya tu app de fitnes nº1 y te encanta crear tus propias rutinas deportivas? No importa qué clase de bestia deportista eres – todos tenemos algo en común: amamos hacer el seguimiento de los datos de nuestra salud <3 +¿Has encontrado ya tu app de fitnes nº1 y te encanta crear tus propias rutinas deportivas? No importa qué clase de bestia deportista eres – todos tenemos algo en común: nos gusta hacer el seguimiento de los datos de nuestra salud <3 Así que no vamos a juzgarte si aún gestionas tu andadura en el fitness con tu pequeño y práctico diario de entrenamientos, ¡pero te damos la bienvenida a 2022! 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 e7e6a02d..59fa1c1b 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 ca322d5f..f76fa96c 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 e0c95bc7..a240130b 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 3de87b10..0af0d6ef 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 1172c251..dc4bea3f 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 89f74d2e..7e2d07cc 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/01 - dashboard.png index 4fc3b1bb..9513da98 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/02 - workout detail.png index 97e7143e..7faf5e2d 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/03 - gym mode.png index bf46fa3b..4080120d 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/04 - measurements.png index ec6880d3..42c0a3ed 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/05 - nutritional plan.png index 236e215d..5cfc09fc 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/06 - weight.png index 2372983b..8883ab31 100644 Binary files a/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/es-ES/images/sevenInchScreenshots/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 57dea675..2c2e0ab1 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 f0956061..244f29b1 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 227ea884..4da9907b 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 689a2d20..aa86ff02 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 0d7b5439..109ca1ab 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 15e683d4..9d05c13b 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/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt index 25d7b846..cdacf2e0 100644 --- a/fastlane/metadata/android/fr-FR/full_description.txt +++ b/fastlane/metadata/android/fr-FR/full_description.txt @@ -2,7 +2,7 @@ Entre amoureux du fitness et amoureux de la forme, organisez votre santé avec W Vous avez déjà trouvé votre application de fitness nº 1 et vous aimez créer vos propres routines sportives ? Quel que soit le type de bête sportive que vous êtes - nous avons tous quelque chose en commun : nous aimons garder la trace de nos données de santé <3. -Nous ne vous jugeons donc pas si vous continuez à gérer votre parcours de remise en forme avec votre petit carnet d'entraînement bien pratique, mais bienvenue en 2024 ! +Nous ne vous jugeons donc pas si vous continuez à gérer votre parcours de remise en forme avec votre petit carnet d'entraînement bien pratique, mais bienvenue en 2025 ! Nous avons conçu pour vous une application numérique de suivi de la santé et de la forme physique 100 % gratuite, dimensionnée aux fonctionnalités les plus pertinentes pour vous faciliter la vie. Lancez-vous, continuez à vous entraîner et célébrez vos progrès ! 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 60e29c2b..1a3e3d6e 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 87a14337..ac7ca088 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 0ad1a476..71d958de 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 c91f2855..5320ab0b 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 1fd68ebf..800bac47 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 28e5d6d6..e1c81f7d 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/01 - dashboard.png index 02a2d6bc..f51e2438 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/02 - workout detail.png index dffebf30..bd2864ad 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/03 - gym mode.png index 6754b592..d4d52f2a 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/04 - measurements.png index 02d48d72..14d5548a 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/05 - nutritional plan.png index 509b70ab..ee514acb 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/06 - weight.png index 326407f9..81be25d8 100644 Binary files a/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/fr-FR/images/sevenInchScreenshots/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 80d61f66..54b55d55 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 d5ff56ae..890ac604 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 90e030c4..17f44405 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 1b3a23fe..7cecf5e7 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 5b028a5f..ff199066 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 b15a87af..69c43686 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 a0a04ad9..450d52a5 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 a084e00b..f76fa96c 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 270d7f43..d9d0f5a1 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 896d1440..2d923626 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 333bf730..c9ea957e 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 c018a091..ff34ccdb 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/01 - dashboard.png index 40752d1f..e09796df 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/02 - workout detail.png index ba508d1d..7faf5e2d 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/03 - gym mode.png index d28bbedd..f1a4792d 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/04 - measurements.png index d498a102..7d0477db 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/05 - nutritional plan.png index 359c8f30..6839cba6 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/06 - weight.png index 2a296a4e..fb998641 100644 Binary files a/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/hi-IN/images/sevenInchScreenshots/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 de1be502..09b2ec58 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 3c70f310..244f29b1 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 8ce4156f..eff913ca 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 2800a103..3415d6d6 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 47f94bf7..f2eec02c 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 74df9020..27be1f22 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/full_description.txt b/fastlane/metadata/android/hr/full_description.txt index 0fa9a0fa..9f3ffff2 100644 --- a/fastlane/metadata/android/hr/full_description.txt +++ b/fastlane/metadata/android/hr/full_description.txt @@ -2,7 +2,7 @@ Od ljubitelja fitnessa za ljubitelje fitnessa – organiziraj svoje zdravlje s W Već si pronašao/la omiljeni program za fitness i voliš stvarati vlastite sportske rutine? Bez obzira na vrstu sportske zvijeri – svi imamo nešto zajedničko: Volimo pratiti naše zdravstvene podatke <3 -Stoga te ne osuđujemo što još uvijek upravljaš svojim fitnessom sa svojim praktičnim malim dnevnikom vježbanja, ali nalazimo se u 2024. godini! +Stoga te ne osuđujemo što još uvijek upravljaš svojim fitnessom sa svojim praktičnim malim dnevnikom vježbanja, ali nalazimo se u 2025. godini! Razvili smo 100 % besplatan program za digitalno praćenje zdravlja i fitnessa, s najrelevantnijim funkcijama koje će ti olakšati život. Započni, nastavi trenirati i proslavi svoj napredak! diff --git a/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/hr/images/phoneScreenshots/01 - dashboard.png index 9a382c89..3bf4a29a 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 c5fe6f3b..f76fa96c 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 e77f9ce0..72287f01 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 6c213752..78243b85 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 0b58c9a7..add06c9b 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 8c663197..1b9257f6 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/01 - dashboard.png index 9fa87991..004c6104 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/02 - workout detail.png index 221df64f..7faf5e2d 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/03 - gym mode.png index 9436e0a9..f8a496a0 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/04 - measurements.png index 2d96fe01..6dddd621 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/05 - nutritional plan.png index 1c3ef033..17b2b755 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/hr/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/hr/images/sevenInchScreenshots/06 - weight.png index aee4fde3..1b59831a 100644 Binary files a/fastlane/metadata/android/hr/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/hr/images/sevenInchScreenshots/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 7bff9fde..424a02c5 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 bf28d1a6..244f29b1 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 15739064..921485ce 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 958bd135..c4975a51 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 f63cb1b2..cc5e9258 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 6a53b04a..3c4e8422 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/hr/video.txt b/fastlane/metadata/android/hr/video.txt deleted file mode 100644 index 8d1c8b69..00000000 --- a/fastlane/metadata/android/hr/video.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/fastlane/metadata/android/it-IT/full_description.txt b/fastlane/metadata/android/it-IT/full_description.txt index b8a5f2f1..2b8523d5 100644 --- a/fastlane/metadata/android/it-IT/full_description.txt +++ b/fastlane/metadata/android/it-IT/full_description.txt @@ -2,7 +2,7 @@ Da amanti del fitness per amanti del fitness – Organizza la tua salute con WGE Hai già trovato la tua applicazione per il fitness nº 1 e ti piace creare le tue routines sportive? Non importa che tipo di sportivo sei – Abbiamo tutti qualcosa in comune: Amiamo tenere sotto controllo i dati sulla nostra salute <3 -Quindi non ti giudichiamo se stai ancora tenendo traccia dei tuoi allenamenti con un vecchio quaderno, ma ora ti diamo il benvenuto nel 2024! +Quindi non ti giudichiamo se stai ancora tenendo traccia dei tuoi allenamenti con un vecchio quaderno, ma ora ti diamo il benvenuto nel 2025! Abbiamo sviluppato una applicazione 100% gratuita, questa applicazione tiene traccia dei tuoi allenamenti per te alleggerita alle funzionalità più importanti per semplificarti la vita. Inizia, monitora, e celebra i tuoi progressi! 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 f49db523..c0e8d59d 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 9733d3dd..2cb7d62f 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 f9c3ee26..a0e9da7d 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 54984b37..3b199564 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 c82b4ba3..a7ea034b 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 0cc55987..481b9f13 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01 - dashboard.png index 7e2cdc68..fb441cee 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02 - workout detail.png index c8f8b43f..10b37dc1 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03 - gym mode.png index a2ee7928..aa2d2826 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04 - measurements.png index b6e9583b..225bb48e 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05 - nutritional plan.png index 3a1e4f31..ab71db56 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/06 - weight.png index a3310179..075718e1 100644 Binary files a/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/it-IT/images/sevenInchScreenshots/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 4e9d027d..cb939489 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 aec0ffe2..6fc37ca4 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 d05af8a9..1208ef0e 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 52f05aaf..c163d53d 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 b5b1fb79..1f084a95 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 c2cccf1b..64ded046 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/iw-IL/full_description.txt b/fastlane/metadata/android/iw-IL/full_description.txt new file mode 100644 index 00000000..8e72f266 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/full_description.txt @@ -0,0 +1,39 @@ +From fitness lovers to fitness lovers – get your health organized with WGER, your Workout Manager! + +Have you already found your #1 fitness app and do you love to create your own sports routines? No matter what type of sporty beast you are – we all have something in common: We love to keep track of our health data <3 + +So we don’t judge you for still managing your fitness journey with your handy little workout log book but welcome to 2025! + +We have developed a 100% free digital health and fitness tracker app for you, sized down to the most relevant features to make your life easier. Get started, keep training and celebrate your progress! + +wger is an Open Source project and all about: +* Your Body +* Your Workouts +* Your Progress +* Your Data + +Your Body: +No need to google for the ingredients of your favourite treats – choose your daily meals from more than 78000 products and see the nutritional values. Add meals to the nutritional plan and keep an overview of your diet in the calendar. + +Your Workouts: +You know what is best for your body. Create your own workouts out of a growing variety from 200 different exercises. Then, use the Gym Mode to guide you through the training while you log your weights with one tap. + +Your Progress: +Never lose sight of your goals. Track your weight and keep your statistics. + +Your Data: +wger is your personalized fitness diary – but you own your data. Use the REST API to access and do amazing things with it. + +Please note: This free app is not based on additional fundings and we don’t ask you to donate money. More than that it is a community project which is growing constantly. So be prepared for new features anytime! + +#OpenSource – what does that mean? + +Open Source means that the whole source code for this app and the server it talks to is free and available to anybody: +* Do you want to run wger on your own server for you or your local gym? Go ahead! +* Do you miss a feature and want to implement it? Start now! +* Do you want to check that nothing is being sent anywhere? You can! + +Join our community and become a part of sport enthusiasts and IT geeks from all over the world. We keep working on adjusting and optimizing the app customized to our needs. We love your input so feel free to jump in anytime and contribute your wishes and ideas! + +-> find the source code on https://github.com/wger-project +-> ask your questions or just say hello on our discord Server https://discord.gg/rPWFv6W \ No newline at end of file diff --git a/fastlane/metadata/android/iw-IL/short_description.txt b/fastlane/metadata/android/iw-IL/short_description.txt new file mode 100644 index 00000000..bdcc931c --- /dev/null +++ b/fastlane/metadata/android/iw-IL/short_description.txt @@ -0,0 +1 @@ +מעקב אחר כושר גופני, תזונה ומשקל diff --git a/fastlane/metadata/android/iw-IL/title.txt b/fastlane/metadata/android/iw-IL/title.txt new file mode 100644 index 00000000..ea0df956 --- /dev/null +++ b/fastlane/metadata/android/iw-IL/title.txt @@ -0,0 +1 @@ +wger Workout Manager \ No newline at end of file diff --git a/fastlane/metadata/android/ko-KR/full_description.txt b/fastlane/metadata/android/ko-KR/full_description.txt new file mode 100644 index 00000000..6686c5ad --- /dev/null +++ b/fastlane/metadata/android/ko-KR/full_description.txt @@ -0,0 +1,56 @@ +운동을 사랑하는 사람들로부터 운동을 사랑하는 사람들을 위해 – WGER와 함께 건강을 체계적으로 관리하세요, 당신의 워크아웃 매니저! + +이미 당신만의 최고의 피트니스 앱을 찾았나요? 자신만의 운동 루틴을 만드는 걸 좋아하나요? 어떤 운동 스타일이든 우리는 공통점이 있습니다: 건강 데이터를 기록하는 걸 좋아한다는 점이죠. ❤️ + +아직도 작은 운동 일지에 피트니스 여정을 기록하고 있다면 괜찮아요. 하지만 이제 2025년에 오신 걸 환영합니다! + +우리는 여러분의 삶을 더 쉽게 만들어주는, 꼭 필요한 기능만 담은 100% 무료 디지털 건강 & 피트니스 트래커 앱을 개발했습니다. +지금 바로 시작하고, 꾸준히 운동하며, 성장하는 모습을 축하하세요! + +WGER는 오픈소스 프로젝트이며, 중심 철학은 다음과 같습니다: + +당신의 몸 (Your Body) + +당신의 운동 (Your Workouts) + +당신의 성장 (Your Progress) + +당신의 데이터 (Your Data) + +당신의 몸 (Your Body): +좋아하는 간식의 영양 성분을 검색할 필요가 없습니다. +78,000개 이상의 식품 데이터베이스에서 하루 식단을 고르고, 영양 계획에 추가해보세요. +캘린더에서 식단을 한눈에 확인할 수 있습니다. + +당신의 운동 (Your Workouts): +당신의 몸에 가장 잘 맞는 운동은 바로 당신이 가장 잘 압니다. +200가지 이상의 다양한 운동 중에서 자신만의 운동 루틴을 만들어보세요. +그런 다음 ‘Gym Mode’를 활용해 운동을 진행하면서 원터치로 무게를 기록할 수 있습니다. + +당신의 성장 (Your Progress): +목표를 잊지 마세요. 체중을 추적하고 통계 데이터를 통해 자신의 발전을 확인할 수 있습니다. + +당신의 데이터 (Your Data): +WGER는 개인 맞춤형 피트니스 다이어리입니다 – 당신의 데이터는 오직 당신의 것입니다. +REST API를 사용해 데이터를 자유롭게 접근하고 원하는 대로 활용하세요. + +참고: +이 앱은 별도의 자금 지원을 받지 않으며, 기부를 요구하지도 않습니다. +커뮤니티 기반 프로젝트로, 지속적으로 성장 중입니다. 언제든지 새로운 기능이 추가될 예정이니 기대하세요! + +#오픈소스 – 그게 뭔가요? + +오픈소스란, 이 앱과 서버의 전체 소스 코드가 누구에게나 공개되어 있다는 뜻입니다: + +WGER를 본인 서버나 지역 체육관에서 직접 운영하고 싶나요? 가능합니다! + +원하는 기능이 없나요? 직접 구현해보세요! + +데이터가 다른 곳으로 전송되지 않는지 확인하고 싶나요? 얼마든지 확인할 수 있습니다! + +우리 커뮤니티에 참여해보세요. 전 세계 운동 애호가와 IT 개발자들이 함께하고 있습니다. +우리의 니즈에 맞춰 앱을 지속적으로 조정하고 최적화하고 있습니다. +여러분의 아이디어와 의견을 언제든지 환영합니다. 자유롭게 참여하고 기여해주세요! + +→ 소스 코드는 https://github.com/wger-project 에서 확인할 수 있습니다. +→ 궁금한 점이 있거나 인사하고 싶다면 디스코드 서버로 오세요: https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/01 - dashboard.png new file mode 100644 index 00000000..acb44780 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/02 - workout detail.png new file mode 100644 index 00000000..f76fa96c Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/03 - gym mode.png new file mode 100644 index 00000000..61879299 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/04 - measurements.png new file mode 100644 index 00000000..5ca2095b Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..2419c66c Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ko-KR/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/06 - weight.png new file mode 100644 index 00000000..641061a6 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..5fc40ad5 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..7faf5e2d Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..9e3558aa Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..5bd7b795 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..8c94e518 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..e0354376 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..06b7e567 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..244f29b1 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..d3af3e72 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..4fe9be63 Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..20d7a01c Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..030065cc Binary files /dev/null and b/fastlane/metadata/android/ko-KR/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ko-KR/short_description.txt b/fastlane/metadata/android/ko-KR/short_description.txt new file mode 100644 index 00000000..c18c84ce --- /dev/null +++ b/fastlane/metadata/android/ko-KR/short_description.txt @@ -0,0 +1 @@ +피트니스/운동, 영양소, 몸무게 추적기, 영양소, 몸무게 추적기 diff --git a/fastlane/metadata/android/ko-KR/title.txt b/fastlane/metadata/android/ko-KR/title.txt new file mode 100644 index 00000000..d35e4087 --- /dev/null +++ b/fastlane/metadata/android/ko-KR/title.txt @@ -0,0 +1 @@ +wger Workout Manager 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 1b55bb78..f47d9931 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 a0b5c792..f76fa96c 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 e7439c9d..475be41d 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 2c193853..9a96c782 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 6c53643e..e027379a 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 0161a876..de3fb759 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/01 - dashboard.png index 0af9f0c4..f3a4aadb 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/02 - workout detail.png index 655530db..7faf5e2d 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/03 - gym mode.png index 16985d01..191f32fe 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/04 - measurements.png index 50a5b13f..01e77fc7 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/05 - nutritional plan.png index 1c910c65..24dab825 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/06 - weight.png index c8ae45d5..73c58d5b 100644 Binary files a/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/nb-NO/images/sevenInchScreenshots/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 4210f52f..db1b88f4 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 4809b52c..244f29b1 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 3aad3261..5fb16610 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 a81fcab7..35c2cf86 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 f5711479..170d4905 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 e02e1dda..72bcd37b 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/full_description.txt b/fastlane/metadata/android/pl-PL/full_description.txt index af244e7c..11391c19 100644 --- a/fastlane/metadata/android/pl-PL/full_description.txt +++ b/fastlane/metadata/android/pl-PL/full_description.txt @@ -2,7 +2,7 @@ Od miłośników fitnessu dla miłośników fitnessu – zorganizuj zdrowy tryb Znalazłeś już swoją najlepszą aplikację do fitnessu i lubisz tworzyć własne programy sportowe? Bez względu na to, jakim jesteś typem wysportowanej bestii – wszyscy mamy coś wspólnego: uwielbiamy śledzić nasze dane dotyczące zdrowia <3 -Więc nie oceniamy Cię za to, że nadal zarządzasz swoją podróżą przez świat fitness za pomocą poręcznego małego zeszytu treningowego, ale witaj w 2024 roku! +Więc nie oceniamy Cię za to, że nadal zarządzasz swoją podróżą przez świat fitness za pomocą poręcznego małego zeszytu treningowego, ale witaj w 2025 roku! Opracowaliśmy dla Ciebie w 100% darmową cyfrową aplikację do monitorowania zdrowia i kondycji, dostosowaną do najistotniejszych funkcji, aby ułatwić Ci życie. Rozpocznij, kontynuuj trening i świętuj swoje postępy! 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 80da38cb..a3c72bda 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 f71883a2..f76fa96c 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 fcaad7a2..a269a0f1 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 c1e25f18..eb206a3c 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 240fb540..a3f97e16 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 026bc77e..415c43c0 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/01 - dashboard.png index fbfc0657..8c572036 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/02 - workout detail.png index 8372c393..7faf5e2d 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/03 - gym mode.png index af5c636a..b67cb1e4 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/04 - measurements.png index 1aedcacf..3f33dde7 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/05 - nutritional plan.png index d7d921bd..7fce499b 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/06 - weight.png index ca15bb59..d9be69f1 100644 Binary files a/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pl-PL/images/sevenInchScreenshots/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 d1c5b508..d3e68787 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 6a63236e..244f29b1 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 fb3982e3..d0819992 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 957698f3..91645cf6 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 a7a3a261..abea98ee 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 284aa2db..6fb439e7 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/pl-PL/video.txt b/fastlane/metadata/android/pl-PL/video.txt deleted file mode 100644 index 8d1c8b69..00000000 --- a/fastlane/metadata/android/pl-PL/video.txt +++ /dev/null @@ -1 +0,0 @@ - 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 ccda3b8e..116ddfc0 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 8fcbaccc..d5ce1228 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 731f2b4f..0acfaee8 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 18286dee..7274ecba 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 2ab1dfbf..c75ef094 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 0ab5155e..f6273a2f 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/01 - dashboard.png index a0f15459..4b54d618 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/02 - workout detail.png index c04a972c..201918e1 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/03 - gym mode.png index 79bdd0de..ca551f01 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/04 - measurements.png index 39de185c..93de968e 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/05 - nutritional plan.png index e10aa7bc..3707a49b 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/06 - weight.png index 79fc4887..d6dcf30d 100644 Binary files a/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-BR/images/sevenInchScreenshots/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 553501b2..49e6120f 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 7bb07ca4..1d1860ba 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 08dea45f..73a0fdca 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 1d254684..8497f1cb 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 46091d34..fff2dd82 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 7270edbb..8fd84c6f 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/pt-PT/full_description.txt b/fastlane/metadata/android/pt-PT/full_description.txt index 60e8c3d9..abb82544 100644 --- a/fastlane/metadata/android/pt-PT/full_description.txt +++ b/fastlane/metadata/android/pt-PT/full_description.txt @@ -1,39 +1,39 @@ -Feito por amantes da vida fitness - organize sua saúde com o WGER, seu Gerenciador de Treinos! +De amantes do exercício para amantes do exercício - Organiza a tua saúde com WGER, o gestor de treinos! -Você já encontrou o seu aplicativo de fitness nº1? Você adora criar suas próprias rotinas de treino? Não importa que tipo de fera esportiva você seja - todos nós temos algo em comum: adoramos acompanhar nossos dados de saúde <3 +Já encontraste a tua aplicação fitness n.º 1 e adoras criar as tuas próprias rotinas desportivas? Independentemente do animal desportivo que sejas, todos temos algo em comum: adoramos dominar os nossos dados biométricos <3 -Nós não te julgamos por ainda gerenciar sua jornada fitness em um caderno, mas bem-vindo(a) ao século 21! +Por isso não te julgamos se ainda fazes os teus registos no teu lindo caderninho de treino, mas bem-vindo a 2025! -Desenvolvemos um aplicativo de acompanhemento de saúde e fitness 100% gratuito para você, reduzido aos recursos mais relevantes para facilitar sua vida. Comece, treine e comemore seu progresso! +Desenvolvemos uma aplicação digital de controle de treino e saúde 100% livre para ti, simplificada às funções mais importantes para simplificar a tua vida. Começa, continua a treinar e celebra os teus progressos! -O wger é um projeto open-source que é sobre: -* Seu Corpo -* Seus Treinos -* Seu Progresso -* Seus Dados +wger é um projeto open source e comprometido com: +* O teu corpo +* Os teus treinos +* O teu progresso +* Os teus dados -Seu Corpo: -Não precisa pesquisar no Google os ingredientes de suas receitas favoritas - escolha suas refeições diárias entre mais de 78.000 itens e veja os valores nutricionais. Adicione as refeições ao plano nutricional e mantenha uma visão geral de sua dieta no calendário. +O teu corpo +Não é preciso googlar os ingredientes dos teus petiscos favoritos - escolhe as tuas refeições diárias de mais de 78000 produtos e verifica os valores nutricionais. Adiciona refeições ao plano nutricional e tem uma visão de conjunto da tua dieta no calendário. -Seus Treinos: -Você sabe o que é melhor para o seu corpo. Crie seus próprios treinos a partir de uma variedade de mais de 200 exercícios. Em seguida, use o Modo Academia para orientá-lo durante o treino, enquanto registra suas cargas com um clique. +Os teus treinos +Tu sabes o que é melhor para o teu corpo. Cria os teus treinos a partir duma grande variedade de 200 exercícios diferentes. Depois, usa o modo ginásio para te guiar no treino enquanto registas os pesos com um toque. -Seu Progresso: -Nunca perca de vista seus objetivos. Acompanhe seu peso e mantenha suas estatísticas. +O teu progresso +Nunca percas os teus objetivos de vista. Regista o teu peso e guarda as tuas estatísticas. -Seus Dados: -O wger é o seu diário fitness personalizado - mas você é dono(a) dos seus dados. Use a REST API para acessá-los e fazer coisas incríveis com eles. +Os teus dados +wger é o teu diário de treino personalizado - mas tu possuis os teus dados. Usa a API REST para aceder e fazer coisas espantosas com eles. -Obs.: Este aplicativo gratuito não é baseado em financiamentos adicionais e não pedimos que você doe dinheiro. Mais do que isso, é um projeto comunitário em constante crescimento. Portanto, esteja preparado(a) para novos recursos a qualquer momento! +Por favor nota: Esta app gratuita não está baseada em fundos adicionais e não pedimos que dês dinheiro. Mais do que isso, é um projeto comunitário que tem evoluído constantemente. Por isso, espera novas funcionalidades a qualquer momento! -#CódigoAberto - o que isso significa? +#Código aberto - O que quer isso dizer? -Código aberto significa que todo o código-fonte deste aplicativo e do servidor ao qual ele se conecta é gratuito e está disponível para qualquer pessoa: -* Você quer executar o wger em seu próprio servidor, para você ou para sua academia? Sinta-se à vontade! -* Está sentindo falta de um recurso e quer implementá-lo? Comece agora! -* Quer verificar se nenhum dado está sendo compartilhado? Você pode! +Código aberto quer dizer que todo o código fonte desta aplicação e do servidor com que comunica é livre e disponível para toda a gente: +* Queres correr o wger no teu servidor para ti e para o teu ginásio? Força! +* Sentes falta duma funcionalidade e queres implementá-la? Começa já! +* Queres verificar que nada está a ser enviado para lado nenhum? Podes! -Junte-se à nossa comunidade e faça parte dos entusiastas do esporte e geeks de TI de todo o mundo. Continuamos trabalhando para ajustar e otimizar o aplicativo de acordo com nossas necessidades. Amamos suas contribuições, então sinta-se à vontade para participar a qualquer momento e contribuir com seus desejos e ideias! +Junta-te à nossa comunidade e torna-te parte de entusiastas do exercício e geeks das TI de todo o mundo. Nós continuamos a ajustar e otimizar a app talhada para as nossas necessidades. Adoramos o teu contributo, por isso sente-te à vontade para aparecer com sugestões e ideias! --> encontre o código-fonte em https://github.com/wger-project --> faça suas perguntas ou apenas diga Olá no nosso servidor do Discord https://discord.gg/rPWFv6W +-> encontra o código fonte em https://github.com/wger-project +-> faz as tuas perguntas ou simplesmente diz olá no nosso servidor discord https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/01 - dashboard.png index c11e7498..4f896917 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/02 - workout detail.png index 8fcbaccc..d5ce1228 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/03 - gym mode.png index 731f2b4f..0acfaee8 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/04 - measurements.png index 18286dee..7274ecba 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/05 - nutritional plan.png index 12c499cf..779fde40 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/06 - weight.png index 0ab5155e..f6273a2f 100644 Binary files a/fastlane/metadata/android/pt-PT/images/phoneScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-PT/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/01 - dashboard.png index 2a8b49fe..1faf1bc5 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/02 - workout detail.png index c04a972c..201918e1 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/03 - gym mode.png index 79bdd0de..ca551f01 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/04 - measurements.png index 39de185c..93de968e 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/05 - nutritional plan.png index 189c8ad2..1d7c226e 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/06 - weight.png index 79fc4887..d6dcf30d 100644 Binary files a/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-PT/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/01 - dashboard.png index 4ba62639..24c1f1b7 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/02 - workout detail.png index 7bb07ca4..1d1860ba 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/03 - gym mode.png index 08dea45f..73a0fdca 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/04 - measurements.png index 1d254684..8497f1cb 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/05 - nutritional plan.png index 1d30d223..33aad2ef 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/06 - weight.png index 7270edbb..8fd84c6f 100644 Binary files a/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/pt-PT/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/pt-PT/short_description.txt b/fastlane/metadata/android/pt-PT/short_description.txt index 064060fe..3b018c2c 100644 --- a/fastlane/metadata/android/pt-PT/short_description.txt +++ b/fastlane/metadata/android/pt-PT/short_description.txt @@ -1 +1 @@ -Monitore seus treinos e dieta +Gestor de treinos, nutrição e peso diff --git a/fastlane/metadata/android/ru-RU/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt index f7be1cdb..3ded1c12 100644 --- a/fastlane/metadata/android/ru-RU/full_description.txt +++ b/fastlane/metadata/android/ru-RU/full_description.txt @@ -2,7 +2,7 @@ Вы уже нашли свое фитнес-приложение №1 и любите создавать свои собственные спортивные программы? Независимо от того, какой вы спортивный зверь - у всех нас есть нечто общее: мы любим отслеживать данные о своем здоровье <3 -Поэтому мы не осуждаем вас за то, что вы все еще ведете свой фитнес-путь с помощью удобного маленького журнала тренировок, но добро пожаловать в 2024 год! +Поэтому мы не осуждаем вас за то, что вы все еще ведете свой фитнес-путь с помощью удобного маленького журнала тренировок, но добро пожаловать в 2025 год! Мы разработали для вас на 100% свободное цифровое приложение для отслеживания состояния здоровья и фитнес-тренировок, сократив его до самых необходимых функций, чтобы облегчить вам жизнь. Начните, продолжайте тренироваться и отмечайте свой прогресс! 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 82e52642..0b127940 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 7eba0cce..f76fa96c 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 009efa84..45f69c0c 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 6deecf43..796640b0 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 c1bccef2..f14d1abe 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 64d1f6c5..547fd053 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/01 - dashboard.png index ffcb4a52..f52bbb2b 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/02 - workout detail.png index 662a0826..7faf5e2d 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/03 - gym mode.png index 53391ece..e0aef9f2 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/04 - measurements.png index 17e88ff7..33481986 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/05 - nutritional plan.png index 9055ce43..4d771078 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/06 - weight.png index d4c5f8fb..0eaf67c3 100644 Binary files a/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/ru-RU/images/sevenInchScreenshots/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 30c9ebd6..f3c49874 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 a0632e5c..244f29b1 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 6ecff21d..81762983 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 9a818f6d..b7cfc899 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 1d60a9d3..7b49a452 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 dd8e3d62..9bcbe571 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/sr/full_description.txt b/fastlane/metadata/android/sr/full_description.txt new file mode 100644 index 00000000..9dfe2c9d --- /dev/null +++ b/fastlane/metadata/android/sr/full_description.txt @@ -0,0 +1,39 @@ +Од љубитеља фитнеса за љубитеље фитнеса – узми здравље у своје руке са WGER, твојим менаџером тренинга! + +Већ си пронашао/ла омиљени програм за фитнес и волиш да уводиш спортстку рутину? Без обзира на врсту спортске активности - сви имамо нешто заједничко: волимо да пратимо наше здравствене податке! <3 + +Ми те не осуђујемо што још увек управљаш са својим фитнесом својим класичним дневником, али ипак се налазимо у 2025. години! + +Развили смо 100% бесплатан програм за дигитално праћење здравља и фитнеса, са најрелевантнијим функцијама које ће ти олакшати живот. Започни тренинг и прослави своје прве кораке! + +wger је пројекат отвореног кода у ком ћеш наћи све за: +* Твоје тело +* Твоје тренинге +* Твој напредак +* Твоје податке + +Твоје тело: +Нема потребе за гуглањем садржаја омиљених посластица – одабери дневне оброке и више од 78.000 производа из базе и погледај нутритивне вредности. Додај оброке у план искране и чувај преглед своје исхране у календару. + +Твоји тренинзи: +Ти знаш шта је најбоље за твоје тело. Изгради прилагођене тренинге угледајући се на више од 200 различитих предефинисаних вежби. Затим користи модул тератане за вођени тренинг у ком можеш једним додиром можеш бележити тежине оптерећења. + +Твој напредак: +Никада не губи из вида своје циљеве. Прати оптерећење и води статистику. + +Твоји подаци: +wger је твој персонализовани дневник фитнеса – али сви подаци припадају теби. Користи REST API-је за приступ и направи са нјима невероватне ствари. + +Напомена: Овај бесплатни програм не зависи од додатних спонзорстава и не тражимо од вас да донирате новац. Овај бесплатни програм се темељи на заједници која стално расте. Зато, буди спреман/на на нове функционалности у били ком тренутку! + +#Отворени код – шта то значи? + +Отворени код значи да је цео изворни код ових апликација отворен и доступан свима: +* Желиш ли да покрећеш wger на сопственом серверу или негде локално? Изволи, можеш! +* Недостаје ти функционалност и желиш је направити сам? Почни одмах! +* Желиш ли да провериш да ли подаци остају само на твојим уређајима? Можеш! + +Придружи се нашој заједници и постани део заједнице спортских ентузијаста и ИТ залуђеника из целог света. Настављамо да радимо на прилагођавању и оптимизацији програма вашим потребама. Ценимо и твој допринос, слободно се прикључи у вило које време и предложи своје идеје о унапређењу пројекта! + +-> изворни код можеш увек пронаћи на https://github.com/wger-project +-> укључи се у заједницу, постави питанја и представи се на нашем Дискорд(Discord) серверу: https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/sr/images/phoneScreenshots/01 - dashboard.png new file mode 100644 index 00000000..1856628b Binary files /dev/null and b/fastlane/metadata/android/sr/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/sr/images/phoneScreenshots/02 - workout detail.png new file mode 100644 index 00000000..f76fa96c Binary files /dev/null and b/fastlane/metadata/android/sr/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/sr/images/phoneScreenshots/03 - gym mode.png new file mode 100644 index 00000000..475be41d Binary files /dev/null and b/fastlane/metadata/android/sr/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/sr/images/phoneScreenshots/04 - measurements.png new file mode 100644 index 00000000..6f43309a Binary files /dev/null and b/fastlane/metadata/android/sr/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/sr/images/phoneScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..93643df4 Binary files /dev/null and b/fastlane/metadata/android/sr/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/sr/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/sr/images/phoneScreenshots/06 - weight.png new file mode 100644 index 00000000..4b6ad3b8 Binary files /dev/null and b/fastlane/metadata/android/sr/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..30866e69 Binary files /dev/null and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..7faf5e2d Binary files /dev/null and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..191f32fe Binary files /dev/null and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..4e7d43bd Binary files /dev/null and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..18237018 Binary files /dev/null and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/sr/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/sr/images/sevenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..de1b35bc Binary files /dev/null and b/fastlane/metadata/android/sr/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..c9320d52 Binary files /dev/null and b/fastlane/metadata/android/sr/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..244f29b1 Binary files /dev/null and b/fastlane/metadata/android/sr/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..5fb16610 Binary files /dev/null and b/fastlane/metadata/android/sr/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..6d1575cd Binary files /dev/null and b/fastlane/metadata/android/sr/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..2982318f Binary files /dev/null and b/fastlane/metadata/android/sr/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/sr/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/sr/images/tenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..aeeabd16 Binary files /dev/null and b/fastlane/metadata/android/sr/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/sr/short_description.txt b/fastlane/metadata/android/sr/short_description.txt new file mode 100644 index 00000000..c8c171c3 --- /dev/null +++ b/fastlane/metadata/android/sr/short_description.txt @@ -0,0 +1 @@ +Фитнес/тренинг, исхрана и праћење тежине diff --git a/fastlane/metadata/android/sr/title.txt b/fastlane/metadata/android/sr/title.txt new file mode 100644 index 00000000..d35e4087 --- /dev/null +++ b/fastlane/metadata/android/sr/title.txt @@ -0,0 +1 @@ +wger Workout Manager diff --git a/fastlane/metadata/android/ta-IN/full_description.txt b/fastlane/metadata/android/ta-IN/full_description.txt new file mode 100644 index 00000000..ebb35c00 --- /dev/null +++ b/fastlane/metadata/android/ta-IN/full_description.txt @@ -0,0 +1,39 @@ +உடற்பயிற்சி பிரியர்கள் முதல் உடற்பயிற்சி பிரியர்கள்வரை - உங்கள் உடற்பயிற்சி மேலாளரான WGER உடன் உங்கள் ஆரோக்கியத்தை ஒழுங்கமைக்கவும்! + +நீங்கள் ஏற்கனவே உங்கள் #1 உடற்பயிற்சி செயலியைக் கண்டுபிடித்துவிட்டீர்களா, மேலும் உங்கள் சொந்த விளையாட்டு வழக்கங்களை உருவாக்க விரும்புகிறீர்களா? நீங்கள் எந்த வகையான விளையாட்டு மிருகமாக இருந்தாலும் சரி - நம் அனைவருக்கும் பொதுவான ஒன்று உள்ளது: எங்கள் உடல்நலத் தரவைக் கண்காணிக்க நாங்கள் விரும்புகிறோம் <3 + +எனவே, உங்கள் உடற்பயிற்சி பயணத்தை உங்கள் எளிமையான சிறிய உடற்பயிற்சி பதிவு புத்தகத்துடன் நிர்வகிப்பதற்காக நாங்கள் உங்களை மதிப்பிடவில்லை, ஆனால் 2025 க்கு வரவேற்கிறோம்! + +உங்களுக்காக 100% இலவச டிஜிட்டல் உடல்நலம் மற்றும் உடற்பயிற்சி கண்காணிப்பு செயலியை நாங்கள் உருவாக்கியுள்ளோம், இது உங்கள் வாழ்க்கையை எளிதாக்க மிகவும் பொருத்தமான அம்சங்களுக்கு அளவிடப்பட்டுள்ளது. தொடங்குங்கள், பயிற்சியைத் தொடருங்கள் மற்றும் உங்கள் முன்னேற்றத்தைக் கொண்டாடுங்கள்! + +wger என்பது ஒரு திறந்த மூல திட்டம் மற்றும் இதுபற்றிய அனைத்தும்: +* உங்கள் உடல் +* உங்கள் உடற்பயிற்சிகள் +* உங்கள் முன்னேற்றம் +* உங்கள் தரவு + +உங்கள் உடல்: +உங்களுக்குப் பிடித்த உணவு வகைகளின் பொருட்களைக் கூகிள் மூலம் தேட வேண்டிய அவசியமில்லை - 78000க்கும் மேற்பட்ட பொருட்களிலிருந்து உங்கள் தினசரி உணவைத் தேர்ந்தெடுத்து ஊட்டச்சத்து மதிப்புகளைப் பாருங்கள். ஊட்டச்சத்து திட்டத்தில் உணவுகளைச் சேர்த்து, உங்கள் உணவின் கண்ணோட்டத்தை காலண்டரில் வைத்திருங்கள். + +உங்கள் உடற்பயிற்சிகள்: +உங்கள் உடலுக்கு எது சிறந்தது என்பது உங்களுக்குத் தெரியும். 200 வெவ்வேறு பயிற்சிகளிலிருந்து வளர்ந்து வரும் வகைகளிலிருந்து உங்கள் சொந்த உடற்பயிற்சிகளை உருவாக்குங்கள். பின்னர், ஒரே தட்டலில் உங்கள் எடைகளைப் பதிவு செய்யும்போது பயிற்சியின் மூலம் உங்களை வழிநடத்த ஜிம் பயன்முறையைப் பயன்படுத்தவும். + +உங்கள் முன்னேற்றம்: +உங்கள் இலக்குகளை ஒருபோதும் மறந்துவிடாதீர்கள். உங்கள் எடையைக் கண்காணித்து, உங்கள் புள்ளிவிவரங்களை வைத்திருங்கள். + +உங்கள் தரவு: +wger என்பது உங்கள் தனிப்பயனாக்கப்பட்ட உடற்பயிற்சி நாட்குறிப்பு - ஆனால் உங்கள் தரவு உங்களுடையது. REST API ஐப் பயன்படுத்தி அதை அணுகி அற்புதமான விஷயங்களைச் செய்யுங்கள். + +தயவுசெய்து கவனிக்கவும்: இந்த இலவச பயன்பாடு கூடுதல் நிதியை அடிப்படையாகக் கொண்டது அல்ல, மேலும் நாங்கள் உங்களிடம் பணத்தை நன்கொடையாகக் கேட்பதில்லை. அதைவிட இது தொடர்ந்து வளர்ந்து வரும் ஒரு சமூகத் திட்டம். எனவே எந்த நேரத்திலும் புதிய அம்சங்களுக்குத் தயாராக இருங்கள்! + +#ஓப்பன்சோர்ஸ் – அது என்ன அர்த்தம்? +திறந்த மூலமானது இந்தப் பயன்பாட்டிற்கான முழு மூலக் குறியீடும் அது பேசும் சேவையகமும் இலவசம் மற்றும் யாருக்கும் கிடைக்கும் என்பதாகும்: + +* உங்கள் சொந்த சர்வரில் அல்லது உங்கள் உள்ளூர் ஜிம்மில் wger ஐ இயக்க விரும்புகிறீர்களா? தொடருங்கள்! +* நீங்கள் ஒரு அம்சத்தைத் தவறவிட்டு அதைச் செயல்படுத்த விரும்புகிறீர்களா? இப்போதே தொடங்குங்கள்! +* எதுவும் எங்கும் அனுப்பப்படவில்லை என்பதை நீங்கள் சரிபார்க்க விரும்புகிறீர்களா? உங்களால் முடியும்! + +எங்கள் சமூகத்தில் சேர்ந்து, உலகம் முழுவதிலுமிருந்து வரும் விளையாட்டு ஆர்வலர்கள் மற்றும் ஐடி ஆர்வலர்களின் ஒரு பகுதியாகுங்கள். எங்கள் தேவைகளுக்கு ஏற்பத் தனிப்பயனாக்கப்பட்ட பயன்பாட்டைச் சரிசெய்து மேம்படுத்துவதில் நாங்கள் தொடர்ந்து பணியாற்றி வருகிறோம். உங்கள் உள்ளீட்டை நாங்கள் விரும்புகிறோம், எனவே எந்த நேரத்திலும் குதித்து உங்கள் விருப்பங்களையும் யோசனைகளையும் பங்களிக்க தயங்காதீர்கள்! + +-> https://github.com/wger-project இல் மூலக் குறியீட்டைக் கண்டறியவும். +-> உங்கள் கேள்விகளைக் கேளுங்கள் அல்லது எங்கள் டிஸ்கார்ட் சர்வரில் ஹலோ சொல்லுங்கள் https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/01 - dashboard.png new file mode 100644 index 00000000..4c4dbb86 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/02 - workout detail.png new file mode 100644 index 00000000..f76fa96c Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/03 - gym mode.png new file mode 100644 index 00000000..6111c6a0 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/04 - measurements.png new file mode 100644 index 00000000..874b9b5d Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..901fd50b Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ta-IN/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/06 - weight.png new file mode 100644 index 00000000..012d97e0 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..a61136d5 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..7faf5e2d Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..ded8f167 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..39d1ace8 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..b32fba6c Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..a877cae7 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..ea851fca Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..244f29b1 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..27fa6426 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..1bb9c272 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..951a9652 Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..01792d7f Binary files /dev/null and b/fastlane/metadata/android/ta-IN/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/ta-IN/short_description.txt b/fastlane/metadata/android/ta-IN/short_description.txt new file mode 100644 index 00000000..4391c682 --- /dev/null +++ b/fastlane/metadata/android/ta-IN/short_description.txt @@ -0,0 +1 @@ +உடற்தகுதி/உடற்பயிற்சி, ஊட்டச்சத்து மற்றும் எடை கண்காணிப்பு diff --git a/fastlane/metadata/android/ta-IN/title.txt b/fastlane/metadata/android/ta-IN/title.txt new file mode 100644 index 00000000..d35e4087 --- /dev/null +++ b/fastlane/metadata/android/ta-IN/title.txt @@ -0,0 +1 @@ +wger Workout Manager diff --git a/fastlane/metadata/android/tr-TR/full_description.txt b/fastlane/metadata/android/tr-TR/full_description.txt index 6a32c601..fdec591a 100644 --- a/fastlane/metadata/android/tr-TR/full_description.txt +++ b/fastlane/metadata/android/tr-TR/full_description.txt @@ -2,7 +2,7 @@ Fitness tutkunlarından fitness severlere - Egzersiz Yöneticiniz WGER ile sağl 1 numaralı fitness uygulamanızı zaten buldunuz mu ve kendi spor rutinlerinizi oluşturmayı seviyor musunuz? Ne tür bir sportif canavar olursanız olun - hepimizin ortak bir yanı var: Sağlık verilerimizi takip etmeyi seviyoruz <3 -Bu nedenle, fitness yolculuğunuzu kullanışlı küçük egzersiz kayıt defterinizle hala yönettiğiniz için sizi yargılamıyoruz, ancak 2024'e hoş geldiniz! +Bu nedenle, fitness yolculuğunuzu kullanışlı küçük egzersiz kayıt defterinizle hala yönettiğiniz için sizi yargılamıyoruz, ancak 2025'e hoş geldiniz! Sizin için hayatınızı kolaylaştırmak için en alakalı özelliklere göre boyutlandırılmış %100 ücretsiz bir dijital sağlık ve fitness takip uygulaması geliştirdik. Başlayın, antrenmana devam edin ve ilerlemenizi kutlayın! 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 426051d7..e0ac786b 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 804472c2..93687303 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 a67725ba..7f6a551f 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 3c484cba..8b62755e 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 b50b077b..f46e87a5 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 75a3649b..7922288b 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/01 - dashboard.png index 40b0c411..25f6bc98 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/02 - workout detail.png index 87873dcd..fd38e958 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/03 - gym mode.png index 602df33d..0a150ca4 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/04 - measurements.png index 654b6124..1d688d9b 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/05 - nutritional plan.png index 15842339..a3235750 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/06 - weight.png index 0db7c130..117dd865 100644 Binary files a/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/tr-TR/images/sevenInchScreenshots/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 71f73ade..4cc651a9 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 355b4661..9959ccb8 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 b4edf297..e539343b 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 3dd47075..5e74455e 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 3478fc3a..9f83a1f3 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 33e5ce73..b968b3f5 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/full_description.txt b/fastlane/metadata/android/uk/full_description.txt index b5244965..ecca238d 100644 --- a/fastlane/metadata/android/uk/full_description.txt +++ b/fastlane/metadata/android/uk/full_description.txt @@ -2,7 +2,7 @@ Ви вже знайшли свій фітнес-застосунок №1 і любите створювати свої власні спортивні програми? Неважливо, який ви спортивний звір - у всіх нас є щось спільне: ми любимо стежити за даними про своє здоров'я <3 -Тому ми не засуджуємо вас за те, що ви все ще ведете свій фітнес-шлях за допомогою зручного маленького журналу тренувань, але ласкаво просимо у 2024 рік! +Тому ми не засуджуємо вас за те, що ви все ще ведете свій фітнес-шлях за допомогою зручного маленького журналу тренувань, але ласкаво просимо у 2025 рік! Ми розробили для вас 100% безплатний цифровий застосунок для відстеження стану здоров'я та фітнесу, скоротивши його до найнеобхідніших функцій, щоб полегшити вам життя. Почніть, продовжуйте тренуватися і відзначайте свій спортивний поступ! diff --git a/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/uk/images/phoneScreenshots/01 - dashboard.png index 95de5cc2..d890a911 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 40b8ee1c..f76fa96c 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 b61db959..1361b510 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 d5938c1c..b9b4092f 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 e1b9933c..939fc93e 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 c3a80414..defce40c 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/01 - dashboard.png index 34ed93bf..bd0403bd 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/02 - workout detail.png index d6e099ec..7faf5e2d 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/03 - gym mode.png index 969bc659..0484fbb2 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/04 - measurements.png index b9ae2cd8..9b701a55 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/05 - nutritional plan.png index 61ecc0bf..a8d782ef 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/uk/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/uk/images/sevenInchScreenshots/06 - weight.png index ea8af0fe..11ba5504 100644 Binary files a/fastlane/metadata/android/uk/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/uk/images/sevenInchScreenshots/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 f17b2416..9271eaa8 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 1e98fd5b..244f29b1 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 f642a734..f13e11a4 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 2a519ada..92f46bb0 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 e1fb20c4..fce72fdd 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 a415d3e7..26cb4793 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/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt index caaad1bf..e12216c1 100644 --- a/fastlane/metadata/android/zh-CN/full_description.txt +++ b/fastlane/metadata/android/zh-CN/full_description.txt @@ -2,7 +2,7 @@ 你是否已经找到了排名第一的健身应用程序,并且喜欢创建自己的运动习惯? 无论你是哪种运动野兽——我们都有一个共同点:我们喜欢跟踪我们的健康数据 -因此,我们不会因为你仍然使用小笔记本来管理你的健身旅程而评判你,但欢迎来到 2024 年! +因此,我们不会因为你仍然使用小笔记本来管理你的健身旅程而评判你,但欢迎来到 2025 年! 我们为你开发了 100% 免费的数字健康和健身追踪器应用程序,压缩到最相关的功能,让你的生活更轻松。开始吧,继续训练并庆祝你的进步! 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 9b128ae8..eb115a18 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 7fd543d1..72a9b75f 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 d2a53911..19d75a83 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 34cff206..bd21ea45 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 d466a14f..5ef6afe2 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 e70ad92f..58e8a3f8 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/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/01 - dashboard.png index c37f68aa..b3d17505 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/01 - dashboard.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/02 - workout detail.png index ccaa8461..fe112a70 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/02 - workout detail.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/03 - gym mode.png index 0c3f9121..7d59de74 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/03 - gym mode.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/04 - measurements.png index 09246dcd..838436c9 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/04 - measurements.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/05 - nutritional plan.png index abf93842..9b2eb7f5 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/05 - nutritional plan.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/06 - weight.png index e3c46bb2..c4e17457 100644 Binary files a/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/06 - weight.png and b/fastlane/metadata/android/zh-CN/images/sevenInchScreenshots/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 54f98562..7bab9d07 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 fbe804a3..ad2a5718 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 06368812..2bbed93a 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 2c7edec4..0568cf18 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 b4f7894f..38887364 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 1f135a32..56f91e0f 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/metadata/android/zh-TW/full_description.txt b/fastlane/metadata/android/zh-TW/full_description.txt index 66013f08..bdef0f15 100644 --- a/fastlane/metadata/android/zh-TW/full_description.txt +++ b/fastlane/metadata/android/zh-TW/full_description.txt @@ -1,39 +1,39 @@ 每一個健身愛好者 - 與您的健身教練 WGER 一起,讓你更健康! -你是否已經找到了排名第一的健身應用程序,並且喜歡創建自己的運動習慣? 無論你是哪種運動野獸——我們都有一個共同點:我們喜歡追蹤我們的健康數據 +你是否已經找到了排名第一的健身應用程式,並且喜歡建立自己的運動習慣? 無論你是哪種運動野獸——我們都有一個共同點:我們喜歡追蹤我們的健康資料 -因此,我們不會因為你仍然使用小筆記本來管理你的健身旅程而批評你,但歡迎來到 2024 年! +因此,我們不會因為你仍然使用小筆記本來管理你的健身旅程而批評你,但歡迎來到 2025 年! -我們為你開發了 100% 免費的數位健康和健身追蹤器應用程序,壓縮到最相關的功能,讓你的生活更輕鬆。開始吧,繼續訓練並慶祝你的進步! +我們為你開發了 100% 免費的數位健康和健身追蹤器應用程式,壓縮到最相關的功能,讓你的生活更輕鬆。開始吧,繼續訓練並慶祝你的進步! -wger 是一個開源項目,關於: +wger 是一個開源專案,關於: * 你的身體 * 你的鍛煉 * 你的進展 -* 你的數據 +* 你的資料 你的身體: -無需在谷歌上搜尋你最喜歡的食物的成分——從 78000 多種產品中選擇你的日常膳食並查看營養價值。將餐點加入營養計劃中,並在日曆中概述你的飲食。 +無需在谷歌上搜尋你最喜歡的食物的成分——從 78000 多種產品中選擇你的日常膳食並檢視營養價值。將餐點加入營養計劃中,並在日曆中概述你的飲食。 你的鍛鍊: -你知道什麼對你的身體最好。從 200 種不同的練習中選擇越來越多的練習來創建你自己的鍛鍊。然後,使用健身房模式引導你完成訓練,同時一鍵記錄你的體重。 +你知道什麼對你的身體最好。從 200 種不同的練習中選擇越來越多的練習來建立你自己的鍛鍊。然後,使用健身房模式引導你完成訓練,同時一鍵記錄你的體重。 你的進展: -永遠不要忘記你的目標。追蹤你的體重並保留你的統計數據。 +永遠不要忘記你的目標。追蹤你的體重並保留你的統計資料。 -你的數據: -wger 是你的個人化健身日記——但你擁有自己的數據。使用 REST API 來存取它並用它做驚人的事情。 +你的資料: +wger 是你的個人化健身日記——但你擁有自己的資料。使用 REST API 來存取它並用它做驚人的事情。 -請注意:這個免費的應用程式不是基於額外的資金,我們不要求你捐款。不僅如此,它還是一個不斷發展的社區計畫。因此,請隨時為新功能做好準備! +請注意:這個免費的應用程式不是基於額外的資金,我們不要求你捐款。不僅如此,它還是一個不斷發展的社群計畫。因此,請隨時為新功能做好準備! #OpenSource – 這是什麼意思? 開源意味著這個應用程式的整個原始碼和它與之通訊的伺服器都是免費的,任何人都可以使用: -* 你想在自己的伺服器上為你還是為你當地的健身房運行 wger?都可以! +* 你想在自己的伺服器上為你還是為你當地的健身房執行 wger?都可以! * 你是否錯過了某個功能並想要實現它?現在開始! -* 你想檢查任何地方都沒有發送任何東西嗎?你可以! +* 你想檢查任何地方都沒有傳送任何東西嗎?你可以! -加入我們的社區,成為來自世界各地的體育愛好者和 IT 極客的一份子。我們一直致力於調整和優化根據我們的需求量身定制的應用程式。我們喜歡你的意見,因此請隨時加入並貢獻你的願望和想法! +加入我們的社群,成為來自世界各地的體育愛好者和 IT 極客的一份子。我們一直致力於調整和最佳化根據我們的需求量身定製的應用程式。我們喜歡你的意見,因此請隨時加入並貢獻你的願望和想法! -> 在 https://github.com/wger-project 上找到原始碼 -> 在我們的 Discord 伺服器上提問或打個招呼 https://discord.gg/rPWFv6W diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/01 - dashboard.png new file mode 100644 index 00000000..520bbe0b Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/02 - workout detail.png new file mode 100644 index 00000000..72a9b75f Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/03 - gym mode.png new file mode 100644 index 00000000..19d75a83 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/04 - measurements.png new file mode 100644 index 00000000..bd21ea45 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..84ce8c1a Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-TW/images/phoneScreenshots/06 - weight.png b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/06 - weight.png new file mode 100644 index 00000000..58e8a3f8 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/phoneScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..f60586b6 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..fe112a70 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..7d59de74 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..838436c9 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..17a62111 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/06 - weight.png b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..c4e17457 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/sevenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/01 - dashboard.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/01 - dashboard.png new file mode 100644 index 00000000..729a65cf Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/01 - dashboard.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/02 - workout detail.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/02 - workout detail.png new file mode 100644 index 00000000..ad2a5718 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/02 - workout detail.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/03 - gym mode.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/03 - gym mode.png new file mode 100644 index 00000000..2bbed93a Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/03 - gym mode.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/04 - measurements.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/04 - measurements.png new file mode 100644 index 00000000..0568cf18 Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/04 - measurements.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/05 - nutritional plan.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/05 - nutritional plan.png new file mode 100644 index 00000000..160b798f Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/05 - nutritional plan.png differ diff --git a/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/06 - weight.png b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/06 - weight.png new file mode 100644 index 00000000..56f91e0f Binary files /dev/null and b/fastlane/metadata/android/zh-TW/images/tenInchScreenshots/06 - weight.png differ diff --git a/fastlane/metadata/android/zh-TW/title.txt b/fastlane/metadata/android/zh-TW/title.txt index ea0df956..d35e4087 100644 --- a/fastlane/metadata/android/zh-TW/title.txt +++ b/fastlane/metadata/android/zh-TW/title.txt @@ -1 +1 @@ -wger Workout Manager \ No newline at end of file +wger Workout Manager diff --git a/fastlane/metadata/envfiles/decrypt_secrets.sh b/fastlane/metadata/envfiles/decrypt_secrets.sh index e44097a1..0d1c7983 100755 --- a/fastlane/metadata/envfiles/decrypt_secrets.sh +++ b/fastlane/metadata/envfiles/decrypt_secrets.sh @@ -6,14 +6,20 @@ # To encrypt a new version of the keys: # gpg -c filename.json -echo "decrypting playstore API keys" -gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPTKEY_PLAYSTORE" \ ---output ./playstore.json playstore.json.gpg +if [ -n "$DECRYPTKEY_PLAYSTORE" ]; then + echo "decrypting playstore API keys" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPTKEY_PLAYSTORE" \ + --output ./playstore.json playstore.json.gpg +fi -echo "decrypting key.properties" -gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPTKEY_PROPERTIES" \ ---output ./key.properties key.properties.gpg +if [ -n "$DECRYPTKEY_PROPERTIES" ]; then + echo "decrypting key.properties" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPTKEY_PROPERTIES" \ + --output ./key.properties key.properties.gpg +fi -echo "decrypting playstore signing keys" -gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPTKEY_PLAYSTORE_SIGNING_KEY" \ ---output ./keys.jks keys.jks.gpg \ No newline at end of file +if [ -n "$DECRYPTKEY_PLAYSTORE_SIGNING_KEY" ]; then + echo "decrypting playstore signing keys" + gpg --quiet --batch --yes --decrypt --passphrase="$DECRYPTKEY_PLAYSTORE_SIGNING_KEY" \ + --output ./keys.jks keys.jks.gpg +fi \ No newline at end of file diff --git a/fastlane/report.xml b/fastlane/report.xml index 31b38440..fa0dbf67 100644 --- a/fastlane/report.xml +++ b/fastlane/report.xml @@ -1,18 +1,16 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/flatpak/app-icon-grid.svg b/flatpak/app-icon-grid.svg new file mode 100644 index 00000000..33451bd1 --- /dev/null +++ b/flatpak/app-icon-grid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/flatpak/bump-flatpak-version.py b/flatpak/bump-flatpak-version.py new file mode 100644 index 00000000..60a96f5c --- /dev/null +++ b/flatpak/bump-flatpak-version.py @@ -0,0 +1,135 @@ +# This file is part of wger Workout Manager. +# +# wger Workout Manager is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# wger Workout Manager is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License + +# /// script +# requires-python = ">=3.13" +# dependencies = [ +# "requests == 2.31.0", +# "markdown == 3.5.1", +# ] +# /// + + +""" +Updates the Flatpak metainfo.xml file with the given version. + +Usage: + uv run bump-flatpak-version.py x.y.z +""" + +import sys +import xml.etree.ElementTree as ET +from datetime import datetime +from typing import Tuple + +import markdown +import requests + +REPO = "wger-project/flutter" + + +def get_github_release_info(repo: str, version: str) -> Tuple[str, str]: + """ + Fetches the release description and published_at date from GitHub for the given repository + and version. The description is converted fro markdown and returned as HTML. + """ + + print('Fetching release information from GitHub...') + url = f'https://api.github.com/repos/{repo}/releases/tags/{version}' + response = requests.get(url) + response.raise_for_status() + data = response.json() + html_desc = markdown.markdown(data.get('body', '')) + + # Get the published_at date, formatted as YYYY-MM-DD, we don't need the time part + published_at = data.get('published_at', '')[:10] + return html_desc, published_at + + +def add_release_to_metainfo( + repo: str, + xml_filename: str, + version: str, + date: str | None = None, + description: str | None = None +) -> None: + """ + Adds a element with the specified version and date to the + section in the given metainfo.xml file. + + If a description is provided, it will be added as a child element of the + element. + """ + print(f'Adding release to {xml_filename}...') + + if date is None: + date = datetime.now().strftime('%Y-%m-%d') + + if description is None: + description = '

Bug fixes and improvements.

' + + tree = ET.parse(xml_filename) + root = tree.getroot() + releases = root.find('releases') + new_release = ET.Element('release', {'version': version, 'date': date}) + if description: + desc_elem = ET.SubElement(new_release, 'description') + + # Needed to add HTML content directly, otherwise it will be escaped + fragment = ET.fromstring(f'{description}') + for child in fragment: + desc_elem.append(child) + + url_elem = ET.SubElement(new_release, 'url') + url_elem.text = f'https://github.com/{repo}/releases/tag/{version}' + + releases.insert(0, new_release) + ET.indent(tree, space=" ", level=0) + tree.write(xml_filename, encoding="utf-8", xml_declaration=True) + + +if __name__ == '__main__': + if len(sys.argv) != 2: + print('Usage: python bump-flatpak-version.py ') + sys.exit(1) + + version = sys.argv[1] + + print(f'Processing version {version}...') + + # Note: it seems it's currently not possible to update existing releases on + # GitHub with softprops/action-gh-release. + # + # Once that's fixed, we can update the workflows to first create the + # release and its changelog, and in a later step only update the artifacts. + # We can then simply fetch the description and update the metainfo.xml file. + # + # See + # * https://github.com/softprops/action-gh-release/issues/616 + # * https://github.com/softprops/action-gh-release/issues/445 + + # description, published_at = get_github_release_info( + # REPO, + # version + # ) + + add_release_to_metainfo( + repo=REPO, + xml_filename='de.wger.flutter.metainfo.xml', + version=version, + date=None, # published_at, + description=None # description + ) + + print(f'Finished!') diff --git a/flatpak/de.wger.flutter.metainfo.xml b/flatpak/de.wger.flutter.metainfo.xml index 20ef36fe..c7417dc8 100755 --- a/flatpak/de.wger.flutter.metainfo.xml +++ b/flatpak/de.wger.flutter.metainfo.xml @@ -1,9 +1,32 @@ - + de.wger.flutter wger - Fitness/workout, nutrition and weight tracker - + Fitness and nutrition tracker + +

wger is a free and open-source fitness application designed to help you achieve your + fitness goals. +

+

Workout Management

+
    +
  • Create and customize workout routines tailored to your fitness level and + goals +
  • +
  • Track your progress with detailed exercise logs
  • +
  • Access a vast library of exercises
  • +
+

Nutrition Tracking

+
    +
  • Log your food intake using the Open Food Facts database
  • +
  • Calculate your calorie intake and macronutrient breakdown
  • +
  • Set personalized dietary goals and track your progress
  • +
+

Body Measurement Tracking

+
    +
  • Monitor your body weight, body fat percentage, and other measurements
  • +
  • Visualize your progress with charts and graphs
  • +
+
CC0-1.0 AGPL-3.0-or-later @@ -13,80 +36,15 @@ wger https://wger.de/ + https://fosstodon.org/@wger https://github.com/wger-project/flutter/issues https://buymeacoffee.com/wger - - -

- From fitness lovers to fitness lovers – get your health organized with WGER, - your Workout Manager! -

-

- Have you already found your #1 fitness app and do you love to create your own sports - routines? No matter what type of sporty beast you are – we all have something in common: - We love to keep track of our health data <3 -

-

- So we don’t judge you for still managing your fitness journey with your handy little - workout log book but welcome to 2021! -

-

- We have developed a 100% free digital health and fitness tracker app for you, sized down - to the most relevant features to make your life easier. Get started, keep training and - celebrate your progress! -

-

wger is an Open Source project and all about:

-
    -
  • - Your body: - No need to google for the ingredients of your favourite treats – choose your daily - meals from more than 78000 products and see the nutritional values. Add meals to the - nutritional plan and keep an overview of your diet in the calendar. -
  • -
  • - Your workouts: - You know what is best for your body. Create your own workouts out of a growing - variety from 200 different exercises. Then, use the Gym Mode to guide you through - the training while you log your weights with one tap. -
  • -
  • - Your progress: - Never lose sight of your goals. Track your weight and keep your statistics. -
  • -
  • - Your data: - wger is your personalized fitness diary – but you own your data. Use the REST API to - access and do amazing things with it. -
  • -
-

Please note: This free app is not based on additional fundings and we don’t ask you to - donate money. More than that it is a community project which is growing constantly. So - be prepared for new features anytime! -

-

- OpenSource – what does that mean? - Open Source means that the whole source code for this app and the server it talks to is - free and available to anybody: -

-
    -
  • Do you want to run wger on your own server for you or your local gym? Go ahead!
  • -
  • Do you miss a feature and want to implement it? Start now!
  • -
  • Do you want to check that nothing is being sent anywhere? You can!
  • -
-

Join our community and become a part of sport enthusiasts and IT geeks from all over the - world. We keep working on adjusting and optimizing the app customized to our needs. We - love your input so feel free to jump in anytime and contribute your wishes and ideas! -

-
    -
  • find the source code on https://github.com/wger-project -
  • -
  • - ask your questions or just say hello on our discord Server - https://discord.gg/rPWFv6W -
  • -
-
- + https://github.com/wger-project/flutter + https://hosted.weblate.org/engage/wger/ + + #a2aedd + #687bd9 + wger's dashboard @@ -119,12 +77,27 @@ - + + +

Bug fixes and improvements.

+
+ https://github.com/wger-project/flutter/releases/tag/1.9.0 +
+ + +

Bug fixes and improvements.

+
+ https://github.com/wger-project/flutter/releases/tag/1.8.4 +
+ + +

Bug fixes and improvements.

+
+ https://github.com/wger-project/flutter/releases/tag/1.8.3 +
- - de.wger.flutter.desktop -
+ \ No newline at end of file diff --git a/flatpak/flatpak_meta.json b/flatpak/flatpak_meta.json index 253cf82e..f3c1a6a3 100644 --- a/flatpak/flatpak_meta.json +++ b/flatpak/flatpak_meta.json @@ -1,23 +1,23 @@ { - "appId": "de.wger.flutter", - "lowercaseAppName": "wger", - "githubReleaseOrganization": "wger-project", - "githubReleaseProject": "flutter", - "localLinuxBuildDir": "../build/linux", - "appStreamPath": "de.wger.flutter.metainfo.xml", - "desktopPath": "de.wger.flutter.desktop", - "icons": { - "64x64": "logo64.png", - "128x126": "logo128.png", - "512x512": "logo512.png" - }, - "freedesktopRuntime": "22.08", - "finishArgs": [ - "--share=ipc", - "--share=network", - "--socket=fallback-x11", - "--socket=wayland", - "--socket=pulseaudio", - "--device=dri" - ] + "appId": "de.wger.flutter", + "lowercaseAppName": "wger", + "githubReleaseOrganization": "wger-project", + "githubReleaseProject": "flutter", + "localLinuxBuildDir": "../build/linux", + "appStreamPath": "de.wger.flutter.metainfo.xml", + "desktopPath": "de.wger.flutter.desktop", + "icons": { + "64x64": "logo64.png", + "128x126": "logo128.png", + "512x512": "logo512.png" + }, + "freedesktopRuntime": "24.08", + "finishArgs": [ + "--share=ipc", + "--share=network", + "--socket=fallback-x11", + "--socket=wayland", + "--socket=pulseaudio", + "--device=dri" + ] } \ No newline at end of file diff --git a/flatpak/logo128.png b/flatpak/logo128.png index 98f5c2d5..726d5c09 100644 Binary files a/flatpak/logo128.png and b/flatpak/logo128.png differ diff --git a/flatpak/logo512.png b/flatpak/logo512.png index 7f0d0224..e84a976d 100644 Binary files a/flatpak/logo512.png and b/flatpak/logo512.png differ diff --git a/flatpak/logo64.png b/flatpak/logo64.png index c969d6a9..dba403d8 100644 Binary files a/flatpak/logo64.png and b/flatpak/logo64.png differ diff --git a/flatpak/scripts/README.md b/flatpak/scripts/README.md deleted file mode 100644 index 8d387451..00000000 --- a/flatpak/scripts/README.md +++ /dev/null @@ -1,29 +0,0 @@ -# Prerequisites -## Setting up the flathub_meta.json file -The dart scripts here require a metadata file as input. This file is already prepared for this repository — see ../flatpak_meta.json. - -## Publishing on Flathub -If uploading to Flathub for the first time, follow the official contributing guidelines: https://github.com/flathub/flathub/blob/master/CONTRIBUTING.md . - -# Local builds - -To run a local build: - -1. Build the Linux release using Flutter. -2. Add the new release version and date to the start of the "releases" list in the "spec.json" file (and adjust other parameters in the file if needed). -3. Run "dart flatpak_packager.dart --meta ../flatpak_meta.json -n pubspec.yaml" in this folder. -4. Run "dart manifest_generator.dart --meta ../flatpak_meta.json -n pubspec.yaml" in this folder. -5. Test the Flatpak using the guide at https://docs.flatpak.org/en/latest/first-build.html, using the generated json manifest as your Flatpak manifest. - -# Builds based on data fetched from Github - -To generate and publish a release on Github: - -1. Create a new release on Github using the app's version name for the tag (e.g. "1.0.0"), without any assets for now. -2. Build the Linux release using Flutter. -3. Run "dart flatpak_packager.dart --meta ../flatpak_meta.json --github -n pubspec.yaml" in this folder. -4. Upload the generated tar.gz file as a Github release. -5. Run "dart manifest_generator.dart --meta ../flatpak_meta.json --github -n pubspec.yaml" in this folder. -6. Upload your Flathub manifest file to your Flathub Github repo, overwriting any old manifest file you may have there. If you're building for only certain architectures and the "flathub.json" file is not in your Flathub Github repo yet, upload that too. - -All of this can be automated via Github Actions. \ No newline at end of file diff --git a/flatpak/scripts/flatpak_packager.dart b/flatpak/scripts/flatpak_packager.dart deleted file mode 100644 index 92cf2768..00000000 --- a/flatpak/scripts/flatpak_packager.dart +++ /dev/null @@ -1,167 +0,0 @@ -// ignore_for_file: avoid_print - -import 'dart:io'; -import 'flatpak_shared.dart'; - -/// Creates an archive containing all the sources for the Flatpak package for a -/// specific architecture. -/// -/// arguments: -/// --meta [file] -/// Required argument for providing the metadata file for this script. - -/// --github -/// Use this option to pull release info from Github rather than the metadata file. - -/// --addTodaysVersion [version] -/// If pulling data from Github, this provides a way to specify the release to be released today. - -void main(List arguments) async { - if (!Platform.isLinux) { - throw Exception('Must be run under Linux'); - } - - // PARSE ARGUMENTS - final metaIndex = arguments.indexOf('--meta'); - if (metaIndex == -1) { - throw Exception( - '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.'); - } - - final metaFile = File(arguments[metaIndex + 1]); - if (!(await metaFile.exists())) { - throw Exception('The provided metadata file does not exist.'); - } - - final fetchFromGithub = arguments.contains('--github'); - - final addTodaysVersionIndex = arguments.indexOf('--addTodaysVersion'); - if (addTodaysVersionIndex != -1 && arguments.length == addTodaysVersionIndex + 1) { - throw Exception('The --addTodaysVersion flag must be followed by the version name.'); - } - - final addedTodaysVersion = - addTodaysVersionIndex != -1 ? arguments[addTodaysVersionIndex + 1] : null; - - // GENERATE PACKAGE - - final meta = FlatpakMeta.fromJson(metaFile, skipLocalReleases: fetchFromGithub); - - final outputDir = Directory('${Directory.current.path}/flatpak_generator_exports'); - await outputDir.create(); - - final packageGenerator = PackageGenerator( - inputDir: metaFile.parent, meta: meta, addedTodaysVersion: addedTodaysVersion); - - await packageGenerator.generatePackage( - outputDir, - await PackageGenerator.runningOnARM() ? CPUArchitecture.aarch64 : CPUArchitecture.x86_64, - fetchFromGithub); -} - -class PackageGenerator { - final Directory inputDir; - final FlatpakMeta meta; - final String? addedTodaysVersion; - - PackageGenerator({required this.inputDir, required this.meta, required this.addedTodaysVersion}); - - Future generatePackage( - Directory outputDir, CPUArchitecture arch, bool fetchReleasesFromGithub) async { - final tempDir = await outputDir.createTemp('flutter_generator_temp'); - final appId = meta.appId; - - // desktop file - final desktopFile = File('${inputDir.path}/${meta.desktopPath}'); - - if (!(await desktopFile.exists())) { - throw Exception( - 'The desktop file does not exist under the specified path: ${desktopFile.path}'); - } - - await desktopFile.copy('${tempDir.path}/$appId.desktop'); - - // icons - final iconTempDir = Directory('${tempDir.path}/icons'); - - for (final icon in meta.icons) { - final iconFile = File('${inputDir.path}/${icon.path}'); - if (!(await iconFile.exists())) { - throw Exception('The icon file ${iconFile.path} does not exist.'); - } - final iconSubdir = Directory('${iconTempDir.path}/${icon.type}'); - await iconSubdir.create(recursive: true); - await iconFile.copy('${iconSubdir.path}/${icon.getFilename(appId)}'); - } - - // AppStream metainfo file - final origAppStreamFile = File('${inputDir.path}/${meta.appStreamPath}'); - if (!(await origAppStreamFile.exists())) { - throw Exception( - 'The app data file does not exist under the specified path: ${origAppStreamFile.path}'); - } - - final editedAppStreamContent = AppStreamModifier.replaceVersions( - await origAppStreamFile.readAsString(), - await meta.getReleases(fetchReleasesFromGithub, addedTodaysVersion)); - - final editedAppStreamFile = File('${tempDir.path}/$appId.metainfo.xml'); - await editedAppStreamFile.writeAsString(editedAppStreamContent); - - // build files - final bundlePath = - '${inputDir.path}/${meta.localLinuxBuildDir}/${arch.flutterDirName}/release/bundle'; - final buildDir = Directory(bundlePath); - if (!(await buildDir.exists())) { - throw Exception( - 'The linux build directory does not exist under the specified path: ${buildDir.path}'); - } - final destDir = Directory('${tempDir.path}/bin'); - await destDir.create(); - - final baseFilename = '${meta.lowercaseAppName}-linux-${arch.flatpakArchCode}'; - final packagePath = '${outputDir.absolute.path}/$baseFilename.tar.gz'; - final shaPath = '${outputDir.absolute.path}/$baseFilename.sha256'; - - await Process.run('cp', ['-r', '${buildDir.absolute.path}/.', destDir.absolute.path]); - await Process.run('tar', ['-czvf', packagePath, '.'], workingDirectory: tempDir.absolute.path); - - print('Generated $packagePath'); - - final preShasum = await Process.run('shasum', ['-a', '256', packagePath]); - final shasum = preShasum.stdout.toString().split(' ').first; - - await File(shaPath).writeAsString(shasum); - - print('Generated $shaPath'); - - await tempDir.delete(recursive: true); - } - - static Future runningOnARM() async { - final unameRes = await Process.run('uname', ['-m']); - final unameString = unameRes.stdout.toString().trimLeft(); - return unameString.startsWith('arm') || unameString.startsWith('aarch'); - } -} - -// updates releases in ${appName}.metainfo.xml -class AppStreamModifier { - static String replaceVersions(String origAppStreamContent, List versions) { - final joinedReleases = - versions.map((v) => '\t\t').join('\n'); - final releasesSection = '\n$joinedReleases\n\t'; //TODO check this - if (origAppStreamContent.contains('') - .replaceFirst(RegExp(''), releasesSection) - .replaceAll('<~>', '\n'); - } else { - return origAppStreamContent.replaceFirst( - '', '\n\t$releasesSection\n'); - } - } -} diff --git a/flatpak/scripts/flatpak_shared.dart b/flatpak/scripts/flatpak_shared.dart deleted file mode 100644 index 75ce96cf..00000000 --- a/flatpak/scripts/flatpak_shared.dart +++ /dev/null @@ -1,318 +0,0 @@ -import 'dart:convert'; -import 'dart:io'; - -import 'package:http/http.dart' as http; - -/// Shared files for the two Flatpak-related scripts. - -class Release { - final String version; - final String date; //TODO add resources - - Release({required this.version, required this.date}); -} - -enum CPUArchitecture { - x86_64('x86_64', 'x64'), - aarch64('aarch64', 'arm64'); - - final String flatpakArchCode; - final String flutterDirName; - const CPUArchitecture(this.flatpakArchCode, this.flutterDirName); -} - -class ReleaseAsset { - final CPUArchitecture arch; - final String tarballUrlOrPath; - final bool isRelativeLocalPath; - final String tarballSha256; - - ReleaseAsset( - {required this.arch, - required this.tarballUrlOrPath, - required this.isRelativeLocalPath, - required this.tarballSha256}); -} - -class Icon { - static const _symbolicType = 'symbolic'; - final String type; - final String path; - late final String _fileExtension; - - Icon({required this.type, required this.path}) { - _fileExtension = path.split('.').last; - } - - String getFilename(String appId) => - (type == _symbolicType) ? '$appId-symbolic.$_fileExtension' : '$appId.$_fileExtension'; -} - -class GithubReleases { - final String githubReleaseOrganization; - final String githubReleaseProject; - List? _releases; - List? _latestReleaseAssets; - - GithubReleases(this.githubReleaseOrganization, this.githubReleaseProject); - - Future> getReleases(bool canBeEmpty) async { - if (_releases == null) { - await _fetchReleasesAndAssets(canBeEmpty); - } - return _releases!; - } - - Future?> getLatestReleaseAssets() async { - if (_releases == null) { - await _fetchReleasesAndAssets(false); - } - return _latestReleaseAssets; - } - - Future _fetchReleasesAndAssets(bool canBeEmpty) async { - final releaseJsonContent = (await http.get(Uri( - scheme: 'https', - host: 'api.github.com', - path: '/repos/$githubReleaseOrganization/$githubReleaseProject/releases'))) - .body; - final decodedJson = jsonDecode(releaseJsonContent) as List; - - DateTime? latestReleaseAssetDate; - - final releases = List.empty(growable: true); - - 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; - - if (latestReleaseAssetDate == null || - (latestReleaseAssetDate?.compareTo(releaseDateAndTime) == -1)) { - 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)); - }); - - if (releases.isNotEmpty || canBeEmpty) { - _releases = releases; - } else { - throw Exception('Github must contain at least 1 release.'); - } - } - - Future?> _parseGithubReleaseAssets(List assetMaps) async { - String? x64TarballUrl; - String? x64Sha; - String? aarch64TarballUrl; - String? aarch64Sha; - for (final am in assetMaps) { - final amMap = am as Map; - - 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 arch = filenameWithoutExtension.endsWith('aarch64') - ? CPUArchitecture.aarch64 - : CPUArchitecture.x86_64; - - switch (fileExtension) { - case 'sha256': - if (arch == CPUArchitecture.aarch64) { - aarch64Sha = await _readSha(downloadUrl); - } else { - x64Sha = await _readSha(downloadUrl); - } - break; - case 'tar': - case 'tar.gz': - case 'tgz': - case 'tar.xz': - case 'txz': - case 'tar.bz2': - case 'tbz2': - case 'zip': - case '7z': - if (arch == CPUArchitecture.aarch64) { - aarch64TarballUrl = downloadUrl; - } else { - x64TarballUrl = downloadUrl; - } - break; - default: - break; - } - } - final res = List.empty(growable: true); - if (x64TarballUrl != null && x64Sha != null) { - res.add(ReleaseAsset( - arch: CPUArchitecture.x86_64, - tarballUrlOrPath: x64TarballUrl, - isRelativeLocalPath: false, - tarballSha256: x64Sha)); - } - if (aarch64TarballUrl != null && aarch64Sha != null) { - res.add(ReleaseAsset( - arch: CPUArchitecture.aarch64, - tarballUrlOrPath: aarch64TarballUrl, - isRelativeLocalPath: false, - tarballSha256: aarch64Sha)); - } - return res.isEmpty ? null : res; - } - - Future _readSha(String shaUrl) async => - (await http.get(Uri.parse(shaUrl))).body.split(' ').first; -} - -class FlatpakMeta { - final String appId; - final String lowercaseAppName; - final String appStreamPath; - final String desktopPath; - final List icons; - - // Flatpak manifest releated properties - final String freedesktopRuntime; - final List? buildCommandsAfterUnpack; - final List? extraModules; - final List finishArgs; - - // Properties relevant only for local releases - final List? _localReleases; - final List? _localReleaseAssets; - final String localLinuxBuildDir; - - // Properties relevant only for releases fetched from Github - final String? githubReleaseOrganization; - final String? githubReleaseProject; - late final GithubReleases? _githubReleases; - - FlatpakMeta( - {required this.appId, - required this.lowercaseAppName, - required this.githubReleaseOrganization, - required this.githubReleaseProject, - required List? localReleases, - required List? localReleaseAssets, - required this.localLinuxBuildDir, - required this.appStreamPath, - required this.desktopPath, - required this.icons, - required this.freedesktopRuntime, - required this.buildCommandsAfterUnpack, - required this.extraModules, - required this.finishArgs}) - : _localReleases = localReleases, - _localReleaseAssets = localReleaseAssets { - if (githubReleaseOrganization != null && githubReleaseProject != null) { - _githubReleases = GithubReleases(githubReleaseOrganization!, githubReleaseProject!); - } - } - - Future> getReleases( - bool fetchReleasesFromGithub, String? addedTodaysVersion) async { - final releases = List.empty(growable: true); - if (addedTodaysVersion != null) { - releases.add(Release( - 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)); - } else { - if (_localReleases == null && addedTodaysVersion == null) { - throw Exception('Metadata must include releases if not fetching releases from Github.'); - } - if (_localReleases?.isNotEmpty ?? false) { - releases.addAll(_localReleases!); - } - } - return releases; - } - - Future?> getLatestReleaseAssets(bool fetchReleasesFromGithub) async { - if (fetchReleasesFromGithub) { - if (_githubReleases == null) { - throw Exception( - 'Metadata must include Github repository info if fetching releases from Github.'); - } - return _githubReleases!.getLatestReleaseAssets(); - } else { - if (_localReleases == null) { - throw Exception('Metadata must include releases if not fetching releases from Github.'); - } - return _localReleaseAssets; - } - } - - static FlatpakMeta fromJson(File jsonFile, {bool skipLocalReleases = false}) { - try { - final dynamic json = jsonDecode(jsonFile.readAsStringSync()); - return FlatpakMeta( - appId: json['appId'] as String, - lowercaseAppName: json['lowercaseAppName'] 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); - }).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) - ? CPUArchitecture.x86_64 - : (archString == CPUArchitecture.aarch64.flatpakArchCode) - ? CPUArchitecture.aarch64 - : null; - if (arch == null) { - 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 tarballPath = tarballFile.absolute.path; - final preShasum = Process.runSync('shasum', ['-a', '256', tarballPath]); - final shasum = preShasum.stdout.toString().split(' ').first; - if (preShasum.exitCode != 0) { - throw Exception(preShasum.stderr); - } - return ReleaseAsset( - arch: arch, - tarballUrlOrPath: tarballPath, - isRelativeLocalPath: true, - tarballSha256: shasum); - }).toList(), - localLinuxBuildDir: json['localLinuxBuildDir'] as String, - 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); - }).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()); - } 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 deleted file mode 100644 index 254bb1ae..00000000 --- a/flatpak/scripts/manifest_generator.dart +++ /dev/null @@ -1,167 +0,0 @@ -// ignore_for_file: avoid_print - -import 'dart:convert'; -import 'dart:io'; -import 'flatpak_shared.dart'; - -/// Generates the Flatpak manifest. -/// (Separate from the package generation, as those are generated per each -/// architecture.) -/// -/// arguments: -/// --meta [file] -/// Required argument for providing the metadata file for this script. - -/// --github -/// Use this option to pull release info from Github rather than the metadata file. - -void main(List arguments) async { - if (Platform.isWindows) { - throw Exception('Must be run under a UNIX-like operating system.'); - } - - final metaIndex = arguments.indexOf('--meta'); - if (metaIndex == -1) { - throw Exception( - '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.'); - } - - final metaFile = File(arguments[metaIndex + 1]); - if (!metaFile.existsSync()) { - throw Exception('The provided metadata file does not exist.'); - } - - final fetchFromGithub = arguments.contains('--github'); - - final meta = FlatpakMeta.fromJson(metaFile, skipLocalReleases: fetchFromGithub); - - final outputDir = Directory('${Directory.current.path}/flatpak_generator_exports'); - outputDir.createSync(); - - final manifestGenerator = FlatpakManifestGenerator(meta); - 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); - if (flathubJsonContent != null) { - final flathubJsonPath = '${outputDir.path}/flathub.json'; - final flathubJsonFile = File(flathubJsonPath); - flathubJsonFile.writeAsStringSync(flathubJsonContent); - print('Generated $flathubJsonPath'); - } -} - -// ${appId}.json -class FlatpakManifestGenerator { - final FlatpakMeta meta; - Map? _githubArchSupport; - Map? _localArchSupport; - - FlatpakManifestGenerator(this.meta); - - Future generateFlatpakManifest(bool fetchFromGithub) async { - final appName = meta.lowercaseAppName; - final appId = meta.appId; - final assets = await meta.getLatestReleaseAssets(fetchFromGithub); - - if (assets == null) { - throw Exception('There are no associated assets.'); - } - - _lazyGenerateArchSupportMap(fetchFromGithub, assets); - - const encoder = JsonEncoder.withIndent(' '); - return encoder.convert({ - 'app-id': appId, - 'runtime': 'org.freedesktop.Platform', - 'runtime-version': meta.freedesktopRuntime, - 'sdk': 'org.freedesktop.Sdk', - 'command': appName, - 'separate-locales': false, - 'finish-args': meta.finishArgs, - 'modules': [ - ...meta.extraModules ?? [], - { - 'name': appName, - 'buildsystem': 'simple', - 'build-commands': [ - 'cp -R $appName/bin/ /app/$appName', - 'chmod +x /app/$appName/$appName', - 'mkdir -p /app/bin/', - 'mkdir -p /app/lib/', - 'ln -s /app/$appName/$appName /app/bin/$appName', - ...meta.buildCommandsAfterUnpack ?? [], - ...meta.icons.map((icon) => - 'install -Dm644 $appName/icons/${icon.type}/${icon.getFilename(appId)} /app/share/icons/hicolor/${icon.type}/apps/${icon.getFilename(appId)}'), - 'install -Dm644 $appName/$appId.desktop /app/share/applications/$appId.desktop', - 'install -Dm644 $appName/$appId.metainfo.xml /app/share/metainfo/$appId.metainfo.xml' - ], - 'sources': assets - .map((a) => { - 'type': 'archive', - 'only-arches': [a.arch.flatpakArchCode], - (fetchFromGithub ? 'url' : 'path'): a.tarballUrlOrPath, - 'sha256': a.tarballSha256, - 'dest': meta.lowercaseAppName - }) - .toList() - } - ] - }); - } - - Future generateFlathubJson(bool fetchFromGithub) async { - final assets = await meta.getLatestReleaseAssets(fetchFromGithub); - - if (assets == null) { - throw Exception('There are no associated assets.'); - } - - _lazyGenerateArchSupportMap(fetchFromGithub, assets); - - const encoder = JsonEncoder.withIndent(' '); - - final onlyArchListInput = fetchFromGithub ? _githubArchSupport! : _localArchSupport!; - - final onlyArchList = List.empty(growable: true); - for (final e in onlyArchListInput.entries) { - if (e.value == true) { - onlyArchList.add(e.key.flatpakArchCode); - } - } - - if (onlyArchList.length == CPUArchitecture.values.length) { - return null; - } else { - return encoder.convert({'only-arches': onlyArchList}); - } - } - - void _lazyGenerateArchSupportMap(bool fetchFromGithub, List assets) { - if (fetchFromGithub) { - if (_githubArchSupport == null) { - _githubArchSupport = { - for (final arch in CPUArchitecture.values) arch: false - }; - for (final a in assets) { - _githubArchSupport![a.arch] = true; - } - } - } else { - if (_localArchSupport == null) { - _localArchSupport = { - for (final arch in CPUArchitecture.values) arch: false - }; - for (final a in assets) { - _localArchSupport![a.arch] = true; - } - } - } - } -} diff --git a/flatpak/scripts/pubspec.lock b/flatpak/scripts/pubspec.lock deleted file mode 100644 index 574ba55e..00000000 --- a/flatpak/scripts/pubspec.lock +++ /dev/null @@ -1,85 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - async: - dependency: transitive - description: - name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" - source: hosted - version: "2.11.0" - collection: - dependency: transitive - description: - name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf - url: "https://pub.dev" - source: hosted - version: "1.19.0" - http: - dependency: "direct main" - description: - name: http - sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" - url: "https://pub.dev" - source: hosted - version: "0.13.6" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "40f592dd352890c3b60fec1b68e786cefb9603e05ff303dbc4dda49b304ecdf4" - url: "https://pub.dev" - source: hosted - version: "4.1.0" - meta: - dependency: transitive - description: - name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 - url: "https://pub.dev" - source: hosted - version: "1.15.0" - path: - dependency: transitive - description: - name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" - url: "https://pub.dev" - source: hosted - version: "1.9.0" - source_span: - dependency: transitive - description: - name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" - url: "https://pub.dev" - source: hosted - version: "1.10.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" - source: hosted - version: "1.2.0" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" - source: hosted - version: "1.2.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" - source: hosted - version: "1.3.2" -sdks: - dart: ">=3.4.0 <4.0.0" diff --git a/flatpak/scripts/pubspec.yaml b/flatpak/scripts/pubspec.yaml deleted file mode 100644 index d014b6ec..00000000 --- a/flatpak/scripts/pubspec.yaml +++ /dev/null @@ -1,8 +0,0 @@ -name: flatpak_generator -version: 1.0.0 - -environment: - sdk: '>=2.18.5' - -dependencies: - http: ^0.13.5 \ No newline at end of file diff --git a/integration_test/1_dashboard.dart b/integration_test/1_dashboard.dart index 9c72ea59..7580b828 100644 --- a/integration_test/1_dashboard.dart +++ b/integration_test/1_dashboard.dart @@ -2,52 +2,53 @@ import 'package:flutter/material.dart'; import 'package:mockito/mockito.dart'; import 'package:provider/provider.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; +import 'package:wger/models/workouts/session.dart'; import 'package:wger/providers/body_weight.dart'; import 'package:wger/providers/measurement.dart'; import 'package:wger/providers/nutrition.dart'; +import 'package:wger/providers/routines.dart'; import 'package:wger/providers/user.dart'; -import 'package:wger/providers/workout_plans.dart'; import 'package:wger/screens/dashboard.dart'; import 'package:wger/theme/theme.dart'; import '../test/exercises/contribute_exercise_test.mocks.dart'; import '../test/measurements/measurement_categories_screen_test.mocks.dart'; -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/routine/weight_unit_form_widget_test.mocks.dart'; +import '../test/weight/weight_screen_test.mocks.dart' as weight; 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/profile.dart'; -import '../test_data/workouts.dart'; +import '../test_data/routines.dart'; -Widget createDashboardScreen({locale = 'en'}) { - final mockWorkoutProvider = MockWorkoutPlansProvider(); - when(mockWorkoutProvider.activePlan).thenReturn(getWorkout(exercises: getScreenshotExercises())); +Widget createDashboardScreen({String locale = 'en'}) { + final mockWorkoutProvider = MockRoutinesProvider(); + when(mockWorkoutProvider.items).thenReturn([getTestRoutine(exercises: getScreenshotExercises())]); + when( + mockWorkoutProvider.currentRoutine, + ).thenReturn(getTestRoutine(exercises: getScreenshotExercises())); - final Map logs = { - 'results': [ - { - 'id': 1, - 'workout': 1, - 'date': '2022-12-01', - 'impression': '3', - 'time_start': '17:00', - 'time_end': '19:00', - }, - ], - }; - when(mockWorkoutProvider.fetchSessionData()).thenAnswer((a) => Future.value(logs)); + when(mockWorkoutProvider.fetchSessionData()).thenAnswer( + (a) => Future.value([ + WorkoutSession( + routineId: 1, + date: DateTime.now().add(const Duration(days: -1)), + timeStart: const TimeOfDay(hour: 17, minute: 34), + timeEnd: const TimeOfDay(hour: 19, minute: 3), + impression: 3, + ), + ]), + ); - final mockNutritionProvider = MockNutritionPlansProvider(); + final mockNutritionProvider = weight.MockNutritionPlansProvider(); when( mockNutritionProvider.currentPlan, ).thenAnswer((realInvocation) => getNutritionalPlanScreenshot()); when(mockNutritionProvider.items).thenReturn([getNutritionalPlanScreenshot()]); - final mockWeightProvider = MockBodyWeightProvider(); + final mockWeightProvider = weight.MockBodyWeightProvider(); when(mockWeightProvider.items).thenReturn(getScreenshotWeightEntries()); final mockMeasurementProvider = MockMeasurementProvider(); @@ -58,11 +59,21 @@ Widget createDashboardScreen({locale = 'en'}) { return MultiProvider( providers: [ - ChangeNotifierProvider(create: (context) => mockUserProvider), - ChangeNotifierProvider(create: (context) => mockWorkoutProvider), - ChangeNotifierProvider(create: (context) => mockNutritionProvider), - ChangeNotifierProvider(create: (context) => mockWeightProvider), - ChangeNotifierProvider(create: (context) => mockMeasurementProvider), + ChangeNotifierProvider( + create: (context) => mockUserProvider, + ), + ChangeNotifierProvider( + create: (context) => mockWorkoutProvider, + ), + ChangeNotifierProvider( + create: (context) => mockNutritionProvider, + ), + ChangeNotifierProvider( + create: (context) => mockWeightProvider, + ), + ChangeNotifierProvider( + create: (context) => mockMeasurementProvider, + ), ], child: MaterialApp( locale: Locale(locale), diff --git a/integration_test/2_workout.dart b/integration_test/2_workout.dart index 8e5fc12a..9abe0767 100644 --- a/integration_test/2_workout.dart +++ b/integration_test/2_workout.dart @@ -2,25 +2,28 @@ import 'package:flutter/material.dart'; import 'package:mockito/mockito.dart'; import 'package:provider/provider.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; -import 'package:wger/providers/workout_plans.dart'; -import 'package:wger/screens/workout_plan_screen.dart'; +import 'package:wger/providers/routines.dart'; +import 'package:wger/screens/routine_screen.dart'; import 'package:wger/theme/theme.dart'; -import '../test/workout/workout_form_test.mocks.dart'; +import '../test/routine/routine_form_test.mocks.dart'; import '../test_data/exercises.dart'; -import '../test_data/workouts.dart'; +import '../test_data/routines.dart'; Widget createWorkoutDetailScreen({locale = 'en'}) { final key = GlobalKey(); - final mockWorkoutProvider = MockWorkoutPlansProvider(); - final workout = getWorkout(exercises: getScreenshotExercises()); - when(mockWorkoutProvider.activePlan).thenReturn(workout); - when(mockWorkoutProvider.fetchAndSetWorkoutPlanFull(1)).thenAnswer((_) => Future.value(workout)); + final mockRoutinesProvider = MockRoutinesProvider(); + final routine = getTestRoutine(exercises: getScreenshotExercises()); + // when(mockRoutinesProvider.activeRoutine).thenReturn(routine); + when(mockRoutinesProvider.findById(1)).thenReturn(routine); + // when(mockRoutinesProvider.fetchAndSetRoutineFull(1)).thenAnswer((_) => Future.value(routine)); return MultiProvider( providers: [ - ChangeNotifierProvider(create: (context) => mockWorkoutProvider), + ChangeNotifierProvider( + create: (context) => mockRoutinesProvider, + ), ], child: MaterialApp( locale: Locale(locale), @@ -32,8 +35,8 @@ Widget createWorkoutDetailScreen({locale = 'en'}) { home: TextButton( onPressed: () => key.currentState!.push( MaterialPageRoute( - settings: RouteSettings(arguments: workout), - builder: (_) => const WorkoutPlanScreen(), + settings: RouteSettings(arguments: routine.id), + builder: (_) => const RoutineScreen(), ), ), child: const SizedBox(), diff --git a/integration_test/3_gym_mode.dart b/integration_test/3_gym_mode.dart index b6f469bd..76431f08 100644 --- a/integration_test/3_gym_mode.dart +++ b/integration_test/3_gym_mode.dart @@ -1,34 +1,43 @@ import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart' as riverpod; import 'package:mockito/mockito.dart'; import 'package:provider/provider.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; import 'package:wger/providers/exercises.dart'; -import 'package:wger/providers/workout_plans.dart'; +import 'package:wger/providers/routines.dart'; import 'package:wger/screens/gym_mode.dart'; -import 'package:wger/screens/workout_plan_screen.dart'; +import 'package:wger/screens/routine_screen.dart'; import 'package:wger/theme/theme.dart'; -import '../test/utils.dart'; -import '../test/workout/gym_mode_screen_test.mocks.dart'; +import '../test/routine/gym_mode_screen_test.mocks.dart'; import '../test_data/exercises.dart'; -import '../test_data/workouts.dart'; +import '../test_data/routines.dart'; Widget createGymModeScreen({locale = 'en'}) { final key = GlobalKey(); - final bases = getTestExercises(); - final workout = getWorkout(exercises: getScreenshotExercises()); - + final exercises = getTestExercises(); + final routine = getTestRoutine(exercises: getScreenshotExercises()); + final mockRoutinesProvider = MockRoutinesProvider(); final mockExerciseProvider = MockExercisesProvider(); - when(mockExerciseProvider.findExerciseById(1)).thenReturn(bases[0]); // bench press - when(mockExerciseProvider.findExerciseById(6)).thenReturn(bases[5]); // side raises + when(mockRoutinesProvider.fetchAndSetRoutineFull(1)).thenAnswer((_) async => routine); + when(mockRoutinesProvider.findById(1)).thenAnswer((_) => routine); + + when(mockExerciseProvider.findExerciseById(1)).thenReturn(exercises[0]); // bench press + when(mockExerciseProvider.findExerciseById(6)).thenReturn(exercises[5]); // side raises //when(mockExerciseProvider.findExerciseBaseById(2)).thenReturn(bases[1]); // crunches //when(mockExerciseProvider.findExerciseBaseById(3)).thenReturn(bases[2]); // dead lift - return ChangeNotifierProvider( - create: (context) => WorkoutPlansProvider(mockBaseProvider, mockExerciseProvider, [workout]), - child: ChangeNotifierProvider( - create: (context) => mockExerciseProvider, + return riverpod.ProviderScope( + child: MultiProvider( + providers: [ + ChangeNotifierProvider( + create: (context) => mockRoutinesProvider, + ), + ChangeNotifierProvider( + create: (context) => mockExerciseProvider, + ), + ], child: MaterialApp( locale: Locale(locale), debugShowCheckedModeBanner: false, @@ -39,13 +48,17 @@ Widget createGymModeScreen({locale = 'en'}) { home: TextButton( onPressed: () => key.currentState!.push( MaterialPageRoute( - settings: RouteSettings(arguments: workout.days.first), + settings: RouteSettings( + arguments: GymModeArguments(routine.id!, routine.days.first.id!, 1), + ), builder: (_) => const GymModeScreen(), ), ), child: const SizedBox(), ), - routes: {WorkoutPlanScreen.routeName: (ctx) => const WorkoutPlanScreen()}, + routes: { + RoutineScreen.routeName: (ctx) => const RoutineScreen(), + }, ), ), ); diff --git a/integration_test/5_nutritional_plan.dart b/integration_test/5_nutritional_plan.dart index 7381e39e..dacb1725 100644 --- a/integration_test/5_nutritional_plan.dart +++ b/integration_test/5_nutritional_plan.dart @@ -1,5 +1,7 @@ +import 'package:drift/native.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:wger/database/ingredients/ingredients_database.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; import 'package:wger/providers/body_weight.dart'; import 'package:wger/providers/nutrition.dart'; @@ -17,7 +19,11 @@ Widget createNutritionalPlanScreen({locale = 'en'}) { return MultiProvider( providers: [ ChangeNotifierProvider( - create: (context) => NutritionPlansProvider(mockBaseProvider, []), + create: (context) => NutritionPlansProvider( + mockBaseProvider, + [], + database: IngredientDatabase.inMemory(NativeDatabase.memory()), + ), ), ChangeNotifierProvider( create: (context) => BodyWeightProvider(mockBaseProvider), diff --git a/integration_test/6_weight.dart b/integration_test/6_weight.dart index aaeb9abc..f02c059d 100644 --- a/integration_test/6_weight.dart +++ b/integration_test/6_weight.dart @@ -3,6 +3,7 @@ import 'package:mockito/mockito.dart'; import 'package:provider/provider.dart'; import 'package:wger/l10n/generated/app_localizations.dart'; import 'package:wger/providers/body_weight.dart'; +import 'package:wger/providers/nutrition.dart'; import 'package:wger/providers/user.dart'; import 'package:wger/screens/form_screen.dart'; import 'package:wger/screens/weight_screen.dart'; @@ -11,19 +12,31 @@ import 'package:wger/theme/theme.dart'; import '../test/utils.dart'; import '../test/weight/weight_screen_test.mocks.dart'; import '../test_data/body_weight.dart'; +import '../test_data/nutritional_plans.dart'; import '../test_data/profile.dart'; Widget createWeightScreen({locale = 'en'}) { - final mockWeightProvider = BodyWeightProvider(mockBaseProvider); - mockWeightProvider.items = getScreenshotWeightEntries(); + final weightProvider = BodyWeightProvider(mockBaseProvider); + weightProvider.items = getScreenshotWeightEntries(); final mockUserProvider = MockUserProvider(); when(mockUserProvider.profile).thenReturn(tProfile1); + final mockNutritionPlansProvider = MockNutritionPlansProvider(); + when(mockNutritionPlansProvider.currentPlan).thenReturn(null); + when(mockNutritionPlansProvider.items).thenReturn([getNutritionalPlan()]); + return MultiProvider( providers: [ - ChangeNotifierProvider(create: (context) => mockUserProvider), - ChangeNotifierProvider(create: (context) => mockWeightProvider), + ChangeNotifierProvider( + create: (context) => mockUserProvider, + ), + ChangeNotifierProvider( + create: (context) => weightProvider, + ), + ChangeNotifierProvider( + create: (context) => mockNutritionPlansProvider, + ), ], child: MaterialApp( locale: Locale(locale), diff --git a/integration_test/make_screenshots_test.dart b/integration_test/make_screenshots_test.dart index 78ce1222..3d475363 100644 --- a/integration_test/make_screenshots_test.dart +++ b/integration_test/make_screenshots_test.dart @@ -17,12 +17,17 @@ enum DeviceType { sevenInchScreenshots, tenInchScreenshots, tvScreenshots, - wearScreenshots + wearScreenshots, } final destination = DeviceType.phoneScreenshots.name; -Future takeScreenshot(tester, binding, String language, String name) async { +Future takeScreenshot( + WidgetTester tester, + IntegrationTestWidgetsFlutterBinding binding, + String language, + String name, +) async { if (Platform.isAndroid) { await tester.pumpAndSettle(); await binding.convertFlutterSurfaceToImage(); @@ -37,27 +42,31 @@ Future takeScreenshot(tester, binding, String language, String name) async const languages = [ // 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', - // 'cs-CZ', - // 'de-DE', - // 'el-GR', - // 'en-US', - // 'es-ES', + 'ar', + 'ca', + 'cs-CZ', + 'de-DE', + 'el-GR', + 'en-US', + 'es-ES', 'fr-FR', 'hi-IN', 'hr', 'it-IT', + 'ko-KR', 'nb-NO', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', + 'sr', + 'ta-IN', 'tr-TR', 'uk', 'zh-CN', + 'zh-TW', ]; void main() { diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist index 8c6e5614..d57061dd 100644 --- a/ios/Flutter/AppFrameworkInfo.plist +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 12.0 + 13.0 diff --git a/ios/Gemfile b/ios/Gemfile new file mode 100644 index 00000000..7a118b49 --- /dev/null +++ b/ios/Gemfile @@ -0,0 +1,3 @@ +source "https://rubygems.org" + +gem "fastlane" diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock new file mode 100644 index 00000000..5447a46b --- /dev/null +++ b/ios/Gemfile.lock @@ -0,0 +1,222 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (3.0.7) + base64 + nkf + rexml + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + artifactory (3.0.17) + atomos (0.1.3) + aws-eventstream (1.3.0) + aws-partitions (1.1018.0) + aws-sdk-core (3.214.0) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.992.0) + aws-sigv4 (~> 1.9) + jmespath (~> 1, >= 1.6.1) + aws-sdk-kms (1.96.0) + aws-sdk-core (~> 3, >= 3.210.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.176.0) + aws-sdk-core (~> 3, >= 3.210.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.5) + aws-sigv4 (1.10.1) + aws-eventstream (~> 1, >= 1.0.2) + babosa (1.0.4) + base64 (0.2.0) + claide (1.1.0) + colored (1.2) + colored2 (3.1.2) + commander (4.6.0) + highline (~> 2.0.0) + declarative (0.0.20) + digest-crc (0.6.5) + rake (>= 12.0.0, < 14.0.0) + domain_name (0.6.20240107) + dotenv (2.8.1) + emoji_regex (3.2.3) + excon (0.112.0) + faraday (1.10.4) + faraday-em_http (~> 1.0) + faraday-em_synchrony (~> 1.0) + faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0) + faraday-multipart (~> 1.0) + faraday-net_http (~> 1.0) + faraday-net_http_persistent (~> 1.0) + faraday-patron (~> 1.0) + faraday-rack (~> 1.0) + faraday-retry (~> 1.0) + ruby2_keywords (>= 0.0.4) + faraday-cookie_jar (0.0.7) + faraday (>= 0.8.0) + http-cookie (~> 1.0.0) + faraday-em_http (1.0.0) + faraday-em_synchrony (1.0.0) + faraday-excon (1.1.0) + faraday-httpclient (1.0.1) + faraday-multipart (1.0.4) + multipart-post (~> 2) + faraday-net_http (1.0.2) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) + faraday-rack (1.0.0) + faraday-retry (1.0.3) + faraday_middleware (1.2.1) + faraday (~> 1.0) + fastimage (2.3.1) + fastlane (2.225.0) + CFPropertyList (>= 2.3, < 4.0.0) + addressable (>= 2.8, < 3.0.0) + artifactory (~> 3.0) + aws-sdk-s3 (~> 1.0) + babosa (>= 1.0.3, < 2.0.0) + bundler (>= 1.12.0, < 3.0.0) + colored (~> 1.2) + commander (~> 4.6) + dotenv (>= 2.1.1, < 3.0.0) + emoji_regex (>= 0.1, < 4.0) + excon (>= 0.71.0, < 1.0.0) + faraday (~> 1.0) + faraday-cookie_jar (~> 0.0.6) + faraday_middleware (~> 1.0) + fastimage (>= 2.1.0, < 3.0.0) + fastlane-sirp (>= 1.0.0) + 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) + json (< 3.0.0) + jwt (>= 2.1.0, < 3) + mini_magick (>= 4.9.4, < 5.0.0) + multipart-post (>= 2.0.0, < 3.0.0) + naturally (~> 2.2) + optparse (>= 0.1.1, < 1.0.0) + plist (>= 3.1.0, < 4.0.0) + rubyzip (>= 2.0.0, < 3.0.0) + security (= 0.1.5) + simctl (~> 1.6.3) + terminal-notifier (>= 2.0.0, < 3.0.0) + terminal-table (~> 3) + tty-screen (>= 0.6.3, < 1.0.0) + tty-spinner (>= 0.8.0, < 1.0.0) + word_wrap (~> 1.0.0) + xcodeproj (>= 1.13.0, < 2.0.0) + xcpretty (~> 0.3.0) + xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) + fastlane-sirp (1.0.0) + sysrandom (~> 1.0) + gh_inspector (1.1.3) + google-apis-androidpublisher_v3 (0.54.0) + google-apis-core (>= 0.11.0, < 2.a) + google-apis-core (0.11.3) + addressable (~> 2.5, >= 2.5.1) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) + mini_mime (~> 1.0) + representable (~> 3.0) + retriable (>= 2.0, < 4.a) + rexml + google-apis-iamcredentials_v1 (0.17.0) + 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.31.0) + google-apis-core (>= 0.11.0, < 2.a) + google-cloud-core (1.7.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.4.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.31.0) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) + mini_mime (~> 1.0) + googleauth (1.8.1) + faraday (>= 0.17.3, < 3.a) + jwt (>= 1.4, < 3.0) + multi_json (~> 1.11) + os (>= 0.9, < 2.0) + signet (>= 0.16, < 2.a) + highline (2.0.3) + http-cookie (1.0.8) + domain_name (~> 0.5) + httpclient (2.8.3) + jmespath (1.6.2) + json (2.9.0) + jwt (2.9.3) + base64 + mini_magick (4.13.2) + mini_mime (1.1.5) + multi_json (1.15.0) + multipart-post (2.4.1) + nanaimo (0.4.0) + naturally (2.2.1) + nkf (0.2.0) + optparse (0.6.0) + os (1.1.4) + plist (3.7.1) + public_suffix (6.0.1) + rake (13.2.1) + representable (3.2.0) + declarative (< 0.1.0) + trailblazer-option (>= 0.1.1, < 0.2.0) + uber (< 0.2.0) + retriable (3.1.2) + rexml (3.4.2) + rouge (2.0.7) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) + security (0.1.5) + signet (0.19.0) + addressable (~> 2.8) + faraday (>= 0.17.5, < 3.a) + jwt (>= 1.5, < 3.0) + multi_json (~> 1.10) + simctl (1.6.10) + CFPropertyList + naturally + sysrandom (1.0.5) + terminal-notifier (2.0.0) + terminal-table (3.0.2) + unicode-display_width (>= 1.1.1, < 3) + trailblazer-option (0.1.2) + tty-cursor (0.7.1) + tty-screen (0.8.2) + tty-spinner (0.9.3) + tty-cursor (~> 0.7) + uber (0.1.0) + unicode-display_width (2.6.0) + word_wrap (1.0.0) + xcodeproj (1.27.0) + CFPropertyList (>= 2.3.3, < 4.0) + atomos (~> 0.1.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.4.0) + rexml (>= 3.3.6, < 4.0) + xcpretty (0.3.0) + rouge (~> 2.0.7) + xcpretty-travis-formatter (1.0.1) + xcpretty (~> 0.2, >= 0.0.7) + +PLATFORMS + arm64-darwin-24 + ruby + +DEPENDENCIES + fastlane + +BUNDLED WITH + 2.5.18 diff --git a/ios/Podfile b/ios/Podfile index 2c068c40..fe628cb8 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '12.0' +platform :ios, '17.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 0cdb23fc..e2a08f6f 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -2,8 +2,6 @@ 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): @@ -17,26 +15,38 @@ PODS: - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS + - pointer_interceptor_ios (0.0.1): + - Flutter - rive_common (0.0.1): - Flutter - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS - - sqlite3 (3.45.0): - - sqlite3/common (= 3.45.0) - - sqlite3/common (3.45.0) - - sqlite3/fts5 (3.45.0): + - sqlite3 (3.50.4): + - sqlite3/common (= 3.50.4) + - sqlite3/common (3.50.4) + - sqlite3/dbstatvtab (3.50.4): - sqlite3/common - - sqlite3/perf-threadsafe (3.45.0): + - sqlite3/fts5 (3.50.4): - sqlite3/common - - sqlite3/rtree (3.45.0): + - sqlite3/math (3.50.4): + - sqlite3/common + - sqlite3/perf-threadsafe (3.50.4): + - sqlite3/common + - sqlite3/rtree (3.50.4): + - sqlite3/common + - sqlite3/session (3.50.4): - sqlite3/common - sqlite3_flutter_libs (0.0.1): - Flutter - - sqlite3 (~> 3.45.0) + - FlutterMacOS + - sqlite3 (~> 3.50.4) + - sqlite3/dbstatvtab - sqlite3/fts5 + - sqlite3/math - sqlite3/perf-threadsafe - sqlite3/rtree + - sqlite3/session - url_launcher_ios (0.0.1): - Flutter - video_player_avfoundation (0.0.1): @@ -46,16 +56,16 @@ PODS: 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`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - pointer_interceptor_ios (from `.symlinks/plugins/pointer_interceptor_ios/ios`) - rive_common (from `.symlinks/plugins/rive_common/ios`) - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - - sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/ios`) + - sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) @@ -68,8 +78,6 @@ EXTERNAL SOURCES: :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: @@ -82,34 +90,36 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/package_info_plus/ios" path_provider_foundation: :path: ".symlinks/plugins/path_provider_foundation/darwin" + pointer_interceptor_ios: + :path: ".symlinks/plugins/pointer_interceptor_ios/ios" rive_common: :path: ".symlinks/plugins/rive_common/ios" shared_preferences_foundation: :path: ".symlinks/plugins/shared_preferences_foundation/darwin" sqlite3_flutter_libs: - :path: ".symlinks/plugins/sqlite3_flutter_libs/ios" + :path: ".symlinks/plugins/sqlite3_flutter_libs/darwin" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" video_player_avfoundation: :path: ".symlinks/plugins/video_player_avfoundation/darwin" SPEC CHECKSUMS: - camera_avfoundation: 3125e8cd1a4387f6f31c6c63abb8a55892a9eeeb - Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - flutter_barcode_scanner: 7a1144744c28dc0c57a8de7218ffe5ec59a9e4bf - flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 - flutter_zxing: 19a866d17c8a87ee1026d68521c69d2f008635f6 - image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5 - integration_test: 13825b8a9334a850581300559b8839134b124670 - package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85 - path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 - rive_common: 3a4c254c6e4db7e4b9e05daeb3d1f47ae4f7bf76 - shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 - sqlite3: f307b6291c4db7b5086c38d6237446b98a738581 - sqlite3_flutter_libs: aeb4d37509853dfa79d9b59386a2dac5dd079428 - url_launcher_ios: bf5ce03e0e2088bad9cc378ea97fa0ed5b49673b - video_player_avfoundation: e9e6f9cae7d7a6d9b43519b0aab382bca60fcfd1 + camera_avfoundation: be3be85408cd4126f250386828e9b1dfa40ab436 + Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 + flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619 + flutter_zxing: e8bcc43bd3056c70c271b732ed94e7a16fd62f93 + image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a + integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e + package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 + pointer_interceptor_ios: ec847ef8b0915778bed2b2cef636f4d177fa8eed + rive_common: dd421daaf9ae69f0125aa761dd96abd278399952 + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 + sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b + sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1 + url_launcher_ios: 694010445543906933d732453a59da0a173ae33d + video_player_avfoundation: 2cef49524dd1f16c5300b9cd6efd9611ce03639b -PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048 +PODFILE CHECKSUM: 5a367937f10bf0c459576e5e472a1159ee029c13 -COCOAPODS: 1.14.3 +COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index eaa06d26..650ff389 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -8,9 +8,9 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 3845DFE0762714C6680D5DFA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFA44D9DB464FB85F130C5B5 /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 78C727F12E8C2C2BF5ED5703 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC1C25406C5CD78CE59E547 /* Pods_Runner.framework */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -30,14 +30,15 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0661B42137D743038BB7032F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 0AA56188CB2769B47E250516 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 0ED96167FF623FAB319C6E99 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 89F44165E15E0A7B109A05EB /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 8D383D452D8E929100066A20 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -45,8 +46,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - C19FA8F529BB2B899AB0C23A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - DAC1C25406C5CD78CE59E547 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AFA44D9DB464FB85F130C5B5 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C71BAD15819A771165D784B0 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -54,17 +55,17 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 78C727F12E8C2C2BF5ED5703 /* Pods_Runner.framework in Frameworks */, + 3845DFE0762714C6680D5DFA /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 631B4307BD65C9D08E514EBB /* Frameworks */ = { + 23E168F95D2790D29E207E68 /* Frameworks */ = { isa = PBXGroup; children = ( - DAC1C25406C5CD78CE59E547 /* Pods_Runner.framework */, + AFA44D9DB464FB85F130C5B5 /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; @@ -87,7 +88,7 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, BB0286322FD60C00014F981C /* Pods */, - 631B4307BD65C9D08E514EBB /* Frameworks */, + 23E168F95D2790D29E207E68 /* Frameworks */, ); sourceTree = ""; }; @@ -102,6 +103,7 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( + 8D383D452D8E929100066A20 /* Runner.entitlements */, 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, @@ -117,9 +119,9 @@ BB0286322FD60C00014F981C /* Pods */ = { isa = PBXGroup; children = ( - 0661B42137D743038BB7032F /* Pods-Runner.debug.xcconfig */, - C19FA8F529BB2B899AB0C23A /* Pods-Runner.release.xcconfig */, - 0AA56188CB2769B47E250516 /* Pods-Runner.profile.xcconfig */, + C71BAD15819A771165D784B0 /* Pods-Runner.debug.xcconfig */, + 0ED96167FF623FAB319C6E99 /* Pods-Runner.release.xcconfig */, + 89F44165E15E0A7B109A05EB /* Pods-Runner.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -131,14 +133,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 55A9F1D1670043D7444258F2 /* [CP] Check Pods Manifest.lock */, + 49A79EC3F389C902853B9186 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 8D4C3EABCD024FF4FF37C7E4 /* [CP] Embed Pods Frameworks */, + 0A9E38C31DF3DC192213822E /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -155,7 +157,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -197,6 +199,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 0A9E38C31DF3DC192213822E /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -213,7 +232,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 55A9F1D1670043D7444258F2 /* [CP] Check Pods Manifest.lock */ = { + 49A79EC3F389C902853B9186 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -235,23 +254,6 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 8D4C3EABCD024FF4FF37C7E4 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -342,7 +344,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -357,8 +359,9 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 643RNGR6QG; + DEVELOPMENT_TEAM = U92KZ4HZ4C; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -373,7 +376,8 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = de.wger.flutter; + MARKETING_VERSION = 1.8.0; + PRODUCT_BUNDLE_IDENTIFIER = de.wger.flutter.community; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -428,7 +432,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -477,7 +481,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -494,8 +498,9 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 643RNGR6QG; + DEVELOPMENT_TEAM = U92KZ4HZ4C; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -510,7 +515,8 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = de.wger.flutter; + MARKETING_VERSION = 1.8.0; + PRODUCT_BUNDLE_IDENTIFIER = de.wger.flutter.community; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -525,8 +531,9 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 643RNGR6QG; + DEVELOPMENT_TEAM = U92KZ4HZ4C; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -541,7 +548,8 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - PRODUCT_BUNDLE_IDENTIFIER = de.wger.flutter; + MARKETING_VERSION = 1.8.0; + PRODUCT_BUNDLE_IDENTIFIER = de.wger.flutter.community; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index b52b2e69..fc5ae031 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ @@ -45,11 +46,13 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 70693e4a..b6363034 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import UIKit import Flutter -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png new file mode 100644 index 00000000..444053f9 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png new file mode 100644 index 00000000..70709651 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png new file mode 100644 index 00000000..02f1a793 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png new file mode 100644 index 00000000..1b430d7c Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png new file mode 100644 index 00000000..1519c1e1 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png new file mode 100644 index 00000000..730026f7 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png new file mode 100644 index 00000000..e2d4d758 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png new file mode 100644 index 00000000..4dcc9949 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png new file mode 100644 index 00000000..4de0c847 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png new file mode 100644 index 00000000..7013299e Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png new file mode 100644 index 00000000..0ddf6c86 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png new file mode 100644 index 00000000..2e7c1321 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png new file mode 100644 index 00000000..dcbc2adb Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png new file mode 100644 index 00000000..67801503 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png new file mode 100644 index 00000000..5001a897 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png new file mode 100644 index 00000000..22dc03b6 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png new file mode 100644 index 00000000..122d875c Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png new file mode 100644 index 00000000..efbc4dcf Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png new file mode 100644 index 00000000..2421a4f9 Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index d36b1fab..4fdf8826 100644 --- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,122 +1,158 @@ { "images" : [ { - "size" : "20x20", + "filename" : "40.png", "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { - "size" : "20x20", + "filename" : "60.png", "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" + "scale" : "3x", + "size" : "20x20" }, { - "size" : "29x29", + "filename" : "29.png", "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "29x29" }, { - "size" : "29x29", + "filename" : "58.png", "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { - "size" : "29x29", + "filename" : "87.png", "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" + "scale" : "3x", + "size" : "29x29" }, { - "size" : "40x40", + "filename" : "80.png", "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { - "size" : "40x40", + "filename" : "120.png", "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" + "scale" : "3x", + "size" : "40x40" }, { - "size" : "60x60", + "filename" : "57.png", "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" + "scale" : "1x", + "size" : "57x57" }, { - "size" : "60x60", + "filename" : "114.png", "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" + "scale" : "2x", + "size" : "57x57" }, { - "size" : "20x20", + "filename" : "120.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "180.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "filename" : "20.png", "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "20x20" }, { - "size" : "20x20", + "filename" : "40.png", "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "20x20" }, { - "size" : "29x29", + "filename" : "29.png", "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "29x29" }, { - "size" : "29x29", + "filename" : "58.png", "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "29x29" }, { - "size" : "40x40", + "filename" : "40.png", "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "40x40" }, { - "size" : "40x40", + "filename" : "80.png", "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "40x40" }, { - "size" : "76x76", + "filename" : "50.png", "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "50x50" }, { - "size" : "76x76", + "filename" : "100.png", "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" + "scale" : "2x", + "size" : "50x50" }, { - "size" : "83.5x83.5", + "filename" : "72.png", "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" + "scale" : "1x", + "size" : "72x72" }, { - "size" : "1024x1024", + "filename" : "144.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "72x72" + }, + { + "filename" : "76.png", + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "filename" : "152.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "filename" : "167.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "1024.png", "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" + "scale" : "1x", + "size" : "1024x1024" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } } diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index da9a6094..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index 2b3b1a94..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 0c5443fe..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index 4f2bc865..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index b7539761..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index 956eb4bd..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index 1c4c2dae..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index 0c5443fe..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index 81ed89bc..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index af6c4429..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index af6c4429..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index 91145264..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index a538920e..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index 9579c5e3..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index 211d8e57..00000000 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/ios/Runner/Assets.xcassets/Contents.json b/ios/Runner/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/ios/Runner/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 9aa740a2..7049504d 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -2,6 +2,8 @@ + NSCameraUsageDescription + Workout photos CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements new file mode 100644 index 00000000..903def2a --- /dev/null +++ b/ios/Runner/Runner.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + diff --git a/ios/build/.last_build_id b/ios/build/.last_build_id new file mode 100644 index 00000000..7769d20e --- /dev/null +++ b/ios/build/.last_build_id @@ -0,0 +1 @@ +ce49e7d90cd902197f9a9cbc84219d23 \ No newline at end of file diff --git a/ios/fastlane/Appfile b/ios/fastlane/Appfile new file mode 100644 index 00000000..2ba8d12b --- /dev/null +++ b/ios/fastlane/Appfile @@ -0,0 +1,5 @@ +app_identifier("de.wger.flutter.community") # The bundle identifier of your app +apple_id(ENV["APPLE_ID"]) # Your Apple Developer Portal username + +itc_team_id(ENV["ITC_TEAM_ID"]) # App Store Connect Team ID +team_id(ENV["TEAM_ID"]) # Developer Portal Team ID diff --git a/ios/fastlane/Deliverfile b/ios/fastlane/Deliverfile new file mode 100644 index 00000000..74739f74 --- /dev/null +++ b/ios/fastlane/Deliverfile @@ -0,0 +1,3 @@ +# The Deliverfile allows you to store various App Store Connect metadata +# For more information, check out the docs +# https://docs.fastlane.tools/actions/deliver/ diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile new file mode 100644 index 00000000..2dc804f8 --- /dev/null +++ b/ios/fastlane/Fastfile @@ -0,0 +1,61 @@ +default_platform(:ios) + +platform :ios do + + desc "Set AppStore Connect API KEY using the provided environment variables." + lane :apikey do + app_store_connect_api_key( + key_id: ENV["APP_STORE_API_KEY_ID"], + issuer_id: ENV["APP_STORE_API_ISSUER_ID"], + key_filepath: ENV["APP_STORE_API_KEY_PATH"], + duration: 1200, # optional (maximum 1200) + in_house: false # optional but may be required if using match/sigh + ) + end + + ############################################################################### + + desc "Push a new release build to AppStore Connect for manual submission to TestFlight beta testing or App Store Release." + lane :release do + apikey + build_app(workspace: "Runner.xcworkspace", scheme: "Runner") + upload_to_app_store( + precheck_include_in_app_purchases: false + ) + end + + ############################################################################### + + desc "Test if all environment variables are present and check if API key is working properly." + lane :test_env do + UI.message "🔍 Testing environment variables..." + + UI.message "APP_STORE_API_KEY_ID: #{ENV['APP_STORE_API_KEY_ID']}" + UI.message "APP_STORE_API_ISSUER_ID: #{ENV['APP_STORE_API_ISSUER_ID']}" + UI.message "APP_STORE_API_KEY_PATH: #{ENV['APP_STORE_API_KEY_PATH']}" + UI.message "APPLE_ID: #{ENV['APPLE_ID']}" + UI.message "ITC_TEAM_ID: #{ENV['ITC_TEAM_ID']}" + UI.message "TEAM_ID: #{ENV['TEAM_ID']}" + + UI.success "✅ Environment variables loaded." + + UI.message "🔐 Testing App Store Connect API key authentication..." + + app_store_connect_api_key( + key_id: ENV["APP_STORE_API_KEY_ID"], + issuer_id: ENV["APP_STORE_API_ISSUER_ID"], + key_filepath: ENV["APP_STORE_API_KEY_PATH"], + duration: 1200, + in_house: false + ) + + # Test: Fetch list of apps to verify authentication + apps = Spaceship::ConnectAPI::App.all + UI.success "✅ API Key is valid! Found #{apps.count} apps in your App Store Connect account." + + rescue => ex + UI.error "❌ API Key authentication failed: #{ex.message}" + UI.user_error!("Please check your API key environment variables and credentials.") + end + +end diff --git a/ios/fastlane/README.md b/ios/fastlane/README.md new file mode 100644 index 00000000..08fd87f3 --- /dev/null +++ b/ios/fastlane/README.md @@ -0,0 +1,48 @@ +fastlane documentation +---- + +# Installation + +Make sure you have the latest version of the Xcode command line tools installed: + +```sh +xcode-select --install +``` + +For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane) + +# Available Actions + +## iOS + +### ios apikey + +```sh +[bundle exec] fastlane ios apikey +``` + +Set AppStore Connect API KEY using the provided environment variables. + +### ios release + +```sh +[bundle exec] fastlane ios release +``` + +Push a new release build to AppStore Connect for manual submission to TestFlight beta testing or App Store Release. + +### ios test_env + +```sh +[bundle exec] fastlane ios test_env +``` + +Test if all environment variables are present and check if API key is working properly. + +---- + +This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. + +More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools). + +The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools). diff --git a/ios/fastlane/metadata/copyright.txt b/ios/fastlane/metadata/copyright.txt new file mode 100644 index 00000000..3d870c90 --- /dev/null +++ b/ios/fastlane/metadata/copyright.txt @@ -0,0 +1 @@ +wger Project diff --git a/ios/fastlane/metadata/de-DE/apple_tv_privacy_policy.txt b/ios/fastlane/metadata/de-DE/apple_tv_privacy_policy.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ios/fastlane/metadata/de-DE/apple_tv_privacy_policy.txt @@ -0,0 +1 @@ + diff --git a/ios/fastlane/metadata/de-DE/description.txt b/ios/fastlane/metadata/de-DE/description.txt new file mode 100644 index 00000000..677e4da1 --- /dev/null +++ b/ios/fastlane/metadata/de-DE/description.txt @@ -0,0 +1,39 @@ +Von Fitnessliebhabern für Fitnessliebhaber, organisiere deine Gesundheit mit wger, deinem Trainingsverwaltungsprogramm! + +Hast du schon deine Nr. 1 Fitness-Anwendung gefunden und liebst es, deine eigene Trainingspläne zu erstellen? Egal was für ein sportliches Biest du bist sind – wir haben alle etwas gemeinsam: wir lieben es, den Überblick über unsere Gesundheitsdaten zu behalten. + +Wir verurteilen dich also nicht dafür, dass du deine Fitness-Reise immer noch mit deinem kleinen Tagebuch verwaltest, aber willkommen im 21. Jahrhundert! + +Wir haben eine 100 % kostenlose digitale Gesundheits- und Fitnesstracker-Anwendung für dich entwickelt, die auf die wichtigsten Funktionen reduziert ist, um dein Leben einfacher zu machen. Lege jetzt lost, trainiere weiter und feiere deine Fortschritte! + +wger ist ein quelloffenes Projekt und dreht sich um: +* Deinen Körper +* Deine Workouts +* Deine Fortschritte +* Deine Daten + +Dein Körper: +Du musst nicht mehr nach den Zutaten deiner Lieblingsspeise suchen – stelle deine täglichen Mahlzeiten aus mehr als 78.000 Produkten und deren Nährwerte zusammen. Füge diese deinem Ernährungsplan hinzu und behalte den Überblick über deine Ernährung im Kalender. + +Deine Workouts: +Du weißt, was das Beste für deinen Körper ist. Erstelle deine eigenen Workouts aus einer wachsenden Vielfalt von 200 verschiedenen Übungen. Verwende den Gym-Modus, um dich durch das Training führen zu lassen, während du deine Gewichte und Wiederholungen mit einem Tippen protokollieren kannst. + +Dein Fortschritt: +Verlieren nie deine Ziele aus den Augen, tracke dein Gewicht und behalte deine Statistiken. + +Deine Daten: +wger ist dein persönliches Fitness-Tagebuch - aber deine Daten gehören dir. Nutze die REST-API, um darauf zuzugreifen und erstaunliche Dinge damit zu tun. + +Bitte beachte: Diese kostenlose Anwendung basiert nicht auf zusätzlichen Finanzierungen und wir bitten dich nicht um Geldspenden. Vielmehr handelt es sich um ein Community-Projekt, das ständig wächst. Sei also jederzeit auf neue Funktionen vorbereitet! + +Quelloffen – was bedeutet das? + +Quelloffen bedeutet, dass der gesamte Quellcode für diese Anwendung und den damit verbundenen Server, frei und für jeden verfügbar ist: +* Willst du wger auf deinem eigenen Server für dich oder dein lokales Fitnessstudio laufen lassen? Nur zu! +* Vermisst du ein Feature und willst es implementieren? Fang jetzt an! +* Willst du überprüfen, dass etwas an Dritte gesendet wird? Das kannst du! + +Trete unserer Gemeinschaft bei und werde ein Teil von Sportbegeisterten und IT-Freaks aus aller Welt. Wir arbeiten ständig daran, die Anwendung an unsere Bedürfnisse anzupassen und zu optimieren. Wir freuen uns über deinen Input, du kannst jederzeit einsteigen und deine Wünsche und Ideen einbringen! + +-> finde den Quellcode auf https://github.com/wger-project +-> stelle deine Fragen oder sag einfach Hallo auf unserem Discord-Server https://discord.gg/rPWFv6W diff --git a/ios/fastlane/metadata/de-DE/keywords.txt b/ios/fastlane/metadata/de-DE/keywords.txt new file mode 100644 index 00000000..bd88e814 --- /dev/null +++ b/ios/fastlane/metadata/de-DE/keywords.txt @@ -0,0 +1 @@ +wger Workout Ernährung Fitness diff --git a/ios/fastlane/metadata/de-DE/marketing_url.txt b/ios/fastlane/metadata/de-DE/marketing_url.txt new file mode 100644 index 00000000..697495c2 --- /dev/null +++ b/ios/fastlane/metadata/de-DE/marketing_url.txt @@ -0,0 +1 @@ +https://wger.de/de/software/features diff --git a/ios/fastlane/metadata/de-DE/name.txt b/ios/fastlane/metadata/de-DE/name.txt new file mode 100644 index 00000000..d35e4087 --- /dev/null +++ b/ios/fastlane/metadata/de-DE/name.txt @@ -0,0 +1 @@ +wger Workout Manager diff --git a/ios/fastlane/metadata/de-DE/privacy_url.txt b/ios/fastlane/metadata/de-DE/privacy_url.txt new file mode 100644 index 00000000..fd0b0bb0 --- /dev/null +++ b/ios/fastlane/metadata/de-DE/privacy_url.txt @@ -0,0 +1 @@ +https://wger.de/de/software/terms-of-service diff --git a/ios/fastlane/metadata/de-DE/promotional_text.txt b/ios/fastlane/metadata/de-DE/promotional_text.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ios/fastlane/metadata/de-DE/promotional_text.txt @@ -0,0 +1 @@ + diff --git a/ios/fastlane/metadata/de-DE/release_notes.txt b/ios/fastlane/metadata/de-DE/release_notes.txt new file mode 100644 index 00000000..713d4615 --- /dev/null +++ b/ios/fastlane/metadata/de-DE/release_notes.txt @@ -0,0 +1 @@ +UI Verbesserungen, Übersetzungen aktualisiert, Fehlerbehebungen diff --git a/ios/fastlane/metadata/de-DE/subtitle.txt b/ios/fastlane/metadata/de-DE/subtitle.txt new file mode 100644 index 00000000..d5f6172e --- /dev/null +++ b/ios/fastlane/metadata/de-DE/subtitle.txt @@ -0,0 +1 @@ +OpenSource Fitness-Tracker diff --git a/ios/fastlane/metadata/de-DE/support_url.txt b/ios/fastlane/metadata/de-DE/support_url.txt new file mode 100644 index 00000000..c7a2218b --- /dev/null +++ b/ios/fastlane/metadata/de-DE/support_url.txt @@ -0,0 +1 @@ +https://wger.de/en/software/about-us diff --git a/ios/fastlane/metadata/primary_category.txt b/ios/fastlane/metadata/primary_category.txt new file mode 100644 index 00000000..16340f75 --- /dev/null +++ b/ios/fastlane/metadata/primary_category.txt @@ -0,0 +1 @@ +HEALTH_AND_FITNESS diff --git a/ios/fastlane/metadata/primary_first_sub_category.txt b/ios/fastlane/metadata/primary_first_sub_category.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ios/fastlane/metadata/primary_first_sub_category.txt @@ -0,0 +1 @@ + diff --git a/ios/fastlane/metadata/primary_second_sub_category.txt b/ios/fastlane/metadata/primary_second_sub_category.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ios/fastlane/metadata/primary_second_sub_category.txt @@ -0,0 +1 @@ + diff --git a/ios/fastlane/metadata/review_information/demo_password.txt b/ios/fastlane/metadata/review_information/demo_password.txt new file mode 100644 index 00000000..7e0defbb --- /dev/null +++ b/ios/fastlane/metadata/review_information/demo_password.txt @@ -0,0 +1 @@ +flutteruser diff --git a/ios/fastlane/metadata/review_information/demo_user.txt b/ios/fastlane/metadata/review_information/demo_user.txt new file mode 100644 index 00000000..4eb8387f --- /dev/null +++ b/ios/fastlane/metadata/review_information/demo_user.txt @@ -0,0 +1 @@ +user diff --git a/ios/fastlane/metadata/review_information/email_address.txt b/ios/fastlane/metadata/review_information/email_address.txt new file mode 100644 index 00000000..b115c6d9 --- /dev/null +++ b/ios/fastlane/metadata/review_information/email_address.txt @@ -0,0 +1 @@ +software@thweb.net diff --git a/ios/fastlane/metadata/review_information/first_name.txt b/ios/fastlane/metadata/review_information/first_name.txt new file mode 100644 index 00000000..5089231f --- /dev/null +++ b/ios/fastlane/metadata/review_information/first_name.txt @@ -0,0 +1 @@ +Peter diff --git a/ios/fastlane/metadata/review_information/last_name.txt b/ios/fastlane/metadata/review_information/last_name.txt new file mode 100644 index 00000000..4c74f8e7 --- /dev/null +++ b/ios/fastlane/metadata/review_information/last_name.txt @@ -0,0 +1 @@ +Thaler diff --git a/ios/fastlane/metadata/review_information/notes.txt b/ios/fastlane/metadata/review_information/notes.txt new file mode 100644 index 00000000..37ceff1c --- /dev/null +++ b/ios/fastlane/metadata/review_information/notes.txt @@ -0,0 +1,5 @@ +Testserver: https://wger-master.rge.uber.space + +ui improvements, bugfixes + + diff --git a/ios/fastlane/metadata/review_information/phone_number.txt b/ios/fastlane/metadata/review_information/phone_number.txt new file mode 100644 index 00000000..3203533e --- /dev/null +++ b/ios/fastlane/metadata/review_information/phone_number.txt @@ -0,0 +1 @@ ++436805529332 diff --git a/ios/fastlane/metadata/secondary_category.txt b/ios/fastlane/metadata/secondary_category.txt new file mode 100644 index 00000000..90b0c7ba --- /dev/null +++ b/ios/fastlane/metadata/secondary_category.txt @@ -0,0 +1 @@ +FOOD_AND_DRINK diff --git a/ios/fastlane/metadata/secondary_first_sub_category.txt b/ios/fastlane/metadata/secondary_first_sub_category.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ios/fastlane/metadata/secondary_first_sub_category.txt @@ -0,0 +1 @@ + diff --git a/ios/fastlane/metadata/secondary_second_sub_category.txt b/ios/fastlane/metadata/secondary_second_sub_category.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/ios/fastlane/metadata/secondary_second_sub_category.txt @@ -0,0 +1 @@ + diff --git a/ios/fastlane/screenshots/README.txt b/ios/fastlane/screenshots/README.txt new file mode 100644 index 00000000..948c580c --- /dev/null +++ b/ios/fastlane/screenshots/README.txt @@ -0,0 +1,30 @@ +## Screenshots Naming Rules + +Put all screenshots you want to use inside the folder of its language (e.g. `en-US`). +The device type will automatically be recognized using the image resolution. + +The screenshots can be named whatever you want, but keep in mind they are sorted +alphabetically, in a human-friendly way. See https://github.com/fastlane/fastlane/pull/18200 for more details. + +### Exceptions + +#### iPad Pro (3rd Gen) 12.9" + +Since iPad Pro (3rd Gen) 12.9" and iPad Pro (2nd Gen) 12.9" have the same image +resolution, screenshots of the iPad Pro (3rd gen) 12.9" must contain either the +string `iPad Pro (12.9-inch) (3rd generation)`, `IPAD_PRO_3GEN_129`, or `ipadPro129` +(App Store Connect's internal naming of the display family for the 3rd generation iPad Pro) +in its filename to be assigned the correct display family and to be uploaded to +the correct screenshot slot in your app's metadata. + +### Other Platforms + +#### Apple TV + +Apple TV screenshots should be stored in a subdirectory named `appleTV` with language +folders inside of it. + +#### iMessage + +iMessage screenshots, like the Apple TV ones, should also be stored in a subdirectory +named `iMessage`, with language folders inside of it. diff --git a/ios/fastlane/screenshots/de-DE/0_APP_IPHONE_55_0.png b/ios/fastlane/screenshots/de-DE/0_APP_IPHONE_55_0.png new file mode 100644 index 00000000..0c310ad1 Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/0_APP_IPHONE_55_0.png differ diff --git a/ios/fastlane/screenshots/de-DE/0_APP_IPHONE_67_0.jpg b/ios/fastlane/screenshots/de-DE/0_APP_IPHONE_67_0.jpg new file mode 100644 index 00000000..ce5912d2 Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/0_APP_IPHONE_67_0.jpg differ diff --git a/ios/fastlane/screenshots/de-DE/1_APP_IPHONE_55_1.png b/ios/fastlane/screenshots/de-DE/1_APP_IPHONE_55_1.png new file mode 100644 index 00000000..f139cc10 Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/1_APP_IPHONE_55_1.png differ diff --git a/ios/fastlane/screenshots/de-DE/1_APP_IPHONE_67_1.jpg b/ios/fastlane/screenshots/de-DE/1_APP_IPHONE_67_1.jpg new file mode 100644 index 00000000..d985ecf9 Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/1_APP_IPHONE_67_1.jpg differ diff --git a/ios/fastlane/screenshots/de-DE/2_APP_IPHONE_55_2.png b/ios/fastlane/screenshots/de-DE/2_APP_IPHONE_55_2.png new file mode 100644 index 00000000..95efa1c7 Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/2_APP_IPHONE_55_2.png differ diff --git a/ios/fastlane/screenshots/de-DE/2_APP_IPHONE_67_2.jpg b/ios/fastlane/screenshots/de-DE/2_APP_IPHONE_67_2.jpg new file mode 100644 index 00000000..ed795bbc Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/2_APP_IPHONE_67_2.jpg differ diff --git a/ios/fastlane/screenshots/de-DE/3_APP_IPHONE_55_3.png b/ios/fastlane/screenshots/de-DE/3_APP_IPHONE_55_3.png new file mode 100644 index 00000000..febc639d Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/3_APP_IPHONE_55_3.png differ diff --git a/ios/fastlane/screenshots/de-DE/3_APP_IPHONE_67_3.jpg b/ios/fastlane/screenshots/de-DE/3_APP_IPHONE_67_3.jpg new file mode 100644 index 00000000..78e989ec Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/3_APP_IPHONE_67_3.jpg differ diff --git a/ios/fastlane/screenshots/de-DE/4_APP_IPHONE_55_4.png b/ios/fastlane/screenshots/de-DE/4_APP_IPHONE_55_4.png new file mode 100644 index 00000000..5f0cb1e3 Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/4_APP_IPHONE_55_4.png differ diff --git a/ios/fastlane/screenshots/de-DE/4_APP_IPHONE_67_4.jpg b/ios/fastlane/screenshots/de-DE/4_APP_IPHONE_67_4.jpg new file mode 100644 index 00000000..c8094da7 Binary files /dev/null and b/ios/fastlane/screenshots/de-DE/4_APP_IPHONE_67_4.jpg differ diff --git a/l10n.yaml b/l10n.yaml index 3c41bfca..56bfbe12 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -1,4 +1,5 @@ arb-dir: lib/l10n +output-dir: lib/l10n/generated template-arb-file: app_en.arb output-localization-file: app_localizations.dart nullable-getter: false diff --git a/lib/core/validators.dart b/lib/core/validators.dart new file mode 100644 index 00000000..c9e3e835 --- /dev/null +++ b/lib/core/validators.dart @@ -0,0 +1,29 @@ +import 'package:wger/l10n/generated/app_localizations.dart'; + +String? validateUrl(String? value, AppLocalizations i18n, {bool required = true}) { + // Required? + if (required && (value == null || value.trim().isEmpty)) { + return i18n.enterValue; + } + + if (!required && (value == null || value.trim().isEmpty)) { + return null; + } + value = value!.trim(); + + if (!value.startsWith('http://') && !value.startsWith('https://')) { + return i18n.invalidUrl; + } + + // Try to parse as URI + try { + final uri = Uri.parse(value); + if (!uri.hasScheme || !uri.hasAuthority) { + return i18n.invalidUrl; + } + } catch (e) { + return i18n.invalidUrl; + } + + return null; +} diff --git a/lib/database/exercises/exercise_database.dart b/lib/database/exercises/exercise_database.dart index 10c08ee0..e7c36a6e 100644 --- a/lib/database/exercises/exercise_database.dart +++ b/lib/database/exercises/exercise_database.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:drift/drift.dart'; import 'package:drift/native.dart'; +import 'package:logging/logging.dart'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; import 'package:wger/database/exercises/type_converters.dart'; @@ -68,6 +69,8 @@ class Equipments extends Table { @DriftDatabase(tables: [Exercises, Muscles, Equipments, Categories, Languages]) class ExerciseDatabase extends _$ExerciseDatabase { + final _logger = Logger('ExerciseDatabase'); + ExerciseDatabase() : super(_openConnection()); // Named constructor for creating in-memory database @@ -75,31 +78,32 @@ class ExerciseDatabase extends _$ExerciseDatabase { /// Note that this needs to be bumped if the JSON response from the server changes @override - int get schemaVersion => 1; + int get schemaVersion => 3; /// There is not really a migration strategy. If we bump the version /// number, delete everything and recreate the new tables. The provider /// will fetch everything as needed from the server @override MigrationStrategy get migration => MigrationStrategy( - onUpgrade: (m, from, to) async { - // no-op, but needs to be defined - return; - }, - beforeOpen: (openingDetails) async { - if (openingDetails.hadUpgrade) { - final m = createMigrator(); - for (final table in allTables) { - await m.deleteTable(table.actualTableName); - await m.createTable(table); - } - } - }, - ); + onUpgrade: (m, from, to) async { + // no-op, but needs to be defined + return; + }, + beforeOpen: (openingDetails) async { + if (openingDetails.hadUpgrade) { + final m = createMigrator(); + for (final table in allTables) { + await m.deleteTable(table.actualTableName); + await m.createTable(table); + } + } + }, + ); Future deleteEverything() { return transaction(() async { for (final table in allTables) { + _logger.info('Deleting db cache table ${table.actualTableName}'); await delete(table).go(); } }); diff --git a/lib/database/exercises/exercise_database.g.dart b/lib/database/exercises/exercise_database.g.dart index 86a984c8..6da378e2 100644 --- a/lib/database/exercises/exercise_database.g.dart +++ b/lib/database/exercises/exercise_database.g.dart @@ -3,44 +3,65 @@ part of 'exercise_database.dart'; // ignore_for_file: type=lint -class $ExercisesTable extends Exercises - with TableInfo<$ExercisesTable, ExerciseTable> { +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); + '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'); + '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'); + '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); + '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}) { + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { final context = VerificationContext(); final data = instance.toColumns(true); if (data.containsKey('id')) { @@ -49,24 +70,23 @@ class $ExercisesTable extends Exercises context.missing(_idMeta); } if (data.containsKey('data')) { - context.handle( - _dataMeta, this.data.isAcceptableOrUnknown(data['data']!, _dataMeta)); + 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)); + _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)); + _lastFetchedMeta, + lastFetched.isAcceptableOrUnknown(data['last_fetched']!, _lastFetchedMeta), + ); } else if (isInserting) { context.missing(_lastFetchedMeta); } @@ -75,18 +95,21 @@ class $ExercisesTable extends Exercises @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'])!, + 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'], + )!, ); } @@ -105,11 +128,14 @@ class ExerciseTable extends DataClass implements Insertable { /// 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}); + + const ExerciseTable({ + required this.id, + required this.data, + required this.lastUpdate, + required this.lastFetched, + }); + @override Map toColumns(bool nullToAbsent) { final map = {}; @@ -129,8 +155,7 @@ class ExerciseTable extends DataClass implements Insertable { ); } - factory ExerciseTable.fromJson(Map json, - {ValueSerializer? serializer}) { + factory ExerciseTable.fromJson(Map json, {ValueSerializer? serializer}) { serializer ??= driftRuntimeOptions.defaultSerializer; return ExerciseTable( id: serializer.fromJson(json['id']), @@ -139,6 +164,7 @@ class ExerciseTable extends DataClass implements Insertable { lastFetched: serializer.fromJson(json['lastFetched']), ); } + @override Map toJson({ValueSerializer? serializer}) { serializer ??= driftRuntimeOptions.defaultSerializer; @@ -150,25 +176,20 @@ class ExerciseTable extends DataClass implements Insertable { }; } - ExerciseTable copyWith( - {int? id, - String? data, - DateTime? lastUpdate, - DateTime? 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, ); + ExerciseTable copyWithCompanion(ExercisesCompanion data) { return ExerciseTable( id: data.id.present ? data.id.value : this.id, data: data.data.present ? data.data.value : this.data, - lastUpdate: - data.lastUpdate.present ? data.lastUpdate.value : this.lastUpdate, - lastFetched: - data.lastFetched.present ? data.lastFetched.value : this.lastFetched, + lastUpdate: data.lastUpdate.present ? data.lastUpdate.value : this.lastUpdate, + lastFetched: data.lastFetched.present ? data.lastFetched.value : this.lastFetched, ); } @@ -185,6 +206,7 @@ class ExerciseTable extends DataClass implements Insertable { @override int get hashCode => Object.hash(id, data, lastUpdate, lastFetched); + @override bool operator ==(Object other) => identical(this, other) || @@ -201,6 +223,7 @@ class ExercisesCompanion extends UpdateCompanion { final Value lastUpdate; final Value lastFetched; final Value rowid; + const ExercisesCompanion({ this.id = const Value.absent(), this.data = const Value.absent(), @@ -208,16 +231,18 @@ class ExercisesCompanion extends UpdateCompanion { 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); + }) : id = Value(id), + data = Value(data), + lastUpdate = Value(lastUpdate), + lastFetched = Value(lastFetched); + static Insertable custom({ Expression? id, Expression? data, @@ -234,12 +259,13 @@ class ExercisesCompanion extends UpdateCompanion { }); } - ExercisesCompanion copyWith( - {Value? id, - Value? data, - Value? lastUpdate, - Value? lastFetched, - Value? rowid}) { + ExercisesCompanion copyWith({ + Value? id, + Value? data, + Value? lastUpdate, + Value? lastFetched, + Value? rowid, + }) { return ExercisesCompanion( id: id ?? this.id, data: data ?? this.data, @@ -287,28 +313,42 @@ 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'); + 'id', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); @override - late final GeneratedColumnWithTypeConverter data = - GeneratedColumn('data', aliasedName, false, - type: DriftSqlType.string, requiredDuringInsert: true) - .withConverter($MusclesTable.$converterdata); + 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}) { + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { final context = VerificationContext(); final data = instance.toColumns(true); if (data.containsKey('id')) { @@ -316,20 +356,20 @@ class $MusclesTable extends Muscles with TableInfo<$MusclesTable, MuscleTable> { } 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'])!), + id: attachedDatabase.typeMapping.read(DriftSqlType.int, data['${effectivePrefix}id'])!, + data: $MusclesTable.$converterdata.fromSql( + attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}data'])!, + ), ); } @@ -344,7 +384,9 @@ class $MusclesTable extends Muscles with TableInfo<$MusclesTable, MuscleTable> { 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 = {}; @@ -356,20 +398,17 @@ class MuscleTable extends DataClass implements Insertable { } MusclesCompanion toCompanion(bool nullToAbsent) { - return MusclesCompanion( - id: Value(id), - data: Value(data), - ); + return MusclesCompanion(id: Value(id), data: Value(data)); } - factory MuscleTable.fromJson(Map json, - {ValueSerializer? serializer}) { + 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; @@ -379,10 +418,9 @@ class MuscleTable extends DataClass implements Insertable { }; } - MuscleTable copyWith({int? id, Muscle? data}) => MuscleTable( - id: id ?? this.id, - data: data ?? this.data, - ); + MuscleTable copyWith({int? id, Muscle? data}) => + MuscleTable(id: id ?? this.id, data: data ?? this.data); + MuscleTable copyWithCompanion(MusclesCompanion data) { return MuscleTable( id: data.id.present ? data.id.value : this.id, @@ -401,6 +439,7 @@ class MuscleTable extends DataClass implements Insertable { @override int get hashCode => Object.hash(id, data); + @override bool operator ==(Object other) => identical(this, other) || @@ -411,17 +450,20 @@ 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); + }) : id = Value(id), + data = Value(data); + static Insertable custom({ Expression? id, Expression? data, @@ -434,13 +476,8 @@ class MusclesCompanion extends UpdateCompanion { }); } - MusclesCompanion copyWith( - {Value? id, Value? data, Value? rowid}) { - return MusclesCompanion( - id: id ?? this.id, - data: data ?? this.data, - rowid: rowid ?? this.rowid, - ); + MusclesCompanion copyWith({Value? id, Value? data, Value? rowid}) { + return MusclesCompanion(id: id ?? this.id, data: data ?? this.data, rowid: rowid ?? this.rowid); } @override @@ -450,8 +487,7 @@ class MusclesCompanion extends UpdateCompanion { map['id'] = Variable(id.value); } if (data.present) { - map['data'] = - Variable($MusclesTable.$converterdata.toSql(data.value)); + map['data'] = Variable($MusclesTable.$converterdata.toSql(data.value)); } if (rowid.present) { map['rowid'] = Variable(rowid.value); @@ -470,33 +506,46 @@ class MusclesCompanion extends UpdateCompanion { } } -class $EquipmentsTable extends Equipments - with TableInfo<$EquipmentsTable, EquipmentTable> { +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'); + 'id', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); @override - late final GeneratedColumnWithTypeConverter data = - GeneratedColumn('data', aliasedName, false, - type: DriftSqlType.string, requiredDuringInsert: true) - .withConverter($EquipmentsTable.$converterdata); + 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}) { + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { final context = VerificationContext(); final data = instance.toColumns(true); if (data.containsKey('id')) { @@ -504,20 +553,20 @@ class $EquipmentsTable extends Equipments } 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'])!), + id: attachedDatabase.typeMapping.read(DriftSqlType.int, data['${effectivePrefix}id'])!, + data: $EquipmentsTable.$converterdata.fromSql( + attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}data'])!, + ), ); } @@ -526,40 +575,37 @@ class $EquipmentsTable extends Equipments return $EquipmentsTable(attachedDatabase, alias); } - static TypeConverter $converterdata = - const EquipmentConverter(); + 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)); + map['data'] = Variable($EquipmentsTable.$converterdata.toSql(data)); } return map; } EquipmentsCompanion toCompanion(bool nullToAbsent) { - return EquipmentsCompanion( - id: Value(id), - data: Value(data), - ); + return EquipmentsCompanion(id: Value(id), data: Value(data)); } - factory EquipmentTable.fromJson(Map json, - {ValueSerializer? serializer}) { + 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; @@ -569,10 +615,9 @@ class EquipmentTable extends DataClass implements Insertable { }; } - EquipmentTable copyWith({int? id, Equipment? data}) => EquipmentTable( - id: id ?? this.id, - data: data ?? this.data, - ); + EquipmentTable copyWith({int? id, Equipment? data}) => + EquipmentTable(id: id ?? this.id, data: data ?? this.data); + EquipmentTable copyWithCompanion(EquipmentsCompanion data) { return EquipmentTable( id: data.id.present ? data.id.value : this.id, @@ -591,29 +636,31 @@ class EquipmentTable extends DataClass implements Insertable { @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); + (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); + }) : id = Value(id), + data = Value(data); + static Insertable custom({ Expression? id, Expression? data, @@ -626,8 +673,7 @@ class EquipmentsCompanion extends UpdateCompanion { }); } - EquipmentsCompanion copyWith( - {Value? id, Value? data, Value? rowid}) { + EquipmentsCompanion copyWith({Value? id, Value? data, Value? rowid}) { return EquipmentsCompanion( id: id ?? this.id, data: data ?? this.data, @@ -642,8 +688,7 @@ class EquipmentsCompanion extends UpdateCompanion { map['id'] = Variable(id.value); } if (data.present) { - map['data'] = - Variable($EquipmentsTable.$converterdata.toSql(data.value)); + map['data'] = Variable($EquipmentsTable.$converterdata.toSql(data.value)); } if (rowid.present) { map['rowid'] = Variable(rowid.value); @@ -662,33 +707,47 @@ class EquipmentsCompanion extends UpdateCompanion { } } -class $CategoriesTable extends Categories - with TableInfo<$CategoriesTable, CategoryTable> { +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'); + 'id', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); @override late final GeneratedColumnWithTypeConverter data = - GeneratedColumn('data', aliasedName, false, - type: DriftSqlType.string, requiredDuringInsert: true) - .withConverter($CategoriesTable.$converterdata); + 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}) { + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { final context = VerificationContext(); final data = instance.toColumns(true); if (data.containsKey('id')) { @@ -696,20 +755,20 @@ class $CategoriesTable extends Categories } 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'])!), + id: attachedDatabase.typeMapping.read(DriftSqlType.int, data['${effectivePrefix}id'])!, + data: $CategoriesTable.$converterdata.fromSql( + attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}data'])!, + ), ); } @@ -718,40 +777,37 @@ class $CategoriesTable extends Categories return $CategoriesTable(attachedDatabase, alias); } - static TypeConverter $converterdata = - const ExerciseCategoryConverter(); + 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)); + map['data'] = Variable($CategoriesTable.$converterdata.toSql(data)); } return map; } CategoriesCompanion toCompanion(bool nullToAbsent) { - return CategoriesCompanion( - id: Value(id), - data: Value(data), - ); + return CategoriesCompanion(id: Value(id), data: Value(data)); } - factory CategoryTable.fromJson(Map json, - {ValueSerializer? serializer}) { + 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; @@ -761,10 +817,9 @@ class CategoryTable extends DataClass implements Insertable { }; } - CategoryTable copyWith({int? id, ExerciseCategory? data}) => CategoryTable( - id: id ?? this.id, - data: data ?? this.data, - ); + CategoryTable copyWith({int? id, ExerciseCategory? data}) => + CategoryTable(id: id ?? this.id, data: data ?? this.data); + CategoryTable copyWithCompanion(CategoriesCompanion data) { return CategoryTable( id: data.id.present ? data.id.value : this.id, @@ -783,29 +838,31 @@ class CategoryTable extends DataClass implements Insertable { @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); + (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); + }) : id = Value(id), + data = Value(data); + static Insertable custom({ Expression? id, Expression? data, @@ -818,8 +875,7 @@ class CategoriesCompanion extends UpdateCompanion { }); } - CategoriesCompanion copyWith( - {Value? id, Value? data, Value? rowid}) { + CategoriesCompanion copyWith({Value? id, Value? data, Value? rowid}) { return CategoriesCompanion( id: id ?? this.id, data: data ?? this.data, @@ -834,8 +890,7 @@ class CategoriesCompanion extends UpdateCompanion { map['id'] = Variable(id.value); } if (data.present) { - map['data'] = - Variable($CategoriesTable.$converterdata.toSql(data.value)); + map['data'] = Variable($CategoriesTable.$converterdata.toSql(data.value)); } if (rowid.present) { map['rowid'] = Variable(rowid.value); @@ -854,33 +909,46 @@ class CategoriesCompanion extends UpdateCompanion { } } -class $LanguagesTable extends Languages - with TableInfo<$LanguagesTable, LanguagesTable> { +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'); + 'id', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); @override - late final GeneratedColumnWithTypeConverter data = - GeneratedColumn('data', aliasedName, false, - type: DriftSqlType.string, requiredDuringInsert: true) - .withConverter($LanguagesTable.$converterdata); + 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}) { + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { final context = VerificationContext(); final data = instance.toColumns(true); if (data.containsKey('id')) { @@ -888,20 +956,20 @@ class $LanguagesTable extends Languages } 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'])!), + id: attachedDatabase.typeMapping.read(DriftSqlType.int, data['${effectivePrefix}id'])!, + data: $LanguagesTable.$converterdata.fromSql( + attachedDatabase.typeMapping.read(DriftSqlType.string, data['${effectivePrefix}data'])!, + ), ); } @@ -910,40 +978,37 @@ class $LanguagesTable extends Languages return $LanguagesTable(attachedDatabase, alias); } - static TypeConverter $converterdata = - const LanguageConverter(); + 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)); + map['data'] = Variable($LanguagesTable.$converterdata.toSql(data)); } return map; } LanguagesCompanion toCompanion(bool nullToAbsent) { - return LanguagesCompanion( - id: Value(id), - data: Value(data), - ); + return LanguagesCompanion(id: Value(id), data: Value(data)); } - factory LanguagesTable.fromJson(Map json, - {ValueSerializer? serializer}) { + 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; @@ -953,10 +1018,9 @@ class LanguagesTable extends DataClass implements Insertable { }; } - LanguagesTable copyWith({int? id, Language? data}) => LanguagesTable( - id: id ?? this.id, - data: data ?? this.data, - ); + LanguagesTable copyWith({int? id, Language? data}) => + LanguagesTable(id: id ?? this.id, data: data ?? this.data); + LanguagesTable copyWithCompanion(LanguagesCompanion data) { return LanguagesTable( id: data.id.present ? data.id.value : this.id, @@ -975,29 +1039,31 @@ class LanguagesTable extends DataClass implements Insertable { @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); + (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); + }) : id = Value(id), + data = Value(data); + static Insertable custom({ Expression? id, Expression? data, @@ -1010,8 +1076,7 @@ class LanguagesCompanion extends UpdateCompanion { }); } - LanguagesCompanion copyWith( - {Value? id, Value? data, Value? rowid}) { + LanguagesCompanion copyWith({Value? id, Value? data, Value? rowid}) { return LanguagesCompanion( id: id ?? this.id, data: data ?? this.data, @@ -1026,8 +1091,7 @@ class LanguagesCompanion extends UpdateCompanion { map['id'] = Variable(id.value); } if (data.present) { - map['data'] = - Variable($LanguagesTable.$converterdata.toSql(data.value)); + map['data'] = Variable($LanguagesTable.$converterdata.toSql(data.value)); } if (rowid.present) { map['rowid'] = Variable(rowid.value); @@ -1048,582 +1112,644 @@ class LanguagesCompanion extends UpdateCompanion { abstract class _$ExerciseDatabase extends GeneratedDatabase { _$ExerciseDatabase(QueryExecutor e) : super(e); + $ExerciseDatabaseManager get managers => $ExerciseDatabaseManager(this); 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]; + List get allSchemaEntities => [ + exercises, + muscles, + equipments, + categories, + languages, + ]; } -typedef $$ExercisesTableCreateCompanionBuilder = ExercisesCompanion Function({ - required int id, - required String data, - required DateTime lastUpdate, - required DateTime lastFetched, - Value rowid, -}); -typedef $$ExercisesTableUpdateCompanionBuilder = ExercisesCompanion Function({ - Value id, - Value data, - Value lastUpdate, - Value lastFetched, - Value rowid, -}); +typedef $$ExercisesTableCreateCompanionBuilder = + ExercisesCompanion Function({ + required int id, + required String data, + required DateTime lastUpdate, + required DateTime lastFetched, + Value rowid, + }); +typedef $$ExercisesTableUpdateCompanionBuilder = + ExercisesCompanion Function({ + Value id, + Value data, + Value lastUpdate, + Value lastFetched, + Value rowid, + }); -class $$ExercisesTableFilterComposer - extends FilterComposer<_$ExerciseDatabase, $ExercisesTable> { - $$ExercisesTableFilterComposer(super.$state); - ColumnFilters get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); +class $$ExercisesTableFilterComposer extends Composer<_$ExerciseDatabase, $ExercisesTable> { + $$ExercisesTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnFilters get data => $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); + ColumnFilters get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnFilters(column)); - ColumnFilters get lastUpdate => $state.composableBuilder( - column: $state.table.lastUpdate, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); + ColumnFilters get data => + $composableBuilder(column: $table.data, builder: (column) => ColumnFilters(column)); - ColumnFilters get lastFetched => $state.composableBuilder( - column: $state.table.lastFetched, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); + ColumnFilters get lastUpdate => + $composableBuilder(column: $table.lastUpdate, builder: (column) => ColumnFilters(column)); + + ColumnFilters get lastFetched => + $composableBuilder(column: $table.lastFetched, builder: (column) => ColumnFilters(column)); } -class $$ExercisesTableOrderingComposer - extends OrderingComposer<_$ExerciseDatabase, $ExercisesTable> { - $$ExercisesTableOrderingComposer(super.$state); - ColumnOrderings get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); +class $$ExercisesTableOrderingComposer extends Composer<_$ExerciseDatabase, $ExercisesTable> { + $$ExercisesTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnOrderings get data => $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); + ColumnOrderings get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnOrderings(column)); - ColumnOrderings get lastUpdate => $state.composableBuilder( - column: $state.table.lastUpdate, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); + ColumnOrderings get data => + $composableBuilder(column: $table.data, builder: (column) => ColumnOrderings(column)); - ColumnOrderings get lastFetched => $state.composableBuilder( - column: $state.table.lastFetched, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); + ColumnOrderings get lastUpdate => + $composableBuilder(column: $table.lastUpdate, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get lastFetched => + $composableBuilder(column: $table.lastFetched, builder: (column) => ColumnOrderings(column)); } -class $$ExercisesTableTableManager extends RootTableManager< - _$ExerciseDatabase, - $ExercisesTable, - ExerciseTable, - $$ExercisesTableFilterComposer, - $$ExercisesTableOrderingComposer, - $$ExercisesTableCreateCompanionBuilder, - $$ExercisesTableUpdateCompanionBuilder, - ( - ExerciseTable, - BaseReferences<_$ExerciseDatabase, $ExercisesTable, ExerciseTable> - ), - ExerciseTable, - PrefetchHooks Function()> { +class $$ExercisesTableAnnotationComposer extends Composer<_$ExerciseDatabase, $ExercisesTable> { + $$ExercisesTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + + GeneratedColumn get id => $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get data => + $composableBuilder(column: $table.data, builder: (column) => column); + + GeneratedColumn get lastUpdate => + $composableBuilder(column: $table.lastUpdate, builder: (column) => column); + + GeneratedColumn get lastFetched => + $composableBuilder(column: $table.lastFetched, builder: (column) => column); +} + +class $$ExercisesTableTableManager + extends + RootTableManager< + _$ExerciseDatabase, + $ExercisesTable, + ExerciseTable, + $$ExercisesTableFilterComposer, + $$ExercisesTableOrderingComposer, + $$ExercisesTableAnnotationComposer, + $$ExercisesTableCreateCompanionBuilder, + $$ExercisesTableUpdateCompanionBuilder, + (ExerciseTable, BaseReferences<_$ExerciseDatabase, $ExercisesTable, ExerciseTable>), + ExerciseTable, + PrefetchHooks Function() + > { $$ExercisesTableTableManager(_$ExerciseDatabase db, $ExercisesTable table) - : super(TableManagerState( + : super( + TableManagerState( db: db, table: table, - filteringComposer: - $$ExercisesTableFilterComposer(ComposerState(db, table)), - orderingComposer: - $$ExercisesTableOrderingComposer(ComposerState(db, table)), - updateCompanionCallback: ({ - Value id = const Value.absent(), - Value data = const Value.absent(), - Value lastUpdate = const Value.absent(), - Value lastFetched = const Value.absent(), - Value rowid = const Value.absent(), - }) => - ExercisesCompanion( - id: id, - data: data, - lastUpdate: lastUpdate, - lastFetched: lastFetched, - rowid: rowid, - ), - createCompanionCallback: ({ - required int id, - required String data, - required DateTime lastUpdate, - required DateTime lastFetched, - Value rowid = const Value.absent(), - }) => - ExercisesCompanion.insert( - id: id, - data: data, - lastUpdate: lastUpdate, - lastFetched: lastFetched, - rowid: rowid, - ), - withReferenceMapper: (p0) => p0 - .map((e) => (e.readTable(table), BaseReferences(db, table, e))) - .toList(), + createFilteringComposer: () => $$ExercisesTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => $$ExercisesTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$ExercisesTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value data = const Value.absent(), + Value lastUpdate = const Value.absent(), + Value lastFetched = const Value.absent(), + Value rowid = const Value.absent(), + }) => ExercisesCompanion( + id: id, + data: data, + lastUpdate: lastUpdate, + lastFetched: lastFetched, + rowid: rowid, + ), + createCompanionCallback: + ({ + required int id, + required String data, + required DateTime lastUpdate, + required DateTime lastFetched, + Value rowid = const Value.absent(), + }) => ExercisesCompanion.insert( + id: id, + data: data, + lastUpdate: lastUpdate, + lastFetched: lastFetched, + rowid: rowid, + ), + withReferenceMapper: (p0) => + p0.map((e) => (e.readTable(table), BaseReferences(db, table, e))).toList(), prefetchHooksCallback: null, - )); + ), + ); } -typedef $$ExercisesTableProcessedTableManager = ProcessedTableManager< - _$ExerciseDatabase, - $ExercisesTable, - ExerciseTable, - $$ExercisesTableFilterComposer, - $$ExercisesTableOrderingComposer, - $$ExercisesTableCreateCompanionBuilder, - $$ExercisesTableUpdateCompanionBuilder, - ( +typedef $$ExercisesTableProcessedTableManager = + ProcessedTableManager< + _$ExerciseDatabase, + $ExercisesTable, ExerciseTable, - BaseReferences<_$ExerciseDatabase, $ExercisesTable, ExerciseTable> - ), - ExerciseTable, - PrefetchHooks Function()>; -typedef $$MusclesTableCreateCompanionBuilder = MusclesCompanion Function({ - required int id, - required Muscle data, - Value rowid, -}); -typedef $$MusclesTableUpdateCompanionBuilder = MusclesCompanion Function({ - Value id, - Value data, - Value rowid, -}); + $$ExercisesTableFilterComposer, + $$ExercisesTableOrderingComposer, + $$ExercisesTableAnnotationComposer, + $$ExercisesTableCreateCompanionBuilder, + $$ExercisesTableUpdateCompanionBuilder, + (ExerciseTable, BaseReferences<_$ExerciseDatabase, $ExercisesTable, ExerciseTable>), + ExerciseTable, + PrefetchHooks Function() + >; +typedef $$MusclesTableCreateCompanionBuilder = + MusclesCompanion Function({required int id, required Muscle data, Value rowid}); +typedef $$MusclesTableUpdateCompanionBuilder = + MusclesCompanion Function({Value id, Value data, Value rowid}); -class $$MusclesTableFilterComposer - extends FilterComposer<_$ExerciseDatabase, $MusclesTable> { - $$MusclesTableFilterComposer(super.$state); - ColumnFilters get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); +class $$MusclesTableFilterComposer extends Composer<_$ExerciseDatabase, $MusclesTable> { + $$MusclesTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnWithTypeConverterFilters get data => - $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => ColumnWithTypeConverterFilters( - column, - joinBuilders: joinBuilders)); + ColumnFilters get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnFilters(column)); + + ColumnWithTypeConverterFilters get data => $composableBuilder( + column: $table.data, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); } -class $$MusclesTableOrderingComposer - extends OrderingComposer<_$ExerciseDatabase, $MusclesTable> { - $$MusclesTableOrderingComposer(super.$state); - ColumnOrderings get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); +class $$MusclesTableOrderingComposer extends Composer<_$ExerciseDatabase, $MusclesTable> { + $$MusclesTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnOrderings get data => $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); + ColumnOrderings get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get data => + $composableBuilder(column: $table.data, builder: (column) => ColumnOrderings(column)); } -class $$MusclesTableTableManager extends RootTableManager< - _$ExerciseDatabase, - $MusclesTable, - MuscleTable, - $$MusclesTableFilterComposer, - $$MusclesTableOrderingComposer, - $$MusclesTableCreateCompanionBuilder, - $$MusclesTableUpdateCompanionBuilder, - ( - MuscleTable, - BaseReferences<_$ExerciseDatabase, $MusclesTable, MuscleTable> - ), - MuscleTable, - PrefetchHooks Function()> { +class $$MusclesTableAnnotationComposer extends Composer<_$ExerciseDatabase, $MusclesTable> { + $$MusclesTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + + GeneratedColumn get id => $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumnWithTypeConverter get data => + $composableBuilder(column: $table.data, builder: (column) => column); +} + +class $$MusclesTableTableManager + extends + RootTableManager< + _$ExerciseDatabase, + $MusclesTable, + MuscleTable, + $$MusclesTableFilterComposer, + $$MusclesTableOrderingComposer, + $$MusclesTableAnnotationComposer, + $$MusclesTableCreateCompanionBuilder, + $$MusclesTableUpdateCompanionBuilder, + (MuscleTable, BaseReferences<_$ExerciseDatabase, $MusclesTable, MuscleTable>), + MuscleTable, + PrefetchHooks Function() + > { $$MusclesTableTableManager(_$ExerciseDatabase db, $MusclesTable table) - : super(TableManagerState( + : super( + TableManagerState( db: db, table: table, - filteringComposer: - $$MusclesTableFilterComposer(ComposerState(db, table)), - orderingComposer: - $$MusclesTableOrderingComposer(ComposerState(db, table)), - updateCompanionCallback: ({ - Value id = const Value.absent(), - Value data = const Value.absent(), - Value rowid = const Value.absent(), - }) => - MusclesCompanion( - id: id, - data: data, - rowid: rowid, - ), - createCompanionCallback: ({ - required int id, - required Muscle data, - Value rowid = const Value.absent(), - }) => - MusclesCompanion.insert( - id: id, - data: data, - rowid: rowid, - ), - withReferenceMapper: (p0) => p0 - .map((e) => (e.readTable(table), BaseReferences(db, table, e))) - .toList(), + createFilteringComposer: () => $$MusclesTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => $$MusclesTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$MusclesTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value data = const Value.absent(), + Value rowid = const Value.absent(), + }) => MusclesCompanion(id: id, data: data, rowid: rowid), + createCompanionCallback: + ({required int id, required Muscle data, Value rowid = const Value.absent()}) => + MusclesCompanion.insert(id: id, data: data, rowid: rowid), + withReferenceMapper: (p0) => + p0.map((e) => (e.readTable(table), BaseReferences(db, table, e))).toList(), prefetchHooksCallback: null, - )); + ), + ); } -typedef $$MusclesTableProcessedTableManager = ProcessedTableManager< - _$ExerciseDatabase, - $MusclesTable, - MuscleTable, - $$MusclesTableFilterComposer, - $$MusclesTableOrderingComposer, - $$MusclesTableCreateCompanionBuilder, - $$MusclesTableUpdateCompanionBuilder, - ( +typedef $$MusclesTableProcessedTableManager = + ProcessedTableManager< + _$ExerciseDatabase, + $MusclesTable, MuscleTable, - BaseReferences<_$ExerciseDatabase, $MusclesTable, MuscleTable> - ), - MuscleTable, - PrefetchHooks Function()>; -typedef $$EquipmentsTableCreateCompanionBuilder = EquipmentsCompanion Function({ - required int id, - required Equipment data, - Value rowid, -}); -typedef $$EquipmentsTableUpdateCompanionBuilder = EquipmentsCompanion Function({ - Value id, - Value data, - Value rowid, -}); + $$MusclesTableFilterComposer, + $$MusclesTableOrderingComposer, + $$MusclesTableAnnotationComposer, + $$MusclesTableCreateCompanionBuilder, + $$MusclesTableUpdateCompanionBuilder, + (MuscleTable, BaseReferences<_$ExerciseDatabase, $MusclesTable, MuscleTable>), + MuscleTable, + PrefetchHooks Function() + >; +typedef $$EquipmentsTableCreateCompanionBuilder = + EquipmentsCompanion Function({required int id, required Equipment data, Value rowid}); +typedef $$EquipmentsTableUpdateCompanionBuilder = + EquipmentsCompanion Function({Value id, Value data, Value rowid}); -class $$EquipmentsTableFilterComposer - extends FilterComposer<_$ExerciseDatabase, $EquipmentsTable> { - $$EquipmentsTableFilterComposer(super.$state); - ColumnFilters get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); +class $$EquipmentsTableFilterComposer extends Composer<_$ExerciseDatabase, $EquipmentsTable> { + $$EquipmentsTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnWithTypeConverterFilters get data => - $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => ColumnWithTypeConverterFilters( - column, - joinBuilders: joinBuilders)); + ColumnFilters get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnFilters(column)); + + ColumnWithTypeConverterFilters get data => $composableBuilder( + column: $table.data, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); } -class $$EquipmentsTableOrderingComposer - extends OrderingComposer<_$ExerciseDatabase, $EquipmentsTable> { - $$EquipmentsTableOrderingComposer(super.$state); - ColumnOrderings get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); +class $$EquipmentsTableOrderingComposer extends Composer<_$ExerciseDatabase, $EquipmentsTable> { + $$EquipmentsTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnOrderings get data => $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); + ColumnOrderings get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get data => + $composableBuilder(column: $table.data, builder: (column) => ColumnOrderings(column)); } -class $$EquipmentsTableTableManager extends RootTableManager< - _$ExerciseDatabase, - $EquipmentsTable, - EquipmentTable, - $$EquipmentsTableFilterComposer, - $$EquipmentsTableOrderingComposer, - $$EquipmentsTableCreateCompanionBuilder, - $$EquipmentsTableUpdateCompanionBuilder, - ( - EquipmentTable, - BaseReferences<_$ExerciseDatabase, $EquipmentsTable, EquipmentTable> - ), - EquipmentTable, - PrefetchHooks Function()> { +class $$EquipmentsTableAnnotationComposer extends Composer<_$ExerciseDatabase, $EquipmentsTable> { + $$EquipmentsTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + + GeneratedColumn get id => $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumnWithTypeConverter get data => + $composableBuilder(column: $table.data, builder: (column) => column); +} + +class $$EquipmentsTableTableManager + extends + RootTableManager< + _$ExerciseDatabase, + $EquipmentsTable, + EquipmentTable, + $$EquipmentsTableFilterComposer, + $$EquipmentsTableOrderingComposer, + $$EquipmentsTableAnnotationComposer, + $$EquipmentsTableCreateCompanionBuilder, + $$EquipmentsTableUpdateCompanionBuilder, + (EquipmentTable, BaseReferences<_$ExerciseDatabase, $EquipmentsTable, EquipmentTable>), + EquipmentTable, + PrefetchHooks Function() + > { $$EquipmentsTableTableManager(_$ExerciseDatabase db, $EquipmentsTable table) - : super(TableManagerState( + : super( + TableManagerState( db: db, table: table, - filteringComposer: - $$EquipmentsTableFilterComposer(ComposerState(db, table)), - orderingComposer: - $$EquipmentsTableOrderingComposer(ComposerState(db, table)), - updateCompanionCallback: ({ - Value id = const Value.absent(), - Value data = const Value.absent(), - Value rowid = const Value.absent(), - }) => - EquipmentsCompanion( - id: id, - data: data, - rowid: rowid, - ), - createCompanionCallback: ({ - required int id, - required Equipment data, - Value rowid = const Value.absent(), - }) => - EquipmentsCompanion.insert( - id: id, - data: data, - rowid: rowid, - ), - withReferenceMapper: (p0) => p0 - .map((e) => (e.readTable(table), BaseReferences(db, table, e))) - .toList(), + createFilteringComposer: () => $$EquipmentsTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => $$EquipmentsTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$EquipmentsTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value data = const Value.absent(), + Value rowid = const Value.absent(), + }) => EquipmentsCompanion(id: id, data: data, rowid: rowid), + createCompanionCallback: + ({ + required int id, + required Equipment data, + Value rowid = const Value.absent(), + }) => EquipmentsCompanion.insert(id: id, data: data, rowid: rowid), + withReferenceMapper: (p0) => + p0.map((e) => (e.readTable(table), BaseReferences(db, table, e))).toList(), prefetchHooksCallback: null, - )); + ), + ); } -typedef $$EquipmentsTableProcessedTableManager = ProcessedTableManager< - _$ExerciseDatabase, - $EquipmentsTable, - EquipmentTable, - $$EquipmentsTableFilterComposer, - $$EquipmentsTableOrderingComposer, - $$EquipmentsTableCreateCompanionBuilder, - $$EquipmentsTableUpdateCompanionBuilder, - ( +typedef $$EquipmentsTableProcessedTableManager = + ProcessedTableManager< + _$ExerciseDatabase, + $EquipmentsTable, EquipmentTable, - BaseReferences<_$ExerciseDatabase, $EquipmentsTable, EquipmentTable> - ), - EquipmentTable, - PrefetchHooks Function()>; -typedef $$CategoriesTableCreateCompanionBuilder = CategoriesCompanion Function({ - required int id, - required ExerciseCategory data, - Value rowid, -}); -typedef $$CategoriesTableUpdateCompanionBuilder = CategoriesCompanion Function({ - Value id, - Value data, - Value rowid, -}); + $$EquipmentsTableFilterComposer, + $$EquipmentsTableOrderingComposer, + $$EquipmentsTableAnnotationComposer, + $$EquipmentsTableCreateCompanionBuilder, + $$EquipmentsTableUpdateCompanionBuilder, + (EquipmentTable, BaseReferences<_$ExerciseDatabase, $EquipmentsTable, EquipmentTable>), + EquipmentTable, + PrefetchHooks Function() + >; +typedef $$CategoriesTableCreateCompanionBuilder = + CategoriesCompanion Function({ + required int id, + required ExerciseCategory data, + Value rowid, + }); +typedef $$CategoriesTableUpdateCompanionBuilder = + CategoriesCompanion Function({Value id, Value data, Value rowid}); -class $$CategoriesTableFilterComposer - extends FilterComposer<_$ExerciseDatabase, $CategoriesTable> { - $$CategoriesTableFilterComposer(super.$state); - ColumnFilters get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); +class $$CategoriesTableFilterComposer extends Composer<_$ExerciseDatabase, $CategoriesTable> { + $$CategoriesTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnWithTypeConverterFilters - get data => $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => ColumnWithTypeConverterFilters( - column, - joinBuilders: joinBuilders)); + ColumnFilters get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnFilters(column)); + + ColumnWithTypeConverterFilters get data => + $composableBuilder( + column: $table.data, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); } -class $$CategoriesTableOrderingComposer - extends OrderingComposer<_$ExerciseDatabase, $CategoriesTable> { - $$CategoriesTableOrderingComposer(super.$state); - ColumnOrderings get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); +class $$CategoriesTableOrderingComposer extends Composer<_$ExerciseDatabase, $CategoriesTable> { + $$CategoriesTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnOrderings get data => $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); + ColumnOrderings get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get data => + $composableBuilder(column: $table.data, builder: (column) => ColumnOrderings(column)); } -class $$CategoriesTableTableManager extends RootTableManager< - _$ExerciseDatabase, - $CategoriesTable, - CategoryTable, - $$CategoriesTableFilterComposer, - $$CategoriesTableOrderingComposer, - $$CategoriesTableCreateCompanionBuilder, - $$CategoriesTableUpdateCompanionBuilder, - ( - CategoryTable, - BaseReferences<_$ExerciseDatabase, $CategoriesTable, CategoryTable> - ), - CategoryTable, - PrefetchHooks Function()> { +class $$CategoriesTableAnnotationComposer extends Composer<_$ExerciseDatabase, $CategoriesTable> { + $$CategoriesTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + + GeneratedColumn get id => $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumnWithTypeConverter get data => + $composableBuilder(column: $table.data, builder: (column) => column); +} + +class $$CategoriesTableTableManager + extends + RootTableManager< + _$ExerciseDatabase, + $CategoriesTable, + CategoryTable, + $$CategoriesTableFilterComposer, + $$CategoriesTableOrderingComposer, + $$CategoriesTableAnnotationComposer, + $$CategoriesTableCreateCompanionBuilder, + $$CategoriesTableUpdateCompanionBuilder, + (CategoryTable, BaseReferences<_$ExerciseDatabase, $CategoriesTable, CategoryTable>), + CategoryTable, + PrefetchHooks Function() + > { $$CategoriesTableTableManager(_$ExerciseDatabase db, $CategoriesTable table) - : super(TableManagerState( + : super( + TableManagerState( db: db, table: table, - filteringComposer: - $$CategoriesTableFilterComposer(ComposerState(db, table)), - orderingComposer: - $$CategoriesTableOrderingComposer(ComposerState(db, table)), - updateCompanionCallback: ({ - Value id = const Value.absent(), - Value data = const Value.absent(), - Value rowid = const Value.absent(), - }) => - CategoriesCompanion( - id: id, - data: data, - rowid: rowid, - ), - createCompanionCallback: ({ - required int id, - required ExerciseCategory data, - Value rowid = const Value.absent(), - }) => - CategoriesCompanion.insert( - id: id, - data: data, - rowid: rowid, - ), - withReferenceMapper: (p0) => p0 - .map((e) => (e.readTable(table), BaseReferences(db, table, e))) - .toList(), + createFilteringComposer: () => $$CategoriesTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => $$CategoriesTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$CategoriesTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value data = const Value.absent(), + Value rowid = const Value.absent(), + }) => CategoriesCompanion(id: id, data: data, rowid: rowid), + createCompanionCallback: + ({ + required int id, + required ExerciseCategory data, + Value rowid = const Value.absent(), + }) => CategoriesCompanion.insert(id: id, data: data, rowid: rowid), + withReferenceMapper: (p0) => + p0.map((e) => (e.readTable(table), BaseReferences(db, table, e))).toList(), prefetchHooksCallback: null, - )); + ), + ); } -typedef $$CategoriesTableProcessedTableManager = ProcessedTableManager< - _$ExerciseDatabase, - $CategoriesTable, - CategoryTable, - $$CategoriesTableFilterComposer, - $$CategoriesTableOrderingComposer, - $$CategoriesTableCreateCompanionBuilder, - $$CategoriesTableUpdateCompanionBuilder, - ( +typedef $$CategoriesTableProcessedTableManager = + ProcessedTableManager< + _$ExerciseDatabase, + $CategoriesTable, CategoryTable, - BaseReferences<_$ExerciseDatabase, $CategoriesTable, CategoryTable> - ), - CategoryTable, - PrefetchHooks Function()>; -typedef $$LanguagesTableCreateCompanionBuilder = LanguagesCompanion Function({ - required int id, - required Language data, - Value rowid, -}); -typedef $$LanguagesTableUpdateCompanionBuilder = LanguagesCompanion Function({ - Value id, - Value data, - Value rowid, -}); + $$CategoriesTableFilterComposer, + $$CategoriesTableOrderingComposer, + $$CategoriesTableAnnotationComposer, + $$CategoriesTableCreateCompanionBuilder, + $$CategoriesTableUpdateCompanionBuilder, + (CategoryTable, BaseReferences<_$ExerciseDatabase, $CategoriesTable, CategoryTable>), + CategoryTable, + PrefetchHooks Function() + >; +typedef $$LanguagesTableCreateCompanionBuilder = + LanguagesCompanion Function({required int id, required Language data, Value rowid}); +typedef $$LanguagesTableUpdateCompanionBuilder = + LanguagesCompanion Function({Value id, Value data, Value rowid}); -class $$LanguagesTableFilterComposer - extends FilterComposer<_$ExerciseDatabase, $LanguagesTable> { - $$LanguagesTableFilterComposer(super.$state); - ColumnFilters get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnFilters(column, joinBuilders: joinBuilders)); +class $$LanguagesTableFilterComposer extends Composer<_$ExerciseDatabase, $LanguagesTable> { + $$LanguagesTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnWithTypeConverterFilters get data => - $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => ColumnWithTypeConverterFilters( - column, - joinBuilders: joinBuilders)); + ColumnFilters get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnFilters(column)); + + ColumnWithTypeConverterFilters get data => $composableBuilder( + column: $table.data, + builder: (column) => ColumnWithTypeConverterFilters(column), + ); } -class $$LanguagesTableOrderingComposer - extends OrderingComposer<_$ExerciseDatabase, $LanguagesTable> { - $$LanguagesTableOrderingComposer(super.$state); - ColumnOrderings get id => $state.composableBuilder( - column: $state.table.id, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); +class $$LanguagesTableOrderingComposer extends Composer<_$ExerciseDatabase, $LanguagesTable> { + $$LanguagesTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); - ColumnOrderings get data => $state.composableBuilder( - column: $state.table.data, - builder: (column, joinBuilders) => - ColumnOrderings(column, joinBuilders: joinBuilders)); + ColumnOrderings get id => + $composableBuilder(column: $table.id, builder: (column) => ColumnOrderings(column)); + + ColumnOrderings get data => + $composableBuilder(column: $table.data, builder: (column) => ColumnOrderings(column)); } -class $$LanguagesTableTableManager extends RootTableManager< - _$ExerciseDatabase, - $LanguagesTable, - LanguagesTable, - $$LanguagesTableFilterComposer, - $$LanguagesTableOrderingComposer, - $$LanguagesTableCreateCompanionBuilder, - $$LanguagesTableUpdateCompanionBuilder, - ( - LanguagesTable, - BaseReferences<_$ExerciseDatabase, $LanguagesTable, LanguagesTable> - ), - LanguagesTable, - PrefetchHooks Function()> { +class $$LanguagesTableAnnotationComposer extends Composer<_$ExerciseDatabase, $LanguagesTable> { + $$LanguagesTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + + GeneratedColumn get id => $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumnWithTypeConverter get data => + $composableBuilder(column: $table.data, builder: (column) => column); +} + +class $$LanguagesTableTableManager + extends + RootTableManager< + _$ExerciseDatabase, + $LanguagesTable, + LanguagesTable, + $$LanguagesTableFilterComposer, + $$LanguagesTableOrderingComposer, + $$LanguagesTableAnnotationComposer, + $$LanguagesTableCreateCompanionBuilder, + $$LanguagesTableUpdateCompanionBuilder, + (LanguagesTable, BaseReferences<_$ExerciseDatabase, $LanguagesTable, LanguagesTable>), + LanguagesTable, + PrefetchHooks Function() + > { $$LanguagesTableTableManager(_$ExerciseDatabase db, $LanguagesTable table) - : super(TableManagerState( + : super( + TableManagerState( db: db, table: table, - filteringComposer: - $$LanguagesTableFilterComposer(ComposerState(db, table)), - orderingComposer: - $$LanguagesTableOrderingComposer(ComposerState(db, table)), - updateCompanionCallback: ({ - Value id = const Value.absent(), - Value data = const Value.absent(), - Value rowid = const Value.absent(), - }) => - LanguagesCompanion( - id: id, - data: data, - rowid: rowid, - ), - createCompanionCallback: ({ - required int id, - required Language data, - Value rowid = const Value.absent(), - }) => - LanguagesCompanion.insert( - id: id, - data: data, - rowid: rowid, - ), - withReferenceMapper: (p0) => p0 - .map((e) => (e.readTable(table), BaseReferences(db, table, e))) - .toList(), + createFilteringComposer: () => $$LanguagesTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => $$LanguagesTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$LanguagesTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value data = const Value.absent(), + Value rowid = const Value.absent(), + }) => LanguagesCompanion(id: id, data: data, rowid: rowid), + createCompanionCallback: + ({ + required int id, + required Language data, + Value rowid = const Value.absent(), + }) => LanguagesCompanion.insert(id: id, data: data, rowid: rowid), + withReferenceMapper: (p0) => + p0.map((e) => (e.readTable(table), BaseReferences(db, table, e))).toList(), prefetchHooksCallback: null, - )); + ), + ); } -typedef $$LanguagesTableProcessedTableManager = ProcessedTableManager< - _$ExerciseDatabase, - $LanguagesTable, - LanguagesTable, - $$LanguagesTableFilterComposer, - $$LanguagesTableOrderingComposer, - $$LanguagesTableCreateCompanionBuilder, - $$LanguagesTableUpdateCompanionBuilder, - ( +typedef $$LanguagesTableProcessedTableManager = + ProcessedTableManager< + _$ExerciseDatabase, + $LanguagesTable, LanguagesTable, - BaseReferences<_$ExerciseDatabase, $LanguagesTable, LanguagesTable> - ), - LanguagesTable, - PrefetchHooks Function()>; + $$LanguagesTableFilterComposer, + $$LanguagesTableOrderingComposer, + $$LanguagesTableAnnotationComposer, + $$LanguagesTableCreateCompanionBuilder, + $$LanguagesTableUpdateCompanionBuilder, + (LanguagesTable, BaseReferences<_$ExerciseDatabase, $LanguagesTable, LanguagesTable>), + LanguagesTable, + PrefetchHooks Function() + >; class $ExerciseDatabaseManager { final _$ExerciseDatabase _db; + $ExerciseDatabaseManager(this._db); - $$ExercisesTableTableManager get exercises => - $$ExercisesTableTableManager(_db, _db.exercises); - $$MusclesTableTableManager get muscles => - $$MusclesTableTableManager(_db, _db.muscles); + + $$ExercisesTableTableManager get exercises => $$ExercisesTableTableManager(_db, _db.exercises); + + $$MusclesTableTableManager get muscles => $$MusclesTableTableManager(_db, _db.muscles); + $$EquipmentsTableTableManager get equipments => $$EquipmentsTableTableManager(_db, _db.equipments); + $$CategoriesTableTableManager get categories => $$CategoriesTableTableManager(_db, _db.categories); - $$LanguagesTableTableManager get languages => - $$LanguagesTableTableManager(_db, _db.languages); + + $$LanguagesTableTableManager get languages => $$LanguagesTableTableManager(_db, _db.languages); } diff --git a/lib/database/exercises/type_converters.dart b/lib/database/exercises/type_converters.dart index b494aa2a..77d54559 100644 --- a/lib/database/exercises/type_converters.dart +++ b/lib/database/exercises/type_converters.dart @@ -1,67 +1,11 @@ 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