diff --git a/.gitignore b/.gitignore
index 5bb96d46..bb936737 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,4 @@
/node_modules/
/android/app/release/app-release.aab
/android/app/upload-keystore.jks
+/android/app/.cxx
diff --git a/Build-tf b/Build-tf
index 3f738689..5d0b7842 100755
--- a/Build-tf
+++ b/Build-tf
@@ -31,6 +31,7 @@ EXPORT_OPTIONS_FILE="Support/ExportOptions.plist"
# Clean and prepare the build
flutter clean
flutter pub get
+flutter upgrade
cd ios
rm -rf Pods Podfile.lock
@@ -68,4 +69,4 @@ 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
+fi
diff --git a/Support/ExportOptions.plist b/Support/ExportOptions.plist
index 596a774a..0c530d0e 100644
--- a/Support/ExportOptions.plist
+++ b/Support/ExportOptions.plist
@@ -5,7 +5,7 @@
provisioningProfiles
com.eatvioapp.app
- CI CD Example Disctribution
+ Eatvio distribution profile
signingCertificate
Apple Distribution: Team ITVIO, OOO
diff --git a/analysis_options.yaml b/analysis_options.yaml
index 7db716b4..63d4f990 100644
--- a/analysis_options.yaml
+++ b/analysis_options.yaml
@@ -1,6 +1,10 @@
+include: package:flutter_lints/flutter.yaml
+
linter:
rules:
- - require_trailing_commas
+ prefer_const_constructors: true
+ prefer_const_declarations: true
+ prefer_const_literals_to_create_immutables: true
analyzer:
exclude:
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 04e382a4..0ff207aa 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 997c9dcb..7f853cb6 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 328a1cc5..23292523 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 d02753d8..3a01cb9a 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/android/app/build.gradle b/android/app/build.gradle
index 2869498c..4df5da7f 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -1,5 +1,8 @@
plugins {
id "com.android.application"
+ // START: FlutterFire Configuration
+ id 'com.google.gms.google-services'
+ // END: FlutterFire Configuration
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
@@ -13,7 +16,7 @@ if (keystorePropertiesFile.exists()) {
android {
namespace = "com.eatvioapp.app"
compileSdk = flutter.compileSdkVersion
- ndkVersion = flutter.ndkVersion
+ ndkVersion = "27.0.12077973"
compileOptions {
sourceCompatibility = JavaVersion.VERSION_21
diff --git a/android/app/google-services.json b/android/app/google-services.json
new file mode 100644
index 00000000..8b0acfc2
--- /dev/null
+++ b/android/app/google-services.json
@@ -0,0 +1,30 @@
+{
+ "project_info": {
+ "project_number": "613980912922",
+ "firebase_url": "https://eatvio-3467b-default-rtdb.europe-west1.firebasedatabase.app",
+ "project_id": "eatvio-3467b",
+ "storage_bucket": "eatvio-3467b.firebasestorage.app"
+ },
+ "client": [
+ {
+ "client_info": {
+ "mobilesdk_app_id": "1:613980912922:android:4de95e5f2d50ba69ecc0a3",
+ "android_client_info": {
+ "package_name": "com.eatvioapp.app"
+ }
+ },
+ "oauth_client": [],
+ "api_key": [
+ {
+ "current_key": "AIzaSyBUe1UqAAMfgMcd4hWdRoLF1Os-yn-HE9k"
+ }
+ ],
+ "services": {
+ "appinvite_service": {
+ "other_platform_oauth_client": []
+ }
+ }
+ }
+ ],
+ "configuration_version": "1"
+}
\ No newline at end of file
diff --git a/android/settings.gradle b/android/settings.gradle
index a9f0eb13..849ba91f 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -19,6 +19,9 @@ pluginManagement {
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.7.3" apply false
+ // START: FlutterFire Configuration
+ id "com.google.gms.google-services" version "4.3.15" apply false
+ // END: FlutterFire Configuration
id "org.jetbrains.kotlin.android" version "2.0.21" apply false
}
diff --git a/assets/icons/mood_1.svg b/assets/icons/mood_1.svg
new file mode 100644
index 00000000..e3f93b4f
--- /dev/null
+++ b/assets/icons/mood_1.svg
@@ -0,0 +1,8 @@
+
diff --git a/assets/icons/mood_2.svg b/assets/icons/mood_2.svg
new file mode 100644
index 00000000..48bcdb0f
--- /dev/null
+++ b/assets/icons/mood_2.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/icons/retire.svg b/assets/icons/retire.svg
new file mode 100644
index 00000000..bde7d06a
--- /dev/null
+++ b/assets/icons/retire.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/wakeup.svg b/assets/icons/wakeup.svg
new file mode 100644
index 00000000..a0bd91c0
--- /dev/null
+++ b/assets/icons/wakeup.svg
@@ -0,0 +1,10 @@
+
diff --git a/firebase.json b/firebase.json
new file mode 100644
index 00000000..9ebb3fe8
--- /dev/null
+++ b/firebase.json
@@ -0,0 +1,30 @@
+{
+ "flutter": {
+ "platforms": {
+ "android": {
+ "default": {
+ "projectId": "eatvio-3467b",
+ "appId": "1:613980912922:android:4de95e5f2d50ba69ecc0a3",
+ "fileOutput": "android/app/google-services.json"
+ }
+ },
+ "ios": {
+ "default": {
+ "projectId": "eatvio-3467b",
+ "appId": "1:613980912922:ios:c557d140a1212e63ecc0a3",
+ "uploadDebugSymbols": false,
+ "fileOutput": "ios/Runner/GoogleService-Info.plist"
+ }
+ },
+ "dart": {
+ "lib/firebase_options.dart": {
+ "projectId": "eatvio-3467b",
+ "configurations": {
+ "android": "1:613980912922:android:4de95e5f2d50ba69ecc0a3",
+ "ios": "1:613980912922:ios:c557d140a1212e63ecc0a3"
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 8e714119..38d0543a 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -14,6 +14,7 @@
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
+ ACF3142BB74D6F5F3C98AD82 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = EB9FE5381C3F532BD9A9456D /* GoogleService-Info.plist */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -47,6 +48,7 @@
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
9D8D6181877DE17809AFF936 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
DF0C4038A57E19D3ABA03C15 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ EB9FE5381C3F532BD9A9456D /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = ""; };
FEE92A0E2D772EA300E6E989 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; };
/* End PBXFileReference section */
@@ -91,6 +93,7 @@
97C146EF1CF9000F007C117D /* Products */,
6F201E010624CF963CC3A17B /* Pods */,
AEE6B7943D197783DD1CB2EE /* Frameworks */,
+ EB9FE5381C3F532BD9A9456D /* GoogleService-Info.plist */,
);
sourceTree = "";
};
@@ -141,6 +144,7 @@
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
1D324C14EB43C988423BC1AD /* [CP] Embed Pods Frameworks */,
+ DEAA66E178B81C074317BF9A /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -194,6 +198,7 @@
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */,
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */,
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */,
+ ACF3142BB74D6F5F3C98AD82 /* GoogleService-Info.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -270,6 +275,23 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
+ DEAA66E178B81C074317BF9A /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -363,9 +385,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 48;
+ CURRENT_PROJECT_VERSION = 51;
DEVELOPMENT_TEAM = VL68C36HYS;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -383,7 +406,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 1.0.48;
+ MARKETING_VERSION = 1.0.49;
PRODUCT_BUNDLE_IDENTIFIER = com.eatvioapp.app;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -512,9 +535,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 48;
+ CURRENT_PROJECT_VERSION = 51;
DEVELOPMENT_TEAM = VL68C36HYS;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -532,7 +556,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 1.0.48;
+ MARKETING_VERSION = 1.0.49;
PRODUCT_BUNDLE_IDENTIFIER = com.eatvioapp.app;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -549,9 +573,10 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
- CURRENT_PROJECT_VERSION = 48;
+ CURRENT_PROJECT_VERSION = 51;
DEVELOPMENT_TEAM = VL68C36HYS;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -569,7 +594,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
- MARKETING_VERSION = 1.0.48;
+ MARKETING_VERSION = 1.0.49;
PRODUCT_BUNDLE_IDENTIFIER = com.eatvioapp.app;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
diff --git a/ios/Runner/GoogleService-Info.plist b/ios/Runner/GoogleService-Info.plist
new file mode 100644
index 00000000..3f42d802
--- /dev/null
+++ b/ios/Runner/GoogleService-Info.plist
@@ -0,0 +1,32 @@
+
+
+
+
+ API_KEY
+ AIzaSyBnE8tQjL9_1HuXrTnqNy6qbXpoenO36yQ
+ GCM_SENDER_ID
+ 613980912922
+ PLIST_VERSION
+ 1
+ BUNDLE_ID
+ com.eatvioapp.app
+ PROJECT_ID
+ eatvio-3467b
+ STORAGE_BUCKET
+ eatvio-3467b.firebasestorage.app
+ IS_ADS_ENABLED
+
+ IS_ANALYTICS_ENABLED
+
+ IS_APPINVITE_ENABLED
+
+ IS_GCM_ENABLED
+
+ IS_SIGNIN_ENABLED
+
+ GOOGLE_APP_ID
+ 1:613980912922:ios:c557d140a1212e63ecc0a3
+ DATABASE_URL
+ https://eatvio-3467b-default-rtdb.europe-west1.firebasedatabase.app
+
+
\ No newline at end of file
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index cab95de7..b6470ce4 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -2,8 +2,6 @@
- ITSAppUsesNonExemptEncryption
-
CADisableMinimumFrameDurationOnPhone
CFBundleDevelopmentRegion
@@ -24,6 +22,8 @@
????
CFBundleVersion
$(FLUTTER_BUILD_NUMBER)
+ ITSAppUsesNonExemptEncryption
+
LSRequiresIPhoneOS
NSAppTransportSecurity
@@ -42,6 +42,7 @@
UIBackgroundModes
fetch
+ remote-notification
UILaunchStoryboardName
LaunchScreen
diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements
index a9bc4abe..903def2a 100644
--- a/ios/Runner/Runner.entitlements
+++ b/ios/Runner/Runner.entitlements
@@ -3,6 +3,6 @@
aps-environment
- disabled
+ development
diff --git a/lib/core/app_router.dart b/lib/core/app_router.dart
index 79228258..26776d2b 100644
--- a/lib/core/app_router.dart
+++ b/lib/core/app_router.dart
@@ -9,11 +9,12 @@ import 'package:eatvio_app/features/bottom_navigation_bar/presentation/widgets/b
import 'package:eatvio_app/features/calendar/presentation/pages/calendar_screen.dart';
import 'package:eatvio_app/features/chat/presentation/pages/chat_screen.dart';
import 'package:eatvio_app/features/chat/presentation/pages/chats_screen.dart';
+import 'package:eatvio_app/features/chat/presentation/pages/payment_screen.dart';
import 'package:eatvio_app/features/chat/presentation/pages/photo_view_screen.dart';
import 'package:eatvio_app/features/consultant/become_consultant/presentation/pages/become_consultant_screen.dart';
import 'package:eatvio_app/features/consultant/become_consultant/presentation/pages/stepper_become_consultant_screen.dart';
import 'package:eatvio_app/features/consultations/presentation/pages/consultations_screen.dart';
-import 'package:eatvio_app/features/consultations/presentation/pages/info_by_order_screen.dart';
+import 'package:eatvio_app/features/order_info/presentation/info_by_order_screen.dart';
import 'package:eatvio_app/features/create_diet/presentation/create_diet_screen.dart';
import 'package:eatvio_app/features/create_diet/presentation/diet_preview_screen.dart';
import 'package:eatvio_app/features/create_plan/presentation/create_plan_screen.dart';
@@ -77,9 +78,9 @@ class AppRouter {
return BlocBuilder(
builder: (BuildContext context, ProfileAvatarState state) {
if (state is ProfileAvatarStateLoaded) {
- return BottomNavigationBarWidget(child: child, profileModel: state.profile);
+ return BottomNavigationBarWidget(profileModel: state.profile, child: child);
}
- return SizedBox.shrink();
+ return const SizedBox.shrink();
},
);
},
@@ -92,45 +93,50 @@ class AppRouter {
return null;
},
pageBuilder: (context, state) {
- return NoTransitionPage(child: ProfileScreen());
+ return const 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) => const NoTransitionPage(child: FeedScreen())),
+ GoRoute(path: '/diary-screen', name: 'diaryScreen', pageBuilder: (context, state) => const NoTransitionPage(child: DiaryScreen())),
+ GoRoute(
+ path: '/consultations-screen',
+ name: 'consultationsScreen',
+ pageBuilder: (context, state) => const NoTransitionPage(child: ConsultationsScreen())),
+ GoRoute(path: '/chat-select-screen', name: 'chatSelectScreen', pageBuilder: (context, state) => const NoTransitionPage(child: ChatsScreen())),
+ GoRoute(
+ path: '/notifications-screen',
+ name: 'notificationsScreen',
+ pageBuilder: (context, state) => const 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 const SizedBox.shrink();
+ },
+ ),
+ ),
),
],
),
GoRoute(
path: '/consultant-finance-screen',
name: 'consultantFinanceScreen',
- builder: (context, state) => ConsultantFinanceScreen(),
+ builder: (context, state) => const ConsultantFinanceScreen(),
),
GoRoute(
path: '/user-finance-screen',
name: 'userFinanceScreen',
- builder: (context, state) => UserFinanceScreen(),
+ builder: (context, state) => const UserFinanceScreen(),
),
GoRoute(
path: CardSettingsScreen.path,
name: CardSettingsScreen.name,
- builder: (context, state) => CardSettingsScreen(),
+ builder: (context, state) => const CardSettingsScreen(),
),
GoRoute(
path: '/about-plan-screen',
@@ -140,7 +146,7 @@ class AppRouter {
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) => const GlossaryScreen()),
GoRoute(
path: '/about-recipes-screen',
name: 'aboutRecipesScreen',
@@ -149,7 +155,7 @@ class AppRouter {
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: RecipeCreateScreen.path, name: RecipeCreateScreen.name, builder: (context, state) => const RecipeCreateScreen()),
GoRoute(path: '/profile-screen', name: 'profileScreen', builder: (context, state) => ProfileScreen(author: state.extra as Author)),
GoRoute(
path: '/subs-screen/:slug',
@@ -182,7 +188,7 @@ class AppRouter {
GoRoute(
path: '/settings-screen',
name: 'settingsScreen',
- builder: (context, state) => SettingsScreen(),
+ builder: (context, state) => const SettingsScreen(),
routes: [
GoRoute(
path: 'general-info-screen',
@@ -217,10 +223,11 @@ class AppRouter {
),
],
),
- 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) => const BecomeConsultantScreen()),
+ GoRoute(
+ path: '/stepper-become-consultant-screen', name: 'stepperBecomeConsultantScreen', builder: (context, state) => const StepperBecomeConsultantScreen()),
+ GoRoute(path: '/calendar-screen', name: 'calendarScreen', builder: (context, state) => const CalendarScreen()),
+ GoRoute(path: '/support-screen', name: 'supportScreen', builder: (context, state) => const SupportScreen()),
GoRoute(
path: '/photo-view-screen/:index',
name: 'photoViewScreen',
@@ -242,13 +249,36 @@ class AppRouter {
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: CreatePlanScreen.path, name: CreatePlanScreen.name, builder: (context, state) => const CreatePlanScreen()),
+ GoRoute(path: MyDietsScreen.path, name: MyDietsScreen.name, builder: (context, state) => const MyDietsScreen()),
+ GoRoute(path: MyPlansScreen.path, name: MyPlansScreen.name, builder: (context, state) => const 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: DevToolsScreen.path, name: DevToolsScreen.name, builder: (context, state) => const DevToolsScreen()),
+ GoRoute(path: ConsultantRatingScreen.path, name: ConsultantRatingScreen.name, builder: (context, state) => const ConsultantRatingScreen()),
+ GoRoute(
+ path: InfoByOrderScreen.path,
+ name: InfoByOrderScreen.name,
+ builder: (context, state) {
+ final data = state.extra as Map;
+ final planId = data['planId'] as int;
+ final successfulPayment = data['successfulPayment'] as bool?;
+ return InfoByOrderScreen(
+ planId: planId,
+ successfulPayment: successfulPayment,
+ );
+ }),
+ GoRoute(
+ path: PaymentScreen.path,
+ name: PaymentScreen.name,
+ builder: (context, state) {
+ final data = state.extra as Map;
+ final planId = data['planId'] as int;
+ final url = data['url'] as String;
+ return PaymentScreen(
+ url: url,
+ planId: planId,
+ );
+ }),
],
);
}
diff --git a/lib/core/credentials_storage.dart b/lib/core/credentials_storage.dart
index 6cf97c90..7bbd0bef 100644
--- a/lib/core/credentials_storage.dart
+++ b/lib/core/credentials_storage.dart
@@ -3,7 +3,7 @@ import 'package:flutter_secure_storage/flutter_secure_storage.dart';
abstract class CredentialsStorage {
static Future haveCredentialsInStorage() async {
try {
- if (await FlutterSecureStorage().read(key: 'email') == null || await FlutterSecureStorage().read(key: 'password') == null) {
+ if (await const FlutterSecureStorage().read(key: 'email') == null || await const FlutterSecureStorage().read(key: 'password') == null) {
return false;
} else {
return true;
@@ -15,18 +15,18 @@ abstract class CredentialsStorage {
static Future