diff --git a/apps/mobile_app/android/app/build.gradle.kts b/apps/mobile_app/android/app/build.gradle.kts index e8f6cd6b..6f043a8f 100644 --- a/apps/mobile_app/android/app/build.gradle.kts +++ b/apps/mobile_app/android/app/build.gradle.kts @@ -1,3 +1,6 @@ +import java.util.Properties +import java.io.FileInputStream + plugins { id("com.android.application") id("kotlin-android") @@ -5,6 +8,12 @@ plugins { id("dev.flutter.flutter-gradle-plugin") } +val keystoreProperties = Properties() +val keystorePropertiesFile = rootProject.file("key.properties") +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(FileInputStream(keystorePropertiesFile)) +} + android { namespace = "com.savefamily.app" compileSdk = flutter.compileSdkVersion @@ -36,9 +45,18 @@ android { } } + signingConfigs { + create("release") { + keyAlias = keystoreProperties["keyAlias"] as String? + keyPassword = keystoreProperties["keyPassword"] as String? + storeFile = keystoreProperties["storeFile"]?.let { file(it as String) } + storePassword = keystoreProperties["storePassword"] as String? + } + } + buildTypes { release { - signingConfig = signingConfigs.getByName("debug") + signingConfig = signingConfigs.getByName("release") proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") } debug { @@ -58,7 +76,7 @@ android { } create("staging") { dimension = "app" - applicationIdSuffix = ".staging" + applicationIdSuffix = ".stag" resValue("string", "app_name", "SF Staging") } create("production") { diff --git a/apps/mobile_app/ios/Runner.xcodeproj/project.pbxproj b/apps/mobile_app/ios/Runner.xcodeproj/project.pbxproj index 7d0d9d2b..f14f5e0b 100644 --- a/apps/mobile_app/ios/Runner.xcodeproj/project.pbxproj +++ b/apps/mobile_app/ios/Runner.xcodeproj/project.pbxproj @@ -76,12 +76,12 @@ 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; AA0000011234567800000002 /* AntelopRelease.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = AntelopRelease.plist; sourceTree = ""; }; AA0000011234567800000003 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; + AA4000010000000000000001 /* Info-development.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-development.plist"; sourceTree = ""; }; + AA4000010000000000000002 /* Info-staging.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-staging.plist"; sourceTree = ""; }; AA5000010000000000000002 /* AntelopRelease-development.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "AntelopRelease-development.plist"; sourceTree = ""; }; AA5000010000000000000004 /* AntelopRelease-staging.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "AntelopRelease-staging.plist"; sourceTree = ""; }; AA5000010000000000000005 /* Runner-development.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Runner-development.entitlements"; sourceTree = ""; }; AA5000010000000000000006 /* Runner-staging.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Runner-staging.entitlements"; sourceTree = ""; }; - AA4000010000000000000001 /* Info-development.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-development.plist"; sourceTree = ""; }; - AA4000010000000000000002 /* Info-staging.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-staging.plist"; sourceTree = ""; }; AAA974F39BB17DD4221F30F5 /* Pods-RunnerTests.debug-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-staging.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-staging.xcconfig"; sourceTree = ""; }; B4AB34F476573EEFF80A6AFD /* Pods-Runner.profile-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-staging.xcconfig"; sourceTree = ""; }; B6E39156F3210C2E3A4F7DB3 /* Pods-Runner.release-staging.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-staging.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-staging.xcconfig"; sourceTree = ""; }; @@ -547,7 +547,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "Runner/Runner-development.entitlements"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = YC6P64GJ93; + DEVELOPMENT_TEAM = KQ73NP6L4Q; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-development.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -616,7 +616,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon-development; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = "AppIcon-development"; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -673,7 +673,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon-development; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = "AppIcon-development"; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -731,7 +731,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "Runner/Runner-development.entitlements"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = YC6P64GJ93; + DEVELOPMENT_TEAM = KQ73NP6L4Q; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-development.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -755,7 +755,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "Runner/Runner-development.entitlements"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = YC6P64GJ93; + DEVELOPMENT_TEAM = KQ73NP6L4Q; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-development.plist"; LD_RUNPATH_SEARCH_PATHS = ( @@ -1104,14 +1104,14 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "Runner/Runner-staging.entitlements"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = YC6P64GJ93; + DEVELOPMENT_TEAM = KQ73NP6L4Q; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-staging.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.staging; + PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.stag; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -1128,7 +1128,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = YC6P64GJ93; + DEVELOPMENT_TEAM = KQ73NP6L4Q; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -1152,14 +1152,14 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "Runner/Runner-staging.entitlements"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = YC6P64GJ93; + DEVELOPMENT_TEAM = KQ73NP6L4Q; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-staging.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.staging; + PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.stag; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -1175,7 +1175,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = YC6P64GJ93; + DEVELOPMENT_TEAM = KQ73NP6L4Q; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -1198,14 +1198,14 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = "Runner/Runner-staging.entitlements"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = YC6P64GJ93; + DEVELOPMENT_TEAM = KQ73NP6L4Q; ENABLE_BITCODE = NO; INFOPLIST_FILE = "Runner/Info-staging.plist"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.staging; + PRODUCT_BUNDLE_IDENTIFIER = com.savefamily.app.stag; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -1221,7 +1221,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = YC6P64GJ93; + DEVELOPMENT_TEAM = KQ73NP6L4Q; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -1369,7 +1369,7 @@ AA1000010000000000000006 /* Profile-production */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = "Debug-development"; }; 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { isa = XCConfigurationList; diff --git a/apps/mobile_app/ios/Runner/AntelopRelease-staging.plist b/apps/mobile_app/ios/Runner/AntelopRelease-staging.plist index 80f3306e..ebeb26ea 100644 --- a/apps/mobile_app/ios/Runner/AntelopRelease-staging.plist +++ b/apps/mobile_app/ios/Runner/AntelopRelease-staging.plist @@ -5,7 +5,7 @@ fr.antelop.alertLoggingEnabled The Antelop SDK is logging. fr.antelop.applicationGroupIdentifier - group.com.savefamily.app.staging + group.com.savefamily.app.stag fr.antelop.initialConnectionTimeout 60 fr.antelop.application_id diff --git a/apps/mobile_app/ios/Runner/AntelopRelease.plist b/apps/mobile_app/ios/Runner/AntelopRelease.plist index a86ebcec..1bbec2ab 100644 --- a/apps/mobile_app/ios/Runner/AntelopRelease.plist +++ b/apps/mobile_app/ios/Runner/AntelopRelease.plist @@ -5,7 +5,7 @@ fr.antelop.alertLoggingEnabled The Antelop SDK is logging. fr.antelop.applicationGroupIdentifier - group.com.savefamily.app + group.com.savefamily.app.prod fr.antelop.initialConnectionTimeout 60 fr.antelop.application_id diff --git a/apps/mobile_app/ios/Runner/Info.plist b/apps/mobile_app/ios/Runner/Info.plist index bda52f36..c5fc1abe 100644 --- a/apps/mobile_app/ios/Runner/Info.plist +++ b/apps/mobile_app/ios/Runner/Info.plist @@ -49,6 +49,10 @@ NSCameraUsageDescription Necesitamos la cámara para escanear códigos QR + NSLocationWhenInUseUsageDescription + Usamos tu ubicación para verificar la seguridad de las transacciones. + NSLocationAlwaysAndWhenInUseUsageDescription + Usamos tu ubicación para verificar la seguridad de las transacciones. UIViewControllerBasedStatusBarAppearance NSFaceIDUsageDescription diff --git a/apps/mobile_app/ios/Runner/Runner-staging.entitlements b/apps/mobile_app/ios/Runner/Runner-staging.entitlements index 0dda2337..fb940c85 100644 --- a/apps/mobile_app/ios/Runner/Runner-staging.entitlements +++ b/apps/mobile_app/ios/Runner/Runner-staging.entitlements @@ -4,7 +4,7 @@ com.apple.security.application-groups - group.com.savefamily.app.staging + group.com.savefamily.app.stag diff --git a/apps/mobile_app/ios/Runner/Runner.entitlements b/apps/mobile_app/ios/Runner/Runner.entitlements index 7fe41714..fcd8f26c 100644 --- a/apps/mobile_app/ios/Runner/Runner.entitlements +++ b/apps/mobile_app/ios/Runner/Runner.entitlements @@ -4,7 +4,7 @@ com.apple.security.application-groups - group.com.savefamily.app + group.com.savefamily.app.prod diff --git a/modules/dashboard_shell/lib/src/presentation/main_shell_screen.dart b/modules/dashboard_shell/lib/src/presentation/main_shell_screen.dart index 6357823e..3c1b6ebb 100644 --- a/modules/dashboard_shell/lib/src/presentation/main_shell_screen.dart +++ b/modules/dashboard_shell/lib/src/presentation/main_shell_screen.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'package:navigation/navigation.dart'; +import 'package:sf_localizations/sf_localizations.dart'; final mainShellViewModelProvider = NotifierProvider.autoDispose( @@ -36,19 +37,19 @@ class DashboardScreen extends ConsumerWidget { viewModel.onTabChanged(index); navigationShell.goBranch(index); }, - destinations: const [ - NavigationDestination(icon: Icon(Icons.home_outlined), label: "Home"), + destinations: [ + NavigationDestination(icon: const Icon(Icons.home_outlined), label: context.translate(I18n.dashboardTabHome)), NavigationDestination( - icon: Icon(Icons.watch_outlined), - label: "Activity", + icon: const Icon(Icons.watch_outlined), + label: context.translate(I18n.dashboardTabActivity), ), NavigationDestination( - icon: Icon(Icons.notifications_outlined), - label: "Notifications", + icon: const Icon(Icons.notifications_outlined), + label: context.translate(I18n.dashboardTabNotifications), ), NavigationDestination( - icon: Icon(Icons.person_outline_outlined), - label: "Profile", + icon: const Icon(Icons.person_outline_outlined), + label: context.translate(I18n.dashboardTabProfile), ), ], ), diff --git a/modules/dashboard_shell/pubspec.yaml b/modules/dashboard_shell/pubspec.yaml index ffbf6a8b..3ec808f0 100644 --- a/modules/dashboard_shell/pubspec.yaml +++ b/modules/dashboard_shell/pubspec.yaml @@ -23,6 +23,8 @@ dependencies: #packages dependencies go here design_system: path: ../../packages/design_system + sf_localizations: + path: ../../packages/sf_localizations #dependencies go here navigation: ^0.0.1 diff --git a/packages/sf_localizations/assets/l10n/de.json b/packages/sf_localizations/assets/l10n/de.json index 3fc1a283..670e7fe3 100644 --- a/packages/sf_localizations/assets/l10n/de.json +++ b/packages/sf_localizations/assets/l10n/de.json @@ -458,5 +458,10 @@ "profileSettingsLogout": "Abmelden", "profileSettingsLogoutConfirm": "Sind Sie sicher, dass Sie sich abmelden möchten?", "profileSettingsLogoutError": "Fehler beim Abmelden", - "profileSettingsSave": "Änderungen speichern" + "profileSettingsSave": "Änderungen speichern", + + "dashboardTabHome": "Startseite", + "dashboardTabActivity": "Aktivität", + "dashboardTabNotifications": "Benachrichtigungen", + "dashboardTabProfile": "Profil" } \ No newline at end of file diff --git a/packages/sf_localizations/assets/l10n/en.json b/packages/sf_localizations/assets/l10n/en.json index 4a3be74a..abe0cc73 100755 --- a/packages/sf_localizations/assets/l10n/en.json +++ b/packages/sf_localizations/assets/l10n/en.json @@ -458,5 +458,9 @@ "profileSettingsLogout": "Log out", "profileSettingsLogoutConfirm": "Are you sure you want to log out?", "profileSettingsLogoutError": "Error logging out", - "profileSettingsSave": "Save changes" + "profileSettingsSave": "Save changes", + "dashboardTabHome": "Home", + "dashboardTabActivity": "Activity", + "dashboardTabNotifications": "Notifications", + "dashboardTabProfile": "Profile" } \ No newline at end of file diff --git a/packages/sf_localizations/assets/l10n/es.json b/packages/sf_localizations/assets/l10n/es.json index dc8bc885..21466d13 100644 --- a/packages/sf_localizations/assets/l10n/es.json +++ b/packages/sf_localizations/assets/l10n/es.json @@ -458,5 +458,9 @@ "profileSettingsLogout": "Cerrar sesión", "profileSettingsLogoutConfirm": "¿Estás seguro de que deseas cerrar sesión?", "profileSettingsLogoutError": "Error al cerrar sesión", - "profileSettingsSave": "Guardar cambios" + "profileSettingsSave": "Guardar cambios", + "dashboardTabHome": "Inicio", + "dashboardTabActivity": "Actividad", + "dashboardTabNotifications": "Notificaciones", + "dashboardTabProfile": "Perfil" } \ No newline at end of file diff --git a/packages/sf_localizations/assets/l10n/fr.json b/packages/sf_localizations/assets/l10n/fr.json index 2286a573..f9012bc9 100644 --- a/packages/sf_localizations/assets/l10n/fr.json +++ b/packages/sf_localizations/assets/l10n/fr.json @@ -458,5 +458,10 @@ "profileSettingsLogout": "Se déconnecter", "profileSettingsLogoutConfirm": "Êtes-vous sûr de vouloir vous déconnecter ?", "profileSettingsLogoutError": "Erreur lors de la déconnexion", - "profileSettingsSave": "Enregistrer les modifications" + "profileSettingsSave": "Enregistrer les modifications", + + "dashboardTabHome": "Accueil", + "dashboardTabActivity": "Activité", + "dashboardTabNotifications": "Notifications", + "dashboardTabProfile": "Profil" } \ No newline at end of file diff --git a/packages/sf_localizations/assets/l10n/it.json b/packages/sf_localizations/assets/l10n/it.json index 9e9ef4c7..569f6c7f 100644 --- a/packages/sf_localizations/assets/l10n/it.json +++ b/packages/sf_localizations/assets/l10n/it.json @@ -458,5 +458,10 @@ "profileSettingsLogout": "Esci", "profileSettingsLogoutConfirm": "Sei sicuro di voler uscire?", "profileSettingsLogoutError": "Errore durante la disconnessione", - "profileSettingsSave": "Salva modifiche" + "profileSettingsSave": "Salva modifiche", + + "dashboardTabHome": "Home", + "dashboardTabActivity": "Attività", + "dashboardTabNotifications": "Notifiche", + "dashboardTabProfile": "Profilo" } \ No newline at end of file diff --git a/packages/sf_localizations/assets/l10n/pt.json b/packages/sf_localizations/assets/l10n/pt.json index 4f7b5fdb..156b07e5 100644 --- a/packages/sf_localizations/assets/l10n/pt.json +++ b/packages/sf_localizations/assets/l10n/pt.json @@ -458,5 +458,10 @@ "profileSettingsLogout": "Terminar sessão", "profileSettingsLogoutConfirm": "Tem a certeza de que deseja terminar sessão?", "profileSettingsLogoutError": "Erro ao terminar sessão", - "profileSettingsSave": "Guardar alterações" + "profileSettingsSave": "Guardar alterações", + + "dashboardTabHome": "Início", + "dashboardTabActivity": "Atividade", + "dashboardTabNotifications": "Notificações", + "dashboardTabProfile": "Perfil" } \ No newline at end of file diff --git a/packages/sf_localizations/lib/src/generated/i18n.dart b/packages/sf_localizations/lib/src/generated/i18n.dart index 6e8acaec..879f6a2f 100755 --- a/packages/sf_localizations/lib/src/generated/i18n.dart +++ b/packages/sf_localizations/lib/src/generated/i18n.dart @@ -520,4 +520,10 @@ class I18n { static const String payinSuccess = 'payinSuccess'; static const String payinError = 'payinError'; static const String payinProcessing = 'payinProcessing'; + + // Dashboard Tabs + static const String dashboardTabHome = 'dashboardTabHome'; + static const String dashboardTabActivity = 'dashboardTabActivity'; + static const String dashboardTabNotifications = 'dashboardTabNotifications'; + static const String dashboardTabProfile = 'dashboardTabProfile'; }