From b557c1e63950c7c4c2e264186c2db79bd5ba1c42 Mon Sep 17 00:00:00 2001 From: Roland Osborne Date: Tue, 14 Jan 2025 14:53:20 -0800 Subject: [PATCH] enabling push notifications --- app/client/mobile/android/app/build.gradle | 1 + .../mobile/android/app/google-services.json | 40 + app/client/mobile/android/build.gradle | 1 + app/client/mobile/index.js | 7 + .../ios/Databag.xcodeproj/project.pbxproj | 72 +- app/client/mobile/ios/Databag/AppDelegate.mm | 2 + .../mobile/ios/Databag/Databag.entitlements | 8 + .../mobile/ios/Databag/PrivacyInfo.xcprivacy | 20 +- .../mobile/ios/GoogleService-Info.plist | 34 + app/client/mobile/ios/Podfile | 2 + app/client/mobile/ios/Podfile.lock | 190 +- app/client/mobile/package.json | 2 + app/client/mobile/src/access/Access.tsx | 2 +- .../mobile/src/access/useAccess.hook.ts | 2 - .../mobile/src/context/useAppContext.hook.ts | 45 +- .../mobile/src/conversation/Conversation.tsx | 3 +- app/client/mobile/yarn.lock | 20657 ++++++++-------- 17 files changed, 10007 insertions(+), 11081 deletions(-) create mode 100644 app/client/mobile/android/app/google-services.json create mode 100644 app/client/mobile/ios/Databag/Databag.entitlements create mode 100644 app/client/mobile/ios/GoogleService-Info.plist diff --git a/app/client/mobile/android/app/build.gradle b/app/client/mobile/android/app/build.gradle index aa91c9ce..8c3c74a7 100644 --- a/app/client/mobile/android/app/build.gradle +++ b/app/client/mobile/android/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: "com.android.application" apply plugin: "org.jetbrains.kotlin.android" apply plugin: "com.facebook.react" +apply plugin: "com.google.gms.google-services" apply from: file("../../node_modules/react-native-vector-icons/fonts.gradle") /** diff --git a/app/client/mobile/android/app/google-services.json b/app/client/mobile/android/app/google-services.json new file mode 100644 index 00000000..ed93178d --- /dev/null +++ b/app/client/mobile/android/app/google-services.json @@ -0,0 +1,40 @@ +{ + "project_info": { + "project_number": "627079362503", + "project_id": "databag-b46e0", + "storage_bucket": "databag-b46e0.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:627079362503:android:6f3dfcb2c255787b4a8be2", + "android_client_info": { + "package_name": "com.databag" + } + }, + "oauth_client": [ + { + "client_id": "627079362503-8bk8o4hcv5rgdgrhik6nu9cjp3poisv7.apps.googleusercontent.com", + "client_type": 3 + } + ], + "api_key": [ + { + "current_key": "AIzaSyAb92cvtSnaoQzhbDizg0dFskOtZFp_58M" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [ + { + "client_id": "627079362503-8bk8o4hcv5rgdgrhik6nu9cjp3poisv7.apps.googleusercontent.com", + "client_type": 3 + } + ] + } + } + } + ], + "configuration_version": "1" +} + diff --git a/app/client/mobile/android/build.gradle b/app/client/mobile/android/build.gradle index c83c9a07..7a1cd3ee 100644 --- a/app/client/mobile/android/build.gradle +++ b/app/client/mobile/android/build.gradle @@ -15,6 +15,7 @@ buildscript { classpath("com.android.tools.build:gradle") classpath("com.facebook.react:react-native-gradle-plugin") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") + classpath("com.google.gms:google-services:4.4.2") } } diff --git a/app/client/mobile/index.js b/app/client/mobile/index.js index 88f36117..03636277 100644 --- a/app/client/mobile/index.js +++ b/app/client/mobile/index.js @@ -6,5 +6,12 @@ import './gesture-handler'; import {AppRegistry} from 'react-native'; import App from './App'; import {name as appName} from './app.json'; +import messaging from '@react-native-firebase/messaging'; + +console.log("CALLING REGISTER DEVICE"); + +messaging().registerDeviceForRemoteMessages().then(() => { console.log("REGISTER SUCCESS!!!!"); }); + +messaging().setBackgroundMessageHandler(async remoteMessage => {}); AppRegistry.registerComponent(appName, () => App); diff --git a/app/client/mobile/ios/Databag.xcodeproj/project.pbxproj b/app/client/mobile/ios/Databag.xcodeproj/project.pbxproj index 250b5727..6ca731db 100644 --- a/app/client/mobile/ios/Databag.xcodeproj/project.pbxproj +++ b/app/client/mobile/ios/Databag.xcodeproj/project.pbxproj @@ -9,12 +9,13 @@ /* Begin PBXBuildFile section */ 00E356F31AD99517003FC87E /* DatabagTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* DatabagTests.m */; }; 054418A1394B8F74B2D5F56A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = EA9B975EA9789519AEC0AE47 /* PrivacyInfo.xcprivacy */; }; - 0C80B921A6F3F58F76C31292 /* libPods-Databag.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-Databag.a */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 7699B88040F8A987B510C191 /* libPods-Databag-DatabagTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-Databag-DatabagTests.a */; }; + 3CE0531313B421FDF792C8FE /* Pods_Databag.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06CDD19F1F7DE25CC8A02055 /* Pods_Databag.framework */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; + D1C6D9BEEAC47E1C73323937 /* Pods_Databag_DatabagTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 090757CEAF7E8ADAF5BD2FA0 /* Pods_Databag_DatabagTests.framework */; }; + F072E6EA2D3701D9007511E6 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = F072E6E92D3701D9007511E6 /* GoogleService-Info.plist */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -31,6 +32,8 @@ 00E356EE1AD99517003FC87E /* DatabagTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DatabagTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* DatabagTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DatabagTests.m; sourceTree = ""; }; + 06CDD19F1F7DE25CC8A02055 /* Pods_Databag.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Databag.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 090757CEAF7E8ADAF5BD2FA0 /* Pods_Databag_DatabagTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Databag_DatabagTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07F961A680F5B00A75B9A /* Databag.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Databag.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Databag/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = Databag/AppDelegate.mm; sourceTree = ""; }; @@ -38,16 +41,16 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Databag/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Databag/main.m; sourceTree = ""; }; 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = Databag/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-Databag-DatabagTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Databag-DatabagTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 3B4392A12AC88292D35C810B /* Pods-Databag.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Databag.debug.xcconfig"; path = "Target Support Files/Pods-Databag/Pods-Databag.debug.xcconfig"; sourceTree = ""; }; 5709B34CF0A7D63546082F79 /* Pods-Databag.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Databag.release.xcconfig"; path = "Target Support Files/Pods-Databag/Pods-Databag.release.xcconfig"; sourceTree = ""; }; 5B7EB9410499542E8C5724F5 /* Pods-Databag-DatabagTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Databag-DatabagTests.debug.xcconfig"; path = "Target Support Files/Pods-Databag-DatabagTests/Pods-Databag-DatabagTests.debug.xcconfig"; sourceTree = ""; }; - 5DCACB8F33CDC322A6C60F78 /* libPods-Databag.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Databag.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7B413FF92C6CFD4F0032D17C /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = MaterialCommunityIcons.ttf; path = "../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf"; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = Databag/LaunchScreen.storyboard; sourceTree = ""; }; 89C6BE57DB24E9ADA2F236DE /* Pods-Databag-DatabagTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Databag-DatabagTests.release.xcconfig"; path = "Target Support Files/Pods-Databag-DatabagTests/Pods-Databag-DatabagTests.release.xcconfig"; sourceTree = ""; }; EA9B975EA9789519AEC0AE47 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; name = PrivacyInfo.xcprivacy; path = Databag/PrivacyInfo.xcprivacy; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; + F072E6E92D3701D9007511E6 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; + F072E6EB2D370868007511E6 /* Databag.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = Databag.entitlements; path = Databag/Databag.entitlements; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -55,7 +58,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7699B88040F8A987B510C191 /* libPods-Databag-DatabagTests.a in Frameworks */, + D1C6D9BEEAC47E1C73323937 /* Pods_Databag_DatabagTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -63,7 +66,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0C80B921A6F3F58F76C31292 /* libPods-Databag.a in Frameworks */, + 3CE0531313B421FDF792C8FE /* Pods_Databag.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -90,6 +93,7 @@ 13B07FAE1A68108700A75B9A /* Databag */ = { isa = PBXGroup; children = ( + F072E6EB2D370868007511E6 /* Databag.entitlements */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 13B07FB51A68108700A75B9A /* Images.xcassets */, @@ -106,8 +110,8 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 5DCACB8F33CDC322A6C60F78 /* libPods-Databag.a */, - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-Databag-DatabagTests.a */, + 06CDD19F1F7DE25CC8A02055 /* Pods_Databag.framework */, + 090757CEAF7E8ADAF5BD2FA0 /* Pods_Databag_DatabagTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -122,6 +126,7 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( + F072E6E92D3701D9007511E6 /* GoogleService-Info.plist */, 7B413FF92C6CFD4F0032D17C /* MaterialCommunityIcons.ttf */, 13B07FAE1A68108700A75B9A /* Databag */, 832341AE1AAA6A7D00B99B32 /* Libraries */, @@ -190,6 +195,7 @@ 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, + 57A364593B6DC7333A9830A0 /* [CP-User] [RNFB] Core Configuration */, ); buildRules = ( ); @@ -250,6 +256,7 @@ buildActionMask = 2147483647; files = ( 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, + F072E6EA2D3701D9007511E6 /* GoogleService-Info.plist in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 054418A1394B8F74B2D5F56A /* PrivacyInfo.xcprivacy in Resources */, ); @@ -291,6 +298,19 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Databag/Pods-Databag-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + 57A364593B6DC7333A9830A0 /* [CP-User] [RNFB] Core Configuration */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)", + ); + name = "[CP-User] [RNFB] Core Configuration"; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#!/usr/bin/env bash\n#\n# Copyright (c) 2016-present Invertase Limited & Contributors\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this library except in compliance with the License.\n# You may obtain a copy of the License at\n#\n# http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, software\n# distributed under the License is distributed on an \"AS IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n#\n\n##########################################################################\n##########################################################################\n#\n# NOTE THAT IF YOU CHANGE THIS FILE YOU MUST RUN pod install AFTERWARDS\n#\n# This file is installed as an Xcode build script in the project file\n# by cocoapods, and you will not see your changes until you pod install\n#\n##########################################################################\n##########################################################################\n\nset -e\n\n_MAX_LOOKUPS=2;\n_SEARCH_RESULT=''\n_RN_ROOT_EXISTS=''\n_CURRENT_LOOKUPS=1\n_JSON_ROOT=\"'react-native'\"\n_JSON_FILE_NAME='firebase.json'\n_JSON_OUTPUT_BASE64='e30=' # { }\n_CURRENT_SEARCH_DIR=${PROJECT_DIR}\n_PLIST_BUDDY=/usr/libexec/PlistBuddy\n_TARGET_PLIST=\"${BUILT_PRODUCTS_DIR}/${INFOPLIST_PATH}\"\n_DSYM_PLIST=\"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist\"\n\n# plist arrays\n_PLIST_ENTRY_KEYS=()\n_PLIST_ENTRY_TYPES=()\n_PLIST_ENTRY_VALUES=()\n\nfunction setPlistValue {\n echo \"info: setting plist entry '$1' of type '$2' in file '$4'\"\n ${_PLIST_BUDDY} -c \"Add :$1 $2 '$3'\" $4 || echo \"info: '$1' already exists\"\n}\n\nfunction getFirebaseJsonKeyValue () {\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$1'); puts output[$_JSON_ROOT]['$2']\"\n else\n echo \"\"\n fi;\n}\n\nfunction jsonBoolToYesNo () {\n if [[ $1 == \"false\" ]]; then\n echo \"NO\"\n elif [[ $1 == \"true\" ]]; then\n echo \"YES\"\n else echo \"NO\"\n fi\n}\n\necho \"info: -> RNFB build script started\"\necho \"info: 1) Locating ${_JSON_FILE_NAME} file:\"\n\nif [[ -z ${_CURRENT_SEARCH_DIR} ]]; then\n _CURRENT_SEARCH_DIR=$(pwd)\nfi;\n\nwhile true; do\n _CURRENT_SEARCH_DIR=$(dirname \"$_CURRENT_SEARCH_DIR\")\n if [[ \"$_CURRENT_SEARCH_DIR\" == \"/\" ]] || [[ ${_CURRENT_LOOKUPS} -gt ${_MAX_LOOKUPS} ]]; then break; fi;\n echo \"info: ($_CURRENT_LOOKUPS of $_MAX_LOOKUPS) Searching in '$_CURRENT_SEARCH_DIR' for a ${_JSON_FILE_NAME} file.\"\n _SEARCH_RESULT=$(find \"$_CURRENT_SEARCH_DIR\" -maxdepth 2 -name ${_JSON_FILE_NAME} -print | /usr/bin/head -n 1)\n if [[ ${_SEARCH_RESULT} ]]; then\n echo \"info: ${_JSON_FILE_NAME} found at $_SEARCH_RESULT\"\n break;\n fi;\n _CURRENT_LOOKUPS=$((_CURRENT_LOOKUPS+1))\ndone\n\nif [[ ${_SEARCH_RESULT} ]]; then\n _JSON_OUTPUT_RAW=$(cat \"${_SEARCH_RESULT}\")\n _RN_ROOT_EXISTS=$(ruby -Ku -e \"require 'rubygems';require 'json'; output=JSON.parse('$_JSON_OUTPUT_RAW'); puts output[$_JSON_ROOT]\" || echo '')\n\n if [[ ${_RN_ROOT_EXISTS} ]]; then\n if ! python3 --version >/dev/null 2>&1; then echo \"python3 not found, firebase.json file processing error.\" && exit 1; fi\n _JSON_OUTPUT_BASE64=$(python3 -c 'import json,sys,base64;print(base64.b64encode(bytes(json.dumps(json.loads(open('\"'${_SEARCH_RESULT}'\"', '\"'rb'\"').read())['${_JSON_ROOT}']), '\"'utf-8'\"')).decode())' || echo \"e30=\")\n fi\n\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n\n # config.app_data_collection_default_enabled\n _APP_DATA_COLLECTION_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_data_collection_default_enabled\")\n if [[ $_APP_DATA_COLLECTION_ENABLED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseDataCollectionDefaultEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_DATA_COLLECTION_ENABLED\")\")\n fi\n\n # config.analytics_auto_collection_enabled\n _ANALYTICS_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_auto_collection_enabled\")\n if [[ $_ANALYTICS_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_COLLECTION\")\")\n fi\n\n # config.analytics_collection_deactivated\n _ANALYTICS_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_collection_deactivated\")\n if [[ $_ANALYTICS_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"FIREBASE_ANALYTICS_COLLECTION_DEACTIVATED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_DEACTIVATED\")\")\n fi\n\n # config.analytics_idfv_collection_enabled\n _ANALYTICS_IDFV_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_idfv_collection_enabled\")\n if [[ $_ANALYTICS_IDFV_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_IDFV_COLLECTION_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_IDFV_COLLECTION\")\")\n fi\n\n # config.analytics_default_allow_analytics_storage\n _ANALYTICS_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_analytics_storage\")\n if [[ $_ANALYTICS_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_ANALYTICS_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_storage\n _ANALYTICS_AD_STORAGE=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_storage\")\n if [[ $_ANALYTICS_AD_STORAGE ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_STORAGE\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_STORAGE\")\")\n fi\n\n # config.analytics_default_allow_ad_user_data\n _ANALYTICS_AD_USER_DATA=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_user_data\")\n if [[ $_ANALYTICS_AD_USER_DATA ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_USER_DATA\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AD_USER_DATA\")\")\n fi\n\n # config.analytics_default_allow_ad_personalization_signals\n _ANALYTICS_PERSONALIZATION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"analytics_default_allow_ad_personalization_signals\")\n if [[ $_ANALYTICS_PERSONALIZATION ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_DEFAULT_ALLOW_AD_PERSONALIZATION_SIGNALS\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_PERSONALIZATION\")\")\n fi\n\n # config.analytics_registration_with_ad_network_enabled\n _ANALYTICS_REGISTRATION_WITH_AD_NETWORK=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_registration_with_ad_network_enabled\")\n if [[ $_ANALYTICS_REGISTRATION_WITH_AD_NETWORK ]]; then\n _PLIST_ENTRY_KEYS+=(\"GOOGLE_ANALYTICS_REGISTRATION_WITH_AD_NETWORK_ENABLED\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_REGISTRATION_WITH_AD_NETWORK\")\")\n fi\n\n # config.google_analytics_automatic_screen_reporting_enabled\n _ANALYTICS_AUTO_SCREEN_REPORTING=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"google_analytics_automatic_screen_reporting_enabled\")\n if [[ $_ANALYTICS_AUTO_SCREEN_REPORTING ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAutomaticScreenReportingEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_ANALYTICS_AUTO_SCREEN_REPORTING\")\")\n fi\n\n # config.perf_auto_collection_enabled\n _PERF_AUTO_COLLECTION=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_auto_collection_enabled\")\n if [[ $_PERF_AUTO_COLLECTION ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_enabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_AUTO_COLLECTION\")\")\n fi\n\n # config.perf_collection_deactivated\n _PERF_DEACTIVATED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"perf_collection_deactivated\")\n if [[ $_PERF_DEACTIVATED ]]; then\n _PLIST_ENTRY_KEYS+=(\"firebase_performance_collection_deactivated\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_PERF_DEACTIVATED\")\")\n fi\n\n # config.messaging_auto_init_enabled\n _MESSAGING_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"messaging_auto_init_enabled\")\n if [[ $_MESSAGING_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseMessagingAutoInitEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_MESSAGING_AUTO_INIT\")\")\n fi\n\n # config.in_app_messaging_auto_colllection_enabled\n _FIAM_AUTO_INIT=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"in_app_messaging_auto_collection_enabled\")\n if [[ $_FIAM_AUTO_INIT ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseInAppMessagingAutomaticDataCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_FIAM_AUTO_INIT\")\")\n fi\n\n # config.app_check_token_auto_refresh\n _APP_CHECK_TOKEN_AUTO_REFRESH=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"app_check_token_auto_refresh\")\n if [[ $_APP_CHECK_TOKEN_AUTO_REFRESH ]]; then\n _PLIST_ENTRY_KEYS+=(\"FirebaseAppCheckTokenAutoRefreshEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"$(jsonBoolToYesNo \"$_APP_CHECK_TOKEN_AUTO_REFRESH\")\")\n fi\n\n # config.crashlytics_disable_auto_disabler - undocumented for now - mainly for debugging, document if becomes useful\n _CRASHLYTICS_AUTO_DISABLE_ENABLED=$(getFirebaseJsonKeyValue \"$_JSON_OUTPUT_RAW\" \"crashlytics_disable_auto_disabler\")\n if [[ $_CRASHLYTICS_AUTO_DISABLE_ENABLED == \"true\" ]]; then\n echo \"Disabled Crashlytics auto disabler.\" # do nothing\n else\n _PLIST_ENTRY_KEYS+=(\"FirebaseCrashlyticsCollectionEnabled\")\n _PLIST_ENTRY_TYPES+=(\"bool\")\n _PLIST_ENTRY_VALUES+=(\"NO\")\n fi\nelse\n _PLIST_ENTRY_KEYS+=(\"firebase_json_raw\")\n _PLIST_ENTRY_TYPES+=(\"string\")\n _PLIST_ENTRY_VALUES+=(\"$_JSON_OUTPUT_BASE64\")\n echo \"warning: A firebase.json file was not found, whilst this file is optional it is recommended to include it to configure firebase services in React Native Firebase.\"\nfi;\n\necho \"info: 2) Injecting Info.plist entries: \"\n\n# Log out the keys we're adding\nfor i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n echo \" -> $i) ${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\"\ndone\n\nfor plist in \"${_TARGET_PLIST}\" \"${_DSYM_PLIST}\" ; do\n if [[ -f \"${plist}\" ]]; then\n\n # paths with spaces break the call to setPlistValue. temporarily modify\n # the shell internal field separator variable (IFS), which normally\n # includes spaces, to consist only of line breaks\n oldifs=$IFS\n IFS=\"\n\"\n\n for i in \"${!_PLIST_ENTRY_KEYS[@]}\"; do\n setPlistValue \"${_PLIST_ENTRY_KEYS[$i]}\" \"${_PLIST_ENTRY_TYPES[$i]}\" \"${_PLIST_ENTRY_VALUES[$i]}\" \"${plist}\"\n done\n\n # restore the original internal field separator value\n IFS=$oldifs\n else\n echo \"warning: A Info.plist build output file was not found (${plist})\"\n fi\ndone\n\necho \"info: <- RNFB build script finished\"\n"; + }; A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -474,10 +494,12 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Databag/Databag.entitlements; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 3P65PQ7SUR; ENABLE_BITCODE = NO; INFOPLIST_FILE = Databag/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Databag; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -507,9 +529,11 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Databag/Databag.entitlements; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 3P65PQ7SUR; INFOPLIST_FILE = Databag/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Databag; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -583,6 +607,17 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", + ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD = ""; LDPLUSPLUS = ""; @@ -605,10 +640,7 @@ "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", ); - OTHER_LDFLAGS = ( - "$(inherited)", - " ", - ); + OTHER_LDFLAGS = "$(inherited) "; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; @@ -660,6 +692,17 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon/ReactCommon.framework/Headers/react/nativemodule/core", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/ReactCommon-Samples/ReactCommon_Samples.framework/Headers/platform/ios", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Fabric/React_Fabric.framework/Headers/react/renderer/components/view/platform/cxx", + "${PODS_CONFIGURATION_BUILD_DIR}/React-NativeModulesApple/React_NativeModulesApple.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers", + "${PODS_CONFIGURATION_BUILD_DIR}/React-graphics/React_graphics.framework/Headers/react/renderer/graphics/platform/ios", + ); IPHONEOS_DEPLOYMENT_TARGET = 13.4; LD = ""; LDPLUSPLUS = ""; @@ -681,10 +724,7 @@ "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", ); - OTHER_LDFLAGS = ( - "$(inherited)", - " ", - ); + OTHER_LDFLAGS = "$(inherited) "; REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; USE_HERMES = true; diff --git a/app/client/mobile/ios/Databag/AppDelegate.mm b/app/client/mobile/ios/Databag/AppDelegate.mm index b673f869..703fdc80 100644 --- a/app/client/mobile/ios/Databag/AppDelegate.mm +++ b/app/client/mobile/ios/Databag/AppDelegate.mm @@ -1,4 +1,5 @@ #import "AppDelegate.h" +#import #import @@ -6,6 +7,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + [FIRApp configure]; self.moduleName = @"Databag"; // You can add your custom initial props in the dictionary below. // They will be passed down to the ViewController used by React Native. diff --git a/app/client/mobile/ios/Databag/Databag.entitlements b/app/client/mobile/ios/Databag/Databag.entitlements new file mode 100644 index 00000000..903def2a --- /dev/null +++ b/app/client/mobile/ios/Databag/Databag.entitlements @@ -0,0 +1,8 @@ + + + + + aps-environment + development + + diff --git a/app/client/mobile/ios/Databag/PrivacyInfo.xcprivacy b/app/client/mobile/ios/Databag/PrivacyInfo.xcprivacy index d634def7..a7e9744e 100644 --- a/app/client/mobile/ios/Databag/PrivacyInfo.xcprivacy +++ b/app/client/mobile/ios/Databag/PrivacyInfo.xcprivacy @@ -4,21 +4,23 @@ NSPrivacyAccessedAPITypes - - NSPrivacyAccessedAPIType - NSPrivacyAccessedAPICategoryFileTimestamp - NSPrivacyAccessedAPITypeReasons - - 3B52.1 - C617.1 - - NSPrivacyAccessedAPIType NSPrivacyAccessedAPICategoryUserDefaults NSPrivacyAccessedAPITypeReasons CA92.1 + 1C8F.1 + C56D.1 + + + + NSPrivacyAccessedAPIType + NSPrivacyAccessedAPICategoryFileTimestamp + NSPrivacyAccessedAPITypeReasons + + C617.1 + 3B52.1 diff --git a/app/client/mobile/ios/GoogleService-Info.plist b/app/client/mobile/ios/GoogleService-Info.plist new file mode 100644 index 00000000..9a87d9d1 --- /dev/null +++ b/app/client/mobile/ios/GoogleService-Info.plist @@ -0,0 +1,34 @@ + + + + + CLIENT_ID + 627079362503-juslol5o5odeki2agop3705pn6rfsb5n.apps.googleusercontent.com + REVERSED_CLIENT_ID + com.googleusercontent.apps.627079362503-juslol5o5odeki2agop3705pn6rfsb5n + API_KEY + AIzaSyBZr5HTRVFmZL8U_8I1WvRaYzNjK8lBM7Y + GCM_SENDER_ID + 627079362503 + PLIST_VERSION + 1 + BUNDLE_ID + org.coredb.databag + PROJECT_ID + databag-b46e0 + STORAGE_BUCKET + databag-b46e0.appspot.com + IS_ADS_ENABLED + + IS_ANALYTICS_ENABLED + + IS_APPINVITE_ENABLED + + IS_GCM_ENABLED + + IS_SIGNIN_ENABLED + + GOOGLE_APP_ID + 1:627079362503:ios:a3ddad40939b71a44a8be2 + + diff --git a/app/client/mobile/ios/Podfile b/app/client/mobile/ios/Podfile index d573962b..0929ab63 100644 --- a/app/client/mobile/ios/Podfile +++ b/app/client/mobile/ios/Podfile @@ -17,6 +17,8 @@ end target 'Databag' do config = use_native_modules! + use_frameworks! :linkage => :static + $RNFirebaseAsStaticFramework = true use_react_native!( :path => config[:reactNativePath], # An absolute path to your application root. diff --git a/app/client/mobile/ios/Podfile.lock b/app/client/mobile/ios/Podfile.lock index 96b0793e..3ca7c07b 100644 --- a/app/client/mobile/ios/Podfile.lock +++ b/app/client/mobile/ios/Podfile.lock @@ -2,11 +2,71 @@ PODS: - boost (1.84.0) - DoubleConversion (1.1.6) - FBLazyVector (0.75.2) + - Firebase/CoreOnly (11.5.0): + - FirebaseCore (= 11.5.0) + - Firebase/Messaging (11.5.0): + - Firebase/CoreOnly + - FirebaseMessaging (~> 11.5.0) + - FirebaseCore (11.5.0): + - FirebaseCoreInternal (= 11.5) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/Logger (~> 8.0) + - FirebaseCoreExtension (11.5.0): + - FirebaseCore (= 11.5) + - FirebaseCoreInternal (11.5.0): + - "GoogleUtilities/NSData+zlib (~> 8.0)" + - FirebaseInstallations (11.5.0): + - FirebaseCore (= 11.5) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - PromisesObjC (~> 2.4) + - FirebaseMessaging (11.5.0): + - FirebaseCore (= 11.5) + - FirebaseInstallations (~> 11.0) + - GoogleDataTransport (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/Reachability (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - nanopb (~> 3.30910.0) - fmt (9.1.0) - glog (0.3.5) + - GoogleDataTransport (10.1.0): + - nanopb (~> 3.30910.0) + - PromisesObjC (~> 2.4) + - GoogleUtilities/AppDelegateSwizzler (8.0.2): + - GoogleUtilities/Environment + - GoogleUtilities/Logger + - GoogleUtilities/Network + - GoogleUtilities/Privacy + - GoogleUtilities/Environment (8.0.2): + - GoogleUtilities/Privacy + - GoogleUtilities/Logger (8.0.2): + - GoogleUtilities/Environment + - GoogleUtilities/Privacy + - GoogleUtilities/Network (8.0.2): + - GoogleUtilities/Logger + - "GoogleUtilities/NSData+zlib" + - GoogleUtilities/Privacy + - GoogleUtilities/Reachability + - "GoogleUtilities/NSData+zlib (8.0.2)": + - GoogleUtilities/Privacy + - GoogleUtilities/Privacy (8.0.2) + - GoogleUtilities/Reachability (8.0.2): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy + - GoogleUtilities/UserDefaults (8.0.2): + - GoogleUtilities/Logger + - GoogleUtilities/Privacy - hermes-engine (0.75.2): - hermes-engine/Pre-built (= 0.75.2) - hermes-engine/Pre-built (0.75.2) + - nanopb (3.30910.0): + - nanopb/decode (= 3.30910.0) + - nanopb/encode (= 3.30910.0) + - nanopb/decode (3.30910.0) + - nanopb/encode (3.30910.0) + - PromisesObjC (2.4.0) - RCT-Folly (2024.01.01.00): - boost - DoubleConversion @@ -1289,7 +1349,7 @@ PODS: - React-Core - react-native-sqlite-storage (6.0.1): - React-Core - - react-native-video (6.9.0): + - react-native-video (6.9.1): - DoubleConversion - glog - hermes-engine @@ -1302,7 +1362,7 @@ PODS: - React-featureflags - React-graphics - React-ImageManager - - react-native-video/Video (= 6.9.0) + - react-native-video/Video (= 6.9.1) - React-NativeModulesApple - React-RCTFabric - React-rendererdebug @@ -1311,7 +1371,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - react-native-video/Video (6.9.0): + - react-native-video/Video (6.9.1): - DoubleConversion - glog - hermes-engine @@ -1594,11 +1654,19 @@ PODS: - React-utils (= 0.75.2) - rn-fetch-blob (0.12.0): - React-Core - - RNCClipboard (1.15.0): + - RNCClipboard (1.16.0): - React-Core + - RNFBApp (21.6.2): + - Firebase/CoreOnly (= 11.5.0) + - React-Core + - RNFBMessaging (21.6.2): + - Firebase/Messaging (= 11.5.0) + - FirebaseCoreExtension + - React-Core + - RNFBApp - RNFS (2.20.0): - React-Core - - RNGestureHandler (2.21.2): + - RNGestureHandler (2.22.0): - DoubleConversion - glog - hermes-engine @@ -1838,6 +1906,8 @@ DEPENDENCIES: - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - rn-fetch-blob (from `../node_modules/rn-fetch-blob`) - "RNCClipboard (from `../node_modules/@react-native-clipboard/clipboard`)" + - "RNFBApp (from `../node_modules/@react-native-firebase/app`)" + - "RNFBMessaging (from `../node_modules/@react-native-firebase/messaging`)" - RNFS (from `../node_modules/react-native-fs`) - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`) @@ -1849,6 +1919,16 @@ DEPENDENCIES: SPEC REPOS: trunk: + - Firebase + - FirebaseCore + - FirebaseCoreExtension + - FirebaseCoreInternal + - FirebaseInstallations + - FirebaseMessaging + - GoogleDataTransport + - GoogleUtilities + - nanopb + - PromisesObjC - SocketRocket - TOCropViewController @@ -1996,6 +2076,10 @@ EXTERNAL SOURCES: :path: "../node_modules/rn-fetch-blob" RNCClipboard: :path: "../node_modules/@react-native-clipboard/clipboard" + RNFBApp: + :path: "../node_modules/@react-native-firebase/app" + RNFBMessaging: + :path: "../node_modules/@react-native-firebase/messaging" RNFS: :path: "../node_modules/react-native-fs" RNGestureHandler: @@ -2017,10 +2101,20 @@ SPEC CHECKSUMS: boost: 4cb898d0bf20404aab1850c656dcea009429d6c1 DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 FBLazyVector: 38bb611218305c3bc61803e287b8a81c6f63b619 + Firebase: 7a56fe4f56b5ab81b86a6822f5b8f909ae6fc7e2 + FirebaseCore: 93abc05437f8064cd2bc0a53b768fb0bc5a1d006 + FirebaseCoreExtension: ddb2eb987f736b714d30f6386795b52c4670439e + FirebaseCoreInternal: f47dd28ae7782e6a4738aad3106071a8fe0af604 + FirebaseInstallations: d8063d302a426d114ac531cd82b1e335a0565745 + FirebaseMessaging: 9f4e42053241bd45ce8565c881bfdd9c1df2f7da fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 - glog: 69ef571f3de08433d766d614c73a9838a06bf7eb + glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f + GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 + GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d hermes-engine: 3b6e0717ca847e2fc90a201e59db36caf04dee88 - RCT-Folly: 4464f4d875961fce86008d45f4ecf6cef6de0740 + nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 + PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 + RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47 RCTDeprecation: 34cbf122b623037ea9facad2e92e53434c5c7422 RCTRequired: 24c446d7bcd0f517d516b6265d8df04dc3eb1219 RCTTypeSafety: ef5e91bd791abd3a99b2c75fd565791102a66352 @@ -2029,73 +2123,75 @@ SPEC CHECKSUMS: React-Core: facd883836d8d1cc1949d2053c58eab5fb22eb75 React-CoreModules: f92a2cb11d22f6066823ca547c61e900325dfe44 React-cxxreact: f5595a4cbfe5a4e9d401dffa2c1c78bbbbbe75e4 - React-debug: 4a91c177b5b2efcc546fb50bc2f676f3f589efab - React-defaultsnativemodule: bb94c3db425b01c760f41a253de8536b3f5497f0 - React-domnativemodule: 6c581fd39812cafb024171e091c00905b2c3a3e2 - React-Fabric: a33cc1fdc62a3085774783bb30970531589d2028 - React-FabricComponents: 98de5f94cbd35d407f4fc78855298b562d8289cb - React-FabricImage: 0ce8fd83844d9edef5825116d38f0e208b9ad786 - React-featureflags: 37a78859ad71db758e2efdcbdb7384afefa8701e - React-featureflagsnativemodule: 52b46e161a151b4653cf1762285e8e899d534e3f - React-graphics: c16f1bab97a5d473831a79360d84300e93a614e5 + React-debug: 153b1899b6d9e2fde855577e1cd615f7448a03ac + React-defaultsnativemodule: 34d0c4dc9d31b2feb5a4f3b573f7c491566b6e08 + React-domnativemodule: f3f516cd33070e162f1f6bb1ead5a245f0b97db7 + React-Fabric: 9be6d42b5a1f4353d9e23c2db8532d9e5ccfef4d + React-FabricComponents: 897223a1dc15b4e8fa402cba057536cb10852963 + React-FabricImage: f4aaac50854c2ef195b79d1d4315b9e32c5ca853 + React-featureflags: 357423aa521ff01107895810f8d9758f8147d64d + React-featureflagsnativemodule: 3d62c2171740d6f2f60b86f9a08c12b923817472 + React-graphics: e41a17337bf4f4dfba8f7315b8ca0a73296800d7 React-hermes: 7801f8c0e12f326524b461dc368d3e74f3d2a385 - React-idlecallbacksnativemodule: 58de2ac968ee80947d19dc8fe20def607e5c2de8 - React-ImageManager: 98a1e5b0b05528dde47ebcd953d916ac66d46c09 - React-jserrorhandler: 08f1c3465a71a6549c27ad82809ce145ad52d4f1 + React-idlecallbacksnativemodule: a7d8ee70043d0c42fad301768ae97997d1c5581c + React-ImageManager: d24c9e2b772504aafde31455c39585a03377dece + React-jserrorhandler: 571bbbb4569347172cc4c0985a493b7dade32634 React-jsi: 161428ab2c706d5fcd9878d260ff1513fdb356ab React-jsiexecutor: abfdc7526151c6755f836235bbaa53b267a0803c - React-jsinspector: f0786053a1a258a4d8dde859d1a820c26ee686f0 - React-jsitracing: 52b849a77d02e2dc262a3031454c23be8dabb4d9 + React-jsinspector: 02ca2651458d686f47b0803d420fefc1b9c97213 + React-jsitracing: a63093da2909d8ee0d5a2224534cf605fa7adecc React-logger: 8db32983d75dc2ad54f278f344ccb9b256e694fc - React-Mapbuffer: 1c08607305558666fd16678b85ef135e455d5c96 - React-microtasksnativemodule: 87b8de96f937faefece8afd2cb3a518321b2ef99 - react-native-blur: a1bf334589f44658a58a859b1f3defe28e367fcf + React-Mapbuffer: db173bede5ac5cb1c82d4a6a8597477ba87c5648 + React-microtasksnativemodule: 0c1d7b6f26fbeae097279569cf2430255fa3d3a9 + react-native-blur: 0a96a365a933508e8ee20b9b26ee3cf508d618be react-native-create-thumbnail: 4ffd51a6c02a9313edc74e2460cd07264221f554 - react-native-document-picker: 7343222102ece8aec51390717f47ad7119c7921f + react-native-document-picker: 1928548d8b19bbc9f2219b01f1d350aa8ff76508 react-native-image-resizer: 6260ba497fb8d1a593c1c92ccd593f570df6f5b7 react-native-rsa-native: 12132eb627797529fdb1f0d22fd0f8f9678df64a react-native-safe-area-context: 141eca0fd4e4191288dfc8b96a7c7e1c2983447a react-native-sqlite-storage: f6d515e1c446d1e6d026aa5352908a25d4de3261 - react-native-video: 578ac626d299a6cece42477681b63a67a75280ca - React-nativeconfig: 57781b79e11d5af7573e6f77cbf1143b71802a6d - React-NativeModulesApple: 7ff2e2cfb2e5fa5bdedcecf28ce37e696c6ef1e1 + react-native-video: 439a3ee225579691a4b2b36c54c5e4c20676b6cb + React-nativeconfig: 5fc2b05a590eb704128f5a4fc8ea6fa7b847e6e8 + React-NativeModulesApple: 88313414ddffd1758f76042733e8f0297acfd502 React-perflogger: 8a360ccf603de6ddbe9ff8f54383146d26e6c936 - React-performancetimeline: 3cfec915adcb3653a5a633b41e711903844c35d8 + React-performancetimeline: 300691014905e8d25b36415fd2f248a2befcce61 React-RCTActionSheet: 1c0e26a88eec41215089cf4436e38188cfe9f01a React-RCTAnimation: d87207841b1e2ae1389e684262ea8c73c887cb04 React-RCTAppDelegate: 4ec7824c0cc9cc4b146ca8ee0fd81b10c316a440 React-RCTBlob: 79b42cb7db55f34079297687a480dbcf37f023f6 - React-RCTFabric: 1dd1661db93716f8cb116e451bd9c211a8d15716 + React-RCTFabric: 5015bcf3f9aa59817ad301ead0aa451e780fdb18 React-RCTImage: 0c10a75de59f7384a2a55545d5f36fe783e6ecda React-RCTLinking: bf08f4f655bf777af292b8d97449072c8bb196ca React-RCTNetwork: 1b690846b40fc5685af58e088720657db6814637 React-RCTSettings: 097e420926dd44153fb25174835b572aded224d6 React-RCTText: d8fe2ae9f95b2ccd03b2f534286e938254791992 React-RCTVibration: 976466dba32c0981a836e45ce38bcd4c8d6d924e - React-rendererconsistency: ee0d6f1b4420e1ad5bb01c02170e7ecbd278e307 - React-rendererdebug: 7fbf02f30d1e0bb0d96d65cf2548219cb53b29b6 - React-rncore: 7ffc5be03adbf0a5cbf1b654483f487a899cff08 - React-RuntimeApple: e623f002e1871de30a443291171d3f2fb134a6ec - React-RuntimeCore: a67357d4f073b1dbe6fbefc5273072027f201e1c + React-rendererconsistency: c6085ef7593a14a3ca07b82c533e8ce368403748 + React-rendererdebug: 945ef6d8128f429becb3769a81591c96e3802fd2 + React-rncore: 14846f4dd48ba5056b11ab89f4a5498f6f02f20f + React-RuntimeApple: 171b7b35ec9dc97ba358d691bea07fc81795ca3e + React-RuntimeCore: 7dcad4be47b656fdd67f7a6a78cf746948a11890 React-runtimeexecutor: 5bb52479abf8081086afb0397dc33dc97202a439 - React-RuntimeHermes: 860cf64708a12a2fa62366fe51fe000121fa031b - React-runtimescheduler: fff88d51ad2c8815fc75930dbac224d680593e6b - React-utils: 81a715d9c0a2a49047e77a86f3a2247408540deb - ReactCodegen: 60973d382704c793c605b9be0fc7f31cb279442f - ReactCommon: 6ef348087d250257c44c0204461c03f036650e9b + React-RuntimeHermes: bfada6b4eb293117496b0b0ef6d31a8142649596 + React-runtimescheduler: 9577260c8dd7c3c97eb6f5086441784fd5241f62 + React-utils: f908da1113885e2c08b25247e0ea892c68e2eaf6 + ReactCodegen: de94475c4712a61ba0b1e1c25eb54db32f56836d + ReactCommon: 8da2bad9c1e5901f7b5484e42e59578edeece142 rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba - RNCClipboard: 69ab8e51324d5b351f6ba72bbdb72478087a2c64 + RNCClipboard: 88f7f4933e7731052210d77535560c485ecb75b0 + RNFBApp: c0543476dee81ed5fc34d06db2f37b8e7e353cf3 + RNFBMessaging: aab4dcf6d121cfe338c9ac45631d90e125b3a5ef RNFS: 4ac0f0ea233904cb798630b3c077808c06931688 - RNGestureHandler: aa9690789023c9be8f06aa90e10ce637ea788f4d + RNGestureHandler: f6a6630e6bde1a49d1e3fec73b6711f718813538 RNImageCropPicker: 8e39c01f205e00d739c31e682f068aac315587bf - RNReanimated: 56be6651e5d70985cdc4656372fc70291ecab65f - RNScreens: c7ceced6a8384cb9be5e7a5e88e9e714401fd958 + RNReanimated: 4fa1286bc27810821788072c6372b90d3310e7a1 + RNScreens: 16b782596e80e475b7f3ec769c9a97d789d9b0ed RNSecureRandom: 07efbdf2cd99efe13497433668e54acd7df49fef - RNVectorIcons: 6382277afab3c54658e9d555ee0faa7a37827136 + RNVectorIcons: 7b81882e9c9369031aede0016dee0fe415cf2f43 SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d TOCropViewController: 80b8985ad794298fb69d3341de183f33d1853654 - Yoga: a1d7895431387402a674fd0d1c04ec85e87909b8 + Yoga: c6584ec444ef4aee46e0575049f90cd2aab1e6ed -PODFILE CHECKSUM: 8461018d8deceb200962c829584af7c2eb345c80 +PODFILE CHECKSUM: 9cf7373afef7b881c911fda82ff1f94eacee3e98 COCOAPODS: 1.15.2 diff --git a/app/client/mobile/package.json b/app/client/mobile/package.json index 0aea24a3..3997fa3f 100644 --- a/app/client/mobile/package.json +++ b/app/client/mobile/package.json @@ -16,6 +16,8 @@ "@openspacelabs/react-native-zoomable-view": "^2.3.1", "@react-native-clipboard/clipboard": "^1.14.2", "@react-native-community/blur": "^4.4.0", + "@react-native-firebase/app": "^21.6.2", + "@react-native-firebase/messaging": "^21.6.2", "@react-navigation/drawer": "^6.7.2", "@react-navigation/native": "^6.1.18", "@react-navigation/native-stack": "^6.11.0", diff --git a/app/client/mobile/src/access/Access.tsx b/app/client/mobile/src/access/Access.tsx index be9aeb79..5842785f 100644 --- a/app/client/mobile/src/access/Access.tsx +++ b/app/client/mobile/src/access/Access.tsx @@ -288,7 +288,7 @@ export function Access() { {(alert || otp) && } setAlert(false)} contentContainerStyle={styles.modal}> - {state.strings.error} + {state.strings.operationFailed} {state.strings.tryAgain}