From 1f98606fc837f010ae76fd7bd5a2b1dc2b6acd0c Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 15:55:41 +0300 Subject: [PATCH 01/34] feat: test-flight-cd.yaml --- .gitea/workflows/test-flight-cd.yaml | 36 + .../arm64-v8a/configure_fingerprint.bin | 24 +- .../armeabi-v7a/configure_fingerprint.bin | 24 +- .../4y1z256o/x86/configure_fingerprint.bin | 24 +- .../4y1z256o/x86_64/configure_fingerprint.bin | 24 +- lib/generated/intl/messages_all.dart | 13 +- lib/generated/intl/messages_en.dart | 1048 +++++++++-------- lib/generated/intl/messages_ru.dart | 646 +++++----- lib/generated/l10n.dart | 964 +++------------ 9 files changed, 1162 insertions(+), 1641 deletions(-) create mode 100644 .gitea/workflows/test-flight-cd.yaml diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml new file mode 100644 index 00000000..730ab459 --- /dev/null +++ b/.gitea/workflows/test-flight-cd.yaml @@ -0,0 +1,36 @@ +name: "Build Test Flight" +on: + pull_request: + branches: + - test-flight + +jobs: + build: + runs-on: mac-mini + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Import code sign + uses: http://gitea.office.local:3000/mso7nueh/import-codesign-certs + with: + p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }} + p12-password: ${{ secrets.CERTIFICATES_PASSWORD }} + + - name: Download provisioning + uses: http://gitea.office.local:3000/mso7nueh/apple-provisioning-profiles-downloader + with: + bundle-id: com.eatvioapp.app + issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} + api-key-id: ${{ secrets.APPSTORE_KEY_ID }} + api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} + + - run: ./Build + + - name: Upload to TestFlight + uses: http://gitea.office.local:3000/mso7nueh/upload-testflight-build + with: + app-path: .build/Artifacts/EatvioApp.ipa/EatvioApp.ipa + issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} + api-key-id: ${{ secrets.APPSTORE_KEY_ID }} + api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin index 37cd8131..ef12cabb 100644 --- a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Loga _ ]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ðú’ýØ2  �ë„ÖØ2^ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ½槛Ú2  �ë„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  Ðú’ýØ2§ ‡ë„ÖØ2c +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  ½槛Ú2§ ‡ë„ÖØ2c a -_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  Ðú’ýØ2² ‰ë„ÖØ2P +_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  ½槛Ú2² ‰ë„ÖØ2P N -L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  Ðú’ýØ2œÃ çê„ÖØ2T +L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  ½槛Ú2œÃ çê„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  Ðú’ýØ2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  ½槛Ú2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  Ðú’ýØ2 P ‰ë„ÖØ2Z +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  ½槛Ú2 P ‰ë„ÖØ2Z X -V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  Ðú’ýØ2^ +V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  ½槛Ú2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  Ðú’ýØ2 d +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  ½槛Ú2 d b -`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  Ðú’ýØ2 +`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  ½槛Ú2 ‚ ‰ë„ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  Ðú’ýØ2  ( ‰ë„ÖØ2\ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  ½槛Ú2  ( ‰ë„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  Ðú’ýØ2  O ‰ë„ÖØ2T +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  ½槛Ú2  O ‰ë„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Ðú’ýØ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ½槛Ú2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin index 88bd307b..96dcc320 100644 --- a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Logc a _/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  б“ýØ2  ’ò„ÖØ2` +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ã槛Ú2  ’ò„ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  б“ýØ2« ”ò„ÖØ2e +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  Ã槛Ú2« ”ò„ÖØ2e c -a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  б“ýØ2¶ –ò„ÖØ2R +a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  Ã槛Ú2¶ –ò„ÖØ2R P -N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  б“ýØ2¨Ã þñ„ÖØ2V +N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  Ã槛Ú2¨Ã þñ„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  б“ýØ2[ +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  Ã槛Ú2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  б“ýØ2 P –ò„ÖØ2\ +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  Ã槛Ú2 P –ò„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  б“ýØ2` +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  Ã槛Ú2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  б“ýØ2 f +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  Ã槛Ú2 f d -b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  б“ýØ2 +b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  Ã槛Ú2 Œ –ò„ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  б“ýØ2  ( –ò„ÖØ2^ +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  Ã槛Ú2  ( –ò„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  б“ýØ2  Q –ò„ÖØ2T +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  Ã槛Ú2  Q –ò„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  б“ýØ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Ã槛Ú2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin index 8d9c1f45..d983153b 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log[ Y W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¢±“ýØ2  Üû„ÖØ2X +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  É槛Ú2  Üû„ÖØ2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  ¢±“ýØ2› Ýû„ÖØ2] +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  É槛Ú2› Ýû„ÖØ2] [ -Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  ¢±“ýØ2¦ Þû„ÖØ2J +Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  É槛Ú2¦ Þû„ÖØ2J H -F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  ¢±“ýØ2øÂ Ïû„ÖØ2N +F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  É槛Ú2øÂ Ïû„ÖØ2N L -J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  ¢±“ýØ2S +J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  É槛Ú2S Q -O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  ¢±“ýØ2 P ßû„ÖØ2T +O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  Ê槛Ú2 P ßû„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  ¢±“ýØ2X +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  Ê槛Ú2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  ¢±“ýØ2 ^ +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  Ê槛Ú2 ^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  ¢±“ýØ2 +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  Ê槛Ú2 ä Þû„ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  ¢±“ýØ2  ( Þû„ÖØ2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  Ê槛Ú2  ( Þû„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  ¢±“ýØ2  I ßû„ÖØ2T +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  Ê槛Ú2  I ßû„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¢±“ýØ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Ê槛Ú2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin index 7ac01c6f..a984b3dd 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log^ \ Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ӱ“ýØ2  ΁…ÖØ2[ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ï槛Ú2  ΁…ÖØ2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  ӱ“ýØ2¡ Ё…ÖØ2` +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  Ï槛Ú2¡ Ё…ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  ӱ“ýØ2¬ ҁ…ÖØ2M +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  Ï槛Ú2¬ ҁ…ÖØ2M K -I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  ӱ“ýØ2ŠÃ »�…ÖØ2Q +I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  Ï槛Ú2ŠÃ »�…ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  ӱ“ýØ2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  Ï槛Ú2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  ӱ“ýØ2 P ԁ…ÖØ2W +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  Ï槛Ú2 P ԁ…ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  ӱ“ýØ2[ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  Ï槛Ú2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  ӱ“ýØ2 a +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  Ï槛Ú2 a _ -]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  ӱ“ýØ2 +]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  Ï槛Ú2 ó Ӂ…ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  ӱ“ýØ2  ( Ӂ…ÖØ2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  Ï槛Ú2  ( Ӂ…ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  ӱ“ýØ2  L Ӂ…ÖØ2T +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  Ï槛Ú2  L Ӂ…ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ӱ“ýØ2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Ï槛Ú2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/lib/generated/intl/messages_all.dart b/lib/generated/intl/messages_all.dart index abae25a5..3139e159 100644 --- a/lib/generated/intl/messages_all.dart +++ b/lib/generated/intl/messages_all.dart @@ -39,8 +39,10 @@ MessageLookupByLibrary? _findExact(String localeName) { /// User programs should call this before using [localeName] for messages. Future initializeMessages(String localeName) { var availableLocale = Intl.verifiedLocale( - localeName, (locale) => _deferredLibraries[locale] != null, - onFailure: (_) => null); + localeName, + (locale) => _deferredLibraries[locale] != null, + onFailure: (_) => null, + ); if (availableLocale == null) { return new SynchronousFuture(false); } @@ -60,8 +62,11 @@ bool _messagesExistFor(String locale) { } MessageLookupByLibrary? _findGeneratedMessagesFor(String locale) { - var actualLocale = - Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null); + var actualLocale = Intl.verifiedLocale( + locale, + _messagesExistFor, + onFailure: (_) => null, + ); if (actualLocale == null) return null; return _findExact(actualLocale); } diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index ab2b76d5..659596b2 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -22,479 +22,577 @@ class MessageLookup extends MessageLookupByLibrary { final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { - "Moscow": MessageLookupByLibrary.simpleMessage("Москва"), - "Russia": MessageLookupByLibrary.simpleMessage("Россия"), - "about_diet": MessageLookupByLibrary.simpleMessage("Об этой диете"), - "about_plan": MessageLookupByLibrary.simpleMessage("Об этом плане"), - "about_recipe": MessageLookupByLibrary.simpleMessage("Об этом рецепте"), - "active": MessageLookupByLibrary.simpleMessage("Активен"), - "active_consultations_count": MessageLookupByLibrary.simpleMessage( - "Кол-во активных консультаций"), - "active_diet_state": MessageLookupByLibrary.simpleMessage("Активная"), - "add": MessageLookupByLibrary.simpleMessage("Добавить"), - "add_card": MessageLookupByLibrary.simpleMessage("Привязать карту"), - "add_cover": MessageLookupByLibrary.simpleMessage("Добавьте обложку"), - "add_measure": MessageLookupByLibrary.simpleMessage("Добавить замер"), - "adding_plan": MessageLookupByLibrary.simpleMessage("Добавление плана"), - "additional_information": - MessageLookupByLibrary.simpleMessage("Дополнительная информация"), - "admin": MessageLookupByLibrary.simpleMessage("Админ"), - "alcohol": MessageLookupByLibrary.simpleMessage("Алкоголь"), - "all": MessageLookupByLibrary.simpleMessage("Все"), - "allergies_presence": - MessageLookupByLibrary.simpleMessage("Наличие аллергии"), - "another_form_of_comment": - MessageLookupByLibrary.simpleMessage("комментария"), - "another_form_of_day": MessageLookupByLibrary.simpleMessage("дня"), - "another_form_of_hour": MessageLookupByLibrary.simpleMessage("часа"), - "another_form_of_minute": MessageLookupByLibrary.simpleMessage("минут"), - "another_form_of_stage": MessageLookupByLibrary.simpleMessage("этапа"), - "answer": MessageLookupByLibrary.simpleMessage("Ответить"), - "archived": MessageLookupByLibrary.simpleMessage("В архиве"), - "authentificate": MessageLookupByLibrary.simpleMessage("Войти"), - "average_pressure": MessageLookupByLibrary.simpleMessage( - "Средние показатели давления:"), - "bodymass_chart": MessageLookupByLibrary.simpleMessage("График ИМТ"), - "by_default": MessageLookupByLibrary.simpleMessage("По умолчянию"), - "calls_for_bullying": - MessageLookupByLibrary.simpleMessage("Призывы к травле"), - "calories": MessageLookupByLibrary.simpleMessage("Калории"), - "can_not_choose_start_date": MessageLookupByLibrary.simpleMessage( - "Дату старта плана невозможно выбрать, пока Вы не привяжите карту"), - "can_not_load_data_please_try_again": - MessageLookupByLibrary.simpleMessage( - "Не удалось загрузить данные. Попробуйте обновить страницу"), - "cancel_diet": MessageLookupByLibrary.simpleMessage("Отменить диету?"), - "cancel_order": MessageLookupByLibrary.simpleMessage("Отменить заказ"), - "carb_type": MessageLookupByLibrary.simpleMessage("Мучное"), - "carb_type_desc": MessageLookupByLibrary.simpleMessage( - "Если вы любите мучные продукты, но хотите придерживаться диеты, вам подходит диета с добавленим мучных блюд на основе цельнозерновых вариантов. В них больше сложных углеводов и клетчатки, что способствует длительному чувству сытости и поддерживает здоровье пищеварительной системы."), - "carbohydrates": MessageLookupByLibrary.simpleMessage("Углеводы"), - "chat": MessageLookupByLibrary.simpleMessage("Чат"), - "check_out_video_recipe": - MessageLookupByLibrary.simpleMessage("Посмотреть видео рецепт"), - "chest": MessageLookupByLibrary.simpleMessage("Грудь"), - "chest_circumference": - MessageLookupByLibrary.simpleMessage("Обхват груди"), - "choose_date": MessageLookupByLibrary.simpleMessage("Выбрать дату"), - "choose_diet_duration": - MessageLookupByLibrary.simpleMessage("Выберите срок диеты"), - "choose_plan_duration": - MessageLookupByLibrary.simpleMessage("Выберите срок плана"), - "choose_plan_start_date": MessageLookupByLibrary.simpleMessage( - "Выберите дату старта плана питания"), - "choose_start_diet_date": MessageLookupByLibrary.simpleMessage( - "Выберите дату старты диеты. Она отобразиться у Вас в дневнике"), - "circumference_empty": MessageLookupByLibrary.simpleMessage( - "Все замеры обязательны к заполнению"), - "circumference_is_not_a_number": MessageLookupByLibrary.simpleMessage( - "Все замеры должны быть числами"), - "circumferences_chart": - MessageLookupByLibrary.simpleMessage("График обхватов"), - "city": MessageLookupByLibrary.simpleMessage("Город"), - "city_of_living": - MessageLookupByLibrary.simpleMessage("Город проживания"), - "comfort": MessageLookupByLibrary.simpleMessage("Комфорт"), - "comment": MessageLookupByLibrary.simpleMessage("комментарий"), - "comments": MessageLookupByLibrary.simpleMessage("Комментарии"), - "comments_plural": MessageLookupByLibrary.simpleMessage("комментариев"), - "complain": MessageLookupByLibrary.simpleMessage("Пожаловаться"), - "complaint": MessageLookupByLibrary.simpleMessage("Жалоба"), - "complaint_question": MessageLookupByLibrary.simpleMessage( - "Что именно в этом материале Вы считаете неприемлемым и нарушающим правила?"), - "complaint_sent": - MessageLookupByLibrary.simpleMessage("Жалоба успешно отправлена"), - "complaint_sent_description": MessageLookupByLibrary.simpleMessage( - "Ваше обращение принято! Мы рассмотрим его в ближайшее время и примем необходимые меры. Спасибо за вашу бдительность и помощь в улучшении нашего сервиса."), - "confirm": MessageLookupByLibrary.simpleMessage("Подтвердить"), - "consultations_count": MessageLookupByLibrary.simpleMessage( - "Кол-во проведенных консулдьтаций"), - "continueButton": MessageLookupByLibrary.simpleMessage("Продолжить"), - "continue_": MessageLookupByLibrary.simpleMessage("Продолжить"), - "copied": MessageLookupByLibrary.simpleMessage("cкопирован"), - "copy_link": MessageLookupByLibrary.simpleMessage("Скопировать ссылку"), - "copy_referral_link": MessageLookupByLibrary.simpleMessage( - "Скопировать пригласительную ссылку"), - "could_not_cancel_diet": - MessageLookupByLibrary.simpleMessage("Не удалось отменить диету"), - "could_not_delete_blog_post": - MessageLookupByLibrary.simpleMessage("Не удалось удалить пост"), - "could_not_launch_video": - MessageLookupByLibrary.simpleMessage("Не удалось запустить видео"), - "could_not_publish_blog_post": MessageLookupByLibrary.simpleMessage( - "Не удалось опубликовать пост"), - "could_not_publish_diet": MessageLookupByLibrary.simpleMessage( - "Не удалось опубликовать диету"), - "could_not_publish_recipe": MessageLookupByLibrary.simpleMessage( - "Не удалось опубликовать рецепт"), - "could_not_send_complain": - MessageLookupByLibrary.simpleMessage("Не удалось отправить жалобу"), - "could_not_update_blog_post": - MessageLookupByLibrary.simpleMessage("Не удалось обновить пост"), - "could_not_update_diet": - MessageLookupByLibrary.simpleMessage("Не удалось обновить диету"), - "country": MessageLookupByLibrary.simpleMessage("Страна"), - "create_diet": MessageLookupByLibrary.simpleMessage("Создание диеты"), - "customer_price": - MessageLookupByLibrary.simpleMessage("Цена для покупателя"), - "date_has_ben_set": MessageLookupByLibrary.simpleMessage( - "Дата старта начала консультации установлена"), - "date_of_birth": MessageLookupByLibrary.simpleMessage("Дата рождения"), - "day": MessageLookupByLibrary.simpleMessage("День"), - "days": MessageLookupByLibrary.simpleMessage("дней"), - "deception": MessageLookupByLibrary.simpleMessage("Обман"), - "deleted": MessageLookupByLibrary.simpleMessage("Удалена"), - "diary": MessageLookupByLibrary.simpleMessage("Дневник"), - "diet": MessageLookupByLibrary.simpleMessage("Диета"), - "diet_author": MessageLookupByLibrary.simpleMessage("Автор диеты"), - "diet_has_been_sent_to_draft": MessageLookupByLibrary.simpleMessage( - "снята с публикации и перенесена в черновик"), - "diet_plan": MessageLookupByLibrary.simpleMessage("План диеты"), - "diet_started": - MessageLookupByLibrary.simpleMessage("Диета уже начата"), - "diet_state": MessageLookupByLibrary.simpleMessage("Статус диеты"), - "diet_type": MessageLookupByLibrary.simpleMessage("Тип диеты"), - "do_you_have_hypertension_tendency": - MessageLookupByLibrary.simpleMessage("Есть ли у вас гипертония?"), - "do_you_have_hypotension_tendency": - MessageLookupByLibrary.simpleMessage("Есть ли у вас гипотония?"), - "do_you_take_pills": MessageLookupByLibrary.simpleMessage( - "Принимаете ли вы лекарства или бады?"), - "down_pressure": - MessageLookupByLibrary.simpleMessage("Нижние показатели давления:"), - "draft": MessageLookupByLibrary.simpleMessage("Черновик"), - "drafted": MessageLookupByLibrary.simpleMessage("Черновики"), - "drugs": MessageLookupByLibrary.simpleMessage("Наркотики"), - "eating_behavior": - MessageLookupByLibrary.simpleMessage("Пищевое поведение"), - "eating_behavior_type": MessageLookupByLibrary.simpleMessage( - "Формирование пищевого поведения"), - "eating_behavior_type_desc": MessageLookupByLibrary.simpleMessage( - "Формирование здорового пищевого поведения — это процесс, который включает в себя изменение привычек и отношения к еде. Он направлен на то, чтобы помочь людям научиться правильно питаться и поддерживать здоровый образ жизни.Основные принципы формирования здорового пищевого поведения: \n● Разнообразие продуктов; \n● Сбалансированный рацион; \n● Питьевой режим; \n● Ограничение вредных продуктов; \n● Регулярные приёмы пищи; \n● Умеренность;Осознанное питание; \n● Физическая активность;"), - "economy": MessageLookupByLibrary.simpleMessage("Эконом"), - "edit": MessageLookupByLibrary.simpleMessage("Редактировать"), - "email": MessageLookupByLibrary.simpleMessage("Электронная почта"), - "email_empty": MessageLookupByLibrary.simpleMessage( - "Необходимо ввести адрес электронной почты"), - "email_invalid": MessageLookupByLibrary.simpleMessage( - "Некорректный адрес электронной почты"), - "enter_additional_information": MessageLookupByLibrary.simpleMessage( - "Введите любую дополнительную информацию на своё усмотрение:"), - "enter_diet_description": - MessageLookupByLibrary.simpleMessage("Введите описание диеты"), - "enter_diet_name": - MessageLookupByLibrary.simpleMessage("Выведите название диеты"), - "enter_information": - MessageLookupByLibrary.simpleMessage("Введите информацию..."), - "exit": MessageLookupByLibrary.simpleMessage("Выйти"), - "expand": MessageLookupByLibrary.simpleMessage("Показать полностью"), - "explicitImage": - MessageLookupByLibrary.simpleMessage("Откровенное изображение"), - "explicitImages": - MessageLookupByLibrary.simpleMessage("Откровенные изображения"), - "explicitImagesDescription": MessageLookupByLibrary.simpleMessage( - "Отправьте жалобу, если кто-то разместил откровенные изображения"), - "extremism": MessageLookupByLibrary.simpleMessage("Экстремизм"), - "fake_documents": - MessageLookupByLibrary.simpleMessage("Поддельные документы"), - "fats": MessageLookupByLibrary.simpleMessage("Жиры"), - "favorite_foods": - MessageLookupByLibrary.simpleMessage("Любимые продукты"), - "favorite_unfavorite_foods": MessageLookupByLibrary.simpleMessage( - "Ваши любимые/нелюбимые продукты питания?"), - "female": MessageLookupByLibrary.simpleMessage("Женский"), - "fill_in_information": - MessageLookupByLibrary.simpleMessage("Заполните информацию:"), - "finish": MessageLookupByLibrary.simpleMessage("Завершить"), - "first_name": MessageLookupByLibrary.simpleMessage("Имя"), - "first_name_empty": MessageLookupByLibrary.simpleMessage( - "Имя обязательно для заполнения"), - "first_name_short": MessageLookupByLibrary.simpleMessage( - "В имени должен быть минимум 1 символ"), - "fit_type": MessageLookupByLibrary.simpleMessage("Поддержание формы"), - "fit_type_desc": MessageLookupByLibrary.simpleMessage( - "План питания для поддержания формы сбалансированный и разнообразный, чтобы обеспечить организм всеми необходимыми питательными веществами. Общие принципы: \n● Дробное питание; \n● Разнообразие продуктов; \n● Контроль порций; \n● Питьевой режим; \n● Ограничение вредных продуктов;"), - "fitness": MessageLookupByLibrary.simpleMessage("Поддержка формы"), - "for_a_month": MessageLookupByLibrary.simpleMessage("За месяц"), - "for_a_week": MessageLookupByLibrary.simpleMessage("За неделю"), - "for_a_year": MessageLookupByLibrary.simpleMessage("За год"), - "for_whole_period_of_time": - MessageLookupByLibrary.simpleMessage("За всё время"), - "fraud": MessageLookupByLibrary.simpleMessage("Мошенничество"), - "fraud_description": MessageLookupByLibrary.simpleMessage( - "Мошенничество с целью наживы. Если вас обманули, пожалуйста, сообщите об этом в правоохранительные органы."), - "from": MessageLookupByLibrary.simpleMessage("от"), - "from_a_to_z": MessageLookupByLibrary.simpleMessage("Название: А-Я"), - "from_z_to_a": MessageLookupByLibrary.simpleMessage("Название: Я-А"), - "gallery": MessageLookupByLibrary.simpleMessage("Галерея"), - "general_info": - MessageLookupByLibrary.simpleMessage("Общая информация"), - "gr": MessageLookupByLibrary.simpleMessage("гр"), - "grams": MessageLookupByLibrary.simpleMessage("гр"), - "has_alergy": MessageLookupByLibrary.simpleMessage("Наличие аллергии"), - "has_hyper": - MessageLookupByLibrary.simpleMessage("Склонность к гипертонии"), - "has_hypo": - MessageLookupByLibrary.simpleMessage("Склонность к гипотонии"), - "hatred": MessageLookupByLibrary.simpleMessage("Оскорбление"), - "hatred_description": - MessageLookupByLibrary.simpleMessage("Враждебные высказывания"), - "height": MessageLookupByLibrary.simpleMessage("Рост"), - "height_measurements": - MessageLookupByLibrary.simpleMessage("Замер роста"), - "hide": MessageLookupByLibrary.simpleMessage("Свернуть"), - "hip_circumference": - MessageLookupByLibrary.simpleMessage("Обхват бедер"), - "hips": MessageLookupByLibrary.simpleMessage("Бедра"), - "hour": MessageLookupByLibrary.simpleMessage("час"), - "hours": MessageLookupByLibrary.simpleMessage("часов"), - "in_progress": MessageLookupByLibrary.simpleMessage("В процессе"), - "inactive_diet_state": MessageLookupByLibrary.simpleMessage("Черновик"), - "infoAboutOrder": - MessageLookupByLibrary.simpleMessage("Информация о заказе"), - "ingredients": MessageLookupByLibrary.simpleMessage("Ингредиенты"), - "initial_measurements": - MessageLookupByLibrary.simpleMessage("Первичные замеры"), - "invited_people_count": - MessageLookupByLibrary.simpleMessage("Количество приглашенных"), - "label": MessageLookupByLibrary.simpleMessage("Название"), - "language": MessageLookupByLibrary.simpleMessage("Язык"), - "last_name": MessageLookupByLibrary.simpleMessage("Фамилия"), - "last_name_empty": MessageLookupByLibrary.simpleMessage( - "Фамилия обязательна для заполнения"), - "last_name_short": MessageLookupByLibrary.simpleMessage( - "В фамилии должен быть минимум 6 символов"), - "lawViolation": - MessageLookupByLibrary.simpleMessage("Нарушение законодательства"), - "lbl_english": MessageLookupByLibrary.simpleMessage("English"), - "light_type": MessageLookupByLibrary.simpleMessage("Легкая"), - "light_type_desc": MessageLookupByLibrary.simpleMessage( - "С некоторыми видами диет можно употреблять алкоголь в умеренных количествах. Рекомендуется совмещать вместе с низкокалорийными закусками."), - "liked_groceries": - MessageLookupByLibrary.simpleMessage("Любимые продукты"), - "link_was_copied": - MessageLookupByLibrary.simpleMessage("Ссылка успешно скопирована"), - "loading": MessageLookupByLibrary.simpleMessage("Загрузка..."), - "lower": MessageLookupByLibrary.simpleMessage("Нижнее"), - "male": MessageLookupByLibrary.simpleMessage("Мужской"), - "meal": MessageLookupByLibrary.simpleMessage("Приём пищи"), - "meat": MessageLookupByLibrary.simpleMessage("Мясо"), - "meat_type": MessageLookupByLibrary.simpleMessage("С мясом"), - "meat_type_desc": MessageLookupByLibrary.simpleMessage( - "Диета с мясом полезная и сбалансированная. Включает в себя нежирное мясо: курицу, индейку, кролика или говядину. В сочетании с овощами получаете все необходимые витамины и минералы. Не забывайте о порциях и старайтесь есть медленно, прислушиваясь к своему организму."), - "milliliter": MessageLookupByLibrary.simpleMessage("мл"), - "minimal_customer_price": MessageLookupByLibrary.simpleMessage( - "Минимальная цена для покупателя: 1200₽"), - "minute": MessageLookupByLibrary.simpleMessage("минута"), - "minutes": MessageLookupByLibrary.simpleMessage("минуты"), - "misrepresentation": - MessageLookupByLibrary.simpleMessage("Введение в заблуждение"), - "misrepresentation_description": MessageLookupByLibrary.simpleMessage( - "Новости, которые могут вызвать широкий резонанс или несут угрозу, распространяемые с целью введения людей в заблуждение."), - "more_about_order": - MessageLookupByLibrary.simpleMessage("Подробнее о заказе"), - "most_new": MessageLookupByLibrary.simpleMessage("Самые новые"), - "most_old": MessageLookupByLibrary.simpleMessage("Самые старые"), - "msg_network_err": - MessageLookupByLibrary.simpleMessage("Сетевая ошибка!"), - "msg_something_went_wrong": - MessageLookupByLibrary.simpleMessage("Что то пошло не так!"), - "my_blog": MessageLookupByLibrary.simpleMessage("Мой блог"), - "my_diets": MessageLookupByLibrary.simpleMessage("Мои диеты"), - "my_plans": MessageLookupByLibrary.simpleMessage("Мои планы"), - "my_settings": MessageLookupByLibrary.simpleMessage("Мои настройки"), - "name_empty": MessageLookupByLibrary.simpleMessage( - "Имя пользователя обязательно для заполнения"), - "name_short": MessageLookupByLibrary.simpleMessage( - "В имени пользователя должно быть минимум 6 символов"), - "nicotine": MessageLookupByLibrary.simpleMessage("Никотин"), - "no": MessageLookupByLibrary.simpleMessage("Нет"), - "no_account": - MessageLookupByLibrary.simpleMessage("У меня нет аккаунта"), - "not_liked_groceries": - MessageLookupByLibrary.simpleMessage("Не любимые продукты"), - "ok": MessageLookupByLibrary.simpleMessage("Хорошо"), - "one_option": MessageLookupByLibrary.simpleMessage("1 опция"), - "option": MessageLookupByLibrary.simpleMessage("Опция"), - "option_content": - MessageLookupByLibrary.simpleMessage("Содержание опции"), - "option_content_hint_text": - MessageLookupByLibrary.simpleMessage("На связи 7 дней в неделю"), - "option_desc": MessageLookupByLibrary.simpleMessage("Описание опции"), - "option_desc_hint_text": MessageLookupByLibrary.simpleMessage( - "Этот план питания для похудения на 7 дней сбалансированный и разнообразный"), - "option_duration": - MessageLookupByLibrary.simpleMessage("Продолжительность опции"), - "option_personal_diet_desc": MessageLookupByLibrary.simpleMessage( - "Опция подразумевает создание индивидуальной диеты"), - "option_title": MessageLookupByLibrary.simpleMessage("Заголовок опции"), - "order": MessageLookupByLibrary.simpleMessage("Порядок"), - "other": MessageLookupByLibrary.simpleMessage("Другое"), - "other_info": MessageLookupByLibrary.simpleMessage("Прочая информация"), - "password": MessageLookupByLibrary.simpleMessage("Пароль"), - "password_confirmation": - MessageLookupByLibrary.simpleMessage("Подтвердите пароль"), - "password_confirmation_mismatch": - MessageLookupByLibrary.simpleMessage("Пароли не совпадают"), - "password_empty": MessageLookupByLibrary.simpleMessage( - "Пароль обязателен для заполнения"), - "password_short": MessageLookupByLibrary.simpleMessage( - "В пароле должно быть минимум 6 символов"), - "pay": MessageLookupByLibrary.simpleMessage("Оплатить"), - "pcs": MessageLookupByLibrary.simpleMessage("шт"), - "personal": MessageLookupByLibrary.simpleMessage("Персональные"), - "personal_diet_state": - MessageLookupByLibrary.simpleMessage("Персональная"), - "photo": MessageLookupByLibrary.simpleMessage("Фото"), - "physical_fitness": - MessageLookupByLibrary.simpleMessage("Физическая форма"), - "place_of_living": - MessageLookupByLibrary.simpleMessage("Место проживания"), - "plan_author": MessageLookupByLibrary.simpleMessage("Автор плана"), - "plan_desc": MessageLookupByLibrary.simpleMessage("Описание плана"), - "plan_desc_example": MessageLookupByLibrary.simpleMessage( - "Большое подробное, привлекательное описание плана"), - "plan_duration": MessageLookupByLibrary.simpleMessage("Срок плана"), - "plan_label_desc": - MessageLookupByLibrary.simpleMessage("План для поддержания формы"), - "plan_type": MessageLookupByLibrary.simpleMessage("Тип плана"), - "plans_complete": - MessageLookupByLibrary.simpleMessage("Пройденные планы"), - "please_try_again_later": MessageLookupByLibrary.simpleMessage( - "Пожалуйста, попробуйте еще раз позже"), - "popular": MessageLookupByLibrary.simpleMessage("Популярные"), - "preferred_language": - MessageLookupByLibrary.simpleMessage("Предпочитаемый язык общения"), - "pressure": MessageLookupByLibrary.simpleMessage("Давление"), - "pressure_empty": MessageLookupByLibrary.simpleMessage( - "Все показатели давления обязательны к заполнению"), - "pressure_is_not_a_number": MessageLookupByLibrary.simpleMessage( - "Все показатели давления должны быть числами"), - "preview": MessageLookupByLibrary.simpleMessage("Превью"), - "price": MessageLookupByLibrary.simpleMessage("Цена"), - "price_explanation": MessageLookupByLibrary.simpleMessage( - "Разница в ценах, это комиссия Итвио"), - "profile": MessageLookupByLibrary.simpleMessage("Профиль"), - "prostitution": MessageLookupByLibrary.simpleMessage("Проституция"), - "proteins": MessageLookupByLibrary.simpleMessage("Белки"), - "publish": MessageLookupByLibrary.simpleMessage("Опубликовать"), - "published": MessageLookupByLibrary.simpleMessage("Опубликованные"), - "published_diets_count": - MessageLookupByLibrary.simpleMessage("Кол-во опубликованных диет"), - "published_posts_count": MessageLookupByLibrary.simpleMessage( - "Количество опубликованных постов"), - "published_recipes_count": MessageLookupByLibrary.simpleMessage( - "Кол-во опубликованных рецептов"), - "rating_and_statistics": - MessageLookupByLibrary.simpleMessage("Рейтинг и статистика"), - "rating_history": - MessageLookupByLibrary.simpleMessage("Начисление рейтинга"), - "recipe_author": MessageLookupByLibrary.simpleMessage("Автор рецепта"), - "recipe_publishing": - MessageLookupByLibrary.simpleMessage("Публикация рецепта"), - "refuse_order": - MessageLookupByLibrary.simpleMessage("Отказаться от заказа"), - "removeFromActive": - MessageLookupByLibrary.simpleMessage("Снять с публикации"), - "save": MessageLookupByLibrary.simpleMessage("Сохранить"), - "send_complain": - MessageLookupByLibrary.simpleMessage("Отправить жалобу"), - "services": MessageLookupByLibrary.simpleMessage("Оказание услуг"), - "settings": MessageLookupByLibrary.simpleMessage("Настройки"), - "sex": MessageLookupByLibrary.simpleMessage("Пол"), - "share": MessageLookupByLibrary.simpleMessage("Поделиться"), - "skip": MessageLookupByLibrary.simpleMessage("Пропустить"), - "slim": MessageLookupByLibrary.simpleMessage("Похудение"), - "slim_type": MessageLookupByLibrary.simpleMessage("Похудение"), - "slim_type_desc": MessageLookupByLibrary.simpleMessage( - "План питания для похудения должен быть разработан с учётом индивидуальных особенностей организма, возраста, пола, уровня физической активности и состояния здоровья. Общие принципы: \n● Снижение калорийности; \n● Сбалансированный рацион; \n● Разнообразие продуктов; \n● Питьевой режим; \n● Ограничение вредных продуктов;"), - "some_error_occurred": - MessageLookupByLibrary.simpleMessage("Упс! Произошла ошибка"), - "some_error_occurred_description": MessageLookupByLibrary.simpleMessage( - "Произошла ошибка. Мы уже работаем над ее устранением. Попробуйте позже."), - "something_went_wrong": - MessageLookupByLibrary.simpleMessage("Упс! Что-то пошло не так"), - "spam": MessageLookupByLibrary.simpleMessage("Спам"), - "spam_description": MessageLookupByLibrary.simpleMessage( - "Отправьте жалобу, если Вы заметили рекламу, размещенную в не предназначенном для этого месте."), - "sport_hobbies": - MessageLookupByLibrary.simpleMessage("Спортивные увлечения"), - "stage": MessageLookupByLibrary.simpleMessage("этап"), - "stages": MessageLookupByLibrary.simpleMessage("этапов"), - "standard": MessageLookupByLibrary.simpleMessage("Стандарт"), - "startDiet": MessageLookupByLibrary.simpleMessage("Начать диету"), - "statistic": MessageLookupByLibrary.simpleMessage("Статистика"), - "step": MessageLookupByLibrary.simpleMessage("Шаг"), - "step_by_step_photo_recipe": - MessageLookupByLibrary.simpleMessage("Пошаговый фоторецепт"), - "successfully_published": - MessageLookupByLibrary.simpleMessage("успешно опубликован"), - "suicide": - MessageLookupByLibrary.simpleMessage("Склонение к самоубийству"), - "takes_pills": - MessageLookupByLibrary.simpleMessage("Принимает лекарства"), - "tell_your_schedule": MessageLookupByLibrary.simpleMessage( - "Расскажите в свободной форме о том как просыпаетесь, когда едите, когда ложитесь спать:"), - "there_is_a_video": MessageLookupByLibrary.simpleMessage("Есть видео"), - "three_options": MessageLookupByLibrary.simpleMessage("3 опции"), - "time": MessageLookupByLibrary.simpleMessage("Время прохождения"), - "toOffer": MessageLookupByLibrary.simpleMessage("Предложить"), - "to_draft": MessageLookupByLibrary.simpleMessage("В черновик"), - "to_order": MessageLookupByLibrary.simpleMessage("Заказать"), - "try_again": MessageLookupByLibrary.simpleMessage("Попробовать снова"), - "type_here_your_complaint": - MessageLookupByLibrary.simpleMessage("Напишите здесь свою жалобу"), - "unfavorite_foods": - MessageLookupByLibrary.simpleMessage("Нелюбимые продукты"), - "up_pressure": MessageLookupByLibrary.simpleMessage( - "Верхние показатели давления:"), - "upper": MessageLookupByLibrary.simpleMessage("Верхнее"), - "user_authorization": - MessageLookupByLibrary.simpleMessage("Аутентификация"), - "user_data": - MessageLookupByLibrary.simpleMessage("Данные пользователя"), - "user_registration": - MessageLookupByLibrary.simpleMessage("Регистрация пользователя"), - "username": MessageLookupByLibrary.simpleMessage("Имя пользователя"), - "vegan": MessageLookupByLibrary.simpleMessage("Веган."), - "vegan_type": MessageLookupByLibrary.simpleMessage("Вегетарианская"), - "vegan_type_desc": MessageLookupByLibrary.simpleMessage( - "Диета основана на потреблении растительной пищи и отказе от продуктов животного происхождения. Такой тип питания может быть разнообразным и вкусным, а также полезным для здоровья."), - "violenceAndHostility": - MessageLookupByLibrary.simpleMessage("Насилие и вражда"), - "violence_against_people_or_animal": - MessageLookupByLibrary.simpleMessage( - "Насилие над людьми или животными"), - "waist": MessageLookupByLibrary.simpleMessage("Талия"), - "waist_circumference": - MessageLookupByLibrary.simpleMessage("Обхват талии"), - "weapon": MessageLookupByLibrary.simpleMessage("Оружие"), - "weight": MessageLookupByLibrary.simpleMessage("Вес"), - "weight_chart": MessageLookupByLibrary.simpleMessage("График веса"), - "weight_measurements": - MessageLookupByLibrary.simpleMessage("Замер веса"), - "wellness": - MessageLookupByLibrary.simpleMessage("Улучшение самочувствия"), - "wellness_type": - MessageLookupByLibrary.simpleMessage("Улучшение самочувствия"), - "wellness_type_desc": MessageLookupByLibrary.simpleMessage( - "Если вы любите мучные продукты, но хотите придерживаться диеты, вам подходит диета с добавленим мучных блюд на основе цельнозерновых вариантов. В них больше сложных углеводов и клетчатки, что способствует длительному чувству сытости и поддерживает здоровье пищеварительной системы."), - "what_do_you_want_to_complaint_about": - MessageLookupByLibrary.simpleMessage( - "На что Вы хотите пожаловаться?"), - "what_is_your_name": - MessageLookupByLibrary.simpleMessage("Как вас зовут?"), - "wrong_credentials": MessageLookupByLibrary.simpleMessage( - "Неверные данные пользователя"), - "you_will_get": MessageLookupByLibrary.simpleMessage("Вы получите"), - "your_blood_pressure": - MessageLookupByLibrary.simpleMessage("Ваше артериальное давление?"), - "your_favorite_sports": - MessageLookupByLibrary.simpleMessage("Ваши спортивные увлечения?"), - "your_gender": MessageLookupByLibrary.simpleMessage("Ваш пол?"), - "your_height": MessageLookupByLibrary.simpleMessage("Ваш рост:"), - "your_rating": MessageLookupByLibrary.simpleMessage("Ваш рейтинг"), - "your_schedule": MessageLookupByLibrary.simpleMessage("Ваш режим дня?"), - "your_weight": MessageLookupByLibrary.simpleMessage("Ваш вес:") - }; + "Moscow": MessageLookupByLibrary.simpleMessage("Москва"), + "Russia": MessageLookupByLibrary.simpleMessage("Россия"), + "about_diet": MessageLookupByLibrary.simpleMessage("Об этой диете"), + "about_plan": MessageLookupByLibrary.simpleMessage("Об этом плане"), + "about_recipe": MessageLookupByLibrary.simpleMessage("Об этом рецепте"), + "active": MessageLookupByLibrary.simpleMessage("Активен"), + "active_consultations_count": MessageLookupByLibrary.simpleMessage( + "Кол-во активных консультаций", + ), + "active_diet_state": MessageLookupByLibrary.simpleMessage("Активная"), + "add": MessageLookupByLibrary.simpleMessage("Добавить"), + "add_card": MessageLookupByLibrary.simpleMessage("Привязать карту"), + "add_cover": MessageLookupByLibrary.simpleMessage("Добавьте обложку"), + "add_measure": MessageLookupByLibrary.simpleMessage("Добавить замер"), + "adding_plan": MessageLookupByLibrary.simpleMessage("Добавление плана"), + "additional_information": MessageLookupByLibrary.simpleMessage( + "Дополнительная информация", + ), + "admin": MessageLookupByLibrary.simpleMessage("Админ"), + "alcohol": MessageLookupByLibrary.simpleMessage("Алкоголь"), + "all": MessageLookupByLibrary.simpleMessage("Все"), + "allergies_presence": MessageLookupByLibrary.simpleMessage( + "Наличие аллергии", + ), + "another_form_of_comment": MessageLookupByLibrary.simpleMessage( + "комментария", + ), + "another_form_of_day": MessageLookupByLibrary.simpleMessage("дня"), + "another_form_of_hour": MessageLookupByLibrary.simpleMessage("часа"), + "another_form_of_minute": MessageLookupByLibrary.simpleMessage("минут"), + "another_form_of_stage": MessageLookupByLibrary.simpleMessage("этапа"), + "answer": MessageLookupByLibrary.simpleMessage("Ответить"), + "archived": MessageLookupByLibrary.simpleMessage("В архиве"), + "authentificate": MessageLookupByLibrary.simpleMessage("Войти"), + "average_pressure": MessageLookupByLibrary.simpleMessage( + "Средние показатели давления:", + ), + "bodymass_chart": MessageLookupByLibrary.simpleMessage("График ИМТ"), + "by_default": MessageLookupByLibrary.simpleMessage("По умолчянию"), + "calls_for_bullying": MessageLookupByLibrary.simpleMessage( + "Призывы к травле", + ), + "calories": MessageLookupByLibrary.simpleMessage("Калории"), + "can_not_choose_start_date": MessageLookupByLibrary.simpleMessage( + "Дату старта плана невозможно выбрать, пока Вы не привяжите карту", + ), + "can_not_load_data_please_try_again": MessageLookupByLibrary.simpleMessage( + "Не удалось загрузить данные. Попробуйте обновить страницу", + ), + "cancel_diet": MessageLookupByLibrary.simpleMessage("Отменить диету?"), + "cancel_order": MessageLookupByLibrary.simpleMessage("Отменить заказ"), + "carb_type": MessageLookupByLibrary.simpleMessage("Мучное"), + "carb_type_desc": MessageLookupByLibrary.simpleMessage( + "Если вы любите мучные продукты, но хотите придерживаться диеты, вам подходит диета с добавленим мучных блюд на основе цельнозерновых вариантов. В них больше сложных углеводов и клетчатки, что способствует длительному чувству сытости и поддерживает здоровье пищеварительной системы.", + ), + "carbohydrates": MessageLookupByLibrary.simpleMessage("Углеводы"), + "chat": MessageLookupByLibrary.simpleMessage("Чат"), + "check_out_video_recipe": MessageLookupByLibrary.simpleMessage( + "Посмотреть видео рецепт", + ), + "chest": MessageLookupByLibrary.simpleMessage("Грудь"), + "chest_circumference": MessageLookupByLibrary.simpleMessage("Обхват груди"), + "choose_date": MessageLookupByLibrary.simpleMessage("Выбрать дату"), + "choose_diet_duration": MessageLookupByLibrary.simpleMessage( + "Выберите срок диеты", + ), + "choose_plan_duration": MessageLookupByLibrary.simpleMessage( + "Выберите срок плана", + ), + "choose_plan_start_date": MessageLookupByLibrary.simpleMessage( + "Выберите дату старта плана питания", + ), + "choose_start_diet_date": MessageLookupByLibrary.simpleMessage( + "Выберите дату старты диеты. Она отобразиться у Вас в дневнике", + ), + "circumference_empty": MessageLookupByLibrary.simpleMessage( + "Все замеры обязательны к заполнению", + ), + "circumference_is_not_a_number": MessageLookupByLibrary.simpleMessage( + "Все замеры должны быть числами", + ), + "circumferences_chart": MessageLookupByLibrary.simpleMessage( + "График обхватов", + ), + "city": MessageLookupByLibrary.simpleMessage("Город"), + "city_of_living": MessageLookupByLibrary.simpleMessage("Город проживания"), + "comfort": MessageLookupByLibrary.simpleMessage("Комфорт"), + "comment": MessageLookupByLibrary.simpleMessage("комментарий"), + "comments": MessageLookupByLibrary.simpleMessage("Комментарии"), + "comments_plural": MessageLookupByLibrary.simpleMessage("комментариев"), + "complain": MessageLookupByLibrary.simpleMessage("Пожаловаться"), + "complaint": MessageLookupByLibrary.simpleMessage("Жалоба"), + "complaint_question": MessageLookupByLibrary.simpleMessage( + "Что именно в этом материале Вы считаете неприемлемым и нарушающим правила?", + ), + "complaint_sent": MessageLookupByLibrary.simpleMessage( + "Жалоба успешно отправлена", + ), + "complaint_sent_description": MessageLookupByLibrary.simpleMessage( + "Ваше обращение принято! Мы рассмотрим его в ближайшее время и примем необходимые меры. Спасибо за вашу бдительность и помощь в улучшении нашего сервиса.", + ), + "confirm": MessageLookupByLibrary.simpleMessage("Подтвердить"), + "consultations_count": MessageLookupByLibrary.simpleMessage( + "Кол-во проведенных консулдьтаций", + ), + "continueButton": MessageLookupByLibrary.simpleMessage("Продолжить"), + "continue_": MessageLookupByLibrary.simpleMessage("Продолжить"), + "copied": MessageLookupByLibrary.simpleMessage("cкопирован"), + "copy_link": MessageLookupByLibrary.simpleMessage("Скопировать ссылку"), + "copy_referral_link": MessageLookupByLibrary.simpleMessage( + "Скопировать пригласительную ссылку", + ), + "could_not_cancel_diet": MessageLookupByLibrary.simpleMessage( + "Не удалось отменить диету", + ), + "could_not_delete_blog_post": MessageLookupByLibrary.simpleMessage( + "Не удалось удалить пост", + ), + "could_not_launch_video": MessageLookupByLibrary.simpleMessage( + "Не удалось запустить видео", + ), + "could_not_publish_blog_post": MessageLookupByLibrary.simpleMessage( + "Не удалось опубликовать пост", + ), + "could_not_publish_diet": MessageLookupByLibrary.simpleMessage( + "Не удалось опубликовать диету", + ), + "could_not_publish_recipe": MessageLookupByLibrary.simpleMessage( + "Не удалось опубликовать рецепт", + ), + "could_not_send_complain": MessageLookupByLibrary.simpleMessage( + "Не удалось отправить жалобу", + ), + "could_not_update_blog_post": MessageLookupByLibrary.simpleMessage( + "Не удалось обновить пост", + ), + "could_not_update_diet": MessageLookupByLibrary.simpleMessage( + "Не удалось обновить диету", + ), + "country": MessageLookupByLibrary.simpleMessage("Страна"), + "create_diet": MessageLookupByLibrary.simpleMessage("Создание диеты"), + "customer_price": MessageLookupByLibrary.simpleMessage( + "Цена для покупателя", + ), + "date_has_ben_set": MessageLookupByLibrary.simpleMessage( + "Дата старта начала консультации установлена", + ), + "date_of_birth": MessageLookupByLibrary.simpleMessage("Дата рождения"), + "day": MessageLookupByLibrary.simpleMessage("День"), + "days": MessageLookupByLibrary.simpleMessage("дней"), + "deception": MessageLookupByLibrary.simpleMessage("Обман"), + "deleted": MessageLookupByLibrary.simpleMessage("Удалена"), + "diary": MessageLookupByLibrary.simpleMessage("Дневник"), + "diet": MessageLookupByLibrary.simpleMessage("Диета"), + "diet_author": MessageLookupByLibrary.simpleMessage("Автор диеты"), + "diet_has_been_sent_to_draft": MessageLookupByLibrary.simpleMessage( + "снята с публикации и перенесена в черновик", + ), + "diet_plan": MessageLookupByLibrary.simpleMessage("План диеты"), + "diet_started": MessageLookupByLibrary.simpleMessage("Диета уже начата"), + "diet_state": MessageLookupByLibrary.simpleMessage("Статус диеты"), + "diet_type": MessageLookupByLibrary.simpleMessage("Тип диеты"), + "do_you_have_hypertension_tendency": MessageLookupByLibrary.simpleMessage( + "Есть ли у вас гипертония?", + ), + "do_you_have_hypotension_tendency": MessageLookupByLibrary.simpleMessage( + "Есть ли у вас гипотония?", + ), + "do_you_take_pills": MessageLookupByLibrary.simpleMessage( + "Принимаете ли вы лекарства или бады?", + ), + "down_pressure": MessageLookupByLibrary.simpleMessage( + "Нижние показатели давления:", + ), + "draft": MessageLookupByLibrary.simpleMessage("Черновик"), + "drafted": MessageLookupByLibrary.simpleMessage("Черновики"), + "drugs": MessageLookupByLibrary.simpleMessage("Наркотики"), + "eating_behavior": MessageLookupByLibrary.simpleMessage( + "Пищевое поведение", + ), + "eating_behavior_type": MessageLookupByLibrary.simpleMessage( + "Формирование пищевого поведения", + ), + "eating_behavior_type_desc": MessageLookupByLibrary.simpleMessage( + "Формирование здорового пищевого поведения — это процесс, который включает в себя изменение привычек и отношения к еде. Он направлен на то, чтобы помочь людям научиться правильно питаться и поддерживать здоровый образ жизни.Основные принципы формирования здорового пищевого поведения: \n● Разнообразие продуктов; \n● Сбалансированный рацион; \n● Питьевой режим; \n● Ограничение вредных продуктов; \n● Регулярные приёмы пищи; \n● Умеренность;Осознанное питание; \n● Физическая активность;", + ), + "economy": MessageLookupByLibrary.simpleMessage("Эконом"), + "edit": MessageLookupByLibrary.simpleMessage("Редактировать"), + "email": MessageLookupByLibrary.simpleMessage("Электронная почта"), + "email_empty": MessageLookupByLibrary.simpleMessage( + "Необходимо ввести адрес электронной почты", + ), + "email_invalid": MessageLookupByLibrary.simpleMessage( + "Некорректный адрес электронной почты", + ), + "enter_additional_information": MessageLookupByLibrary.simpleMessage( + "Введите любую дополнительную информацию на своё усмотрение:", + ), + "enter_diet_description": MessageLookupByLibrary.simpleMessage( + "Введите описание диеты", + ), + "enter_diet_name": MessageLookupByLibrary.simpleMessage( + "Выведите название диеты", + ), + "enter_information": MessageLookupByLibrary.simpleMessage( + "Введите информацию...", + ), + "exit": MessageLookupByLibrary.simpleMessage("Выйти"), + "expand": MessageLookupByLibrary.simpleMessage("Показать полностью"), + "explicitImage": MessageLookupByLibrary.simpleMessage( + "Откровенное изображение", + ), + "explicitImages": MessageLookupByLibrary.simpleMessage( + "Откровенные изображения", + ), + "explicitImagesDescription": MessageLookupByLibrary.simpleMessage( + "Отправьте жалобу, если кто-то разместил откровенные изображения", + ), + "extremism": MessageLookupByLibrary.simpleMessage("Экстремизм"), + "fake_documents": MessageLookupByLibrary.simpleMessage( + "Поддельные документы", + ), + "fats": MessageLookupByLibrary.simpleMessage("Жиры"), + "favorite_foods": MessageLookupByLibrary.simpleMessage("Любимые продукты"), + "favorite_unfavorite_foods": MessageLookupByLibrary.simpleMessage( + "Ваши любимые/нелюбимые продукты питания?", + ), + "female": MessageLookupByLibrary.simpleMessage("Женский"), + "fill_in_information": MessageLookupByLibrary.simpleMessage( + "Заполните информацию:", + ), + "finish": MessageLookupByLibrary.simpleMessage("Завершить"), + "first_name": MessageLookupByLibrary.simpleMessage("Имя"), + "first_name_empty": MessageLookupByLibrary.simpleMessage( + "Имя обязательно для заполнения", + ), + "first_name_short": MessageLookupByLibrary.simpleMessage( + "В имени должен быть минимум 1 символ", + ), + "fit_type": MessageLookupByLibrary.simpleMessage("Поддержание формы"), + "fit_type_desc": MessageLookupByLibrary.simpleMessage( + "План питания для поддержания формы сбалансированный и разнообразный, чтобы обеспечить организм всеми необходимыми питательными веществами. Общие принципы: \n● Дробное питание; \n● Разнообразие продуктов; \n● Контроль порций; \n● Питьевой режим; \n● Ограничение вредных продуктов;", + ), + "fitness": MessageLookupByLibrary.simpleMessage("Поддержка формы"), + "for_a_month": MessageLookupByLibrary.simpleMessage("За месяц"), + "for_a_week": MessageLookupByLibrary.simpleMessage("За неделю"), + "for_a_year": MessageLookupByLibrary.simpleMessage("За год"), + "for_whole_period_of_time": MessageLookupByLibrary.simpleMessage( + "За всё время", + ), + "fraud": MessageLookupByLibrary.simpleMessage("Мошенничество"), + "fraud_description": MessageLookupByLibrary.simpleMessage( + "Мошенничество с целью наживы. Если вас обманули, пожалуйста, сообщите об этом в правоохранительные органы.", + ), + "from": MessageLookupByLibrary.simpleMessage("от"), + "from_a_to_z": MessageLookupByLibrary.simpleMessage("Название: А-Я"), + "from_z_to_a": MessageLookupByLibrary.simpleMessage("Название: Я-А"), + "gallery": MessageLookupByLibrary.simpleMessage("Галерея"), + "general_info": MessageLookupByLibrary.simpleMessage("Общая информация"), + "gr": MessageLookupByLibrary.simpleMessage("гр"), + "grams": MessageLookupByLibrary.simpleMessage("гр"), + "has_alergy": MessageLookupByLibrary.simpleMessage("Наличие аллергии"), + "has_hyper": MessageLookupByLibrary.simpleMessage( + "Склонность к гипертонии", + ), + "has_hypo": MessageLookupByLibrary.simpleMessage("Склонность к гипотонии"), + "hatred": MessageLookupByLibrary.simpleMessage("Оскорбление"), + "hatred_description": MessageLookupByLibrary.simpleMessage( + "Враждебные высказывания", + ), + "height": MessageLookupByLibrary.simpleMessage("Рост"), + "height_measurements": MessageLookupByLibrary.simpleMessage("Замер роста"), + "hide": MessageLookupByLibrary.simpleMessage("Свернуть"), + "hip_circumference": MessageLookupByLibrary.simpleMessage("Обхват бедер"), + "hips": MessageLookupByLibrary.simpleMessage("Бедра"), + "hour": MessageLookupByLibrary.simpleMessage("час"), + "hours": MessageLookupByLibrary.simpleMessage("часов"), + "in_progress": MessageLookupByLibrary.simpleMessage("В процессе"), + "inactive_diet_state": MessageLookupByLibrary.simpleMessage("Черновик"), + "infoAboutOrder": MessageLookupByLibrary.simpleMessage( + "Информация о заказе", + ), + "ingredients": MessageLookupByLibrary.simpleMessage("Ингредиенты"), + "initial_measurements": MessageLookupByLibrary.simpleMessage( + "Первичные замеры", + ), + "invited_people_count": MessageLookupByLibrary.simpleMessage( + "Количество приглашенных", + ), + "label": MessageLookupByLibrary.simpleMessage("Название"), + "language": MessageLookupByLibrary.simpleMessage("Язык"), + "last_name": MessageLookupByLibrary.simpleMessage("Фамилия"), + "last_name_empty": MessageLookupByLibrary.simpleMessage( + "Фамилия обязательна для заполнения", + ), + "last_name_short": MessageLookupByLibrary.simpleMessage( + "В фамилии должен быть минимум 6 символов", + ), + "lawViolation": MessageLookupByLibrary.simpleMessage( + "Нарушение законодательства", + ), + "lbl_english": MessageLookupByLibrary.simpleMessage("English"), + "light_type": MessageLookupByLibrary.simpleMessage("Легкая"), + "light_type_desc": MessageLookupByLibrary.simpleMessage( + "С некоторыми видами диет можно употреблять алкоголь в умеренных количествах. Рекомендуется совмещать вместе с низкокалорийными закусками.", + ), + "liked_groceries": MessageLookupByLibrary.simpleMessage("Любимые продукты"), + "link_was_copied": MessageLookupByLibrary.simpleMessage( + "Ссылка успешно скопирована", + ), + "loading": MessageLookupByLibrary.simpleMessage("Загрузка..."), + "lower": MessageLookupByLibrary.simpleMessage("Нижнее"), + "male": MessageLookupByLibrary.simpleMessage("Мужской"), + "meal": MessageLookupByLibrary.simpleMessage("Приём пищи"), + "meat": MessageLookupByLibrary.simpleMessage("Мясо"), + "meat_type": MessageLookupByLibrary.simpleMessage("С мясом"), + "meat_type_desc": MessageLookupByLibrary.simpleMessage( + "Диета с мясом полезная и сбалансированная. Включает в себя нежирное мясо: курицу, индейку, кролика или говядину. В сочетании с овощами получаете все необходимые витамины и минералы. Не забывайте о порциях и старайтесь есть медленно, прислушиваясь к своему организму.", + ), + "milliliter": MessageLookupByLibrary.simpleMessage("мл"), + "minimal_customer_price": MessageLookupByLibrary.simpleMessage( + "Минимальная цена для покупателя: 1200₽", + ), + "minute": MessageLookupByLibrary.simpleMessage("минута"), + "minutes": MessageLookupByLibrary.simpleMessage("минуты"), + "misrepresentation": MessageLookupByLibrary.simpleMessage( + "Введение в заблуждение", + ), + "misrepresentation_description": MessageLookupByLibrary.simpleMessage( + "Новости, которые могут вызвать широкий резонанс или несут угрозу, распространяемые с целью введения людей в заблуждение.", + ), + "more_about_order": MessageLookupByLibrary.simpleMessage( + "Подробнее о заказе", + ), + "most_new": MessageLookupByLibrary.simpleMessage("Самые новые"), + "most_old": MessageLookupByLibrary.simpleMessage("Самые старые"), + "msg_network_err": MessageLookupByLibrary.simpleMessage("Сетевая ошибка!"), + "msg_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Что то пошло не так!", + ), + "my_blog": MessageLookupByLibrary.simpleMessage("Мой блог"), + "my_diets": MessageLookupByLibrary.simpleMessage("Мои диеты"), + "my_plans": MessageLookupByLibrary.simpleMessage("Мои планы"), + "my_settings": MessageLookupByLibrary.simpleMessage("Мои настройки"), + "name_empty": MessageLookupByLibrary.simpleMessage( + "Имя пользователя обязательно для заполнения", + ), + "name_short": MessageLookupByLibrary.simpleMessage( + "В имени пользователя должно быть минимум 6 символов", + ), + "nicotine": MessageLookupByLibrary.simpleMessage("Никотин"), + "no": MessageLookupByLibrary.simpleMessage("Нет"), + "no_account": MessageLookupByLibrary.simpleMessage("У меня нет аккаунта"), + "not_liked_groceries": MessageLookupByLibrary.simpleMessage( + "Не любимые продукты", + ), + "ok": MessageLookupByLibrary.simpleMessage("Хорошо"), + "one_option": MessageLookupByLibrary.simpleMessage("1 опция"), + "option": MessageLookupByLibrary.simpleMessage("Опция"), + "option_content": MessageLookupByLibrary.simpleMessage("Содержание опции"), + "option_content_hint_text": MessageLookupByLibrary.simpleMessage( + "На связи 7 дней в неделю", + ), + "option_desc": MessageLookupByLibrary.simpleMessage("Описание опции"), + "option_desc_hint_text": MessageLookupByLibrary.simpleMessage( + "Этот план питания для похудения на 7 дней сбалансированный и разнообразный", + ), + "option_duration": MessageLookupByLibrary.simpleMessage( + "Продолжительность опции", + ), + "option_personal_diet_desc": MessageLookupByLibrary.simpleMessage( + "Опция подразумевает создание индивидуальной диеты", + ), + "option_title": MessageLookupByLibrary.simpleMessage("Заголовок опции"), + "order": MessageLookupByLibrary.simpleMessage("Порядок"), + "other": MessageLookupByLibrary.simpleMessage("Другое"), + "other_info": MessageLookupByLibrary.simpleMessage("Прочая информация"), + "password": MessageLookupByLibrary.simpleMessage("Пароль"), + "password_confirmation": MessageLookupByLibrary.simpleMessage( + "Подтвердите пароль", + ), + "password_confirmation_mismatch": MessageLookupByLibrary.simpleMessage( + "Пароли не совпадают", + ), + "password_empty": MessageLookupByLibrary.simpleMessage( + "Пароль обязателен для заполнения", + ), + "password_short": MessageLookupByLibrary.simpleMessage( + "В пароле должно быть минимум 6 символов", + ), + "pay": MessageLookupByLibrary.simpleMessage("Оплатить"), + "pcs": MessageLookupByLibrary.simpleMessage("шт"), + "personal": MessageLookupByLibrary.simpleMessage("Персональные"), + "personal_diet_state": MessageLookupByLibrary.simpleMessage("Персональная"), + "photo": MessageLookupByLibrary.simpleMessage("Фото"), + "physical_fitness": MessageLookupByLibrary.simpleMessage( + "Физическая форма", + ), + "place_of_living": MessageLookupByLibrary.simpleMessage("Место проживания"), + "plan_author": MessageLookupByLibrary.simpleMessage("Автор плана"), + "plan_desc": MessageLookupByLibrary.simpleMessage("Описание плана"), + "plan_desc_example": MessageLookupByLibrary.simpleMessage( + "Большое подробное, привлекательное описание плана", + ), + "plan_duration": MessageLookupByLibrary.simpleMessage("Срок плана"), + "plan_label_desc": MessageLookupByLibrary.simpleMessage( + "План для поддержания формы", + ), + "plan_type": MessageLookupByLibrary.simpleMessage("Тип плана"), + "plans_complete": MessageLookupByLibrary.simpleMessage("Пройденные планы"), + "please_try_again_later": MessageLookupByLibrary.simpleMessage( + "Пожалуйста, попробуйте еще раз позже", + ), + "popular": MessageLookupByLibrary.simpleMessage("Популярные"), + "preferred_language": MessageLookupByLibrary.simpleMessage( + "Предпочитаемый язык общения", + ), + "pressure": MessageLookupByLibrary.simpleMessage("Давление"), + "pressure_empty": MessageLookupByLibrary.simpleMessage( + "Все показатели давления обязательны к заполнению", + ), + "pressure_is_not_a_number": MessageLookupByLibrary.simpleMessage( + "Все показатели давления должны быть числами", + ), + "preview": MessageLookupByLibrary.simpleMessage("Превью"), + "price": MessageLookupByLibrary.simpleMessage("Цена"), + "price_explanation": MessageLookupByLibrary.simpleMessage( + "Разница в ценах, это комиссия Итвио", + ), + "profile": MessageLookupByLibrary.simpleMessage("Профиль"), + "prostitution": MessageLookupByLibrary.simpleMessage("Проституция"), + "proteins": MessageLookupByLibrary.simpleMessage("Белки"), + "publish": MessageLookupByLibrary.simpleMessage("Опубликовать"), + "published": MessageLookupByLibrary.simpleMessage("Опубликованные"), + "published_diets_count": MessageLookupByLibrary.simpleMessage( + "Кол-во опубликованных диет", + ), + "published_posts_count": MessageLookupByLibrary.simpleMessage( + "Количество опубликованных постов", + ), + "published_recipes_count": MessageLookupByLibrary.simpleMessage( + "Кол-во опубликованных рецептов", + ), + "rating_and_statistics": MessageLookupByLibrary.simpleMessage( + "Рейтинг и статистика", + ), + "rating_history": MessageLookupByLibrary.simpleMessage( + "Начисление рейтинга", + ), + "recipe_author": MessageLookupByLibrary.simpleMessage("Автор рецепта"), + "recipe_publishing": MessageLookupByLibrary.simpleMessage( + "Публикация рецепта", + ), + "refuse_order": MessageLookupByLibrary.simpleMessage( + "Отказаться от заказа", + ), + "removeFromActive": MessageLookupByLibrary.simpleMessage( + "Снять с публикации", + ), + "save": MessageLookupByLibrary.simpleMessage("Сохранить"), + "send_complain": MessageLookupByLibrary.simpleMessage("Отправить жалобу"), + "services": MessageLookupByLibrary.simpleMessage("Оказание услуг"), + "settings": MessageLookupByLibrary.simpleMessage("Настройки"), + "sex": MessageLookupByLibrary.simpleMessage("Пол"), + "share": MessageLookupByLibrary.simpleMessage("Поделиться"), + "skip": MessageLookupByLibrary.simpleMessage("Пропустить"), + "slim": MessageLookupByLibrary.simpleMessage("Похудение"), + "slim_type": MessageLookupByLibrary.simpleMessage("Похудение"), + "slim_type_desc": MessageLookupByLibrary.simpleMessage( + "План питания для похудения должен быть разработан с учётом индивидуальных особенностей организма, возраста, пола, уровня физической активности и состояния здоровья. Общие принципы: \n● Снижение калорийности; \n● Сбалансированный рацион; \n● Разнообразие продуктов; \n● Питьевой режим; \n● Ограничение вредных продуктов;", + ), + "some_error_occurred": MessageLookupByLibrary.simpleMessage( + "Упс! Произошла ошибка", + ), + "some_error_occurred_description": MessageLookupByLibrary.simpleMessage( + "Произошла ошибка. Мы уже работаем над ее устранением. Попробуйте позже.", + ), + "something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Упс! Что-то пошло не так", + ), + "spam": MessageLookupByLibrary.simpleMessage("Спам"), + "spam_description": MessageLookupByLibrary.simpleMessage( + "Отправьте жалобу, если Вы заметили рекламу, размещенную в не предназначенном для этого месте.", + ), + "sport_hobbies": MessageLookupByLibrary.simpleMessage( + "Спортивные увлечения", + ), + "stage": MessageLookupByLibrary.simpleMessage("этап"), + "stages": MessageLookupByLibrary.simpleMessage("этапов"), + "standard": MessageLookupByLibrary.simpleMessage("Стандарт"), + "startDiet": MessageLookupByLibrary.simpleMessage("Начать диету"), + "statistic": MessageLookupByLibrary.simpleMessage("Статистика"), + "step": MessageLookupByLibrary.simpleMessage("Шаг"), + "step_by_step_photo_recipe": MessageLookupByLibrary.simpleMessage( + "Пошаговый фоторецепт", + ), + "successfully_published": MessageLookupByLibrary.simpleMessage( + "успешно опубликован", + ), + "suicide": MessageLookupByLibrary.simpleMessage("Склонение к самоубийству"), + "takes_pills": MessageLookupByLibrary.simpleMessage("Принимает лекарства"), + "tell_your_schedule": MessageLookupByLibrary.simpleMessage( + "Расскажите в свободной форме о том как просыпаетесь, когда едите, когда ложитесь спать:", + ), + "there_is_a_video": MessageLookupByLibrary.simpleMessage("Есть видео"), + "three_options": MessageLookupByLibrary.simpleMessage("3 опции"), + "time": MessageLookupByLibrary.simpleMessage("Время прохождения"), + "toOffer": MessageLookupByLibrary.simpleMessage("Предложить"), + "to_draft": MessageLookupByLibrary.simpleMessage("В черновик"), + "to_order": MessageLookupByLibrary.simpleMessage("Заказать"), + "try_again": MessageLookupByLibrary.simpleMessage("Попробовать снова"), + "type_here_your_complaint": MessageLookupByLibrary.simpleMessage( + "Напишите здесь свою жалобу", + ), + "unfavorite_foods": MessageLookupByLibrary.simpleMessage( + "Нелюбимые продукты", + ), + "up_pressure": MessageLookupByLibrary.simpleMessage( + "Верхние показатели давления:", + ), + "upper": MessageLookupByLibrary.simpleMessage("Верхнее"), + "user_authorization": MessageLookupByLibrary.simpleMessage( + "Аутентификация", + ), + "user_data": MessageLookupByLibrary.simpleMessage("Данные пользователя"), + "user_registration": MessageLookupByLibrary.simpleMessage( + "Регистрация пользователя", + ), + "username": MessageLookupByLibrary.simpleMessage("Имя пользователя"), + "vegan": MessageLookupByLibrary.simpleMessage("Веган."), + "vegan_type": MessageLookupByLibrary.simpleMessage("Вегетарианская"), + "vegan_type_desc": MessageLookupByLibrary.simpleMessage( + "Диета основана на потреблении растительной пищи и отказе от продуктов животного происхождения. Такой тип питания может быть разнообразным и вкусным, а также полезным для здоровья.", + ), + "violenceAndHostility": MessageLookupByLibrary.simpleMessage( + "Насилие и вражда", + ), + "violence_against_people_or_animal": MessageLookupByLibrary.simpleMessage( + "Насилие над людьми или животными", + ), + "waist": MessageLookupByLibrary.simpleMessage("Талия"), + "waist_circumference": MessageLookupByLibrary.simpleMessage("Обхват талии"), + "weapon": MessageLookupByLibrary.simpleMessage("Оружие"), + "weight": MessageLookupByLibrary.simpleMessage("Вес"), + "weight_chart": MessageLookupByLibrary.simpleMessage("График веса"), + "weight_measurements": MessageLookupByLibrary.simpleMessage("Замер веса"), + "wellness": MessageLookupByLibrary.simpleMessage("Улучшение самочувствия"), + "wellness_type": MessageLookupByLibrary.simpleMessage( + "Улучшение самочувствия", + ), + "wellness_type_desc": MessageLookupByLibrary.simpleMessage( + "Если вы любите мучные продукты, но хотите придерживаться диеты, вам подходит диета с добавленим мучных блюд на основе цельнозерновых вариантов. В них больше сложных углеводов и клетчатки, что способствует длительному чувству сытости и поддерживает здоровье пищеварительной системы.", + ), + "what_do_you_want_to_complaint_about": MessageLookupByLibrary.simpleMessage( + "На что Вы хотите пожаловаться?", + ), + "what_is_your_name": MessageLookupByLibrary.simpleMessage("Как вас зовут?"), + "wrong_credentials": MessageLookupByLibrary.simpleMessage( + "Неверные данные пользователя", + ), + "you_will_get": MessageLookupByLibrary.simpleMessage("Вы получите"), + "your_blood_pressure": MessageLookupByLibrary.simpleMessage( + "Ваше артериальное давление?", + ), + "your_favorite_sports": MessageLookupByLibrary.simpleMessage( + "Ваши спортивные увлечения?", + ), + "your_gender": MessageLookupByLibrary.simpleMessage("Ваш пол?"), + "your_height": MessageLookupByLibrary.simpleMessage("Ваш рост:"), + "your_rating": MessageLookupByLibrary.simpleMessage("Ваш рейтинг"), + "your_schedule": MessageLookupByLibrary.simpleMessage("Ваш режим дня?"), + "your_weight": MessageLookupByLibrary.simpleMessage("Ваш вес:"), + }; } diff --git a/lib/generated/intl/messages_ru.dart b/lib/generated/intl/messages_ru.dart index 32433d08..914d96c1 100644 --- a/lib/generated/intl/messages_ru.dart +++ b/lib/generated/intl/messages_ru.dart @@ -22,301 +22,353 @@ class MessageLookup extends MessageLookupByLibrary { final messages = _notInlinedMessages(_notInlinedMessages); static Map _notInlinedMessages(_) => { - "Moscow": MessageLookupByLibrary.simpleMessage("Москва"), - "Russia": MessageLookupByLibrary.simpleMessage("Россия"), - "about_diet": MessageLookupByLibrary.simpleMessage("Об этой диете"), - "about_plan": MessageLookupByLibrary.simpleMessage("Об этом плане"), - "active": MessageLookupByLibrary.simpleMessage("Активен"), - "active_diet_state": MessageLookupByLibrary.simpleMessage("Активная"), - "add": MessageLookupByLibrary.simpleMessage("Добавить"), - "add_cover": MessageLookupByLibrary.simpleMessage("Добавьте обложку"), - "add_measure": MessageLookupByLibrary.simpleMessage("Добавить замер"), - "adding_plan": MessageLookupByLibrary.simpleMessage("Добавление плана"), - "additional_information": - MessageLookupByLibrary.simpleMessage("Дополнительная информация"), - "admin": MessageLookupByLibrary.simpleMessage("Админ"), - "all": MessageLookupByLibrary.simpleMessage("Все"), - "allergies_presence": - MessageLookupByLibrary.simpleMessage("Наличие аллергии"), - "another_form_of_comment": - MessageLookupByLibrary.simpleMessage("комментария"), - "another_form_of_day": MessageLookupByLibrary.simpleMessage("дня"), - "answer": MessageLookupByLibrary.simpleMessage("Ответить"), - "archived": MessageLookupByLibrary.simpleMessage("В архиве"), - "authentificate": MessageLookupByLibrary.simpleMessage("Войти"), - "average_pressure": MessageLookupByLibrary.simpleMessage( - "Средние показатели давления:"), - "bodymass_chart": MessageLookupByLibrary.simpleMessage("График ИМТ"), - "by_default": MessageLookupByLibrary.simpleMessage("По умолчянию"), - "calories": MessageLookupByLibrary.simpleMessage("Калории"), - "carb_type": MessageLookupByLibrary.simpleMessage("Мучное"), - "carb_type_desc": MessageLookupByLibrary.simpleMessage( - "Если вы любите мучные продукты, но хотите придерживаться диеты, вам подходит диета с добавленим мучных блюд на основе цельнозерновых вариантов. В них больше сложных углеводов и клетчатки, что способствует длительному чувству сытости и поддерживает здоровье пищеварительной системы."), - "carbohydrates": MessageLookupByLibrary.simpleMessage("Углеводы"), - "chat": MessageLookupByLibrary.simpleMessage("Чат"), - "chest": MessageLookupByLibrary.simpleMessage("Грудь"), - "chest_circumference": - MessageLookupByLibrary.simpleMessage("Обхват груди"), - "choose_diet_duration": - MessageLookupByLibrary.simpleMessage("Выберите срок диеты"), - "choose_plan_duration": - MessageLookupByLibrary.simpleMessage("Выберите срок плана"), - "choose_start_diet_date": MessageLookupByLibrary.simpleMessage( - "Выберите дату старты диеты. Она отобразиться у Вас в дневнике"), - "circumference_empty": MessageLookupByLibrary.simpleMessage( - "Все замеры обязательны к заполнению"), - "circumference_is_not_a_number": MessageLookupByLibrary.simpleMessage( - "Все замеры должны быть числами"), - "circumferences_chart": - MessageLookupByLibrary.simpleMessage("График обхватов"), - "city": MessageLookupByLibrary.simpleMessage("Город"), - "city_of_living": - MessageLookupByLibrary.simpleMessage("Город проживания"), - "comfort": MessageLookupByLibrary.simpleMessage("Комфорт"), - "comment": MessageLookupByLibrary.simpleMessage("комментарий"), - "comments": MessageLookupByLibrary.simpleMessage("Комментарии"), - "comments_plural": MessageLookupByLibrary.simpleMessage("комментариев"), - "complain": MessageLookupByLibrary.simpleMessage("Пожаловаться"), - "continueButton": MessageLookupByLibrary.simpleMessage("Продолжить"), - "continue_": MessageLookupByLibrary.simpleMessage("Продолжить"), - "copied": MessageLookupByLibrary.simpleMessage("cкопирован"), - "copy_link": MessageLookupByLibrary.simpleMessage("Скопировать ссылку"), - "country": MessageLookupByLibrary.simpleMessage("Страна"), - "create_diet": MessageLookupByLibrary.simpleMessage("Создание диеты"), - "customer_price": - MessageLookupByLibrary.simpleMessage("Цена для покупателя"), - "date_of_birth": MessageLookupByLibrary.simpleMessage("Дата рождения"), - "day": MessageLookupByLibrary.simpleMessage("День"), - "days": MessageLookupByLibrary.simpleMessage("дней"), - "deleted": MessageLookupByLibrary.simpleMessage("Удалена"), - "diary": MessageLookupByLibrary.simpleMessage("Дневник"), - "diet": MessageLookupByLibrary.simpleMessage("Диета"), - "diet_author": MessageLookupByLibrary.simpleMessage("Автор диеты"), - "diet_plan": MessageLookupByLibrary.simpleMessage("План диеты"), - "diet_state": MessageLookupByLibrary.simpleMessage("Статус диеты"), - "diet_type": MessageLookupByLibrary.simpleMessage("Тип диеты"), - "do_you_have_hypertension_tendency": - MessageLookupByLibrary.simpleMessage("Есть ли у вас гипертония?"), - "do_you_have_hypotension_tendency": - MessageLookupByLibrary.simpleMessage("Есть ли у вас гипотония?"), - "do_you_take_pills": MessageLookupByLibrary.simpleMessage( - "Принимаете ли вы лекарства или бады?"), - "down_pressure": - MessageLookupByLibrary.simpleMessage("Нижние показатели давления:"), - "draft": MessageLookupByLibrary.simpleMessage("Черновик"), - "drafted": MessageLookupByLibrary.simpleMessage("Черновики"), - "eating_behavior": - MessageLookupByLibrary.simpleMessage("Пищевое поведение"), - "eating_behavior_type": MessageLookupByLibrary.simpleMessage( - "Формирование пищевого поведения"), - "eating_behavior_type_desc": MessageLookupByLibrary.simpleMessage( - "Формирование здорового пищевого поведения — это процесс, который включает в себя изменение привычек и отношения к еде. Он направлен на то, чтобы помочь людям научиться правильно питаться и поддерживать здоровый образ жизни.Основные принципы формирования здорового пищевого поведения: \n● Разнообразие продуктов; \n● Сбалансированный рацион; \n● Питьевой режим; \n● Ограничение вредных продуктов; \n● Регулярные приёмы пищи; \n● Умеренность;Осознанное питание; \n● Физическая активность;"), - "economy": MessageLookupByLibrary.simpleMessage("Эконом"), - "edit": MessageLookupByLibrary.simpleMessage("Редактировать"), - "email": MessageLookupByLibrary.simpleMessage("Электронная почта"), - "email_empty": MessageLookupByLibrary.simpleMessage( - "Необходимо ввести адрес электронной почты"), - "email_invalid": MessageLookupByLibrary.simpleMessage( - "Некорректный адрес электронной почты"), - "enter_additional_information": MessageLookupByLibrary.simpleMessage( - "Введите любую дополнительную информацию на своё усмотрение:"), - "enter_diet_description": - MessageLookupByLibrary.simpleMessage("Введите описание диеты"), - "enter_diet_name": - MessageLookupByLibrary.simpleMessage("Выведите название диеты"), - "enter_information": - MessageLookupByLibrary.simpleMessage("Введите информацию..."), - "exit": MessageLookupByLibrary.simpleMessage("Выйти"), - "expand": MessageLookupByLibrary.simpleMessage("Показать полностью"), - "fats": MessageLookupByLibrary.simpleMessage("Жиры"), - "favorite_foods": - MessageLookupByLibrary.simpleMessage("Любимые продукты"), - "favorite_unfavorite_foods": MessageLookupByLibrary.simpleMessage( - "Ваши любимые/нелюбимые продукты питания?"), - "female": MessageLookupByLibrary.simpleMessage("Женский"), - "fill_in_information": - MessageLookupByLibrary.simpleMessage("Заполните информацию:"), - "finish": MessageLookupByLibrary.simpleMessage("Завершить"), - "first_name": MessageLookupByLibrary.simpleMessage("Имя"), - "first_name_empty": MessageLookupByLibrary.simpleMessage( - "Имя обязательно для заполнения"), - "first_name_short": MessageLookupByLibrary.simpleMessage( - "В имени должен быть минимум 1 символ"), - "fit_type": MessageLookupByLibrary.simpleMessage("Поддержание формы"), - "fit_type_desc": MessageLookupByLibrary.simpleMessage( - "План питания для поддержания формы сбалансированный и разнообразный, чтобы обеспечить организм всеми необходимыми питательными веществами. Общие принципы: \n● Дробное питание; \n● Разнообразие продуктов; \n● Контроль порций; \n● Питьевой режим; \n● Ограничение вредных продуктов;"), - "fitness": MessageLookupByLibrary.simpleMessage("Поддержка формы"), - "from": MessageLookupByLibrary.simpleMessage("от"), - "from_a_to_z": MessageLookupByLibrary.simpleMessage("Название: А-Я"), - "from_z_to_a": MessageLookupByLibrary.simpleMessage("Название: Я-А"), - "gallery": MessageLookupByLibrary.simpleMessage("Галерея"), - "gr": MessageLookupByLibrary.simpleMessage("гр"), - "grams": MessageLookupByLibrary.simpleMessage("гр"), - "height_measurements": - MessageLookupByLibrary.simpleMessage("Замер роста"), - "hide": MessageLookupByLibrary.simpleMessage("Свернуть"), - "hip_circumference": - MessageLookupByLibrary.simpleMessage("Обхват бедер"), - "hips": MessageLookupByLibrary.simpleMessage("Бедра"), - "in_progress": MessageLookupByLibrary.simpleMessage("В процессе"), - "inactive_diet_state": MessageLookupByLibrary.simpleMessage("Черновик"), - "infoAboutOrder": - MessageLookupByLibrary.simpleMessage("Информация о заказе"), - "initial_measurements": - MessageLookupByLibrary.simpleMessage("Первичные замеры"), - "label": MessageLookupByLibrary.simpleMessage("Название"), - "language": MessageLookupByLibrary.simpleMessage("Язык"), - "last_name": MessageLookupByLibrary.simpleMessage("Фамилия"), - "last_name_empty": MessageLookupByLibrary.simpleMessage( - "Фамилия обязательна для заполнения"), - "last_name_short": MessageLookupByLibrary.simpleMessage( - "В фамилии должен быть минимум 6 символов"), - "lbl_english": MessageLookupByLibrary.simpleMessage("English"), - "light_type": MessageLookupByLibrary.simpleMessage("Легкая"), - "light_type_desc": MessageLookupByLibrary.simpleMessage( - "С некоторыми видами диет можно употреблять алкоголь в умеренных количествах. Рекомендуется совмещать вместе с низкокалорийными закусками."), - "link_was_copied": - MessageLookupByLibrary.simpleMessage("Ссылка успешно скопирована"), - "loading": MessageLookupByLibrary.simpleMessage("Загрузка..."), - "male": MessageLookupByLibrary.simpleMessage("Мужской"), - "meal": MessageLookupByLibrary.simpleMessage("Приём пищи"), - "meat": MessageLookupByLibrary.simpleMessage("Мясо"), - "meat_type": MessageLookupByLibrary.simpleMessage("С мясом"), - "meat_type_desc": MessageLookupByLibrary.simpleMessage( - "Диета с мясом полезная и сбалансированная. Включает в себя нежирное мясо: курицу, индейку, кролика или говядину. В сочетании с овощами получаете все необходимые витамины и минералы. Не забывайте о порциях и старайтесь есть медленно, прислушиваясь к своему организму."), - "milliliter": MessageLookupByLibrary.simpleMessage("мл"), - "minimal_customer_price": MessageLookupByLibrary.simpleMessage( - "Минимальная цена для покупателя: 1200₽"), - "most_new": MessageLookupByLibrary.simpleMessage("Самые новые"), - "most_old": MessageLookupByLibrary.simpleMessage("Самые старые"), - "msg_network_err": - MessageLookupByLibrary.simpleMessage("Сетевая ошибка!"), - "msg_something_went_wrong": - MessageLookupByLibrary.simpleMessage("Что то пошло не так!"), - "my_blog": MessageLookupByLibrary.simpleMessage("Мой блог"), - "my_diets": MessageLookupByLibrary.simpleMessage("Мои диеты"), - "my_plans": MessageLookupByLibrary.simpleMessage("Мои планы"), - "my_settings": MessageLookupByLibrary.simpleMessage("Мои настройки"), - "name_empty": MessageLookupByLibrary.simpleMessage( - "Имя пользователя обязательно для заполнения"), - "name_short": MessageLookupByLibrary.simpleMessage( - "В имени пользователя должно быть минимум 6 символов"), - "no": MessageLookupByLibrary.simpleMessage("Нет"), - "no_account": - MessageLookupByLibrary.simpleMessage("У меня нет аккаунта"), - "one_option": MessageLookupByLibrary.simpleMessage("1 опция"), - "option": MessageLookupByLibrary.simpleMessage("Опция"), - "option_content": - MessageLookupByLibrary.simpleMessage("Содержание опции"), - "option_content_hint_text": - MessageLookupByLibrary.simpleMessage("На связи 7 дней в неделю"), - "option_desc": MessageLookupByLibrary.simpleMessage("Описание опции"), - "option_desc_hint_text": MessageLookupByLibrary.simpleMessage( - "Этот план питания для похудения на 7 дней сбалансированный и разнообразный"), - "option_duration": - MessageLookupByLibrary.simpleMessage("Продолжительность опции"), - "option_personal_diet_desc": MessageLookupByLibrary.simpleMessage( - "Опция подразумевает создание индивидуальной диеты"), - "option_title": MessageLookupByLibrary.simpleMessage("Заголовок опции"), - "order": MessageLookupByLibrary.simpleMessage("Порядок"), - "password": MessageLookupByLibrary.simpleMessage("Пароль"), - "password_confirmation": - MessageLookupByLibrary.simpleMessage("Подтвердите пароль"), - "password_confirmation_mismatch": - MessageLookupByLibrary.simpleMessage("Пароли не совпадают"), - "password_empty": MessageLookupByLibrary.simpleMessage( - "Пароль обязателен для заполнения"), - "password_short": MessageLookupByLibrary.simpleMessage( - "В пароле должно быть минимум 6 символов"), - "pcs": MessageLookupByLibrary.simpleMessage("шт"), - "personal": MessageLookupByLibrary.simpleMessage("Персональные"), - "personal_diet_state": - MessageLookupByLibrary.simpleMessage("Персональная"), - "photo": MessageLookupByLibrary.simpleMessage("Фото"), - "place_of_living": - MessageLookupByLibrary.simpleMessage("Место проживания"), - "plan_author": MessageLookupByLibrary.simpleMessage("Автор плана"), - "plan_desc": MessageLookupByLibrary.simpleMessage("Описание плана"), - "plan_desc_example": MessageLookupByLibrary.simpleMessage( - "Большое подробное, привлекательное описание плана"), - "plan_duration": MessageLookupByLibrary.simpleMessage("Срок плана"), - "plan_label_desc": - MessageLookupByLibrary.simpleMessage("План для поддержания формы"), - "plans_complete": - MessageLookupByLibrary.simpleMessage("Пройденные планы"), - "popular": MessageLookupByLibrary.simpleMessage("Популярные"), - "preferred_language": - MessageLookupByLibrary.simpleMessage("Предпочитаемый язык общения"), - "pressure_empty": MessageLookupByLibrary.simpleMessage( - "Все показатели давления обязательны к заполнению"), - "pressure_is_not_a_number": MessageLookupByLibrary.simpleMessage( - "Все показатели давления должны быть числами"), - "preview": MessageLookupByLibrary.simpleMessage("Превью"), - "price": MessageLookupByLibrary.simpleMessage("Цена"), - "price_explanation": MessageLookupByLibrary.simpleMessage( - "Разница в ценах, это комиссия Итвио"), - "profile": MessageLookupByLibrary.simpleMessage("Профиль"), - "proteins": MessageLookupByLibrary.simpleMessage("Белки"), - "publish": MessageLookupByLibrary.simpleMessage("Опубликовать"), - "published": MessageLookupByLibrary.simpleMessage("Опубликованные"), - "removeFromActive": - MessageLookupByLibrary.simpleMessage("Снять с публикации"), - "save": MessageLookupByLibrary.simpleMessage("Сохранить"), - "services": MessageLookupByLibrary.simpleMessage("Оказание услуг"), - "settings": MessageLookupByLibrary.simpleMessage("Настройки"), - "share": MessageLookupByLibrary.simpleMessage("Поделиться"), - "skip": MessageLookupByLibrary.simpleMessage("Пропустить"), - "slim": MessageLookupByLibrary.simpleMessage("Похудение"), - "slim_type": MessageLookupByLibrary.simpleMessage("Похудение"), - "slim_type_desc": MessageLookupByLibrary.simpleMessage( - "План питания для похудения должен быть разработан с учётом индивидуальных особенностей организма, возраста, пола, уровня физической активности и состояния здоровья. Общие принципы: \n● Снижение калорийности; \n● Сбалансированный рацион; \n● Разнообразие продуктов; \n● Питьевой режим; \n● Ограничение вредных продуктов;"), - "standard": MessageLookupByLibrary.simpleMessage("Стандарт"), - "startDiet": MessageLookupByLibrary.simpleMessage("Начать диету"), - "tell_your_schedule": MessageLookupByLibrary.simpleMessage( - "Расскажите в свободной форме о том как просыпаетесь, когда едите, когда ложитесь спать:"), - "three_options": MessageLookupByLibrary.simpleMessage("3 опции"), - "toOffer": MessageLookupByLibrary.simpleMessage("Предложить"), - "to_draft": MessageLookupByLibrary.simpleMessage("В черновик"), - "unfavorite_foods": - MessageLookupByLibrary.simpleMessage("Нелюбимые продукты"), - "up_pressure": MessageLookupByLibrary.simpleMessage( - "Верхние показатели давления:"), - "user_authorization": - MessageLookupByLibrary.simpleMessage("Аутентификация"), - "user_data": - MessageLookupByLibrary.simpleMessage("Данные пользователя"), - "user_registration": - MessageLookupByLibrary.simpleMessage("Регистрация пользователя"), - "username": MessageLookupByLibrary.simpleMessage("Имя пользователя"), - "vegan": MessageLookupByLibrary.simpleMessage("Веган."), - "vegan_type": MessageLookupByLibrary.simpleMessage("Вегетарианская"), - "vegan_type_desc": MessageLookupByLibrary.simpleMessage( - "Диета основана на потреблении растительной пищи и отказе от продуктов животного происхождения. Такой тип питания может быть разнообразным и вкусным, а также полезным для здоровья."), - "waist": MessageLookupByLibrary.simpleMessage("Талия"), - "waist_circumference": - MessageLookupByLibrary.simpleMessage("Обхват талии"), - "weight": MessageLookupByLibrary.simpleMessage("Вес"), - "weight_chart": MessageLookupByLibrary.simpleMessage("График веса"), - "weight_measurements": - MessageLookupByLibrary.simpleMessage("Замер веса"), - "wellness": - MessageLookupByLibrary.simpleMessage("Улучшение самочувствия"), - "wellness_type": - MessageLookupByLibrary.simpleMessage("Улучшение самочувствия"), - "wellness_type_desc": MessageLookupByLibrary.simpleMessage( - "Если вы любите мучные продукты, но хотите придерживаться диеты, вам подходит диета с добавленим мучных блюд на основе цельнозерновых вариантов. В них больше сложных углеводов и клетчатки, что способствует длительному чувству сытости и поддерживает здоровье пищеварительной системы."), - "what_is_your_name": - MessageLookupByLibrary.simpleMessage("Как вас зовут?"), - "wrong_credentials": MessageLookupByLibrary.simpleMessage( - "Неверные данные пользователя"), - "you_will_get": MessageLookupByLibrary.simpleMessage("Вы получите"), - "your_blood_pressure": - MessageLookupByLibrary.simpleMessage("Ваше артериальное давление?"), - "your_favorite_sports": - MessageLookupByLibrary.simpleMessage("Ваши спортивные увлечения?"), - "your_gender": MessageLookupByLibrary.simpleMessage("Ваш пол?"), - "your_height": MessageLookupByLibrary.simpleMessage("Ваш рост:"), - "your_schedule": MessageLookupByLibrary.simpleMessage("Ваш режим дня?"), - "your_weight": MessageLookupByLibrary.simpleMessage("Ваш вес:") - }; + "Moscow": MessageLookupByLibrary.simpleMessage("Москва"), + "Russia": MessageLookupByLibrary.simpleMessage("Россия"), + "about_diet": MessageLookupByLibrary.simpleMessage("Об этой диете"), + "about_plan": MessageLookupByLibrary.simpleMessage("Об этом плане"), + "active": MessageLookupByLibrary.simpleMessage("Активен"), + "active_diet_state": MessageLookupByLibrary.simpleMessage("Активная"), + "add": MessageLookupByLibrary.simpleMessage("Добавить"), + "add_cover": MessageLookupByLibrary.simpleMessage("Добавьте обложку"), + "add_measure": MessageLookupByLibrary.simpleMessage("Добавить замер"), + "adding_plan": MessageLookupByLibrary.simpleMessage("Добавление плана"), + "additional_information": MessageLookupByLibrary.simpleMessage( + "Дополнительная информация", + ), + "admin": MessageLookupByLibrary.simpleMessage("Админ"), + "all": MessageLookupByLibrary.simpleMessage("Все"), + "allergies_presence": MessageLookupByLibrary.simpleMessage( + "Наличие аллергии", + ), + "another_form_of_comment": MessageLookupByLibrary.simpleMessage( + "комментария", + ), + "another_form_of_day": MessageLookupByLibrary.simpleMessage("дня"), + "answer": MessageLookupByLibrary.simpleMessage("Ответить"), + "archived": MessageLookupByLibrary.simpleMessage("В архиве"), + "authentificate": MessageLookupByLibrary.simpleMessage("Войти"), + "average_pressure": MessageLookupByLibrary.simpleMessage( + "Средние показатели давления:", + ), + "bodymass_chart": MessageLookupByLibrary.simpleMessage("График ИМТ"), + "by_default": MessageLookupByLibrary.simpleMessage("По умолчянию"), + "calories": MessageLookupByLibrary.simpleMessage("Калории"), + "carb_type": MessageLookupByLibrary.simpleMessage("Мучное"), + "carb_type_desc": MessageLookupByLibrary.simpleMessage( + "Если вы любите мучные продукты, но хотите придерживаться диеты, вам подходит диета с добавленим мучных блюд на основе цельнозерновых вариантов. В них больше сложных углеводов и клетчатки, что способствует длительному чувству сытости и поддерживает здоровье пищеварительной системы.", + ), + "carbohydrates": MessageLookupByLibrary.simpleMessage("Углеводы"), + "chat": MessageLookupByLibrary.simpleMessage("Чат"), + "chest": MessageLookupByLibrary.simpleMessage("Грудь"), + "chest_circumference": MessageLookupByLibrary.simpleMessage("Обхват груди"), + "choose_diet_duration": MessageLookupByLibrary.simpleMessage( + "Выберите срок диеты", + ), + "choose_plan_duration": MessageLookupByLibrary.simpleMessage( + "Выберите срок плана", + ), + "choose_start_diet_date": MessageLookupByLibrary.simpleMessage( + "Выберите дату старты диеты. Она отобразиться у Вас в дневнике", + ), + "circumference_empty": MessageLookupByLibrary.simpleMessage( + "Все замеры обязательны к заполнению", + ), + "circumference_is_not_a_number": MessageLookupByLibrary.simpleMessage( + "Все замеры должны быть числами", + ), + "circumferences_chart": MessageLookupByLibrary.simpleMessage( + "График обхватов", + ), + "city": MessageLookupByLibrary.simpleMessage("Город"), + "city_of_living": MessageLookupByLibrary.simpleMessage("Город проживания"), + "comfort": MessageLookupByLibrary.simpleMessage("Комфорт"), + "comment": MessageLookupByLibrary.simpleMessage("комментарий"), + "comments": MessageLookupByLibrary.simpleMessage("Комментарии"), + "comments_plural": MessageLookupByLibrary.simpleMessage("комментариев"), + "complain": MessageLookupByLibrary.simpleMessage("Пожаловаться"), + "continueButton": MessageLookupByLibrary.simpleMessage("Продолжить"), + "continue_": MessageLookupByLibrary.simpleMessage("Продолжить"), + "copied": MessageLookupByLibrary.simpleMessage("cкопирован"), + "copy_link": MessageLookupByLibrary.simpleMessage("Скопировать ссылку"), + "country": MessageLookupByLibrary.simpleMessage("Страна"), + "create_diet": MessageLookupByLibrary.simpleMessage("Создание диеты"), + "customer_price": MessageLookupByLibrary.simpleMessage( + "Цена для покупателя", + ), + "date_of_birth": MessageLookupByLibrary.simpleMessage("Дата рождения"), + "day": MessageLookupByLibrary.simpleMessage("День"), + "days": MessageLookupByLibrary.simpleMessage("дней"), + "deleted": MessageLookupByLibrary.simpleMessage("Удалена"), + "diary": MessageLookupByLibrary.simpleMessage("Дневник"), + "diet": MessageLookupByLibrary.simpleMessage("Диета"), + "diet_author": MessageLookupByLibrary.simpleMessage("Автор диеты"), + "diet_plan": MessageLookupByLibrary.simpleMessage("План диеты"), + "diet_state": MessageLookupByLibrary.simpleMessage("Статус диеты"), + "diet_type": MessageLookupByLibrary.simpleMessage("Тип диеты"), + "do_you_have_hypertension_tendency": MessageLookupByLibrary.simpleMessage( + "Есть ли у вас гипертония?", + ), + "do_you_have_hypotension_tendency": MessageLookupByLibrary.simpleMessage( + "Есть ли у вас гипотония?", + ), + "do_you_take_pills": MessageLookupByLibrary.simpleMessage( + "Принимаете ли вы лекарства или бады?", + ), + "down_pressure": MessageLookupByLibrary.simpleMessage( + "Нижние показатели давления:", + ), + "draft": MessageLookupByLibrary.simpleMessage("Черновик"), + "drafted": MessageLookupByLibrary.simpleMessage("Черновики"), + "eating_behavior": MessageLookupByLibrary.simpleMessage( + "Пищевое поведение", + ), + "eating_behavior_type": MessageLookupByLibrary.simpleMessage( + "Формирование пищевого поведения", + ), + "eating_behavior_type_desc": MessageLookupByLibrary.simpleMessage( + "Формирование здорового пищевого поведения — это процесс, который включает в себя изменение привычек и отношения к еде. Он направлен на то, чтобы помочь людям научиться правильно питаться и поддерживать здоровый образ жизни.Основные принципы формирования здорового пищевого поведения: \n● Разнообразие продуктов; \n● Сбалансированный рацион; \n● Питьевой режим; \n● Ограничение вредных продуктов; \n● Регулярные приёмы пищи; \n● Умеренность;Осознанное питание; \n● Физическая активность;", + ), + "economy": MessageLookupByLibrary.simpleMessage("Эконом"), + "edit": MessageLookupByLibrary.simpleMessage("Редактировать"), + "email": MessageLookupByLibrary.simpleMessage("Электронная почта"), + "email_empty": MessageLookupByLibrary.simpleMessage( + "Необходимо ввести адрес электронной почты", + ), + "email_invalid": MessageLookupByLibrary.simpleMessage( + "Некорректный адрес электронной почты", + ), + "enter_additional_information": MessageLookupByLibrary.simpleMessage( + "Введите любую дополнительную информацию на своё усмотрение:", + ), + "enter_diet_description": MessageLookupByLibrary.simpleMessage( + "Введите описание диеты", + ), + "enter_diet_name": MessageLookupByLibrary.simpleMessage( + "Выведите название диеты", + ), + "enter_information": MessageLookupByLibrary.simpleMessage( + "Введите информацию...", + ), + "exit": MessageLookupByLibrary.simpleMessage("Выйти"), + "expand": MessageLookupByLibrary.simpleMessage("Показать полностью"), + "fats": MessageLookupByLibrary.simpleMessage("Жиры"), + "favorite_foods": MessageLookupByLibrary.simpleMessage("Любимые продукты"), + "favorite_unfavorite_foods": MessageLookupByLibrary.simpleMessage( + "Ваши любимые/нелюбимые продукты питания?", + ), + "female": MessageLookupByLibrary.simpleMessage("Женский"), + "fill_in_information": MessageLookupByLibrary.simpleMessage( + "Заполните информацию:", + ), + "finish": MessageLookupByLibrary.simpleMessage("Завершить"), + "first_name": MessageLookupByLibrary.simpleMessage("Имя"), + "first_name_empty": MessageLookupByLibrary.simpleMessage( + "Имя обязательно для заполнения", + ), + "first_name_short": MessageLookupByLibrary.simpleMessage( + "В имени должен быть минимум 1 символ", + ), + "fit_type": MessageLookupByLibrary.simpleMessage("Поддержание формы"), + "fit_type_desc": MessageLookupByLibrary.simpleMessage( + "План питания для поддержания формы сбалансированный и разнообразный, чтобы обеспечить организм всеми необходимыми питательными веществами. Общие принципы: \n● Дробное питание; \n● Разнообразие продуктов; \n● Контроль порций; \n● Питьевой режим; \n● Ограничение вредных продуктов;", + ), + "fitness": MessageLookupByLibrary.simpleMessage("Поддержка формы"), + "from": MessageLookupByLibrary.simpleMessage("от"), + "from_a_to_z": MessageLookupByLibrary.simpleMessage("Название: А-Я"), + "from_z_to_a": MessageLookupByLibrary.simpleMessage("Название: Я-А"), + "gallery": MessageLookupByLibrary.simpleMessage("Галерея"), + "gr": MessageLookupByLibrary.simpleMessage("гр"), + "grams": MessageLookupByLibrary.simpleMessage("гр"), + "height_measurements": MessageLookupByLibrary.simpleMessage("Замер роста"), + "hide": MessageLookupByLibrary.simpleMessage("Свернуть"), + "hip_circumference": MessageLookupByLibrary.simpleMessage("Обхват бедер"), + "hips": MessageLookupByLibrary.simpleMessage("Бедра"), + "in_progress": MessageLookupByLibrary.simpleMessage("В процессе"), + "inactive_diet_state": MessageLookupByLibrary.simpleMessage("Черновик"), + "infoAboutOrder": MessageLookupByLibrary.simpleMessage( + "Информация о заказе", + ), + "initial_measurements": MessageLookupByLibrary.simpleMessage( + "Первичные замеры", + ), + "label": MessageLookupByLibrary.simpleMessage("Название"), + "language": MessageLookupByLibrary.simpleMessage("Язык"), + "last_name": MessageLookupByLibrary.simpleMessage("Фамилия"), + "last_name_empty": MessageLookupByLibrary.simpleMessage( + "Фамилия обязательна для заполнения", + ), + "last_name_short": MessageLookupByLibrary.simpleMessage( + "В фамилии должен быть минимум 6 символов", + ), + "lbl_english": MessageLookupByLibrary.simpleMessage("English"), + "light_type": MessageLookupByLibrary.simpleMessage("Легкая"), + "light_type_desc": MessageLookupByLibrary.simpleMessage( + "С некоторыми видами диет можно употреблять алкоголь в умеренных количествах. Рекомендуется совмещать вместе с низкокалорийными закусками.", + ), + "link_was_copied": MessageLookupByLibrary.simpleMessage( + "Ссылка успешно скопирована", + ), + "loading": MessageLookupByLibrary.simpleMessage("Загрузка..."), + "male": MessageLookupByLibrary.simpleMessage("Мужской"), + "meal": MessageLookupByLibrary.simpleMessage("Приём пищи"), + "meat": MessageLookupByLibrary.simpleMessage("Мясо"), + "meat_type": MessageLookupByLibrary.simpleMessage("С мясом"), + "meat_type_desc": MessageLookupByLibrary.simpleMessage( + "Диета с мясом полезная и сбалансированная. Включает в себя нежирное мясо: курицу, индейку, кролика или говядину. В сочетании с овощами получаете все необходимые витамины и минералы. Не забывайте о порциях и старайтесь есть медленно, прислушиваясь к своему организму.", + ), + "milliliter": MessageLookupByLibrary.simpleMessage("мл"), + "minimal_customer_price": MessageLookupByLibrary.simpleMessage( + "Минимальная цена для покупателя: 1200₽", + ), + "most_new": MessageLookupByLibrary.simpleMessage("Самые новые"), + "most_old": MessageLookupByLibrary.simpleMessage("Самые старые"), + "msg_network_err": MessageLookupByLibrary.simpleMessage("Сетевая ошибка!"), + "msg_something_went_wrong": MessageLookupByLibrary.simpleMessage( + "Что то пошло не так!", + ), + "my_blog": MessageLookupByLibrary.simpleMessage("Мой блог"), + "my_diets": MessageLookupByLibrary.simpleMessage("Мои диеты"), + "my_plans": MessageLookupByLibrary.simpleMessage("Мои планы"), + "my_settings": MessageLookupByLibrary.simpleMessage("Мои настройки"), + "name_empty": MessageLookupByLibrary.simpleMessage( + "Имя пользователя обязательно для заполнения", + ), + "name_short": MessageLookupByLibrary.simpleMessage( + "В имени пользователя должно быть минимум 6 символов", + ), + "no": MessageLookupByLibrary.simpleMessage("Нет"), + "no_account": MessageLookupByLibrary.simpleMessage("У меня нет аккаунта"), + "one_option": MessageLookupByLibrary.simpleMessage("1 опция"), + "option": MessageLookupByLibrary.simpleMessage("Опция"), + "option_content": MessageLookupByLibrary.simpleMessage("Содержание опции"), + "option_content_hint_text": MessageLookupByLibrary.simpleMessage( + "На связи 7 дней в неделю", + ), + "option_desc": MessageLookupByLibrary.simpleMessage("Описание опции"), + "option_desc_hint_text": MessageLookupByLibrary.simpleMessage( + "Этот план питания для похудения на 7 дней сбалансированный и разнообразный", + ), + "option_duration": MessageLookupByLibrary.simpleMessage( + "Продолжительность опции", + ), + "option_personal_diet_desc": MessageLookupByLibrary.simpleMessage( + "Опция подразумевает создание индивидуальной диеты", + ), + "option_title": MessageLookupByLibrary.simpleMessage("Заголовок опции"), + "order": MessageLookupByLibrary.simpleMessage("Порядок"), + "password": MessageLookupByLibrary.simpleMessage("Пароль"), + "password_confirmation": MessageLookupByLibrary.simpleMessage( + "Подтвердите пароль", + ), + "password_confirmation_mismatch": MessageLookupByLibrary.simpleMessage( + "Пароли не совпадают", + ), + "password_empty": MessageLookupByLibrary.simpleMessage( + "Пароль обязателен для заполнения", + ), + "password_short": MessageLookupByLibrary.simpleMessage( + "В пароле должно быть минимум 6 символов", + ), + "pcs": MessageLookupByLibrary.simpleMessage("шт"), + "personal": MessageLookupByLibrary.simpleMessage("Персональные"), + "personal_diet_state": MessageLookupByLibrary.simpleMessage("Персональная"), + "photo": MessageLookupByLibrary.simpleMessage("Фото"), + "place_of_living": MessageLookupByLibrary.simpleMessage("Место проживания"), + "plan_author": MessageLookupByLibrary.simpleMessage("Автор плана"), + "plan_desc": MessageLookupByLibrary.simpleMessage("Описание плана"), + "plan_desc_example": MessageLookupByLibrary.simpleMessage( + "Большое подробное, привлекательное описание плана", + ), + "plan_duration": MessageLookupByLibrary.simpleMessage("Срок плана"), + "plan_label_desc": MessageLookupByLibrary.simpleMessage( + "План для поддержания формы", + ), + "plans_complete": MessageLookupByLibrary.simpleMessage("Пройденные планы"), + "popular": MessageLookupByLibrary.simpleMessage("Популярные"), + "preferred_language": MessageLookupByLibrary.simpleMessage( + "Предпочитаемый язык общения", + ), + "pressure_empty": MessageLookupByLibrary.simpleMessage( + "Все показатели давления обязательны к заполнению", + ), + "pressure_is_not_a_number": MessageLookupByLibrary.simpleMessage( + "Все показатели давления должны быть числами", + ), + "preview": MessageLookupByLibrary.simpleMessage("Превью"), + "price": MessageLookupByLibrary.simpleMessage("Цена"), + "price_explanation": MessageLookupByLibrary.simpleMessage( + "Разница в ценах, это комиссия Итвио", + ), + "profile": MessageLookupByLibrary.simpleMessage("Профиль"), + "proteins": MessageLookupByLibrary.simpleMessage("Белки"), + "publish": MessageLookupByLibrary.simpleMessage("Опубликовать"), + "published": MessageLookupByLibrary.simpleMessage("Опубликованные"), + "removeFromActive": MessageLookupByLibrary.simpleMessage( + "Снять с публикации", + ), + "save": MessageLookupByLibrary.simpleMessage("Сохранить"), + "services": MessageLookupByLibrary.simpleMessage("Оказание услуг"), + "settings": MessageLookupByLibrary.simpleMessage("Настройки"), + "share": MessageLookupByLibrary.simpleMessage("Поделиться"), + "skip": MessageLookupByLibrary.simpleMessage("Пропустить"), + "slim": MessageLookupByLibrary.simpleMessage("Похудение"), + "slim_type": MessageLookupByLibrary.simpleMessage("Похудение"), + "slim_type_desc": MessageLookupByLibrary.simpleMessage( + "План питания для похудения должен быть разработан с учётом индивидуальных особенностей организма, возраста, пола, уровня физической активности и состояния здоровья. Общие принципы: \n● Снижение калорийности; \n● Сбалансированный рацион; \n● Разнообразие продуктов; \n● Питьевой режим; \n● Ограничение вредных продуктов;", + ), + "standard": MessageLookupByLibrary.simpleMessage("Стандарт"), + "startDiet": MessageLookupByLibrary.simpleMessage("Начать диету"), + "tell_your_schedule": MessageLookupByLibrary.simpleMessage( + "Расскажите в свободной форме о том как просыпаетесь, когда едите, когда ложитесь спать:", + ), + "three_options": MessageLookupByLibrary.simpleMessage("3 опции"), + "toOffer": MessageLookupByLibrary.simpleMessage("Предложить"), + "to_draft": MessageLookupByLibrary.simpleMessage("В черновик"), + "unfavorite_foods": MessageLookupByLibrary.simpleMessage( + "Нелюбимые продукты", + ), + "up_pressure": MessageLookupByLibrary.simpleMessage( + "Верхние показатели давления:", + ), + "user_authorization": MessageLookupByLibrary.simpleMessage( + "Аутентификация", + ), + "user_data": MessageLookupByLibrary.simpleMessage("Данные пользователя"), + "user_registration": MessageLookupByLibrary.simpleMessage( + "Регистрация пользователя", + ), + "username": MessageLookupByLibrary.simpleMessage("Имя пользователя"), + "vegan": MessageLookupByLibrary.simpleMessage("Веган."), + "vegan_type": MessageLookupByLibrary.simpleMessage("Вегетарианская"), + "vegan_type_desc": MessageLookupByLibrary.simpleMessage( + "Диета основана на потреблении растительной пищи и отказе от продуктов животного происхождения. Такой тип питания может быть разнообразным и вкусным, а также полезным для здоровья.", + ), + "waist": MessageLookupByLibrary.simpleMessage("Талия"), + "waist_circumference": MessageLookupByLibrary.simpleMessage("Обхват талии"), + "weight": MessageLookupByLibrary.simpleMessage("Вес"), + "weight_chart": MessageLookupByLibrary.simpleMessage("График веса"), + "weight_measurements": MessageLookupByLibrary.simpleMessage("Замер веса"), + "wellness": MessageLookupByLibrary.simpleMessage("Улучшение самочувствия"), + "wellness_type": MessageLookupByLibrary.simpleMessage( + "Улучшение самочувствия", + ), + "wellness_type_desc": MessageLookupByLibrary.simpleMessage( + "Если вы любите мучные продукты, но хотите придерживаться диеты, вам подходит диета с добавленим мучных блюд на основе цельнозерновых вариантов. В них больше сложных углеводов и клетчатки, что способствует длительному чувству сытости и поддерживает здоровье пищеварительной системы.", + ), + "what_is_your_name": MessageLookupByLibrary.simpleMessage("Как вас зовут?"), + "wrong_credentials": MessageLookupByLibrary.simpleMessage( + "Неверные данные пользователя", + ), + "you_will_get": MessageLookupByLibrary.simpleMessage("Вы получите"), + "your_blood_pressure": MessageLookupByLibrary.simpleMessage( + "Ваше артериальное давление?", + ), + "your_favorite_sports": MessageLookupByLibrary.simpleMessage( + "Ваши спортивные увлечения?", + ), + "your_gender": MessageLookupByLibrary.simpleMessage("Ваш пол?"), + "your_height": MessageLookupByLibrary.simpleMessage("Ваш рост:"), + "your_schedule": MessageLookupByLibrary.simpleMessage("Ваш режим дня?"), + "your_weight": MessageLookupByLibrary.simpleMessage("Ваш вес:"), + }; } diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index 10cb4a70..cd17aa15 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -18,17 +18,20 @@ class S { static S? _current; static S get current { - assert(_current != null, - 'No instance of S was loaded. Try to initialize the S delegate before accessing S.current.'); + assert( + _current != null, + 'No instance of S was loaded. Try to initialize the S delegate before accessing S.current.', + ); return _current!; } static const AppLocalizationDelegate delegate = AppLocalizationDelegate(); static Future load(Locale locale) { - final name = (locale.countryCode?.isEmpty ?? false) - ? locale.languageCode - : locale.toString(); + final name = + (locale.countryCode?.isEmpty ?? false) + ? locale.languageCode + : locale.toString(); final localeName = Intl.canonicalizedLocale(name); return initializeMessages(localeName).then((_) { Intl.defaultLocale = localeName; @@ -41,8 +44,10 @@ class S { static S of(BuildContext context) { final instance = S.maybeOf(context); - assert(instance != null, - 'No instance of S present in the widget tree. Did you add S.delegate in localizationsDelegates?'); + assert( + instance != null, + 'No instance of S present in the widget tree. Did you add S.delegate in localizationsDelegates?', + ); return instance!; } @@ -62,12 +67,7 @@ class S { /// `Электронная почта` String get email { - return Intl.message( - 'Электронная почта', - name: 'email', - desc: '', - args: [], - ); + return Intl.message('Электронная почта', name: 'email', desc: '', args: []); } /// `Имя пользователя` @@ -82,12 +82,7 @@ class S { /// `Пароль` String get password { - return Intl.message( - 'Пароль', - name: 'password', - desc: '', - args: [], - ); + return Intl.message('Пароль', name: 'password', desc: '', args: []); } /// `Подтвердите пароль` @@ -112,22 +107,12 @@ class S { /// `Имя` String get first_name { - return Intl.message( - 'Имя', - name: 'first_name', - desc: '', - args: [], - ); + return Intl.message('Имя', name: 'first_name', desc: '', args: []); } /// `Фамилия` String get last_name { - return Intl.message( - 'Фамилия', - name: 'last_name', - desc: '', - args: [], - ); + return Intl.message('Фамилия', name: 'last_name', desc: '', args: []); } /// `Как вас зовут?` @@ -152,42 +137,22 @@ class S { /// `Страна` String get country { - return Intl.message( - 'Страна', - name: 'country', - desc: '', - args: [], - ); + return Intl.message('Страна', name: 'country', desc: '', args: []); } /// `Россия` String get Russia { - return Intl.message( - 'Россия', - name: 'Russia', - desc: '', - args: [], - ); + return Intl.message('Россия', name: 'Russia', desc: '', args: []); } /// `Город` String get city { - return Intl.message( - 'Город', - name: 'city', - desc: '', - args: [], - ); + return Intl.message('Город', name: 'city', desc: '', args: []); } /// `Москва` String get Moscow { - return Intl.message( - 'Москва', - name: 'Moscow', - desc: '', - args: [], - ); + return Intl.message('Москва', name: 'Moscow', desc: '', args: []); } /// `Место проживания` @@ -242,22 +207,12 @@ class S { /// `Мужской` String get male { - return Intl.message( - 'Мужской', - name: 'male', - desc: '', - args: [], - ); + return Intl.message('Мужской', name: 'male', desc: '', args: []); } /// `Женский` String get female { - return Intl.message( - 'Женский', - name: 'female', - desc: '', - args: [], - ); + return Intl.message('Женский', name: 'female', desc: '', args: []); } /// `Замер веса` @@ -272,12 +227,7 @@ class S { /// `Ваш вес:` String get your_weight { - return Intl.message( - 'Ваш вес:', - name: 'your_weight', - desc: '', - args: [], - ); + return Intl.message('Ваш вес:', name: 'your_weight', desc: '', args: []); } /// `Замер роста` @@ -292,12 +242,7 @@ class S { /// `Ваш рост:` String get your_height { - return Intl.message( - 'Ваш рост:', - name: 'your_height', - desc: '', - args: [], - ); + return Intl.message('Ваш рост:', name: 'your_height', desc: '', args: []); } /// `Наличие аллергии` @@ -322,22 +267,12 @@ class S { /// `Ваш пол?` String get your_gender { - return Intl.message( - 'Ваш пол?', - name: 'your_gender', - desc: '', - args: [], - ); + return Intl.message('Ваш пол?', name: 'your_gender', desc: '', args: []); } /// `Нет` String get no { - return Intl.message( - 'Нет', - name: 'no', - desc: '', - args: [], - ); + return Intl.message('Нет', name: 'no', desc: '', args: []); } /// `Есть ли у вас гипертония?` @@ -482,22 +417,12 @@ class S { /// `English` String get lbl_english { - return Intl.message( - 'English', - name: 'lbl_english', - desc: '', - args: [], - ); + return Intl.message('English', name: 'lbl_english', desc: '', args: []); } /// `Завершить` String get finish { - return Intl.message( - 'Завершить', - name: 'finish', - desc: '', - args: [], - ); + return Intl.message('Завершить', name: 'finish', desc: '', args: []); } /// `Предпочитаемый язык общения` @@ -522,12 +447,7 @@ class S { /// `Пропустить` String get skip { - return Intl.message( - 'Пропустить', - name: 'skip', - desc: '', - args: [], - ); + return Intl.message('Пропустить', name: 'skip', desc: '', args: []); } /// `Заполните информацию:` @@ -732,12 +652,7 @@ class S { /// `Войти` String get authentificate { - return Intl.message( - 'Войти', - name: 'authentificate', - desc: '', - args: [], - ); + return Intl.message('Войти', name: 'authentificate', desc: '', args: []); } /// `Аутентификация` @@ -752,12 +667,7 @@ class S { /// `Загрузка...` String get loading { - return Intl.message( - 'Загрузка...', - name: 'loading', - desc: '', - args: [], - ); + return Intl.message('Загрузка...', name: 'loading', desc: '', args: []); } /// `График веса` @@ -802,102 +712,52 @@ class S { /// `Грудь` String get chest { - return Intl.message( - 'Грудь', - name: 'chest', - desc: '', - args: [], - ); + return Intl.message('Грудь', name: 'chest', desc: '', args: []); } /// `Талия` String get waist { - return Intl.message( - 'Талия', - name: 'waist', - desc: '', - args: [], - ); + return Intl.message('Талия', name: 'waist', desc: '', args: []); } /// `Бедра` String get hips { - return Intl.message( - 'Бедра', - name: 'hips', - desc: '', - args: [], - ); + return Intl.message('Бедра', name: 'hips', desc: '', args: []); } /// `Выйти` String get exit { - return Intl.message( - 'Выйти', - name: 'exit', - desc: '', - args: [], - ); + return Intl.message('Выйти', name: 'exit', desc: '', args: []); } /// `Активен` String get active { - return Intl.message( - 'Активен', - name: 'active', - desc: '', - args: [], - ); + return Intl.message('Активен', name: 'active', desc: '', args: []); } /// `В архиве` String get archived { - return Intl.message( - 'В архиве', - name: 'archived', - desc: '', - args: [], - ); + return Intl.message('В архиве', name: 'archived', desc: '', args: []); } /// `Черновик` String get draft { - return Intl.message( - 'Черновик', - name: 'draft', - desc: '', - args: [], - ); + return Intl.message('Черновик', name: 'draft', desc: '', args: []); } /// `Мой блог` String get my_blog { - return Intl.message( - 'Мой блог', - name: 'my_blog', - desc: '', - args: [], - ); + return Intl.message('Мой блог', name: 'my_blog', desc: '', args: []); } /// `Язык` String get language { - return Intl.message( - 'Язык', - name: 'language', - desc: '', - args: [], - ); + return Intl.message('Язык', name: 'language', desc: '', args: []); } /// `В процессе` String get in_progress { - return Intl.message( - 'В процессе', - name: 'in_progress', - desc: '', - args: [], - ); + return Intl.message('В процессе', name: 'in_progress', desc: '', args: []); } /// `Добавить замер` @@ -912,12 +772,7 @@ class S { /// `Вес` String get weight { - return Intl.message( - 'Вес', - name: 'weight', - desc: '', - args: [], - ); + return Intl.message('Вес', name: 'weight', desc: '', args: []); } /// `Пройденные планы` @@ -942,132 +797,67 @@ class S { /// `Настройки` String get settings { - return Intl.message( - 'Настройки', - name: 'settings', - desc: '', - args: [], - ); + return Intl.message('Настройки', name: 'settings', desc: '', args: []); } /// `Профиль` String get profile { - return Intl.message( - 'Профиль', - name: 'profile', - desc: '', - args: [], - ); + return Intl.message('Профиль', name: 'profile', desc: '', args: []); } /// `Чат` String get chat { - return Intl.message( - 'Чат', - name: 'chat', - desc: '', - args: [], - ); + return Intl.message('Чат', name: 'chat', desc: '', args: []); } /// `Админ` String get admin { - return Intl.message( - 'Админ', - name: 'admin', - desc: '', - args: [], - ); + return Intl.message('Админ', name: 'admin', desc: '', args: []); } /// `Дневник` String get diary { - return Intl.message( - 'Дневник', - name: 'diary', - desc: '', - args: [], - ); + return Intl.message('Дневник', name: 'diary', desc: '', args: []); } /// `Сохранить` String get save { - return Intl.message( - 'Сохранить', - name: 'save', - desc: '', - args: [], - ); + return Intl.message('Сохранить', name: 'save', desc: '', args: []); } /// `шт` String get pcs { - return Intl.message( - 'шт', - name: 'pcs', - desc: '', - args: [], - ); + return Intl.message('шт', name: 'pcs', desc: '', args: []); } /// `гр` String get gr { - return Intl.message( - 'гр', - name: 'gr', - desc: '', - args: [], - ); + return Intl.message('гр', name: 'gr', desc: '', args: []); } /// `мл` String get milliliter { - return Intl.message( - 'мл', - name: 'milliliter', - desc: '', - args: [], - ); + return Intl.message('мл', name: 'milliliter', desc: '', args: []); } /// `гр` String get grams { - return Intl.message( - 'гр', - name: 'grams', - desc: '', - args: [], - ); + return Intl.message('гр', name: 'grams', desc: '', args: []); } /// `Начать диету` String get startDiet { - return Intl.message( - 'Начать диету', - name: 'startDiet', - desc: '', - args: [], - ); + return Intl.message('Начать диету', name: 'startDiet', desc: '', args: []); } /// `Комментарии` String get comments { - return Intl.message( - 'Комментарии', - name: 'comments', - desc: '', - args: [], - ); + return Intl.message('Комментарии', name: 'comments', desc: '', args: []); } /// `комментарий` String get comment { - return Intl.message( - 'комментарий', - name: 'comment', - desc: '', - args: [], - ); + return Intl.message('комментарий', name: 'comment', desc: '', args: []); } /// `комментария` @@ -1092,32 +882,17 @@ class S { /// `дней` String get days { - return Intl.message( - 'дней', - name: 'days', - desc: '', - args: [], - ); + return Intl.message('дней', name: 'days', desc: '', args: []); } /// `День` String get day { - return Intl.message( - 'День', - name: 'day', - desc: '', - args: [], - ); + return Intl.message('День', name: 'day', desc: '', args: []); } /// `дня` String get another_form_of_day { - return Intl.message( - 'дня', - name: 'another_form_of_day', - desc: '', - args: [], - ); + return Intl.message('дня', name: 'another_form_of_day', desc: '', args: []); } /// `комментариев` @@ -1132,32 +907,17 @@ class S { /// `Приём пищи` String get meal { - return Intl.message( - 'Приём пищи', - name: 'meal', - desc: '', - args: [], - ); + return Intl.message('Приём пищи', name: 'meal', desc: '', args: []); } /// `Автор диеты` String get diet_author { - return Intl.message( - 'Автор диеты', - name: 'diet_author', - desc: '', - args: [], - ); + return Intl.message('Автор диеты', name: 'diet_author', desc: '', args: []); } /// `Свернуть` String get hide { - return Intl.message( - 'Свернуть', - name: 'hide', - desc: '', - args: [], - ); + return Intl.message('Свернуть', name: 'hide', desc: '', args: []); } /// `Показать полностью` @@ -1182,22 +942,12 @@ class S { /// `Поделиться` String get share { - return Intl.message( - 'Поделиться', - name: 'share', - desc: '', - args: [], - ); + return Intl.message('Поделиться', name: 'share', desc: '', args: []); } /// `Пожаловаться` String get complain { - return Intl.message( - 'Пожаловаться', - name: 'complain', - desc: '', - args: [], - ); + return Intl.message('Пожаловаться', name: 'complain', desc: '', args: []); } /// `Вегетарианская` @@ -1212,32 +962,17 @@ class S { /// `Легкая` String get light_type { - return Intl.message( - 'Легкая', - name: 'light_type', - desc: '', - args: [], - ); + return Intl.message('Легкая', name: 'light_type', desc: '', args: []); } /// `С мясом` String get meat_type { - return Intl.message( - 'С мясом', - name: 'meat_type', - desc: '', - args: [], - ); + return Intl.message('С мясом', name: 'meat_type', desc: '', args: []); } /// `Мучное` String get carb_type { - return Intl.message( - 'Мучное', - name: 'carb_type', - desc: '', - args: [], - ); + return Intl.message('Мучное', name: 'carb_type', desc: '', args: []); } /// `Диета основана на потреблении растительной пищи и отказе от продуктов животного происхождения. Такой тип питания может быть разнообразным и вкусным, а также полезным для здоровья.` @@ -1282,62 +1017,32 @@ class S { /// `План диеты` String get diet_plan { - return Intl.message( - 'План диеты', - name: 'diet_plan', - desc: '', - args: [], - ); + return Intl.message('План диеты', name: 'diet_plan', desc: '', args: []); } /// `Калории` String get calories { - return Intl.message( - 'Калории', - name: 'calories', - desc: '', - args: [], - ); + return Intl.message('Калории', name: 'calories', desc: '', args: []); } /// `Белки` String get proteins { - return Intl.message( - 'Белки', - name: 'proteins', - desc: '', - args: [], - ); + return Intl.message('Белки', name: 'proteins', desc: '', args: []); } /// `Жиры` String get fats { - return Intl.message( - 'Жиры', - name: 'fats', - desc: '', - args: [], - ); + return Intl.message('Жиры', name: 'fats', desc: '', args: []); } /// `Углеводы` String get carbohydrates { - return Intl.message( - 'Углеводы', - name: 'carbohydrates', - desc: '', - args: [], - ); + return Intl.message('Углеводы', name: 'carbohydrates', desc: '', args: []); } /// `Ответить` String get answer { - return Intl.message( - 'Ответить', - name: 'answer', - desc: '', - args: [], - ); + return Intl.message('Ответить', name: 'answer', desc: '', args: []); } /// `Ссылка успешно скопирована` @@ -1362,92 +1067,47 @@ class S { /// `Продолжить` String get continue_ { - return Intl.message( - 'Продолжить', - name: 'continue_', - desc: '', - args: [], - ); + return Intl.message('Продолжить', name: 'continue_', desc: '', args: []); } /// `Порядок` String get order { - return Intl.message( - 'Порядок', - name: 'order', - desc: '', - args: [], - ); + return Intl.message('Порядок', name: 'order', desc: '', args: []); } /// `Время прохождения` String get time { - return Intl.message( - 'Время прохождения', - name: 'time', - desc: '', - args: [], - ); + return Intl.message('Время прохождения', name: 'time', desc: '', args: []); } /// `Все` String get all { - return Intl.message( - 'Все', - name: 'all', - desc: '', - args: [], - ); + return Intl.message('Все', name: 'all', desc: '', args: []); } /// `Тип диеты` String get diet_type { - return Intl.message( - 'Тип диеты', - name: 'diet_type', - desc: '', - args: [], - ); + return Intl.message('Тип диеты', name: 'diet_type', desc: '', args: []); } /// `Тип плана` String get plan_type { - return Intl.message( - 'Тип плана', - name: 'plan_type', - desc: '', - args: [], - ); + return Intl.message('Тип плана', name: 'plan_type', desc: '', args: []); } /// `Популярные` String get popular { - return Intl.message( - 'Популярные', - name: 'popular', - desc: '', - args: [], - ); + return Intl.message('Популярные', name: 'popular', desc: '', args: []); } /// `Самые новые` String get most_new { - return Intl.message( - 'Самые новые', - name: 'most_new', - desc: '', - args: [], - ); + return Intl.message('Самые новые', name: 'most_new', desc: '', args: []); } /// `Самые старые` String get most_old { - return Intl.message( - 'Самые старые', - name: 'most_old', - desc: '', - args: [], - ); + return Intl.message('Самые старые', name: 'most_old', desc: '', args: []); } /// `Название: А-Я` @@ -1472,12 +1132,7 @@ class S { /// `По умолчянию` String get by_default { - return Intl.message( - 'По умолчянию', - name: 'by_default', - desc: '', - args: [], - ); + return Intl.message('По умолчянию', name: 'by_default', desc: '', args: []); } /// `Создание диеты` @@ -1522,12 +1177,7 @@ class S { /// `Статус диеты` String get diet_state { - return Intl.message( - 'Статус диеты', - name: 'diet_state', - desc: '', - args: [], - ); + return Intl.message('Статус диеты', name: 'diet_state', desc: '', args: []); } /// `Активная` @@ -1562,42 +1212,22 @@ class S { /// `Мясо` String get meat { - return Intl.message( - 'Мясо', - name: 'meat', - desc: '', - args: [], - ); + return Intl.message('Мясо', name: 'meat', desc: '', args: []); } /// `Веган.` String get vegan { - return Intl.message( - 'Веган.', - name: 'vegan', - desc: '', - args: [], - ); + return Intl.message('Веган.', name: 'vegan', desc: '', args: []); } /// `Фото` String get photo { - return Intl.message( - 'Фото', - name: 'photo', - desc: '', - args: [], - ); + return Intl.message('Фото', name: 'photo', desc: '', args: []); } /// `Галерея` String get gallery { - return Intl.message( - 'Галерея', - name: 'gallery', - desc: '', - args: [], - ); + return Intl.message('Галерея', name: 'gallery', desc: '', args: []); } /// `Добавьте обложку` @@ -1612,52 +1242,27 @@ class S { /// `Добавить` String get add { - return Intl.message( - 'Добавить', - name: 'add', - desc: '', - args: [], - ); + return Intl.message('Добавить', name: 'add', desc: '', args: []); } /// `cкопирован` String get copied { - return Intl.message( - 'cкопирован', - name: 'copied', - desc: '', - args: [], - ); + return Intl.message('cкопирован', name: 'copied', desc: '', args: []); } /// `В черновик` String get to_draft { - return Intl.message( - 'В черновик', - name: 'to_draft', - desc: '', - args: [], - ); + return Intl.message('В черновик', name: 'to_draft', desc: '', args: []); } /// `Превью` String get preview { - return Intl.message( - 'Превью', - name: 'preview', - desc: '', - args: [], - ); + return Intl.message('Превью', name: 'preview', desc: '', args: []); } /// `Опубликовать` String get publish { - return Intl.message( - 'Опубликовать', - name: 'publish', - desc: '', - args: [], - ); + return Intl.message('Опубликовать', name: 'publish', desc: '', args: []); } /// `Добавление плана` @@ -1672,12 +1277,7 @@ class S { /// `Название` String get label { - return Intl.message( - 'Название', - name: 'label', - desc: '', - args: [], - ); + return Intl.message('Название', name: 'label', desc: '', args: []); } /// `План для поддержания формы` @@ -1702,22 +1302,12 @@ class S { /// `Похудение` String get slim { - return Intl.message( - 'Похудение', - name: 'slim', - desc: '', - args: [], - ); + return Intl.message('Похудение', name: 'slim', desc: '', args: []); } /// `Поддержка формы` String get fitness { - return Intl.message( - 'Поддержка формы', - name: 'fitness', - desc: '', - args: [], - ); + return Intl.message('Поддержка формы', name: 'fitness', desc: '', args: []); } /// `Улучшение самочувствия` @@ -1772,72 +1362,37 @@ class S { /// `1 опция` String get one_option { - return Intl.message( - '1 опция', - name: 'one_option', - desc: '', - args: [], - ); + return Intl.message('1 опция', name: 'one_option', desc: '', args: []); } /// `3 опции` String get three_options { - return Intl.message( - '3 опции', - name: 'three_options', - desc: '', - args: [], - ); + return Intl.message('3 опции', name: 'three_options', desc: '', args: []); } /// `Опция` String get option { - return Intl.message( - 'Опция', - name: 'option', - desc: '', - args: [], - ); + return Intl.message('Опция', name: 'option', desc: '', args: []); } /// `Оказание услуг` String get services { - return Intl.message( - 'Оказание услуг', - name: 'services', - desc: '', - args: [], - ); + return Intl.message('Оказание услуг', name: 'services', desc: '', args: []); } /// `Эконом` String get economy { - return Intl.message( - 'Эконом', - name: 'economy', - desc: '', - args: [], - ); + return Intl.message('Эконом', name: 'economy', desc: '', args: []); } /// `Стандарт` String get standard { - return Intl.message( - 'Стандарт', - name: 'standard', - desc: '', - args: [], - ); + return Intl.message('Стандарт', name: 'standard', desc: '', args: []); } /// `Комфорт` String get comfort { - return Intl.message( - 'Комфорт', - name: 'comfort', - desc: '', - args: [], - ); + return Intl.message('Комфорт', name: 'comfort', desc: '', args: []); } /// `Заголовок опции` @@ -1952,12 +1507,7 @@ class S { /// `Автор плана` String get plan_author { - return Intl.message( - 'Автор плана', - name: 'plan_author', - desc: '', - args: [], - ); + return Intl.message('Автор плана', name: 'plan_author', desc: '', args: []); } /// `Продолжительность опции` @@ -1992,12 +1542,7 @@ class S { /// `Похудение` String get slim_type { - return Intl.message( - 'Похудение', - name: 'slim_type', - desc: '', - args: [], - ); + return Intl.message('Похудение', name: 'slim_type', desc: '', args: []); } /// `План питания для похудения должен быть разработан с учётом индивидуальных особенностей организма, возраста, пола, уровня физической активности и состояния здоровья. Общие принципы: \n● Снижение калорийности; \n● Сбалансированный рацион; \n● Разнообразие продуктов; \n● Питьевой режим; \n● Ограничение вредных продуктов;` @@ -2052,22 +1597,12 @@ class S { /// `Цена` String get price { - return Intl.message( - 'Цена', - name: 'price', - desc: '', - args: [], - ); + return Intl.message('Цена', name: 'price', desc: '', args: []); } /// `Мои диеты` String get my_diets { - return Intl.message( - 'Мои диеты', - name: 'my_diets', - desc: '', - args: [], - ); + return Intl.message('Мои диеты', name: 'my_diets', desc: '', args: []); } /// `Опубликованные` @@ -2082,42 +1617,22 @@ class S { /// `Черновики` String get drafted { - return Intl.message( - 'Черновики', - name: 'drafted', - desc: '', - args: [], - ); + return Intl.message('Черновики', name: 'drafted', desc: '', args: []); } /// `Персональные` String get personal { - return Intl.message( - 'Персональные', - name: 'personal', - desc: '', - args: [], - ); + return Intl.message('Персональные', name: 'personal', desc: '', args: []); } /// `Редактировать` String get edit { - return Intl.message( - 'Редактировать', - name: 'edit', - desc: '', - args: [], - ); + return Intl.message('Редактировать', name: 'edit', desc: '', args: []); } /// `Предложить` String get toOffer { - return Intl.message( - 'Предложить', - name: 'toOffer', - desc: '', - args: [], - ); + return Intl.message('Предложить', name: 'toOffer', desc: '', args: []); } /// `Снять с публикации` @@ -2132,42 +1647,22 @@ class S { /// `Диета` String get diet { - return Intl.message( - 'Диета', - name: 'diet', - desc: '', - args: [], - ); + return Intl.message('Диета', name: 'diet', desc: '', args: []); } /// `Удалена` String get deleted { - return Intl.message( - 'Удалена', - name: 'deleted', - desc: '', - args: [], - ); + return Intl.message('Удалена', name: 'deleted', desc: '', args: []); } /// `Мои планы` String get my_plans { - return Intl.message( - 'Мои планы', - name: 'my_plans', - desc: '', - args: [], - ); + return Intl.message('Мои планы', name: 'my_plans', desc: '', args: []); } /// `от` String get from { - return Intl.message( - 'от', - name: 'from', - desc: '', - args: [], - ); + return Intl.message('от', name: 'from', desc: '', args: []); } /// `Данные пользователя` @@ -2192,12 +1687,7 @@ class S { /// `Пол` String get sex { - return Intl.message( - 'Пол', - name: 'sex', - desc: '', - args: [], - ); + return Intl.message('Пол', name: 'sex', desc: '', args: []); } /// `Физическая форма` @@ -2212,42 +1702,22 @@ class S { /// `Рост` String get height { - return Intl.message( - 'Рост', - name: 'height', - desc: '', - args: [], - ); + return Intl.message('Рост', name: 'height', desc: '', args: []); } /// `Давление` String get pressure { - return Intl.message( - 'Давление', - name: 'pressure', - desc: '', - args: [], - ); + return Intl.message('Давление', name: 'pressure', desc: '', args: []); } /// `Верхнее` String get upper { - return Intl.message( - 'Верхнее', - name: 'upper', - desc: '', - args: [], - ); + return Intl.message('Верхнее', name: 'upper', desc: '', args: []); } /// `Нижнее` String get lower { - return Intl.message( - 'Нижнее', - name: 'lower', - desc: '', - args: [], - ); + return Intl.message('Нижнее', name: 'lower', desc: '', args: []); } /// `Склонность к гипотонии` @@ -2352,12 +1822,7 @@ class S { /// `Подтвердить` String get confirm { - return Intl.message( - 'Подтвердить', - name: 'confirm', - desc: '', - args: [], - ); + return Intl.message('Подтвердить', name: 'confirm', desc: '', args: []); } /// `Не удалось отменить диету` @@ -2372,22 +1837,12 @@ class S { /// `часов` String get hours { - return Intl.message( - 'часов', - name: 'hours', - desc: '', - args: [], - ); + return Intl.message('часов', name: 'hours', desc: '', args: []); } /// `час` String get hour { - return Intl.message( - 'час', - name: 'hour', - desc: '', - args: [], - ); + return Intl.message('час', name: 'hour', desc: '', args: []); } /// `часа` @@ -2402,22 +1857,12 @@ class S { /// `минуты` String get minutes { - return Intl.message( - 'минуты', - name: 'minutes', - desc: '', - args: [], - ); + return Intl.message('минуты', name: 'minutes', desc: '', args: []); } /// `минута` String get minute { - return Intl.message( - 'минута', - name: 'minute', - desc: '', - args: [], - ); + return Intl.message('минута', name: 'minute', desc: '', args: []); } /// `минут` @@ -2462,22 +1907,12 @@ class S { /// `этапов` String get stages { - return Intl.message( - 'этапов', - name: 'stages', - desc: '', - args: [], - ); + return Intl.message('этапов', name: 'stages', desc: '', args: []); } /// `этап` String get stage { - return Intl.message( - 'этап', - name: 'stage', - desc: '', - args: [], - ); + return Intl.message('этап', name: 'stage', desc: '', args: []); } /// `этапа` @@ -2512,22 +1947,12 @@ class S { /// `Ингредиенты` String get ingredients { - return Intl.message( - 'Ингредиенты', - name: 'ingredients', - desc: '', - args: [], - ); + return Intl.message('Ингредиенты', name: 'ingredients', desc: '', args: []); } /// `Шаг` String get step { - return Intl.message( - 'Шаг', - name: 'step', - desc: '', - args: [], - ); + return Intl.message('Шаг', name: 'step', desc: '', args: []); } /// `Пошаговый фоторецепт` @@ -2552,12 +1977,7 @@ class S { /// `Спам` String get spam { - return Intl.message( - 'Спам', - name: 'spam', - desc: '', - args: [], - ); + return Intl.message('Спам', name: 'spam', desc: '', args: []); } /// `Нарушение законодательства` @@ -2572,12 +1992,7 @@ class S { /// `Обман` String get deception { - return Intl.message( - 'Обман', - name: 'deception', - desc: '', - args: [], - ); + return Intl.message('Обман', name: 'deception', desc: '', args: []); } /// `Насилие и вражда` @@ -2622,12 +2037,7 @@ class S { /// `Жалоба` String get complaint { - return Intl.message( - 'Жалоба', - name: 'complaint', - desc: '', - args: [], - ); + return Intl.message('Жалоба', name: 'complaint', desc: '', args: []); } /// `Что именно в этом материале Вы считаете неприемлемым и нарушающим правила?` @@ -2692,52 +2102,27 @@ class S { /// `Хорошо` String get ok { - return Intl.message( - 'Хорошо', - name: 'ok', - desc: '', - args: [], - ); + return Intl.message('Хорошо', name: 'ok', desc: '', args: []); } /// `Алкоголь` String get alcohol { - return Intl.message( - 'Алкоголь', - name: 'alcohol', - desc: '', - args: [], - ); + return Intl.message('Алкоголь', name: 'alcohol', desc: '', args: []); } /// `Наркотики` String get drugs { - return Intl.message( - 'Наркотики', - name: 'drugs', - desc: '', - args: [], - ); + return Intl.message('Наркотики', name: 'drugs', desc: '', args: []); } /// `Никотин` String get nicotine { - return Intl.message( - 'Никотин', - name: 'nicotine', - desc: '', - args: [], - ); + return Intl.message('Никотин', name: 'nicotine', desc: '', args: []); } /// `Оружие` String get weapon { - return Intl.message( - 'Оружие', - name: 'weapon', - desc: '', - args: [], - ); + return Intl.message('Оружие', name: 'weapon', desc: '', args: []); } /// `Поддельные документы` @@ -2762,12 +2147,7 @@ class S { /// `Другое` String get other { - return Intl.message( - 'Другое', - name: 'other', - desc: '', - args: [], - ); + return Intl.message('Другое', name: 'other', desc: '', args: []); } /// `Введение в заблуждение` @@ -2792,12 +2172,7 @@ class S { /// `Мошенничество` String get fraud { - return Intl.message( - 'Мошенничество', - name: 'fraud', - desc: '', - args: [], - ); + return Intl.message('Мошенничество', name: 'fraud', desc: '', args: []); } /// `Мошенничество с целью наживы. Если вас обманули, пожалуйста, сообщите об этом в правоохранительные органы.` @@ -2822,12 +2197,7 @@ class S { /// `Оскорбление` String get hatred { - return Intl.message( - 'Оскорбление', - name: 'hatred', - desc: '', - args: [], - ); + return Intl.message('Оскорбление', name: 'hatred', desc: '', args: []); } /// `Склонение к самоубийству` @@ -2852,12 +2222,7 @@ class S { /// `Экстремизм` String get extremism { - return Intl.message( - 'Экстремизм', - name: 'extremism', - desc: '', - args: [], - ); + return Intl.message('Экстремизм', name: 'extremism', desc: '', args: []); } /// `Призывы к травле` @@ -2912,12 +2277,7 @@ class S { /// `Ваш рейтинг` String get your_rating { - return Intl.message( - 'Ваш рейтинг', - name: 'your_rating', - desc: '', - args: [], - ); + return Intl.message('Ваш рейтинг', name: 'your_rating', desc: '', args: []); } /// `Скопировать пригласительную ссылку` @@ -2932,12 +2292,7 @@ class S { /// `Статистика` String get statistic { - return Intl.message( - 'Статистика', - name: 'statistic', - desc: '', - args: [], - ); + return Intl.message('Статистика', name: 'statistic', desc: '', args: []); } /// `За всё время` @@ -2952,32 +2307,17 @@ class S { /// `За год` String get for_a_year { - return Intl.message( - 'За год', - name: 'for_a_year', - desc: '', - args: [], - ); + return Intl.message('За год', name: 'for_a_year', desc: '', args: []); } /// `За месяц` String get for_a_month { - return Intl.message( - 'За месяц', - name: 'for_a_month', - desc: '', - args: [], - ); + return Intl.message('За месяц', name: 'for_a_month', desc: '', args: []); } /// `За неделю` String get for_a_week { - return Intl.message( - 'За неделю', - name: 'for_a_week', - desc: '', - args: [], - ); + return Intl.message('За неделю', name: 'for_a_week', desc: '', args: []); } /// `Количество приглашенных` @@ -3192,12 +2532,7 @@ class S { /// `Заказать` String get to_order { - return Intl.message( - 'Заказать', - name: 'to_order', - desc: '', - args: [], - ); + return Intl.message('Заказать', name: 'to_order', desc: '', args: []); } /// `Дату старта плана невозможно выбрать, пока Вы не привяжите карту` @@ -3254,12 +2589,7 @@ class S { /// `Оплатить` String get pay { - return Intl.message( - 'Оплатить', - name: 'pay', - desc: '', - args: [], - ); + return Intl.message('Оплатить', name: 'pay', desc: '', args: []); } /// `Подробнее о заказе` From 8ff32db3ca56f0adc947af4776ebfc9cf752e3fc Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 15:59:16 +0300 Subject: [PATCH 02/34] feat: test-case --- lib/features/dev_tools/test_cases.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/features/dev_tools/test_cases.dart b/lib/features/dev_tools/test_cases.dart index 2623c9b7..ea551a34 100644 --- a/lib/features/dev_tools/test_cases.dart +++ b/lib/features/dev_tools/test_cases.dart @@ -32,6 +32,7 @@ class CreateRecipeTask implements TestCases { RecipeModel( title: 'Title', state: 'active', + image: null, description: 'desc', type: 'first_meals', servings: 10, From fca972bcc7745e3413b00ef233c2fd3b4cf085d7 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 16:06:39 +0300 Subject: [PATCH 03/34] feat: tf build --- .gitea/workflows/test-flight-cd.yaml | 2 +- Build-tf | 49 ++++++++++++++++++++++++++++ Support/ExportOptions.plist | 22 +++++++++++++ ios/Runner.xcodeproj/project.pbxproj | 12 +++---- lib/core/const.dart | 4 +-- pubspec.yaml | 2 +- 6 files changed, 81 insertions(+), 10 deletions(-) create mode 100644 Build-tf create mode 100644 Support/ExportOptions.plist diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 730ab459..6b330a40 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -25,7 +25,7 @@ jobs: api-key-id: ${{ secrets.APPSTORE_KEY_ID }} api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} - - run: ./Build + - run: ./Build-tf - name: Upload to TestFlight uses: http://gitea.office.local:3000/mso7nueh/upload-testflight-build diff --git a/Build-tf b/Build-tf new file mode 100644 index 00000000..569fd053 --- /dev/null +++ b/Build-tf @@ -0,0 +1,49 @@ +#!/usr/bin/env bash + +set -xeu +set -o pipefail + +function finish() { + ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip" + rm -rf "${RESULT_BUNDLE_PATH}" +} + +trap finish EXIT + +SDK="${SDK:-iphoneos}" +WORKSPACE="${WORKSPACE:-Example-iOS.xcworkspace}" +SCHEME="${SCHEME:-Example-iOS}" +CONFIGURATION=${CONFIGURATION:-Release} + +BUILD_DIR=${BUILD_DIR:-.build} +ARTIFACT_PATH=${RESULT_PATH:-${BUILD_DIR}/Artifacts} +RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult" +ARCHIVE_PATH=${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive} +DERIVED_DATA_PATH=${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData} +CURRENT_PROJECT_VERSION=${BUILD_NUMBER:-0} +EXPORT_OPTIONS_FILE="Support/ExportOptions.plist" + +rm -rf "${RESULT_BUNDLE_PATH}" + +xcrun xcodebuild \ + -workspace "${WORKSPACE}" \ + -scheme "${SCHEME}" \ + -configuration "${CONFIGURATION}" \ + -sdk "${SDK}" \ + -parallelizeTargets \ + -showBuildTimingSummary \ + -disableAutomaticPackageResolution \ + -derivedDataPath "${DERIVED_DATA_PATH}" \ + -archivePath "${ARCHIVE_PATH}" \ + -resultBundlePath "${RESULT_BUNDLE_PATH}" \ + CURRENT_PROJECT_VERSION="${CURRENT_PROJECT_VERSION}" \ + archive + +xcrun xcodebuild \ + -exportArchive \ + -exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \ + -archivePath "${ARCHIVE_PATH}" \ + -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" + +# Zip up the Xcode Archive into Artifacts folder. +ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" \ No newline at end of file diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist new file mode 100644 index 00000000..9a0ba828 --- /dev/null +++ b/Support/ExportOptions.plist @@ -0,0 +1,22 @@ + + + + + destination + export + method + app-store + signingStyle + automatic + generateAppStoreInformation + + stripSwiftSymbols + + teamID + ER9FN723RR + uploadBitcode + + uploadSymbols + + + \ No newline at end of file diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index a0fd3539..8e714119 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -365,7 +365,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 47; + CURRENT_PROJECT_VERSION = 48; DEVELOPMENT_TEAM = VL68C36HYS; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -383,7 +383,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - MARKETING_VERSION = 1.0.47; + MARKETING_VERSION = 1.0.48; PRODUCT_BUNDLE_IDENTIFIER = com.eatvioapp.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -514,7 +514,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 47; + CURRENT_PROJECT_VERSION = 48; DEVELOPMENT_TEAM = VL68C36HYS; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -532,7 +532,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - MARKETING_VERSION = 1.0.47; + MARKETING_VERSION = 1.0.48; PRODUCT_BUNDLE_IDENTIFIER = com.eatvioapp.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -551,7 +551,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 47; + CURRENT_PROJECT_VERSION = 48; DEVELOPMENT_TEAM = VL68C36HYS; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( @@ -569,7 +569,7 @@ "$(inherited)", "$(PROJECT_DIR)/Flutter", ); - MARKETING_VERSION = 1.0.47; + MARKETING_VERSION = 1.0.48; PRODUCT_BUNDLE_IDENTIFIER = com.eatvioapp.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/lib/core/const.dart b/lib/core/const.dart index 4f38a54e..31c47e9c 100644 --- a/lib/core/const.dart +++ b/lib/core/const.dart @@ -1,5 +1,5 @@ -// String baseUrl = 'https://eatvio.ru'; -String baseUrl = 'https://dev2.eatvio.com'; +String baseUrl = 'https://eatvio.ru'; +// String baseUrl = 'https://dev2.eatvio.com'; const List durationValues = [7, 14, 21]; diff --git a/pubspec.yaml b/pubspec.yaml index 010bd422..a6ab85d4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: eatvio_app description: A new Flutter project. -version: 1.0.47+47 +version: 1.0.48+48 publish_to: 'none' environment: From e98f9d298e40a7a26ac5dfc99e17dcde730c1db4 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 16:11:11 +0300 Subject: [PATCH 04/34] feat: tf build --- .gitea/workflows/test-flight-cd.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 6b330a40..8f8b995e 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -6,7 +6,7 @@ on: jobs: build: - runs-on: mac-mini + runs-on: [macos-arm64] steps: - name: Checkout uses: actions/checkout@v2 From 593b99ac0504c2be79905feff717d2cc0bdca1b7 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 16:12:48 +0300 Subject: [PATCH 05/34] feat: test-case --- lib/features/dev_tools/test_cases.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/features/dev_tools/test_cases.dart b/lib/features/dev_tools/test_cases.dart index ea551a34..1db0bb30 100644 --- a/lib/features/dev_tools/test_cases.dart +++ b/lib/features/dev_tools/test_cases.dart @@ -32,6 +32,7 @@ class CreateRecipeTask implements TestCases { RecipeModel( title: 'Title', state: 'active', + activeCookTime: 10, image: null, description: 'desc', type: 'first_meals', From cf57518e5b0977084a50839ad410710ad4e5216c Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 16:17:19 +0300 Subject: [PATCH 06/34] feat: tags --- .gitea/workflows/test-flight-cd.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 8f8b995e..1050bb1d 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -12,13 +12,13 @@ jobs: uses: actions/checkout@v2 - name: Import code sign - uses: http://gitea.office.local:3000/mso7nueh/import-codesign-certs + uses: mso7nueh/import-codesign-certsv1 with: p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }} p12-password: ${{ secrets.CERTIFICATES_PASSWORD }} - name: Download provisioning - uses: http://gitea.office.local:3000/mso7nueh/apple-provisioning-profiles-downloader + uses: mso7nueh/apple-provisioning-profiles-downloaderv1 with: bundle-id: com.eatvioapp.app issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} @@ -28,7 +28,7 @@ jobs: - run: ./Build-tf - name: Upload to TestFlight - uses: http://gitea.office.local:3000/mso7nueh/upload-testflight-build + uses: mso7nueh/upload-testflight-build@master with: app-path: .build/Artifacts/EatvioApp.ipa/EatvioApp.ipa issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} From 579df94d67f23bd4338c5d93cf92c1784d7df4fd Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 16:19:09 +0300 Subject: [PATCH 07/34] feat: tags --- .gitea/workflows/test-flight-cd.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 1050bb1d..17bc769b 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -12,13 +12,13 @@ jobs: uses: actions/checkout@v2 - name: Import code sign - uses: mso7nueh/import-codesign-certsv1 + uses: mso7nueh/import-codesign-certs@v1 with: p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }} p12-password: ${{ secrets.CERTIFICATES_PASSWORD }} - name: Download provisioning - uses: mso7nueh/apple-provisioning-profiles-downloaderv1 + uses: mso7nueh/apple-provisioning-profiles-downloader@v1 with: bundle-id: com.eatvioapp.app issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} From e9e22bd1aec30e72a887066762b29c4349fea757 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 16:27:57 +0300 Subject: [PATCH 08/34] feat: tag upd --- .gitea/workflows/test-flight-cd.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 17bc769b..69ef82c0 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -18,7 +18,7 @@ jobs: p12-password: ${{ secrets.CERTIFICATES_PASSWORD }} - name: Download provisioning - uses: mso7nueh/apple-provisioning-profiles-downloader@v1 + uses: mso7nueh/apple-provisioning-profiles-downloader@v1.0.8 with: bundle-id: com.eatvioapp.app issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} From 83e3760be936c658d8561108e3434d2d836bfab5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B0=D1=82=D0=BE=D0=BB=D0=B8=D0=B9=20=D0=9F?= =?UTF-8?q?=D0=BE=D0=BB=D0=BE=D0=B7?= Date: Mon, 17 Mar 2025 14:04:02 +0000 Subject: [PATCH 09/34] Update .gitea/workflows/test-flight-cd.yaml --- .gitea/workflows/test-flight-cd.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 69ef82c0..452fecf8 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -13,7 +13,10 @@ jobs: - name: Import code sign uses: mso7nueh/import-codesign-certs@v1 + env: + KEYCHAIN_PATH: ${{ runner.temp }}/signing_temp.keychain with: + keychain-path: ${{ env.KEYCHAIN_PATH }} p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }} p12-password: ${{ secrets.CERTIFICATES_PASSWORD }} From 7712a85cea4b15c3bab0299f0473e47c043de9cd Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 17:31:04 +0300 Subject: [PATCH 10/34] feat: upd export options --- .gitea/workflows/test-flight-cd.yaml | 1 + Support/ExportOptions.plist | 17 ++++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 69ef82c0..6bc13d11 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -20,6 +20,7 @@ jobs: - name: Download provisioning uses: mso7nueh/apple-provisioning-profiles-downloader@v1.0.8 with: + profile-type: IOS_APP_STORE bundle-id: com.eatvioapp.app issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} api-key-id: ${{ secrets.APPSTORE_KEY_ID }} diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist index 9a0ba828..f863042b 100644 --- a/Support/ExportOptions.plist +++ b/Support/ExportOptions.plist @@ -4,18 +4,21 @@ destination export + manageAppVersionAndBuildNumber + method app-store + provisioningProfiles + + com.eatvioapp.app + EatvioApp + + signingCertificate + Apple Distribution signingStyle - automatic - generateAppStoreInformation - + manual stripSwiftSymbols - teamID - ER9FN723RR - uploadBitcode - uploadSymbols From a90ffc1fc01a24abaa8ed1215ee3477d4a81370a Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 17:34:18 +0300 Subject: [PATCH 11/34] feat: rm profile type --- .gitea/workflows/test-flight-cd.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 6bc13d11..69ef82c0 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -20,7 +20,6 @@ jobs: - name: Download provisioning uses: mso7nueh/apple-provisioning-profiles-downloader@v1.0.8 with: - profile-type: IOS_APP_STORE bundle-id: com.eatvioapp.app issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} api-key-id: ${{ secrets.APPSTORE_KEY_ID }} From c3861271f010cfe19746db191ca56843d99baf27 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 17:36:34 +0300 Subject: [PATCH 12/34] feat: cache clear --- .gitea/workflows/test-flight-cd.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 69ef82c0..299dd0de 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -11,6 +11,12 @@ jobs: - name: Checkout uses: actions/checkout@v2 + - name: Delete existing keychain if present + run: | + if security list-keychains | grep -q "signing_temp.keychain"; then + security delete-keychain signing_temp.keychain + fi + - name: Import code sign uses: mso7nueh/import-codesign-certs@v1 with: From 80bb6c22cb4cde095564ff9ea20c51e38c93ed1b Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 17:39:11 +0300 Subject: [PATCH 13/34] feat: profile type --- .gitea/workflows/test-flight-cd.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 299dd0de..aac2d858 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -26,6 +26,7 @@ jobs: - name: Download provisioning uses: mso7nueh/apple-provisioning-profiles-downloader@v1.0.8 with: + profile-type: IOS_APP_STORE bundle-id: com.eatvioapp.app issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} api-key-id: ${{ secrets.APPSTORE_KEY_ID }} From 616b9b438516208f50ed31a34363ae53ac429f3a Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 17:41:34 +0300 Subject: [PATCH 14/34] feat: build tf --- Build-tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) mode change 100644 => 100755 Build-tf diff --git a/Build-tf b/Build-tf old mode 100644 new mode 100755 index 569fd053..52b7b4db --- a/Build-tf +++ b/Build-tf @@ -46,4 +46,5 @@ xcrun xcodebuild \ -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" # Zip up the Xcode Archive into Artifacts folder. -ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" \ No newline at end of file +ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" +# yo \ No newline at end of file From 4ad219b428e6bc7a2513679d42326dc8d4c986a6 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 17:44:54 +0300 Subject: [PATCH 15/34] feat: build tf upd --- Build-tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Build-tf b/Build-tf index 52b7b4db..3f0b43a9 100755 --- a/Build-tf +++ b/Build-tf @@ -11,8 +11,8 @@ function finish() { trap finish EXIT SDK="${SDK:-iphoneos}" -WORKSPACE="${WORKSPACE:-Example-iOS.xcworkspace}" -SCHEME="${SCHEME:-Example-iOS}" +WORKSPACE="${WORKSPACE:-ios/Runner.xcworkspace}" +SCHEME="${SCHEME:-ios/Runner}" CONFIGURATION=${CONFIGURATION:-Release} BUILD_DIR=${BUILD_DIR:-.build} From 60a4d1f64f8e20fd7894e4d2867eaa04d407967e Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 17:47:00 +0300 Subject: [PATCH 16/34] feat: build tf upd 2 --- Build-tf | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/Build-tf b/Build-tf index 3f0b43a9..03b37d0b 100755 --- a/Build-tf +++ b/Build-tf @@ -12,19 +12,22 @@ trap finish EXIT SDK="${SDK:-iphoneos}" WORKSPACE="${WORKSPACE:-ios/Runner.xcworkspace}" -SCHEME="${SCHEME:-ios/Runner}" -CONFIGURATION=${CONFIGURATION:-Release} +SCHEME="${SCHEME:-Runner}" # Updated scheme name +CONFIGURATION="${CONFIGURATION:-Release}" -BUILD_DIR=${BUILD_DIR:-.build} -ARTIFACT_PATH=${RESULT_PATH:-${BUILD_DIR}/Artifacts} +BUILD_DIR="${BUILD_DIR:-.build}" +ARTIFACT_PATH="${RESULT_PATH:-${BUILD_DIR}/Artifacts}" RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult" -ARCHIVE_PATH=${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive} -DERIVED_DATA_PATH=${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData} -CURRENT_PROJECT_VERSION=${BUILD_NUMBER:-0} +ARCHIVE_PATH="${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive}" +DERIVED_DATA_PATH="${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData}" +CURRENT_PROJECT_VERSION="${BUILD_NUMBER:-0}" EXPORT_OPTIONS_FILE="Support/ExportOptions.plist" +# Clean previous builds rm -rf "${RESULT_BUNDLE_PATH}" +rm -rf "${DERIVED_DATA_PATH}" +# Archive the build xcrun xcodebuild \ -workspace "${WORKSPACE}" \ -scheme "${SCHEME}" \ @@ -39,12 +42,12 @@ xcrun xcodebuild \ CURRENT_PROJECT_VERSION="${CURRENT_PROJECT_VERSION}" \ archive +# Export the build to .ipa xcrun xcodebuild \ -exportArchive \ -exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \ -archivePath "${ARCHIVE_PATH}" \ -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" -# Zip up the Xcode Archive into Artifacts folder. +# Zip the archive ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" -# yo \ No newline at end of file From 2e6796eb8079085f141a737b0f671145c725c558 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 17:49:21 +0300 Subject: [PATCH 17/34] feat: build tf upd 3 --- Build-tf | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Build-tf b/Build-tf index 03b37d0b..e44f1a0f 100755 --- a/Build-tf +++ b/Build-tf @@ -12,7 +12,7 @@ trap finish EXIT SDK="${SDK:-iphoneos}" WORKSPACE="${WORKSPACE:-ios/Runner.xcworkspace}" -SCHEME="${SCHEME:-Runner}" # Updated scheme name +SCHEME="${SCHEME:-Runner}" CONFIGURATION="${CONFIGURATION:-Release}" BUILD_DIR="${BUILD_DIR:-.build}" @@ -23,7 +23,15 @@ DERIVED_DATA_PATH="${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData}" CURRENT_PROJECT_VERSION="${BUILD_NUMBER:-0}" EXPORT_OPTIONS_FILE="Support/ExportOptions.plist" -# Clean previous builds +# Clean and prepare the build +flutter clean +flutter pub get + +cd ios +rm -rf Pods Podfile.lock +pod install --repo-update +cd .. + rm -rf "${RESULT_BUNDLE_PATH}" rm -rf "${DERIVED_DATA_PATH}" @@ -39,6 +47,7 @@ xcrun xcodebuild \ -derivedDataPath "${DERIVED_DATA_PATH}" \ -archivePath "${ARCHIVE_PATH}" \ -resultBundlePath "${RESULT_BUNDLE_PATH}" \ + -allowProvisioningUpdates \ CURRENT_PROJECT_VERSION="${CURRENT_PROJECT_VERSION}" \ archive From 42796cff5267c20bda49ea2dbd77ed3917f41e19 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Mon, 17 Mar 2025 18:00:14 +0300 Subject: [PATCH 18/34] feat: build tf upd 4 --- Build-tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Build-tf b/Build-tf index e44f1a0f..8707c674 100755 --- a/Build-tf +++ b/Build-tf @@ -15,7 +15,7 @@ WORKSPACE="${WORKSPACE:-ios/Runner.xcworkspace}" SCHEME="${SCHEME:-Runner}" CONFIGURATION="${CONFIGURATION:-Release}" -BUILD_DIR="${BUILD_DIR:-.build}" +BUILD_DIR="${BUILD_DIR:-build}" ARTIFACT_PATH="${RESULT_PATH:-${BUILD_DIR}/Artifacts}" RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult" ARCHIVE_PATH="${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive}" From a2c1d31d635673772a83d474bbbb307e1d0067e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B0=D1=82=D0=BE=D0=BB=D0=B8=D0=B9=20=D0=9F?= =?UTF-8?q?=D0=BE=D0=BB=D0=BE=D0=B7?= Date: Tue, 18 Mar 2025 09:45:06 +0000 Subject: [PATCH 19/34] Update Build-tf --- Build-tf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Build-tf b/Build-tf index 8707c674..13c0fc98 100755 --- a/Build-tf +++ b/Build-tf @@ -3,6 +3,9 @@ set -xeu set -o pipefail +export LANG=en_US.UTF-8 +LANG=en_US.UTF-8 + function finish() { ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip" rm -rf "${RESULT_BUNDLE_PATH}" From 2ab838925141fe0ef9b80b1e6c0919bfaeab2fed Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Tue, 18 Mar 2025 17:04:21 +0300 Subject: [PATCH 20/34] feat: build tf upd 5 --- .gitea/workflows/test-flight-cd.yaml | 60 +++++++++++++++++++--------- 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index aac2d858..33ec4733 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -1,4 +1,5 @@ -name: "Build Test Flight" +name: "Flutter Build & TestFlight Upload" + on: pull_request: branches: @@ -6,25 +7,31 @@ on: jobs: build: - runs-on: [macos-arm64] + runs-on: macos-latest steps: - - name: Checkout - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v3 - - name: Delete existing keychain if present + - name: Install dependencies + run: flutter pub get + + - name: Build iOS App run: | - if security list-keychains | grep -q "signing_temp.keychain"; then - security delete-keychain signing_temp.keychain - fi + flutter build ipa \ + --release \ + --no-codesign - - name: Import code sign - uses: mso7nueh/import-codesign-certs@v1 - with: - p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }} - p12-password: ${{ secrets.CERTIFICATES_PASSWORD }} + - name: Setup keychain and provisioning profiles + run: | + security create-keychain -p "" signing_temp.keychain + security default-keychain -s signing_temp.keychain + security unlock-keychain -p "" signing_temp.keychain + echo "${{ secrets.CERTIFICATES_FILE_BASE64 }}" | base64 --decode > certs.p12 + security import certs.p12 -P "${{ secrets.CERTIFICATES_PASSWORD }}" -A + rm -f certs.p12 - - name: Download provisioning - uses: mso7nueh/apple-provisioning-profiles-downloader@v1.0.8 + - name: Download provisioning profiles + uses: apple-actions/download-provisioning-profiles@v1 with: profile-type: IOS_APP_STORE bundle-id: com.eatvioapp.app @@ -32,12 +39,29 @@ jobs: api-key-id: ${{ secrets.APPSTORE_KEY_ID }} api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} - - run: ./Build-tf + - name: Code signing + run: | + xcodebuild \ + -workspace ios/Runner.xcworkspace \ + -scheme Runner \ + -archivePath build/Runner.xcarchive \ + -sdk iphoneos \ + -configuration Release \ + clean archive \ + CODE_SIGN_IDENTITY="iPhone Distribution" \ + PROVISIONING_PROFILE_SPECIFIER="$(ls ~/Library/MobileDevice/Provisioning\ Profiles | head -n 1)" + + - name: Export IPA + run: | + xcodebuild -exportArchive \ + -archivePath build/Runner.xcarchive \ + -exportPath build/ \ + -exportOptionsPlist ios/exportOptions.plist - name: Upload to TestFlight - uses: mso7nueh/upload-testflight-build@master + uses: apple-actions/upload-testflight-build@v1 with: - app-path: .build/Artifacts/EatvioApp.ipa/EatvioApp.ipa + app-path: build/EatvioApp.ipa issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} api-key-id: ${{ secrets.APPSTORE_KEY_ID }} api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} \ No newline at end of file From 00750d9408d29c8f38bbad146a02a0f4c26bbf9e Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Tue, 18 Mar 2025 14:05:05 +0000 Subject: [PATCH 21/34] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20.gitea/workflows/test-flight-cd.yaml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/test-flight-cd.yaml | 63 ++++++++++++++++++---------- 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index c148acef..33ec4733 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -1,4 +1,5 @@ -name: "Build Test Flight" +name: "Flutter Build & TestFlight Upload" + on: pull_request: branches: @@ -6,28 +7,31 @@ on: jobs: build: - runs-on: [macos-arm64] + runs-on: macos-latest steps: - - name: Checkout - uses: actions/checkout@v2 + - name: Checkout repository + uses: actions/checkout@v3 - - name: Delete existing keychain if present + - name: Install dependencies + run: flutter pub get + + - name: Build iOS App run: | - if security list-keychains | grep -q "signing_temp.keychain"; then - security delete-keychain signing_temp.keychain - fi + flutter build ipa \ + --release \ + --no-codesign - - name: Import code sign - uses: mso7nueh/import-codesign-certs@v1 - env: - KEYCHAIN_PATH: ${{ runner.temp }}/signing_temp.keychain - with: - keychain-path: ${{ env.KEYCHAIN_PATH }} - p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }} - p12-password: ${{ secrets.CERTIFICATES_PASSWORD }} + - name: Setup keychain and provisioning profiles + run: | + security create-keychain -p "" signing_temp.keychain + security default-keychain -s signing_temp.keychain + security unlock-keychain -p "" signing_temp.keychain + echo "${{ secrets.CERTIFICATES_FILE_BASE64 }}" | base64 --decode > certs.p12 + security import certs.p12 -P "${{ secrets.CERTIFICATES_PASSWORD }}" -A + rm -f certs.p12 - - name: Download provisioning - uses: mso7nueh/apple-provisioning-profiles-downloader@v1.0.8 + - name: Download provisioning profiles + uses: apple-actions/download-provisioning-profiles@v1 with: profile-type: IOS_APP_STORE bundle-id: com.eatvioapp.app @@ -35,12 +39,29 @@ jobs: api-key-id: ${{ secrets.APPSTORE_KEY_ID }} api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} - - run: ./Build-tf + - name: Code signing + run: | + xcodebuild \ + -workspace ios/Runner.xcworkspace \ + -scheme Runner \ + -archivePath build/Runner.xcarchive \ + -sdk iphoneos \ + -configuration Release \ + clean archive \ + CODE_SIGN_IDENTITY="iPhone Distribution" \ + PROVISIONING_PROFILE_SPECIFIER="$(ls ~/Library/MobileDevice/Provisioning\ Profiles | head -n 1)" + + - name: Export IPA + run: | + xcodebuild -exportArchive \ + -archivePath build/Runner.xcarchive \ + -exportPath build/ \ + -exportOptionsPlist ios/exportOptions.plist - name: Upload to TestFlight - uses: mso7nueh/upload-testflight-build@master + uses: apple-actions/upload-testflight-build@v1 with: - app-path: .build/Artifacts/EatvioApp.ipa/EatvioApp.ipa + app-path: build/EatvioApp.ipa issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} api-key-id: ${{ secrets.APPSTORE_KEY_ID }} api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} \ No newline at end of file From c6f1d5645f54ba3941437cccc1cbbf75c7f9b82d Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Tue, 18 Mar 2025 17:06:32 +0300 Subject: [PATCH 22/34] feat: build tf upd 6 --- .gitea/workflows/test-flight-cd.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 33ec4733..8e4fe97e 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -7,7 +7,7 @@ on: jobs: build: - runs-on: macos-latest + runs-on: [macos-arm64] steps: - name: Checkout repository uses: actions/checkout@v3 From 3562dca76b69d6d069be784da3aa3facb27ed5d5 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Tue, 18 Mar 2025 17:08:33 +0300 Subject: [PATCH 23/34] feat: build tf upd 7 --- .gitea/workflows/test-flight-cd.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 33ec4733..8e4fe97e 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -7,7 +7,7 @@ on: jobs: build: - runs-on: macos-latest + runs-on: [macos-arm64] steps: - name: Checkout repository uses: actions/checkout@v3 From 7c40f14364878fbf3c73866673fa10996779c30f Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 10:58:21 +0300 Subject: [PATCH 24/34] feat: upd tf --- .DS_Store | Bin 10244 -> 10244 bytes .gitea/workflows/test-flight-cd.yaml | 61 +++++++++------------------ Build-tf | 1 + android/.DS_Store | Bin 0 -> 6148 bytes 4 files changed, 21 insertions(+), 41 deletions(-) create mode 100644 android/.DS_Store diff --git a/.DS_Store b/.DS_Store index 50b6c093799f8145f1674ed47c7eb89c98032404..1ea62397377fa3c9d7e919b69fb702fa9bb34479 100644 GIT binary patch delta 360 zcmZn(XbG6$&*-`_U^hRb>*NFhiOnhk+Dw!03$;%^CDz1dprc@HYB2eaq&+`7Ln1>S zLkdF?Lq0<$L&{_Y5fg18Dd~6t;iSam?DV4i(!3Ps{G9wEr<~H%cme+6jQn!Xxl zp@CsK!(xW@3A)<;mf~ n6Qt1`S{7WCmy@5D4m6!{^Aq9woSWGdez8oh6_ucyop%@k_;+4q delta 192 zcmZn(XbG6$&*-)>U^hRb+vEfRiOnhk+D!HA40;S@48;t|4EYQx45>NkhQZ1CxdjYh zz;pyip{dBtcX3I|$xi~xaBSzAU;Co$m?Jh-DMY9$$lyh`PGGXPQ1|2>(Z@&dve{LfnHc~*pD~UA diff --git a/.gitea/workflows/test-flight-cd.yaml b/.gitea/workflows/test-flight-cd.yaml index 8e4fe97e..abcad11b 100644 --- a/.gitea/workflows/test-flight-cd.yaml +++ b/.gitea/workflows/test-flight-cd.yaml @@ -1,5 +1,4 @@ -name: "Flutter Build & TestFlight Upload" - +name: "Build Test Flight" on: pull_request: branches: @@ -9,29 +8,26 @@ jobs: build: runs-on: [macos-arm64] steps: - - name: Checkout repository - uses: actions/checkout@v3 + - name: Checkout + uses: actions/checkout@v2 - - name: Install dependencies - run: flutter pub get - - - name: Build iOS App + - name: Delete existing keychain if present run: | - flutter build ipa \ - --release \ - --no-codesign + if security list-keychains | grep -q "signing_temp.keychain"; then + security delete-keychain signing_temp.keychain + fi - - name: Setup keychain and provisioning profiles - run: | - security create-keychain -p "" signing_temp.keychain - security default-keychain -s signing_temp.keychain - security unlock-keychain -p "" signing_temp.keychain - echo "${{ secrets.CERTIFICATES_FILE_BASE64 }}" | base64 --decode > certs.p12 - security import certs.p12 -P "${{ secrets.CERTIFICATES_PASSWORD }}" -A - rm -f certs.p12 + - name: Import code sign + uses: mso7nueh/import-codesign-certs@v1 + env: + KEYCHAIN_PATH: ${{ runner.temp }}/signing_temp.keychain + with: + keychain-path: ${{ env.KEYCHAIN_PATH }} + p12-file-base64: ${{ secrets.CERTIFICATES_FILE_BASE64 }} + p12-password: ${{ secrets.CERTIFICATES_PASSWORD }} - - name: Download provisioning profiles - uses: apple-actions/download-provisioning-profiles@v1 + - name: Download provisioning + uses: mso7nueh/apple-provisioning-profiles-downloader@v1.0.8 with: profile-type: IOS_APP_STORE bundle-id: com.eatvioapp.app @@ -39,29 +35,12 @@ jobs: api-key-id: ${{ secrets.APPSTORE_KEY_ID }} api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} - - name: Code signing - run: | - xcodebuild \ - -workspace ios/Runner.xcworkspace \ - -scheme Runner \ - -archivePath build/Runner.xcarchive \ - -sdk iphoneos \ - -configuration Release \ - clean archive \ - CODE_SIGN_IDENTITY="iPhone Distribution" \ - PROVISIONING_PROFILE_SPECIFIER="$(ls ~/Library/MobileDevice/Provisioning\ Profiles | head -n 1)" - - - name: Export IPA - run: | - xcodebuild -exportArchive \ - -archivePath build/Runner.xcarchive \ - -exportPath build/ \ - -exportOptionsPlist ios/exportOptions.plist + - run: ./Build-tf - name: Upload to TestFlight - uses: apple-actions/upload-testflight-build@v1 + uses: mso7nueh/upload-testflight-build@master with: - app-path: build/EatvioApp.ipa + app-path: .build/Artifacts/EatvioApp.ipa/EatvioApp.ipa issuer-id: ${{ secrets.APPSTORE_ISSUER_ID }} api-key-id: ${{ secrets.APPSTORE_KEY_ID }} api-private-key: ${{ secrets.APPSTORE_PRIVATE_KEY }} \ No newline at end of file diff --git a/Build-tf b/Build-tf index 13c0fc98..c9fecb0a 100755 --- a/Build-tf +++ b/Build-tf @@ -33,6 +33,7 @@ flutter pub get cd ios rm -rf Pods Podfile.lock pod install --repo-update +pod update cd .. rm -rf "${RESULT_BUNDLE_PATH}" diff --git a/android/.DS_Store b/android/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8db9f5e074deac5ed708cefcf0842c320db30787 GIT binary patch literal 6148 zcmeHKOHRWu5S?iYR1`|tKsQJ^K_zYwspcLbX?rErV6JUoXbVsr4 zkDm+vHsEgo&6tL+CcPFkcRn@YdyF^{qQo?E?f9)=cYypN`7knMk z6(TO+ErnOfV20YS%XuT=@+HUR=9(&w3X%8ox~Si9Kh-Q!R5qfy%Y*WlkGAD_cyzT{ z;^nm)t~Mgdx~ByzSpyG1~&~G%O(7@z-$6GBVdX8be;3D_w=chm6_l< z9AmWRDbbb9TO)ygD%i6{>J5Xw_Y8OjJOdvL$oC;Y6AUe82KCc{PLBY<8m3intv~<3 zKqi2p#mpdPAZ$#5#+2<5gYDUYjXCazRzEXn%!xHJ{Mg8BPbh4U9vrATacI!@o&nE* z%Rto(TeAP3et-UVjr_pK>Uw@(%?JKz>hNU4wH%4&Hw-a literal 0 HcmV?d00001 From ebf15bdf3cec265485998c2cb2e0bb1bd1413d04 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 11:07:15 +0300 Subject: [PATCH 25/34] feat: upd build tf --- Build-tf | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/Build-tf b/Build-tf index c9fecb0a..fd6acc1d 100755 --- a/Build-tf +++ b/Build-tf @@ -13,25 +13,25 @@ function finish() { trap finish EXIT -SDK="${SDK:-iphoneos}" -WORKSPACE="${WORKSPACE:-ios/Runner.xcworkspace}" -SCHEME="${SCHEME:-Runner}" -CONFIGURATION="${CONFIGURATION:-Release}" +SDK="iphoneos" +WORKSPACE="ios/Runner.xcworkspace" +SCHEME="Runner" +CONFIGURATION="Release" -BUILD_DIR="${BUILD_DIR:-build}" -ARTIFACT_PATH="${RESULT_PATH:-${BUILD_DIR}/Artifacts}" +BUILD_DIR="build" +ARTIFACT_PATH="${BUILD_DIR}/Artifacts" RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult" -ARCHIVE_PATH="${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive}" -DERIVED_DATA_PATH="${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData}" -CURRENT_PROJECT_VERSION="${BUILD_NUMBER:-0}" +ARCHIVE_PATH="${BUILD_DIR}/Archives/${SCHEME}.xcarchive" +DERIVED_DATA_PATH="${BUILD_DIR}/DerivedData" +CURRENT_PROJECT_VERSION="1.0.0" EXPORT_OPTIONS_FILE="Support/ExportOptions.plist" -# Clean and prepare the build flutter clean flutter pub get cd ios rm -rf Pods Podfile.lock +pod deintegrate pod install --repo-update pod update cd .. @@ -39,7 +39,6 @@ cd .. rm -rf "${RESULT_BUNDLE_PATH}" rm -rf "${DERIVED_DATA_PATH}" -# Archive the build xcrun xcodebuild \ -workspace "${WORKSPACE}" \ -scheme "${SCHEME}" \ @@ -52,15 +51,13 @@ xcrun xcodebuild \ -archivePath "${ARCHIVE_PATH}" \ -resultBundlePath "${RESULT_BUNDLE_PATH}" \ -allowProvisioningUpdates \ - CURRENT_PROJECT_VERSION="${CURRENT_PROJECT_VERSION}" \ + -authenticationKeyPath ~/Library/MobileDevice/Provisioning\ Profiles \ archive -# Export the build to .ipa xcrun xcodebuild \ -exportArchive \ -exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \ -archivePath "${ARCHIVE_PATH}" \ -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" -# Zip the archive ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" From 186f1f40e50233021a460df14bdcc77d7ff04c37 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 11:21:46 +0300 Subject: [PATCH 26/34] feat: export options --- Build-tf | 26 ++++++++++++++------------ Support/ExportOptions.plist | 2 +- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Build-tf b/Build-tf index fd6acc1d..13c0fc98 100755 --- a/Build-tf +++ b/Build-tf @@ -13,32 +13,32 @@ function finish() { trap finish EXIT -SDK="iphoneos" -WORKSPACE="ios/Runner.xcworkspace" -SCHEME="Runner" -CONFIGURATION="Release" +SDK="${SDK:-iphoneos}" +WORKSPACE="${WORKSPACE:-ios/Runner.xcworkspace}" +SCHEME="${SCHEME:-Runner}" +CONFIGURATION="${CONFIGURATION:-Release}" -BUILD_DIR="build" -ARTIFACT_PATH="${BUILD_DIR}/Artifacts" +BUILD_DIR="${BUILD_DIR:-build}" +ARTIFACT_PATH="${RESULT_PATH:-${BUILD_DIR}/Artifacts}" RESULT_BUNDLE_PATH="${ARTIFACT_PATH}/${SCHEME}.xcresult" -ARCHIVE_PATH="${BUILD_DIR}/Archives/${SCHEME}.xcarchive" -DERIVED_DATA_PATH="${BUILD_DIR}/DerivedData" -CURRENT_PROJECT_VERSION="1.0.0" +ARCHIVE_PATH="${ARCHIVE_PATH:-${BUILD_DIR}/Archives/${SCHEME}.xcarchive}" +DERIVED_DATA_PATH="${DERIVED_DATA_PATH:-${BUILD_DIR}/DerivedData}" +CURRENT_PROJECT_VERSION="${BUILD_NUMBER:-0}" EXPORT_OPTIONS_FILE="Support/ExportOptions.plist" +# Clean and prepare the build flutter clean flutter pub get cd ios rm -rf Pods Podfile.lock -pod deintegrate pod install --repo-update -pod update cd .. rm -rf "${RESULT_BUNDLE_PATH}" rm -rf "${DERIVED_DATA_PATH}" +# Archive the build xcrun xcodebuild \ -workspace "${WORKSPACE}" \ -scheme "${SCHEME}" \ @@ -51,13 +51,15 @@ xcrun xcodebuild \ -archivePath "${ARCHIVE_PATH}" \ -resultBundlePath "${RESULT_BUNDLE_PATH}" \ -allowProvisioningUpdates \ - -authenticationKeyPath ~/Library/MobileDevice/Provisioning\ Profiles \ + CURRENT_PROJECT_VERSION="${CURRENT_PROJECT_VERSION}" \ archive +# Export the build to .ipa xcrun xcodebuild \ -exportArchive \ -exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \ -archivePath "${ARCHIVE_PATH}" \ -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" +# Zip the archive ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist index f863042b..11ca0543 100644 --- a/Support/ExportOptions.plist +++ b/Support/ExportOptions.plist @@ -11,7 +11,7 @@ provisioningProfiles com.eatvioapp.app - EatvioApp + Eatvio distribution profile signingCertificate Apple Distribution From 70eaa0e0da7b4622249c54390013bbc1f31cc076 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 11:24:51 +0300 Subject: [PATCH 27/34] feat: eo --- Support/ExportOptions.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist index 11ca0543..f86bc811 100644 --- a/Support/ExportOptions.plist +++ b/Support/ExportOptions.plist @@ -11,7 +11,7 @@ provisioningProfiles com.eatvioapp.app - Eatvio distribution profile + Eatvio signingCertificate Apple Distribution From f97da886b4d77f49d382371e8b3fda09be1b75c1 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 13:32:23 +0300 Subject: [PATCH 28/34] feat: info by order screen --- Support/ExportOptions.plist | 2 +- lib/core/app_router.dart | 256 ++++-------------- .../presentation/pages/blog_post_screen.dart | 219 +++------------ .../pages/info_by_order_screen.dart | 153 ++++++++++- 4 files changed, 239 insertions(+), 391 deletions(-) diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist index f86bc811..f1ac2646 100644 --- a/Support/ExportOptions.plist +++ b/Support/ExportOptions.plist @@ -16,7 +16,7 @@ signingCertificate Apple Distribution signingStyle - manual + automatic stripSwiftSymbols uploadSymbols diff --git a/lib/core/app_router.dart b/lib/core/app_router.dart index 1e8a78d0..6791b620 100644 --- a/lib/core/app_router.dart +++ b/lib/core/app_router.dart @@ -68,16 +68,8 @@ class AppRouter { name: 'authScreen', builder: (context, state) => const AuthScreen(), routes: [ - GoRoute( - path: 'webView-registration-screen', - name: 'webViewRegistrationScreen', - builder: (context, state) => const WebViewRegistrationScreen(), - ), - GoRoute( - path: 'registration-screen', - name: 'registrationScreen', - builder: (context, state) => const RegistrationScreen(), - ), + GoRoute(path: 'webView-registration-screen', name: 'webViewRegistrationScreen', builder: (context, state) => const WebViewRegistrationScreen()), + GoRoute(path: 'registration-screen', name: 'registrationScreen', builder: (context, state) => const RegistrationScreen()), ], ), ShellRoute( @@ -85,10 +77,7 @@ class AppRouter { return BlocBuilder( builder: (BuildContext context, ProfileAvatarState state) { if (state is ProfileAvatarStateLoaded) { - return BottomNavigationBarWidget( - child: child, - profileModel: state.profile, - ); + return BottomNavigationBarWidget(child: child, profileModel: state.profile); } return SizedBox.shrink(); }, @@ -106,146 +95,76 @@ class AppRouter { return NoTransitionPage(child: ProfileScreen()); }, ), - GoRoute( - path: '/feed-screen', - name: 'feedScreen', - pageBuilder: (context, state) => NoTransitionPage(child: FeedScreen()), - ), - GoRoute( - path: '/diary-screen', - name: 'diaryScreen', - pageBuilder: (context, state) => NoTransitionPage(child: DiaryScreen()), - ), - GoRoute( - path: '/consultations-screen', - name: 'consultationsScreen', - pageBuilder: (context, state) => NoTransitionPage(child: ConsultationsScreen()), - ), - GoRoute( - path: '/chat-select-screen', - name: 'chatSelectScreen', - pageBuilder: (context, state) => NoTransitionPage(child: ChatsScreen()), - ), - GoRoute( - path: '/notifications-screen', - name: 'notificationsScreen', - pageBuilder: (context, state) => NoTransitionPage(child: NotificationsScreen()), - ), + GoRoute(path: '/feed-screen', name: 'feedScreen', pageBuilder: (context, state) => NoTransitionPage(child: FeedScreen())), + GoRoute(path: '/diary-screen', name: 'diaryScreen', pageBuilder: (context, state) => NoTransitionPage(child: DiaryScreen())), + GoRoute(path: '/consultations-screen', name: 'consultationsScreen', pageBuilder: (context, state) => NoTransitionPage(child: ConsultationsScreen())), + GoRoute(path: '/chat-select-screen', name: 'chatSelectScreen', pageBuilder: (context, state) => NoTransitionPage(child: ChatsScreen())), + GoRoute(path: '/notifications-screen', name: 'notificationsScreen', pageBuilder: (context, state) => NoTransitionPage(child: NotificationsScreen())), GoRoute( path: '/menu-screen', name: 'menuScreen', - pageBuilder: (context, state) => NoTransitionPage( - child: BlocBuilder( - builder: (BuildContext context, ProfileAvatarState state) { - if (state is ProfileAvatarStateLoaded) { - return MenuScreen(profileModel: state.profile); - } - return SizedBox.shrink(); - }, - ), - ), + pageBuilder: + (context, state) => NoTransitionPage( + child: BlocBuilder( + builder: (BuildContext context, ProfileAvatarState state) { + if (state is ProfileAvatarStateLoaded) { + return MenuScreen(profileModel: state.profile); + } + return SizedBox.shrink(); + }, + ), + ), ), ], ), - GoRoute( - path: '/consultant-finance-screen', - name: 'consultantFinanceScreen', - builder: (context, state) => ConsultantFinanceScreen(), - ), - GoRoute( - path: '/user-finance-screen', - name: 'userFinanceScreen', - builder: (context, state) => UserFinanceScreen(), - ), - GoRoute( - path: '/card-settings-screen', - name: 'cardSettingsScreen', - builder: (context, state) => CardSettingsScreen(), - ), + GoRoute(path: '/consultant-finance-screen', name: 'consultantFinanceScreen', builder: (context, state) => ConsultantFinanceScreen()), + GoRoute(path: '/user-finance-screen', name: 'userFinanceScreen', builder: (context, state) => UserFinanceScreen()), + GoRoute(path: '/card-settings-screen', name: 'cardSettingsScreen', builder: (context, state) => CardSettingsScreen()), GoRoute( path: '/about-plan-screen', name: 'aboutPlanScreen', builder: (context, state) { final data = state.extra as Map; - return AboutPlanScreen( - plan: data['plan'] as PlanModel, - index: data['index'] as int?, - navigateToComments: data['navigateToComments'] as bool, - ); + return AboutPlanScreen(plan: data['plan'] as PlanModel, index: data['index'] as int?, navigateToComments: data['navigateToComments'] as bool); }, ), - GoRoute( - path: '/glossary-screen', - name: 'glossaryScreen', - builder: (context, state) => GlossaryScreen(), - ), + GoRoute(path: '/glossary-screen', name: 'glossaryScreen', builder: (context, state) => GlossaryScreen()), GoRoute( path: '/about-recipes-screen', name: 'aboutRecipesScreen', builder: (context, state) { final data = state.extra as Map; - return AboutRecipeScreen( - recipe: data['recipe'] as Recipe, - index: data['index'] as int?, - navigateToComments: data['navigateToComments'] as bool, - ); + return AboutRecipeScreen(recipe: data['recipe'] as Recipe, index: data['index'] as int?, navigateToComments: data['navigateToComments'] as bool); }, ), - GoRoute( - path: RecipeCreateScreen.path, - name: RecipeCreateScreen.name, - builder: (context, state) => RecipeCreateScreen(), - ), - GoRoute( - path: '/profile-screen', - name: 'profileScreen', - builder: (context, state) => ProfileScreen( - author: state.extra as Author, - ), - ), + GoRoute(path: RecipeCreateScreen.path, name: RecipeCreateScreen.name, builder: (context, state) => RecipeCreateScreen()), + GoRoute(path: '/profile-screen', name: 'profileScreen', builder: (context, state) => ProfileScreen(author: state.extra as Author)), GoRoute( path: '/subs-screen/:slug', name: 'subsScreen', - builder: (context, state) => SubsScreen( - slug: state.pathParameters['slug']!, - subType: state.extra as SubType, - ), + builder: (context, state) => SubsScreen(slug: state.pathParameters['slug']!, subType: state.extra as SubType), ), GoRoute( path: '/about-diet-screen', name: 'aboutDietScreen', builder: (context, state) { final data = state.extra as Map; - return AboutDietScreen( - diet: data['diet'] as Diet, - index: data['index'] as int?, - navigateToComments: data['navigateToComments'] as bool, - ); + return AboutDietScreen(diet: data['diet'] as Diet, index: data['index'] as int?, navigateToComments: data['navigateToComments'] as bool); }, ), GoRoute( path: '/blog-post-create-screen', name: 'blogPostCreateScreen', - builder: (context, state) => BlogPostCreateScreen( - feedBlogPostModel: state.extra != null ? state.extra as FeedBlogPostModel : null, - ), - ), - GoRoute( - path: '/blog-post-screen', - name: 'blogPostScreen', - builder: (context, state) => BlogPostScreen( - blogPost: state.extra as FeedBlogPostModel, - ), + builder: (context, state) => BlogPostCreateScreen(feedBlogPostModel: state.extra != null ? state.extra as FeedBlogPostModel : null), ), + GoRoute(path: '/blog-post-screen', name: 'blogPostScreen', builder: (context, state) => BlogPostScreen(blogPost: state.extra as FeedBlogPostModel)), GoRoute( path: '/chat-screen', name: 'chatScreen', builder: (context, state) { - final data = state.extra as Map; + final data = state.extra as Map; final chatId = data['chatId'] as String; - return ChatScreen( - chatId: chatId, - ); + return ChatScreen(chatId: chatId); }, ), GoRoute( @@ -256,81 +175,44 @@ class AppRouter { GoRoute( path: 'general-info-screen', name: 'generalInfoScreen', - builder: (context, state) => GeneralInfoScreen( - settingsEntity: state.extra as SettingsEntity, - ), + builder: (context, state) => GeneralInfoScreen(settingsEntity: state.extra as SettingsEntity), ), GoRoute( path: 'other-info-screen', name: 'otherInfoScreen', - builder: (context, state) => OtherInfoScreen( - settingsEntity: state.extra as SettingsEntity, - ), + builder: (context, state) => OtherInfoScreen(settingsEntity: state.extra as SettingsEntity), ), GoRoute( path: 'physical-activity-screen', name: 'physicalActivityScreen', - builder: (context, state) => PhysicalActivityScreen( - settingsEntity: state.extra as SettingsEntity, - ), + builder: (context, state) => PhysicalActivityScreen(settingsEntity: state.extra as SettingsEntity), ), GoRoute( path: 'physical-form-screen', name: 'physicalFormScreen', - builder: (context, state) => PhysicalFormScreen( - settingsEntity: state.extra as SettingsEntity, - ), - ), - GoRoute( - path: 'pressure-screen', - name: 'pressureScreen', - builder: (context, state) => PressureScreen( - settingsEntity: state.extra as SettingsEntity, - ), + builder: (context, state) => PhysicalFormScreen(settingsEntity: state.extra as SettingsEntity), ), + GoRoute(path: 'pressure-screen', name: 'pressureScreen', builder: (context, state) => PressureScreen(settingsEntity: state.extra as SettingsEntity)), GoRoute( path: 'change-password-screen', name: 'changePasswordScreen', - builder: (context, state) => ChangePasswordScreen( - settingsEntity: state.extra as SettingsEntity, - ), + builder: (context, state) => ChangePasswordScreen(settingsEntity: state.extra as SettingsEntity), ), GoRoute( path: 'change-email-screen', name: 'changeEmailScreen', - builder: (context, state) => ChangeEmailScreen( - settingsEntity: state.extra as SettingsEntity, - ), + builder: (context, state) => ChangeEmailScreen(settingsEntity: state.extra as SettingsEntity), ), ], ), - GoRoute( - path: '/become-consultant-screen', - name: 'becomeConsultantScreen', - builder: (context, state) => BecomeConsultantScreen(), - ), - GoRoute( - path: '/stepper-become-consultant-screen', - name: 'stepperBecomeConsultantScreen', - builder: (context, state) => StepperBecomeConsultantScreen(), - ), - GoRoute( - path: '/calendar-screen', - name: 'calendarScreen', - builder: (context, state) => CalendarScreen(), - ), - GoRoute( - path: '/support-screen', - name: 'supportScreen', - builder: (context, state) => SupportScreen(), - ), + GoRoute(path: '/become-consultant-screen', name: 'becomeConsultantScreen', builder: (context, state) => BecomeConsultantScreen()), + GoRoute(path: '/stepper-become-consultant-screen', name: 'stepperBecomeConsultantScreen', builder: (context, state) => StepperBecomeConsultantScreen()), + GoRoute(path: '/calendar-screen', name: 'calendarScreen', builder: (context, state) => CalendarScreen()), + GoRoute(path: '/support-screen', name: 'supportScreen', builder: (context, state) => SupportScreen()), GoRoute( path: '/photo-view-screen/:index', name: 'photoViewScreen', - builder: (context, state) => PhotoViewScreen( - imageUrls: state.extra as List, - index: int.parse(state.pathParameters['index']!), - ), + builder: (context, state) => PhotoViewScreen(imageUrls: state.extra as List, index: int.parse(state.pathParameters['index']!)), ), GoRoute( path: CreateDietScreen.path, @@ -345,48 +227,16 @@ class AppRouter { name: DietPreviewScreen.name, builder: (context, state) { final data = state.extra as Diet; - return DietPreviewScreen( - diet: data, - ); + return DietPreviewScreen(diet: data); }, ), - GoRoute( - path: CreatePlanScreen.path, - name: CreatePlanScreen.name, - builder: (context, state) => CreatePlanScreen(), - ), - GoRoute( - path: MyDietsScreen.path, - name: MyDietsScreen.name, - builder: (context, state) => MyDietsScreen(), - ), - GoRoute( - path: MyPlansScreen.path, - name: MyPlansScreen.name, - builder: (context, state) => MyPlansScreen(), - ), - GoRoute( - path: UserDetailsScreen.path, - name: UserDetailsScreen.name, - builder: (context, state) => UserDetailsScreen( - slug: state.extra as String, - ), - ), - GoRoute( - path: DevToolsScreen.path, - name: DevToolsScreen.name, - builder: (context, state) => DevToolsScreen(), - ), - GoRoute( - path: ConsultantRatingScreen.path, - name: ConsultantRatingScreen.name, - builder: (context, state) => ConsultantRatingScreen(), - ), - GoRoute( - path: InfoByOrderScreen.path, - name: InfoByOrderScreen.name, - builder: (context, state) => InfoByOrderScreen(), - ), + GoRoute(path: CreatePlanScreen.path, name: CreatePlanScreen.name, builder: (context, state) => CreatePlanScreen()), + GoRoute(path: MyDietsScreen.path, name: MyDietsScreen.name, builder: (context, state) => MyDietsScreen()), + GoRoute(path: MyPlansScreen.path, name: MyPlansScreen.name, builder: (context, state) => MyPlansScreen()), + GoRoute(path: UserDetailsScreen.path, name: UserDetailsScreen.name, builder: (context, state) => UserDetailsScreen(slug: state.extra as String)), + GoRoute(path: DevToolsScreen.path, name: DevToolsScreen.name, builder: (context, state) => DevToolsScreen()), + GoRoute(path: ConsultantRatingScreen.path, name: ConsultantRatingScreen.name, builder: (context, state) => ConsultantRatingScreen()), + GoRoute(path: InfoByOrderScreen.path, name: InfoByOrderScreen.name, builder: (context, state) => InfoByOrderScreen()), ], ); } diff --git a/lib/features/blog_post/presentation/pages/blog_post_screen.dart b/lib/features/blog_post/presentation/pages/blog_post_screen.dart index 637a2a56..09d0d9f5 100644 --- a/lib/features/blog_post/presentation/pages/blog_post_screen.dart +++ b/lib/features/blog_post/presentation/pages/blog_post_screen.dart @@ -24,10 +24,7 @@ import 'package:share_plus/share_plus.dart'; class BlogPostScreen extends StatefulWidget { final FeedBlogPostModel blogPost; - BlogPostScreen({ - super.key, - required this.blogPost, - }); + BlogPostScreen({super.key, required this.blogPost}); @override State createState() => _BlogPostScreenState(); @@ -50,12 +47,7 @@ class _BlogPostScreenState extends State { @override Widget build(BuildContext context) { return BlocProvider( - create: (BuildContext context) => commentsCubit - ..getComments( - widget.blogPost.id.toString(), - CommentSourceType.blogPost, - true, - ), + create: (BuildContext context) => commentsCubit..getComments(widget.blogPost.id.toString(), CommentSourceType.blogPost, true), child: BlocConsumer( listener: (BuildContext context, CommentsState state) { if (state is CommentsStateLoaded) { @@ -69,14 +61,7 @@ class _BlogPostScreenState extends State { resizeToAvoidBottomInset: true, bottomSheet: Container( padding: EdgeInsets.symmetric(vertical: 12) + (Platform.isIOS ? const EdgeInsets.only(bottom: 16) : EdgeInsets.zero), - decoration: BoxDecoration( - color: Colors.white, - border: Border( - top: BorderSide( - color: Colors.black.withValues(alpha: 0.1), - ), - ), - ), + decoration: BoxDecoration(color: Colors.white, border: Border(top: BorderSide(color: Colors.black.withValues(alpha: 0.1)))), child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ @@ -91,17 +76,10 @@ class _BlogPostScreenState extends State { FocusManager.instance.primaryFocus?.unfocus(); }, child: Container( - decoration: BoxDecoration( - color: appTheme.blueA400, - shape: BoxShape.circle, - ), + decoration: BoxDecoration(color: appTheme.blueA400, shape: BoxShape.circle), height: 32, width: 32, - child: Icon( - Icons.close_rounded, - size: 18, - color: Colors.white, - ), + child: Icon(Icons.close_rounded, size: 18, color: Colors.white), ), ), if (replyId != null) SizedBox(width: 8), @@ -115,44 +93,16 @@ class _BlogPostScreenState extends State { maxLines: 5, minLines: 1, keyboardType: TextInputType.multiline, - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w400, - color: Colors.black, - height: 1, - ), + style: TextStyle(fontSize: 16, fontWeight: FontWeight.w400, color: Colors.black, height: 1), decoration: InputDecoration( isDense: true, contentPadding: EdgeInsets.symmetric(horizontal: 16, vertical: 8), hintText: 'Комментарий', - hintStyle: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w400, - height: 1, - color: Color(0xFFAEAEB2), - ), + hintStyle: TextStyle(fontSize: 16, fontWeight: FontWeight.w400, height: 1, color: Color(0xFFAEAEB2)), filled: true, - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), - ), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(16), - borderSide: BorderSide( - color: Color(0xFFD1D1D6), - width: 1, - ), - ), + border: OutlineInputBorder(borderRadius: BorderRadius.circular(16), borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1)), + enabledBorder: OutlineInputBorder(borderRadius: BorderRadius.circular(16), borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1)), + focusedBorder: OutlineInputBorder(borderRadius: BorderRadius.circular(16), borderSide: BorderSide(color: Color(0xFFD1D1D6), width: 1)), ), ), ), @@ -175,17 +125,10 @@ class _BlogPostScreenState extends State { } }, child: Container( - decoration: BoxDecoration( - color: textEditingController.text.length > 2 ? appTheme.blueA400 : Colors.grey, - shape: BoxShape.circle, - ), + decoration: BoxDecoration(color: textEditingController.text.length > 2 ? appTheme.blueA400 : Colors.grey, shape: BoxShape.circle), height: 32, width: 32, - child: Icon( - Icons.send_rounded, - size: 18, - color: Colors.white, - ), + child: Icon(Icons.send_rounded, size: 18, color: Colors.white), ), ), ], @@ -206,39 +149,26 @@ class _BlogPostScreenState extends State { Navigator.of(context).pop(); } if (value == 'edit') { - GoRouter.of(context).replaceNamed( - 'blogPostCreateScreen', - extra: widget.blogPost, - ); + GoRouter.of(context).replaceNamed('blogPostCreateScreen', extra: widget.blogPost); } }, - itemBuilder: (context) => [ - if (widget.blogPost.author.authorIsMe) - PopupMenuItem( - value: 'edit', - child: Text('Редактировать'), - ), - if (widget.blogPost.author.authorIsMe) - PopupMenuItem( - value: 'delete', - child: Text('Удалить'), - ), - if (!widget.blogPost.author.authorIsMe) - PopupMenuItem( - value: 'report', - child: Text('Пожаловаться'), - onTap: () { - showModalBottomSheet( - context: context, - isScrollControlled: true, - builder: (context) => ComplainingBottomSheet( - complainedContentType: ComplainedContent.posts, - id: widget.blogPost.id, - ), - ); - }, - ), - ], + itemBuilder: + (context) => [ + if (widget.blogPost.author.authorIsMe) PopupMenuItem(value: 'edit', child: Text('Редактировать')), + if (widget.blogPost.author.authorIsMe) PopupMenuItem(value: 'delete', child: Text('Удалить')), + if (!widget.blogPost.author.authorIsMe) + PopupMenuItem( + value: 'report', + child: Text('Пожаловаться'), + onTap: () { + showModalBottomSheet( + context: context, + isScrollControlled: true, + builder: (context) => ComplainingBottomSheet(complainedContentType: ComplainedContent.posts, id: widget.blogPost.id), + ); + }, + ), + ], ), ], ), @@ -255,32 +185,19 @@ class _BlogPostScreenState extends State { crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.start, children: [ - CircleAvatar( - radius: 16, - backgroundImage: NetworkImage(widget.blogPost.author.authorProfileIcon), - ), + CircleAvatar(radius: 16, backgroundImage: NetworkImage(widget.blogPost.author.authorProfileIcon)), SizedBox(width: 8), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( widget.blogPost.author.authorName, - style: TextStyle( - color: Colors.black, - fontSize: 14, - fontWeight: FontWeight.w400, - height: 1, - ), + style: TextStyle(color: Colors.black, fontSize: 14, fontWeight: FontWeight.w400, height: 1), ), SizedBox(height: 2), Text( widget.blogPost.createdAt.format('dd MMMM', 'ru'), - style: TextStyle( - color: Colors.grey.shade600, - fontSize: 12, - fontWeight: FontWeight.w400, - height: 1, - ), + style: TextStyle(color: Colors.grey.shade600, fontSize: 12, fontWeight: FontWeight.w400, height: 1), ), ], ), @@ -291,19 +208,10 @@ class _BlogPostScreenState extends State { if (widget.blogPost.description.isNotEmpty) Padding( padding: const EdgeInsets.symmetric(horizontal: 8), - child: Html( - data: widget.blogPost.description, - style: { - "*": Style( - color: Colors.black87, - ), - }, - ), + child: Html(data: widget.blogPost.description, style: {"*": Style(color: Colors.black87)}), ), SizedBox(height: 8), - CachedNetworkImage( - imageUrl: baseUrl + '/storage/' + (widget.blogPost.image), - ), + CachedNetworkImage(imageUrl: baseUrl + '/storage/' + (widget.blogPost.image)), Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12), child: Row( @@ -331,38 +239,22 @@ class _BlogPostScreenState extends State { onTap: () { final box = context.findRenderObject() as RenderBox?; Share.shareUri( - Uri.parse( - baseUrl + '/ru/blog_post/' + widget.blogPost.id.toString(), - ), + Uri.parse(baseUrl + '/ru/blog_post/' + widget.blogPost.id.toString()), sharePositionOrigin: box!.localToGlobal(Offset.zero) & box.size, ); }, ), Spacer(), - Icon( - Icons.visibility_rounded, - size: 16, - color: appTheme.gray500, - ), + Icon(Icons.visibility_rounded, size: 16, color: appTheme.gray500), SizedBox(width: 4), - Text( - widget.blogPost.totalViews.toString(), - style: TextStyle( - fontSize: 12, - color: appTheme.gray500, - fontWeight: FontWeight.w400, - ), - ), + Text(widget.blogPost.totalViews.toString(), style: TextStyle(fontSize: 12, color: appTheme.gray500, fontWeight: FontWeight.w400)), ], ), ), Container( width: MediaQuery.of(context).size.width - 32, height: 0.4, - decoration: BoxDecoration( - color: Colors.black.withValues(alpha: 0.2), - borderRadius: BorderRadius.circular(16), - ), + decoration: BoxDecoration(color: Colors.black.withValues(alpha: 0.2), borderRadius: BorderRadius.circular(16)), ), SizedBox(height: 8), Container( @@ -370,22 +262,13 @@ class _BlogPostScreenState extends State { alignment: Alignment.centerLeft, child: Text( widget.blogPost.totalComments.toString() + ' КОММЕНТАРИЕВ', - style: TextStyle( - fontSize: 12, - color: appTheme.gray500, - fontWeight: FontWeight.w400, - ), + style: TextStyle(fontSize: 12, color: appTheme.gray500, fontWeight: FontWeight.w400), ), ), SizedBox(height: 16), if (state is CommentsStateLoading) const Loader(), if (state is CommentsStateLoaded) - CommentsWidget( - id: widget.blogPost.id.toString(), - commentSourceType: CommentSourceType.blogPost, - comment: state.comment, - replyId: replyId, - ), + CommentsWidget(id: widget.blogPost.id.toString(), commentSourceType: CommentSourceType.blogPost, comment: state.comment, replyId: replyId), ], ), ), @@ -401,28 +284,14 @@ class _BlogPostScreenState extends State { borderRadius: BorderRadius.circular(16), child: Ink( padding: EdgeInsets.symmetric(horizontal: 12, vertical: 4), - decoration: BoxDecoration( - color: backgroundColor ?? appTheme.gray100, - borderRadius: BorderRadius.circular(16), - ), + decoration: BoxDecoration(color: backgroundColor ?? appTheme.gray100, borderRadius: BorderRadius.circular(16)), height: 32, child: Row( mainAxisSize: MainAxisSize.min, children: [ - Icon( - icon, - size: 20, - color: iconColor ?? appTheme.gray600, - ), + Icon(icon, size: 20, color: iconColor ?? appTheme.gray600), if (text != null) SizedBox(width: 8), - if (text != null) - Text( - text, - style: TextStyle( - color: textColor ?? appTheme.gray600, - fontWeight: FontWeight.w500, - ), - ), + if (text != null) Text(text, style: TextStyle(color: textColor ?? appTheme.gray600, fontWeight: FontWeight.w500)), ], ), ), diff --git a/lib/features/consultations/presentation/pages/info_by_order_screen.dart b/lib/features/consultations/presentation/pages/info_by_order_screen.dart index ad4e48ca..a64879c8 100644 --- a/lib/features/consultations/presentation/pages/info_by_order_screen.dart +++ b/lib/features/consultations/presentation/pages/info_by_order_screen.dart @@ -1,26 +1,155 @@ -import 'package:eatvio_app/core/app_colors.dart'; -import 'package:eatvio_app/features/diets/presentation/widgets/author_card.dart'; -import 'package:eatvio_app/features/feed/models/diets_pagination_model.dart'; -import 'package:eatvio_app/generated/l10n.dart'; import 'package:flutter/material.dart'; -class InfoByOrderScreen extends StatelessWidget { +class InfoByOrderScreen extends StatefulWidget { static const name = 'infoByOrderScreen'; static const path = '/info-by-order-screen'; const InfoByOrderScreen({super.key}); @override - Widget build(BuildContext context) { - final s = S.of(context); + State createState() => _InfoByOrderScreenState(); +} +class _InfoByOrderScreenState extends State { + bool _isHelpExpanded = false; + + @override + Widget build(BuildContext context) { return Scaffold( - backgroundColor: AppColors.scaffoldBackgroundColor, - appBar: AppBar( - title: Text(s.infoAboutOrder), - shape: RoundedRectangleBorder(borderRadius: BorderRadius.vertical(bottom: Radius.circular(12))), + appBar: AppBar(title: Text("Информация о заказе"), leading: IconButton(icon: Icon(Icons.arrow_back), onPressed: () {})), + body: ListView( + padding: EdgeInsets.all(16.0), + children: [ + _buildProfileSection(), + SizedBox(height: 10), + _buildOrderStatus(), + SizedBox(height: 20), + _buildPlanDetails(), + SizedBox(height: 20), + _buildOptionDetails(), + SizedBox(height: 20), + _buildOrderProgress(), + SizedBox(height: 20), + _buildHelpSection(), + SizedBox(height: 20), + _buildCancelButton(), + ], ), - body: AuthorCard(author: Author(authorSlug: 'authorSlug', authorName: 'authorName', authorProfileIcon: '', authorIsMe: false), title: 'asdasd'), + ); + } + + Widget _buildProfileSection() { + return Row( + children: [ + CircleAvatar( + radius: 30, + backgroundImage: AssetImage('assets/profile.jpg'), // Замените на реальный путь + ), + SizedBox(width: 10), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Дмитрий Коваль", style: TextStyle(fontWeight: FontWeight.bold, fontSize: 16)), + Text("Консультант 128-й в рейтинге", style: TextStyle(color: Colors.grey)), + ], + ), + ], + ); + } + + Widget _buildOrderStatus() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Text("Статус заказа", style: TextStyle(fontWeight: FontWeight.bold)), + Chip(label: Text("Заказ оплачен", style: TextStyle(color: Colors.white)), backgroundColor: Colors.green), + ], + ), + Text("Сумма заказа: 2500₽"), + Text("Время выполнения плана: 7 дней"), + ], + ); + } + + Widget _buildPlanDetails() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Название плана", style: TextStyle(fontWeight: FontWeight.bold)), + Text("В мире, где технологии становятся все более..."), + SizedBox(height: 10), + Image.asset('assets/plan_image.jpg', height: 150, fit: BoxFit.cover), + ], + ); + } + + Widget _buildOptionDetails() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Название опции", style: TextStyle(fontWeight: FontWeight.bold)), + Text("Поддержка 24/7"), + Text("Составление индивидуальной диеты"), + Text("Длинное название опции..."), + ], + ); + } + + Widget _buildOrderProgress() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Этапы заказа", style: TextStyle(fontWeight: FontWeight.bold)), + ListTile(leading: Icon(Icons.check_circle, color: Colors.green), title: Text("Заказ создан")), + ListTile(leading: Icon(Icons.check_circle, color: Colors.green), title: Text("Выбрана дата старта")), + ListTile(leading: Icon(Icons.check_circle, color: Colors.green), title: Text("Заказ оплачен")), + ListTile(leading: Icon(Icons.radio_button_unchecked, color: Colors.grey), title: Text("В процессе")), + ListTile(leading: Icon(Icons.radio_button_unchecked, color: Colors.grey), title: Text("Завершен")), + ], + ); + } + + Widget _buildHelpSection() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ListTile( + leading: Icon(Icons.help_outline), + title: Text("Помощь", style: TextStyle(fontWeight: FontWeight.bold)), + trailing: Icon(_isHelpExpanded ? Icons.expand_less : Icons.expand_more), + onTap: () { + setState(() { + _isHelpExpanded = !_isHelpExpanded; + }); + }, + ), + if (_isHelpExpanded) ...[ + Padding( + padding: EdgeInsets.symmetric(horizontal: 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text("Продавец не отвечает на мои сообщения", style: TextStyle(fontWeight: FontWeight.bold)), + Text("Ответ некоторых продавцов может занять больше времени, чем вы ожидали..."), + SizedBox(height: 10), + Text("Работа, которую сдал продавец, отличалась от описания", style: TextStyle(fontWeight: FontWeight.bold)), + Text("У вас есть три дня, чтобы проверить сданную на проверку работу..."), + ], + ), + ), + ], + ], + ); + } + + Widget _buildCancelButton() { + return ElevatedButton( + style: ElevatedButton.styleFrom(backgroundColor: Colors.red, padding: EdgeInsets.symmetric(vertical: 15)), + onPressed: () {}, + child: Text("Отменить заказ", style: TextStyle(color: Colors.white)), ); } } From 255d59127d107c3554ee7042a2124b6c2ab01207 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 15:07:54 +0300 Subject: [PATCH 29/34] feat: build tf upd 8 --- Support/ExportOptions.plist | 4 ++-- .../arm64-v8a/configure_fingerprint.bin | 24 +++++++++---------- .../armeabi-v7a/configure_fingerprint.bin | 24 +++++++++---------- .../4y1z256o/x86/configure_fingerprint.bin | 24 +++++++++---------- .../4y1z256o/x86_64/configure_fingerprint.bin | 24 +++++++++---------- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist index f1ac2646..11ca0543 100644 --- a/Support/ExportOptions.plist +++ b/Support/ExportOptions.plist @@ -11,12 +11,12 @@ provisioningProfiles com.eatvioapp.app - Eatvio + Eatvio distribution profile signingCertificate Apple Distribution signingStyle - automatic + manual stripSwiftSymbols uploadSymbols diff --git a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin index ef12cabb..04e382a4 100644 --- a/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/arm64-v8a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Loga _ ]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ½槛Ú2  �ë„ÖØ2^ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ¤¤þñÚ2  �ë„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  ½槛Ú2§ ‡ë„ÖØ2c +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build.json  ¤¤þñÚ2§ ‡ë„ÖØ2c a -_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  ½槛Ú2² ‰ë„ÖØ2P +_/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/android_gradle_build_mini.json  ¤¤þñÚ2² ‰ë„ÖØ2P N -L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  ½槛Ú2œÃ çê„ÖØ2T +L/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja  ¤¤þñÚ2œÃ çê„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  ½槛Ú2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build.ninja.txt  ¤¤þñÚ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  ½槛Ú2 P ‰ë„ÖØ2Z +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/build_file_index.txt  ¤¤þñÚ2 P ‰ë„ÖØ2Z X -V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  ½槛Ú2^ +V/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json  ¤¤þñÚ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  ½槛Ú2 d +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/compile_commands.json.bin  ¤¤þñÚ2 d b -`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  ½槛Ú2 +`/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/metadata_generation_command.txt  ¤¤þñÚ2 ‚ ‰ë„ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  ½槛Ú2  ( ‰ë„ÖØ2\ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/prefab_config.json  ¤¤þñÚ2  ( ‰ë„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  ½槛Ú2  O ‰ë„ÖØ2T +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/arm64-v8a/symbol_folder_index.txt  ¤¤þñÚ2  O ‰ë„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ½槛Ú2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ¤¤þñÚ2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin index 96dcc320..997c9dcb 100644 --- a/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Logc a _/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ã槛Ú2  ’ò„ÖØ2` +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ѤþñÚ2  ’ò„ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  Ã槛Ú2« ”ò„ÖØ2e +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build.json  ѤþñÚ2« ”ò„ÖØ2e c -a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  Ã槛Ú2¶ –ò„ÖØ2R +a/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/android_gradle_build_mini.json  ѤþñÚ2¶ –ò„ÖØ2R P -N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  Ã槛Ú2¨Ã þñ„ÖØ2V +N/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja  ѤþñÚ2¨Ã þñ„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  Ã槛Ú2[ +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build.ninja.txt  ѤþñÚ2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  Ã槛Ú2 P –ò„ÖØ2\ +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/build_file_index.txt  ѤþñÚ2 P –ò„ÖØ2\ Z -X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  Ã槛Ú2` +X/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json  ѤþñÚ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  Ã槛Ú2 f +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/compile_commands.json.bin  ѤþñÚ2 f d -b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  Ã槛Ú2 +b/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/metadata_generation_command.txt  ѤþñÚ2 Œ –ò„ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  Ã槛Ú2  ( –ò„ÖØ2^ +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/prefab_config.json  ѤþñÚ2  ( –ò„ÖØ2^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  Ã槛Ú2  Q –ò„ÖØ2T +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/armeabi-v7a/symbol_folder_index.txt  ѤþñÚ2  Q –ò„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Ã槛Ú2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ѤþñÚ2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin index d983153b..328a1cc5 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log[ Y W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  É槛Ú2  Üû„ÖØ2X +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ߤþñÚ2  Üû„ÖØ2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  É槛Ú2› Ýû„ÖØ2] +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build.json  ߤþñÚ2› Ýû„ÖØ2] [ -Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  É槛Ú2¦ Þû„ÖØ2J +Y/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/android_gradle_build_mini.json  ߤþñÚ2¦ Þû„ÖØ2J H -F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  É槛Ú2øÂ Ïû„ÖØ2N +F/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja  ߤþñÚ2øÂ Ïû„ÖØ2N L -J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  É槛Ú2S +J/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build.ninja.txt  ߤþñÚ2S Q -O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  Ê槛Ú2 P ßû„ÖØ2T +O/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/build_file_index.txt  ߤþñÚ2 P ßû„ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  Ê槛Ú2X +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json  ߤþñÚ2X V -T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  Ê槛Ú2 ^ +T/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/compile_commands.json.bin  ߤþñÚ2 ^ \ -Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  Ê槛Ú2 +Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/metadata_generation_command.txt  ߤþñÚ2 ä Þû„ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  Ê槛Ú2  ( Þû„ÖØ2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/prefab_config.json  ߤþñÚ2  ( Þû„ÖØ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  Ê槛Ú2  I ßû„ÖØ2T +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86/symbol_folder_index.txt  ߤþñÚ2  I ßû„ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Ê槛Ú2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ߤþñÚ2 ¤  ­ÑÚÏ2 \ No newline at end of file diff --git a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin index a984b3dd..d02753d8 100644 --- a/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin +++ b/android/app/.cxx/Debug/4y1z256o/x86_64/configure_fingerprint.bin @@ -2,27 +2,27 @@ C/C++ Structured Log^ \ Z/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/additional_project_files.txtC A -?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  Ï槛Ú2  ΁…ÖØ2[ +?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  é¤þñÚ2  ΁…ÖØ2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  Ï槛Ú2¡ Ё…ÖØ2` +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build.json  é¤þñÚ2¡ Ё…ÖØ2` ^ -\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  Ï槛Ú2¬ ҁ…ÖØ2M +\/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/android_gradle_build_mini.json  é¤þñÚ2¬ ҁ…ÖØ2M K -I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  Ï槛Ú2ŠÃ »�…ÖØ2Q +I/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja  é¤þñÚ2ŠÃ »�…ÖØ2Q O -M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  Ï槛Ú2V +M/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build.ninja.txt  é¤þñÚ2V T -R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  Ï槛Ú2 P ԁ…ÖØ2W +R/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/build_file_index.txt  é¤þñÚ2 P ԁ…ÖØ2W U -S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  Ï槛Ú2[ +S/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json  é¤þñÚ2[ Y -W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  Ï槛Ú2 a +W/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/compile_commands.json.bin  é¤þñÚ2 a _ -]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  Ï槛Ú2 +]/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/metadata_generation_command.txt  ê¤þñÚ2 ó Ӂ…ÖØ2T R -P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  Ï槛Ú2  ( Ӂ…ÖØ2Y +P/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/prefab_config.json  ê¤þñÚ2  ( Ӂ…ÖØ2Y W -U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  Ï槛Ú2  L Ӂ…ÖØ2T +U/Users/alex/eatvio_app/android/app/.cxx/Debug/4y1z256o/x86_64/symbol_folder_index.txt  ê¤þñÚ2  L Ӂ…ÖØ2T R -P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  Ï槛Ú2 ¤  ­ÑÚÏ2 \ No newline at end of file +P/Users/alex/flutter/packages/flutter_tools/gradle/src/main/groovy/CMakeLists.txt  ê¤þñÚ2 ¤  ­ÑÚÏ2 \ No newline at end of file From a14d31cd7a88117df65a63b62e8250c45cf6ac65 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 15:11:16 +0300 Subject: [PATCH 30/34] feat: build tf upd 9 --- Support/ExportOptions.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist index 11ca0543..8ddc2022 100644 --- a/Support/ExportOptions.plist +++ b/Support/ExportOptions.plist @@ -14,7 +14,7 @@ Eatvio distribution profile signingCertificate - Apple Distribution + App Store signingStyle manual stripSwiftSymbols From 066395983f20745672b0bac37f17dfc954f65ebb Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 15:25:13 +0300 Subject: [PATCH 31/34] feat: build tf upd 10 --- Support/ExportOptions.plist | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist index 8ddc2022..c035d1d3 100644 --- a/Support/ExportOptions.plist +++ b/Support/ExportOptions.plist @@ -1,25 +1,19 @@ - - + + - destination - export - manageAppVersionAndBuildNumber - - method - app-store - provisioningProfiles - - com.eatvioapp.app - Eatvio distribution profile - - signingCertificate - App Store - signingStyle - manual - stripSwiftSymbols - - uploadSymbols - + provisioningProfiles + + com.eatvioapp.app + CI CD Example Disctribution + + signingCertificate + Apple Distribution: Team ITVIO, OOO + method + development + signingStyle + automatic + teamID + VL68C36HYS \ No newline at end of file From f26e89fc25ebec12266997379682dccb65b95e30 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 16:27:54 +0300 Subject: [PATCH 32/34] feat: build tf upd 11 --- Support/ExportOptions.plist | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist index c035d1d3..596a774a 100644 --- a/Support/ExportOptions.plist +++ b/Support/ExportOptions.plist @@ -10,7 +10,7 @@ signingCertificate Apple Distribution: Team ITVIO, OOO method - development + app-store signingStyle automatic teamID From 467ae0afd3e00d7995b77e021e42267d9ede6f19 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 16:31:35 +0300 Subject: [PATCH 33/34] feat: build tf upd 12 --- Build-tf | 1 + 1 file changed, 1 insertion(+) diff --git a/Build-tf b/Build-tf index 13c0fc98..c9fecb0a 100755 --- a/Build-tf +++ b/Build-tf @@ -33,6 +33,7 @@ flutter pub get cd ios rm -rf Pods Podfile.lock pod install --repo-update +pod update cd .. rm -rf "${RESULT_BUNDLE_PATH}" From 3aba5de3ec5c473e09b87886c8a4119944edfcb0 Mon Sep 17 00:00:00 2001 From: mso7nueh Date: Wed, 19 Mar 2025 16:41:18 +0300 Subject: [PATCH 34/34] feat: upd build tf --- Build-tf | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/Build-tf b/Build-tf index c9fecb0a..3f738689 100755 --- a/Build-tf +++ b/Build-tf @@ -7,8 +7,10 @@ export LANG=en_US.UTF-8 LANG=en_US.UTF-8 function finish() { - ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip" - rm -rf "${RESULT_BUNDLE_PATH}" + if [[ -d "${RESULT_BUNDLE_PATH}" ]]; then + ditto -c -k --sequesterRsrc --keepParent "${RESULT_BUNDLE_PATH}" "${RESULT_BUNDLE_PATH}.zip" + rm -rf "${RESULT_BUNDLE_PATH}" + fi } trap finish EXIT @@ -33,11 +35,11 @@ flutter pub get cd ios rm -rf Pods Podfile.lock pod install --repo-update -pod update +pod update || { echo "Pod update failed"; exit 1; } cd .. -rm -rf "${RESULT_BUNDLE_PATH}" -rm -rf "${DERIVED_DATA_PATH}" +rm -rf "${RESULT_BUNDLE_PATH}" "${DERIVED_DATA_PATH}" +mkdir -p "${ARTIFACT_PATH}" # Archive the build xcrun xcodebuild \ @@ -47,20 +49,23 @@ xcrun xcodebuild \ -sdk "${SDK}" \ -parallelizeTargets \ -showBuildTimingSummary \ - -disableAutomaticPackageResolution \ -derivedDataPath "${DERIVED_DATA_PATH}" \ -archivePath "${ARCHIVE_PATH}" \ -resultBundlePath "${RESULT_BUNDLE_PATH}" \ -allowProvisioningUpdates \ CURRENT_PROJECT_VERSION="${CURRENT_PROJECT_VERSION}" \ - archive + archive || { echo "Xcode archive failed"; exit 1; } # Export the build to .ipa xcrun xcodebuild \ -exportArchive \ -exportOptionsPlist "${EXPORT_OPTIONS_FILE}" \ -archivePath "${ARCHIVE_PATH}" \ - -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" + -exportPath "${ARTIFACT_PATH}/${SCHEME}.ipa" || { echo "Export to IPA failed"; exit 1; } # Zip the archive -ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" +if [[ -d "${ARCHIVE_PATH}" ]]; then + ditto -c -k --sequesterRsrc --keepParent "${ARCHIVE_PATH}" "${ARTIFACT_PATH}/${SCHEME}.xcarchive.zip" +else + echo "Archive directory not found, skipping zip." +fi \ No newline at end of file