diff --git a/.gitignore b/.gitignore index 698588b2..c16608c4 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ # IDE configuration files .idea/ -.vscode/ *.iml *.iws diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 00000000..6b8de15c --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,69 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "krow-staff-application (DEV iOS)", + "request": "launch", + "type": "dart", + "program": "mobile-apps/staff-app/lib/main_dev.dart", + "flutterMode": "debug", + "toolArgs": ["--flavor", "dev"] + }, + { + "name": "krow-staff-application (DEV Android)", + "request": "launch", + "type": "dart", + "program": "lmobile-apps/staff-app/lib/main_dev.dart", + "flutterMode": "debug", + "toolArgs": ["--flavor", "dev"] + }, + { + "name": "krow-staff-application (STAGING iOS)", + "request": "launch", + "type": "dart", + "program": "mobile-apps/staff-app/lib/main_dev.dart", + "flutterMode": "debug", + "toolArgs": ["--flavor", "staging"] + }, + { + "name": "krow-staff-application (STAGING Android)", + "request": "launch", + "type": "dart", + "program": "lmobile-apps/staff-app/lib/main_dev.dart", + "flutterMode": "debug", + "toolArgs": ["--flavor", "staging"] + }, + { + "name": "krow-client-application (DEV iOS)", + "request": "launch", + "type": "dart", + "program": "mobile-apps/client-app/lib/main_dev.dart", + "flutterMode": "debug", + "toolArgs": ["--flavor", "dev"] + }, + { + "name": "krow-client-application (DEV Android)", + "request": "launch", + "type": "dart", + "program": "lmobile-apps/client-app/lib/main_dev.dart", + "flutterMode": "debug", + "toolArgs": ["--flavor", "dev"] + }, + { + "name": "krow-client-application (STAGING iOS)", + "request": "launch", + "type": "dart", + "program": "mobile-apps/client-app/lib/main_dev.dart", + "flutterMode": "debug", + "toolArgs": ["--flavor", "staging"] + }, + { + "name": "krow-client-application (STAGING Android)", + "request": "launch", + "type": "dart", + "program": "lmobile-apps/client-app/lib/main_dev.dart", + "flutterMode": "debug", + "toolArgs": ["--flavor", "staging"] + }, + ] +} diff --git a/mobile-apps/client-app/android/app/build.gradle b/mobile-apps/client-app/android/app/build.gradle index 57e56697..f2e62040 100644 --- a/mobile-apps/client-app/android/app/build.gradle +++ b/mobile-apps/client-app/android/app/build.gradle @@ -41,7 +41,17 @@ android { applicationIdSuffix ".dev" versionNameSuffix "-dev" manifestPlaceholders = [ - appLabel: "Business dev", + appLabel: "Krow Business dev", + appIcon: "@mipmap/ic_launcher_dev" + ] + } + + staging { + dimension "release-type" + applicationIdSuffix ".staging" + versionNameSuffix "-staging" + manifestPlaceholders = [ + appLabel: "Krow Business staging", appIcon: "@mipmap/ic_launcher_dev" ] } diff --git a/mobile-apps/client-app/android/app/src/dev/google-services.json b/mobile-apps/client-app/android/app/src/dev/google-services.json new file mode 100644 index 00000000..a11bbd27 --- /dev/null +++ b/mobile-apps/client-app/android/app/src/dev/google-services.json @@ -0,0 +1,82 @@ +{ + "project_info": { + "project_number": "933560802882", + "project_id": "krow-workforce-dev", + "storage_bucket": "krow-workforce-dev.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:933560802882:android:edcddb83ea4bbb517757db", + "android_client_info": { + "package_name": "com.krow.app.business.dev" + } + }, + "oauth_client": [ + { + "client_id": "933560802882-grp98a1v7amflnnup68vh01tj06eaem1.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyDBYhflhK6DThKnS7RM-9raKdvyKzLUjY4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "933560802882-grp98a1v7amflnnup68vh01tj06eaem1.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "933560802882-qgbq6m04moicvkff2b3i6p9agu7i4gou.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.krow.app.dev" + } + } + ] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:933560802882:android:f4587798877cbb917757db", + "android_client_info": { + "package_name": "com.krow.app.dev" + } + }, + "oauth_client": [ + { + "client_id": "933560802882-grp98a1v7amflnnup68vh01tj06eaem1.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyDBYhflhK6DThKnS7RM-9raKdvyKzLUjY4" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "933560802882-grp98a1v7amflnnup68vh01tj06eaem1.apps.googleusercontent.com", + "client_type": 3 + }, + { + "client_id": "933560802882-qgbq6m04moicvkff2b3i6p9agu7i4gou.apps.googleusercontent.com", + "client_type": 2, + "ios_info": { + "bundle_id": "com.krow.app.dev" + } + } + ] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/mobile-apps/client-app/android/app/src/staging/google-services.json b/mobile-apps/client-app/android/app/src/staging/google-services.json new file mode 100644 index 00000000..fce47d44 --- /dev/null +++ b/mobile-apps/client-app/android/app/src/staging/google-services.json @@ -0,0 +1,48 @@ +{ + "project_info": { + "project_number": "1032971403708", + "project_id": "krow-workforce-staging", + "storage_bucket": "krow-workforce-staging.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:1032971403708:android:d35f6d13a9e03bcb356bb9", + "android_client_info": { + "package_name": "com.krow.app.business.staging" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyAZ4dOatvf3ZBt4qnbSlIvJ51bblHaRsRw" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + }, + { + "client_info": { + "mobilesdk_app_id": "1:1032971403708:android:87edb39679f806ab356bb9", + "android_client_info": { + "package_name": "com.krow.app.staging" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyAZ4dOatvf3ZBt4qnbSlIvJ51bblHaRsRw" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/mobile-apps/client-app/firebase.json b/mobile-apps/client-app/firebase.json index cfec87eb..d12ec15b 100644 --- a/mobile-apps/client-app/firebase.json +++ b/mobile-apps/client-app/firebase.json @@ -1 +1 @@ -{"flutter":{"platforms":{"android":{"default":{"projectId":"krow-staging","appId":"1:14482748607:android:85b147490ff76b6924820a","fileOutput":"android/app/google-services.json"}},"ios":{"default":{"projectId":"krow-staging","appId":"1:14482748607:ios:229a7ce2d64cb09f24820a","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"krow-staging","configurations":{"android":"1:14482748607:android:85b147490ff76b6924820a","ios":"1:14482748607:ios:229a7ce2d64cb09f24820a"}}}}}} \ No newline at end of file +{"flutter":{"platforms":{"android":{"default":{"projectId":"krow-staging","appId":"1:14482748607:android:85b147490ff76b6924820a","fileOutput":"android/app/google-services.json"},"buildConfigurations":{"src/dev":{"projectId":"krow-workforce-dev","appId":"1:933560802882:android:edcddb83ea4bbb517757db","fileOutput":"android/app/src/dev/google-services.json"},"src/staging":{"projectId":"krow-workforce-staging","appId":"1:1032971403708:android:d35f6d13a9e03bcb356bb9","fileOutput":"android/app/src/staging/google-services.json"}}},"ios":{"default":{"projectId":"krow-staging","appId":"1:14482748607:ios:229a7ce2d64cb09f24820a","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"},"targets":{"Runner":{"projectId":"krow-workforce-staging","appId":"1:1032971403708:ios:b1a21a7337a268b3356bb9","uploadDebugSymbols":false,"fileOutput":"ios/flavors/staging/GoogleService-Info.plist"}}},"dart":{"lib/firebase_options.dart":{"projectId":"krow-staging","configurations":{"android":"1:14482748607:android:85b147490ff76b6924820a","ios":"1:14482748607:ios:229a7ce2d64cb09f24820a"}},"lib/firebase_options_dev.dart":{"projectId":"krow-workforce-dev","configurations":{"android":"1:933560802882:android:edcddb83ea4bbb517757db","ios":"1:933560802882:ios:7f0632ecbeff8f027757db"}},"lib/firebase_options_staging.dart":{"projectId":"krow-workforce-staging","configurations":{"android":"1:1032971403708:android:d35f6d13a9e03bcb356bb9","ios":"1:1032971403708:ios:b1a21a7337a268b3356bb9"}}}}}} \ No newline at end of file diff --git a/mobile-apps/client-app/flutterfire-config.sh b/mobile-apps/client-app/flutterfire-config.sh new file mode 100644 index 00000000..c1f4d1a2 --- /dev/null +++ b/mobile-apps/client-app/flutterfire-config.sh @@ -0,0 +1,41 @@ +#!/bin/bash +# Script to generate Firebase configuration files for different environments/flavors + +if [[ $# -eq 0 ]]; then + echo "Error: No environment specified. Use 'dev', 'staging', or 'prod'." + exit 1 +fi + +case $1 in + dev) + flutterfire config \ + --project=krow-workforce-dev \ + --out=lib/firebase_options_dev.dart \ + --ios-bundle-id=com.krow.app.business.dev \ + --ios-out=ios/flavors/dev/GoogleService-Info.plist \ + --android-package-name=com.krow.app.business.dev \ + --android-out=android/app/src/dev/google-services.json + ;; + staging) + flutterfire config \ + --project=krow-workforce-staging \ + --out=lib/firebase_options_staging.dart \ + --ios-bundle-id=com.krow.app.business.staging \ + --ios-out=ios/flavors/staging/GoogleService-Info.plist \ + --android-package-name=com.krow.app.business.staging \ + --android-out=android/app/src/staging/google-services.json + ;; + prod) + flutterfire config \ + --project=krow-workforce-dev \ + --out=lib/firebase_options_dev.dart \ + --ios-bundle-id=com.krow.app.business.dev \ + --ios-out=ios/flavors/dev/GoogleService-Info.plist \ + --android-package-name=com.krow.app.business.dev \ + --android-out=android/app/src/dev/google-services.json + ;; + *) + echo "Error: Invalid environment specified. Use 'dev', 'staging', or 'prod'." + exit 1 + ;; +esac diff --git a/mobile-apps/client-app/ios/Runner.xcodeproj/project.pbxproj b/mobile-apps/client-app/ios/Runner.xcodeproj/project.pbxproj index d8c1ca6f..167d0898 100644 --- a/mobile-apps/client-app/ios/Runner.xcodeproj/project.pbxproj +++ b/mobile-apps/client-app/ios/Runner.xcodeproj/project.pbxproj @@ -17,6 +17,7 @@ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; B21B0C600FD5D39CA7A5507F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCC7808F8209E128F0D6B4AD /* Pods_Runner.framework */; }; + DD37DC97741956FA026AEED9 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 735B776C5DDCF483812D81D2 /* GoogleService-Info.plist */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -63,6 +64,7 @@ 6052F75B3733BCF63265D19A /* Pods-RunnerTests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-dev.xcconfig"; sourceTree = ""; }; 68FA9BA299E3DF9B5BC647F2 /* 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 = ""; }; 71B7DB58D9DDF0A0E7CFD30D /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 735B776C5DDCF483812D81D2 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "flavors/dev/GoogleService-Info.plist"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; @@ -217,6 +219,7 @@ 4CE36354F3B938D708BA09DD /* Pods */, 49022AAEDDB78EBADB744BBD /* Frameworks */, 8BBA6BE92D3FCC3000FDA749 /* GoogleService-Info.plist */, + 735B776C5DDCF483812D81D2 /* GoogleService-Info.plist */, ); sourceTree = ""; }; @@ -356,6 +359,7 @@ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 8BA9DB632D77867F00292546 /* PrivacyInfo.xcprivacy in Resources */, 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + DD37DC97741956FA026AEED9 /* GoogleService-Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -463,10 +467,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; @@ -716,7 +724,7 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - APP_DISPLAY_NAME = "Business-DEV"; + APP_DISPLAY_NAME = "Krow Business dev"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 116; @@ -819,7 +827,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - APP_DISPLAY_NAME = "Business-DEV"; + APP_DISPLAY_NAME = "Krow Business dev"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 116; @@ -917,7 +925,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - APP_DISPLAY_NAME = "Business-DEV"; + APP_DISPLAY_NAME = "Krow Business dev"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 116; @@ -1131,6 +1139,310 @@ }; name = "Release-prod"; }; + BC747CC92ECC2EAF00D4AE69 /* Debug-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "Debug-staging"; + }; + BC747CCA2ECC2EAF00D4AE69 /* Debug-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + APP_DISPLAY_NAME = "Krow Business staging"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 116; + DEVELOPMENT_TEAM = XVAT9L6L9Z; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.krow.app.business.staging; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Debug-staging"; + }; + BC747CCB2ECC2EAF00D4AE69 /* Debug-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6052F75B3733BCF63265D19A /* Pods-RunnerTests.debug-dev.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 116; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.krow.app.business.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Debug-staging"; + }; + BC747CCC2ECC2EB900D4AE69 /* Profile-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Profile-staging"; + }; + BC747CCD2ECC2EB900D4AE69 /* Profile-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + APP_DISPLAY_NAME = "Krow Business staging"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 116; + DEVELOPMENT_TEAM = XVAT9L6L9Z; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.krow.app.business.staging; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Profile-staging"; + }; + BC747CCE2ECC2EB900D4AE69 /* Profile-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B64E4BE3B75D5115AEA7BB6E /* Pods-RunnerTests.profile-dev.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 116; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.krow.app.business.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Profile-staging"; + }; + BC747CCF2ECC2EC000D4AE69 /* Release-staging */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = "Release-staging"; + }; + BC747CD02ECC2EC000D4AE69 /* Release-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + APP_DISPLAY_NAME = "Krow Business staging"; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = 116; + DEVELOPMENT_TEAM = XVAT9L6L9Z; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.krow.app.business.staging; + PRODUCT_NAME = "$(TARGET_NAME)"; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = 1; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = "Release-staging"; + }; + BC747CD12ECC2EC000D4AE69 /* Release-staging */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 80A828942D8E071B3D5B9AE2 /* Pods-RunnerTests.release-dev.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 116; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.krow.app.business.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = "Release-staging"; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1139,10 +1451,13 @@ buildConfigurations = ( 331C8088294A63A400263BE5 /* Debug-prod */, 8BBA6BD92D3FC5E600FDA749 /* Debug-dev */, + BC747CCB2ECC2EAF00D4AE69 /* Debug-staging */, 331C8089294A63A400263BE5 /* Release-prod */, 8BBA6BDC2D3FC5F100FDA749 /* Release-dev */, + BC747CD12ECC2EC000D4AE69 /* Release-staging */, 331C808A294A63A400263BE5 /* Profile-prod */, 8BBA6BDF2D3FC5F900FDA749 /* Profile-dev */, + BC747CCE2ECC2EB900D4AE69 /* Profile-staging */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = "Release-prod"; @@ -1152,10 +1467,13 @@ buildConfigurations = ( 97C147031CF9000F007C117D /* Debug-prod */, 8BBA6BD72D3FC5E600FDA749 /* Debug-dev */, + BC747CC92ECC2EAF00D4AE69 /* Debug-staging */, 97C147041CF9000F007C117D /* Release-prod */, 8BBA6BDA2D3FC5F100FDA749 /* Release-dev */, + BC747CCF2ECC2EC000D4AE69 /* Release-staging */, 249021D3217E4FDB00AE95B9 /* Profile-prod */, 8BBA6BDD2D3FC5F900FDA749 /* Profile-dev */, + BC747CCC2ECC2EB900D4AE69 /* Profile-staging */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = "Release-prod"; @@ -1165,10 +1483,13 @@ buildConfigurations = ( 97C147061CF9000F007C117D /* Debug-prod */, 8BBA6BD82D3FC5E600FDA749 /* Debug-dev */, + BC747CCA2ECC2EAF00D4AE69 /* Debug-staging */, 97C147071CF9000F007C117D /* Release-prod */, 8BBA6BDB2D3FC5F100FDA749 /* Release-dev */, + BC747CD02ECC2EC000D4AE69 /* Release-staging */, 249021D4217E4FDB00AE95B9 /* Profile-prod */, 8BBA6BDE2D3FC5F900FDA749 /* Profile-dev */, + BC747CCD2ECC2EB900D4AE69 /* Profile-staging */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = "Release-prod"; diff --git a/mobile-apps/client-app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme b/mobile-apps/client-app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme new file mode 100644 index 00000000..3a03ae05 --- /dev/null +++ b/mobile-apps/client-app/ios/Runner.xcodeproj/xcshareddata/xcschemes/staging.xcscheme @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mobile-apps/client-app/ios/flavors/dev/GoogleService-Info.plist b/mobile-apps/client-app/ios/flavors/dev/GoogleService-Info.plist new file mode 100644 index 00000000..2ce0cdf0 --- /dev/null +++ b/mobile-apps/client-app/ios/flavors/dev/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 933560802882-ml2526jqnnsteent4i9li50c00hisoge.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.933560802882-ml2526jqnnsteent4i9li50c00hisoge + API_KEY + AIzaSyDyEXkzZAWpXXe4dAesYaZflt5BEtMn9tA + GCM_SENDER_ID + 933560802882 + PLIST_VERSION + 1 + BUNDLE_ID + com.krow.app.business.dev + PROJECT_ID + krow-workforce-dev + STORAGE_BUCKET + krow-workforce-dev.firebasestorage.app + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:933560802882:ios:7f0632ecbeff8f027757db + + \ No newline at end of file diff --git a/mobile-apps/client-app/ios/flavors/staging/GoogleService-Info.plist b/mobile-apps/client-app/ios/flavors/staging/GoogleService-Info.plist new file mode 100644 index 00000000..bb3d3f99 --- /dev/null +++ b/mobile-apps/client-app/ios/flavors/staging/GoogleService-Info.plist @@ -0,0 +1,30 @@ + + + + + API_KEY + AIzaSyCgTXI3QhbEK3r4J5y7ek_6AxqhmR99QjY + GCM_SENDER_ID + 1032971403708 + PLIST_VERSION + 1 + BUNDLE_ID + com.krow.app.business.staging + PROJECT_ID + krow-workforce-staging + STORAGE_BUCKET + krow-workforce-staging.firebasestorage.app + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:1032971403708:ios:b1a21a7337a268b3356bb9 + + \ No newline at end of file diff --git a/mobile-apps/client-app/lib/firebase_options_dev.dart b/mobile-apps/client-app/lib/firebase_options_dev.dart new file mode 100644 index 00000000..5a991808 --- /dev/null +++ b/mobile-apps/client-app/lib/firebase_options_dev.dart @@ -0,0 +1,69 @@ +// File generated by FlutterFire CLI. +// ignore_for_file: type=lint +import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; +import 'package:flutter/foundation.dart' + show defaultTargetPlatform, kIsWeb, TargetPlatform; + +/// Default [FirebaseOptions] for use with your Firebase apps. +/// +/// Example: +/// ```dart +/// import 'firebase_options_dev.dart'; +/// // ... +/// await Firebase.initializeApp( +/// options: DefaultFirebaseOptions.currentPlatform, +/// ); +/// ``` +class DefaultFirebaseOptions { + static FirebaseOptions get currentPlatform { + if (kIsWeb) { + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for web - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return android; + case TargetPlatform.iOS: + return ios; + case TargetPlatform.macOS: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for macos - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.windows: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for windows - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.linux: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for linux - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + default: + throw UnsupportedError( + 'DefaultFirebaseOptions are not supported for this platform.', + ); + } + } + + static const FirebaseOptions android = FirebaseOptions( + apiKey: 'AIzaSyDBYhflhK6DThKnS7RM-9raKdvyKzLUjY4', + appId: '1:933560802882:android:edcddb83ea4bbb517757db', + messagingSenderId: '933560802882', + projectId: 'krow-workforce-dev', + storageBucket: 'krow-workforce-dev.firebasestorage.app', + ); + + static const FirebaseOptions ios = FirebaseOptions( + apiKey: 'AIzaSyDyEXkzZAWpXXe4dAesYaZflt5BEtMn9tA', + appId: '1:933560802882:ios:7f0632ecbeff8f027757db', + messagingSenderId: '933560802882', + projectId: 'krow-workforce-dev', + storageBucket: 'krow-workforce-dev.firebasestorage.app', + iosClientId: '933560802882-ml2526jqnnsteent4i9li50c00hisoge.apps.googleusercontent.com', + iosBundleId: 'com.krow.app.business.dev', + ); +} diff --git a/mobile-apps/client-app/lib/firebase_options_staging.dart b/mobile-apps/client-app/lib/firebase_options_staging.dart new file mode 100644 index 00000000..b95107f7 --- /dev/null +++ b/mobile-apps/client-app/lib/firebase_options_staging.dart @@ -0,0 +1,68 @@ +// File generated by FlutterFire CLI. +// ignore_for_file: type=lint +import 'package:firebase_core/firebase_core.dart' show FirebaseOptions; +import 'package:flutter/foundation.dart' + show defaultTargetPlatform, kIsWeb, TargetPlatform; + +/// Default [FirebaseOptions] for use with your Firebase apps. +/// +/// Example: +/// ```dart +/// import 'firebase_options_staging.dart'; +/// // ... +/// await Firebase.initializeApp( +/// options: DefaultFirebaseOptions.currentPlatform, +/// ); +/// ``` +class DefaultFirebaseOptions { + static FirebaseOptions get currentPlatform { + if (kIsWeb) { + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for web - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + } + switch (defaultTargetPlatform) { + case TargetPlatform.android: + return android; + case TargetPlatform.iOS: + return ios; + case TargetPlatform.macOS: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for macos - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.windows: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for windows - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + case TargetPlatform.linux: + throw UnsupportedError( + 'DefaultFirebaseOptions have not been configured for linux - ' + 'you can reconfigure this by running the FlutterFire CLI again.', + ); + default: + throw UnsupportedError( + 'DefaultFirebaseOptions are not supported for this platform.', + ); + } + } + + static const FirebaseOptions android = FirebaseOptions( + apiKey: 'AIzaSyAZ4dOatvf3ZBt4qnbSlIvJ51bblHaRsRw', + appId: '1:1032971403708:android:d35f6d13a9e03bcb356bb9', + messagingSenderId: '1032971403708', + projectId: 'krow-workforce-staging', + storageBucket: 'krow-workforce-staging.firebasestorage.app', + ); + + static const FirebaseOptions ios = FirebaseOptions( + apiKey: 'AIzaSyCgTXI3QhbEK3r4J5y7ek_6AxqhmR99QjY', + appId: '1:1032971403708:ios:b1a21a7337a268b3356bb9', + messagingSenderId: '1032971403708', + projectId: 'krow-workforce-staging', + storageBucket: 'krow-workforce-staging.firebasestorage.app', + iosBundleId: 'com.krow.app.business.staging', + ); +}