From 09cdb3e7a49fb7e45857ef510b55ed48c37e20fa Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 14 Dec 2022 16:23:28 -0300 Subject: [PATCH 01/29] Bump version to 4.35.0 (#4751) --- android/app/build.gradle | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++-- ios/RocketChatRN/Info.plist | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 44aa3e8de..8b0f1de41 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -147,7 +147,7 @@ android { minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode VERSIONCODE as Integer - versionName "4.34.0" + versionName "4.35.0" vectorDrawables.useSupportLibrary = true if (!isFoss) { manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 2d771287c..3cafe4b0e 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1767,7 +1767,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.34.0; + MARKETING_VERSION = 4.35.0; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; @@ -1806,7 +1806,7 @@ INFOPLIST_FILE = NotificationService/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; - MARKETING_VERSION = 4.34.0; + MARKETING_VERSION = 4.35.0; MTL_FAST_MATH = YES; OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; diff --git a/ios/RocketChatRN/Info.plist b/ios/RocketChatRN/Info.plist index 7b60bee49..1fbb04314 100644 --- a/ios/RocketChatRN/Info.plist +++ b/ios/RocketChatRN/Info.plist @@ -26,7 +26,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 4.34.0 + 4.35.0 CFBundleSignature ???? CFBundleURLTypes diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 703c7ef91..3c23beead 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -26,7 +26,7 @@ CFBundlePackageType XPC! CFBundleShortVersionString - 4.34.0 + 4.35.0 CFBundleVersion 1 KeychainGroup diff --git a/package.json b/package.json index 4f4b40066..c02f8cbf7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "rocket-chat-reactnative", - "version": "4.34.0", + "version": "4.35.0", "private": true, "scripts": { "start": "react-native start", From 4b1f1d9074009ca3927db8708598147b6c10b9ec Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 14 Dec 2022 18:58:05 -0300 Subject: [PATCH 02/29] Chore: Select different provisioning profile for Experimental app (#4752) --- ios/RocketChatRN.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 3cafe4b0e..825519749 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1654,7 +1654,7 @@ "$(inherited)", "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", - "$PODS_CONFIGURATION_BUILD_DIR/Firebase", + $PODS_CONFIGURATION_BUILD_DIR/Firebase, ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -1722,7 +1722,7 @@ "$(inherited)", "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", - "$PODS_CONFIGURATION_BUILD_DIR/Firebase", + $PODS_CONFIGURATION_BUILD_DIR/Firebase, ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -1739,7 +1739,7 @@ OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.ShareExtension; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = "match AppStore chat.rocket.reactnative.ShareExtension"; + PROVISIONING_PROFILE_SPECIFIER = "chat.rocket.reactnative.ShareExtension AppStore"; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1811,7 +1811,7 @@ OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = "match AppStore chat.rocket.reactnative.NotificationService"; + PROVISIONING_PROFILE_SPECIFIER = "chat.rocket.reactnative.NotificationService AppStore"; SKIP_INSTALL = YES; SWIFT_OBJC_BRIDGING_HEADER = "NotificationService/NotificationService-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-O"; From 23f716c280e261e82b4387cb5046e1c70ace77bb Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Wed, 21 Dec 2022 13:07:17 -0300 Subject: [PATCH 03/29] [FIX] Disappear push notifications when open the app (#4718) * [FIX] Disappear push notifications when open the app * minor tweak * test badgeCount * refactor remove notification to remove notification and badge --- app/lib/notifications/index.ts | 6 +++++- app/lib/notifications/push.ts | 4 ++++ app/lib/store/appStateMiddleware.ts | 2 ++ app/sagas/state.js | 2 -- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/lib/notifications/index.ts b/app/lib/notifications/index.ts index 3d4888987..167add557 100644 --- a/app/lib/notifications/index.ts +++ b/app/lib/notifications/index.ts @@ -3,7 +3,7 @@ import EJSON from 'ejson'; import { store } from '../store/auxStore'; import { deepLinkingOpen } from '../../actions/deepLinking'; import { isFDroidBuild } from '../constants'; -import { deviceToken, pushNotificationConfigure, setNotificationsBadgeCount } from './push'; +import { deviceToken, pushNotificationConfigure, setNotificationsBadgeCount, removeAllNotifications } from './push'; import { INotification, SubscriptionType } from '../../definitions'; interface IEjson { @@ -49,6 +49,10 @@ export const onNotification = (push: INotification): void => { export const getDeviceToken = (): string => deviceToken; export const setBadgeCount = (count?: number): void => setNotificationsBadgeCount(count); +export const removeNotificationsAndBadge = () => { + removeAllNotifications(); + setBadgeCount(); +}; export const initializePushNotifications = (): Promise | undefined => { if (!isFDroidBuild) { setBadgeCount(); diff --git a/app/lib/notifications/push.ts b/app/lib/notifications/push.ts index 4da3c1a62..4515da941 100644 --- a/app/lib/notifications/push.ts +++ b/app/lib/notifications/push.ts @@ -21,6 +21,10 @@ export const setNotificationsBadgeCount = (count = 0): void => { } }; +export const removeAllNotifications = (): void => { + Notifications.removeAllDeliveredNotifications(); +}; + export const pushNotificationConfigure = (onNotification: (notification: INotification) => void): Promise => { if (isIOS) { // init diff --git a/app/lib/store/appStateMiddleware.ts b/app/lib/store/appStateMiddleware.ts index 7025a8191..61da57a6c 100644 --- a/app/lib/store/appStateMiddleware.ts +++ b/app/lib/store/appStateMiddleware.ts @@ -1,6 +1,7 @@ // https://github.com/bamlab/redux-enhancer-react-native-appstate import { AppState } from 'react-native'; +import { removeNotificationsAndBadge } from '../notifications'; import { APP_STATE } from '../../actions/actionsTypes'; export default () => @@ -16,6 +17,7 @@ export default () => let type; if (nextAppState === 'active') { type = APP_STATE.FOREGROUND; + removeNotificationsAndBadge(); } else if (nextAppState === 'background') { type = APP_STATE.BACKGROUND; } diff --git a/app/sagas/state.js b/app/sagas/state.js index b29b2645a..1e6bcddab 100644 --- a/app/sagas/state.js +++ b/app/sagas/state.js @@ -5,7 +5,6 @@ import { localAuthenticate, saveLastLocalAuthenticationSession } from '../lib/me import { APP_STATE } from '../actions/actionsTypes'; import { RootEnum } from '../definitions'; import { Services } from '../lib/services'; -import { setBadgeCount } from '../lib/notifications'; const appHasComeBackToForeground = function* appHasComeBackToForeground() { const appRoot = yield select(state => state.app.root); @@ -20,7 +19,6 @@ const appHasComeBackToForeground = function* appHasComeBackToForeground() { try { yield localAuthenticate(server.server); Services.checkAndReopen(); - setBadgeCount(); return yield Services.setUserPresenceOnline(); } catch (e) { log(e); From 0b5dab3ddf155d200f33890e52bb61280fac5b23 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Wed, 21 Dec 2022 13:15:30 -0300 Subject: [PATCH 04/29] [FIX] Notification preferences menu shows nothing (#4703) --- app/views/UserNotificationPreferencesView/index.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/views/UserNotificationPreferencesView/index.tsx b/app/views/UserNotificationPreferencesView/index.tsx index eca0d91a5..f624f5d92 100644 --- a/app/views/UserNotificationPreferencesView/index.tsx +++ b/app/views/UserNotificationPreferencesView/index.tsx @@ -17,7 +17,7 @@ import log from '../../lib/methods/helpers/log'; const UserNotificationPreferencesView = () => { const [preferences, setPreferences] = useState({} as INotificationPreferences); - const [loading, setLoading] = useState(false); + const [loading, setLoading] = useState(true); const navigation = useNavigation>(); const userId = useAppSelector(state => getUserSelector(state).id); @@ -33,10 +33,11 @@ const UserNotificationPreferencesView = () => { try { const result = await Services.getUserPreferences(userId); if (result.success) { - setLoading(true); + setLoading(false); setPreferences(result.preferences); } } catch (error) { + setLoading(false); log(error); } } @@ -63,6 +64,8 @@ const UserNotificationPreferencesView = () => { {loading ? ( + + ) : ( <> @@ -103,8 +106,6 @@ const UserNotificationPreferencesView = () => { - ) : ( - )} From 68066d487f25da5236cc32eb296584b555f828d2 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Wed, 21 Dec 2022 14:34:48 -0300 Subject: [PATCH 05/29] [FIX] Try again to resend a file on a thread (#4756) --- app/definitions/IUpload.ts | 1 + app/lib/database/model/Upload.js | 2 ++ app/lib/database/model/migrations.js | 9 +++++++++ app/lib/database/schema/app.js | 3 ++- app/lib/methods/sendFileMessage.ts | 8 ++++++-- app/views/RoomView/UploadProgress.tsx | 2 +- 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/app/definitions/IUpload.ts b/app/definitions/IUpload.ts index 059555130..52d3c1995 100644 --- a/app/definitions/IUpload.ts +++ b/app/definitions/IUpload.ts @@ -5,6 +5,7 @@ export interface IUpload { rid?: string; path: string; name?: string; + tmid?: string; description?: string; size: number; type?: string; diff --git a/app/lib/database/model/Upload.js b/app/lib/database/model/Upload.js index d03a87729..a96e2c995 100644 --- a/app/lib/database/model/Upload.js +++ b/app/lib/database/model/Upload.js @@ -16,6 +16,8 @@ export default class Upload extends Model { @field('name') name; + @field('tmid') tmid; + @field('description') description; @field('size') size; diff --git a/app/lib/database/model/migrations.js b/app/lib/database/model/migrations.js index aacbd5903..3a5374e56 100644 --- a/app/lib/database/model/migrations.js +++ b/app/lib/database/model/migrations.js @@ -239,6 +239,15 @@ export default schemaMigrations({ columns: [{ name: 'hide_mention_status', type: 'boolean', isOptional: true }] }) ] + }, + { + toVersion: 19, + steps: [ + addColumns({ + table: 'uploads', + columns: [{ name: 'tmid', type: 'string', isOptional: true }] + }) + ] } ] }); diff --git a/app/lib/database/schema/app.js b/app/lib/database/schema/app.js index 6380084af..f354b34eb 100644 --- a/app/lib/database/schema/app.js +++ b/app/lib/database/schema/app.js @@ -1,7 +1,7 @@ import { appSchema, tableSchema } from '@nozbe/watermelondb'; export default appSchema({ - version: 18, + version: 19, tables: [ tableSchema({ name: 'subscriptions', @@ -222,6 +222,7 @@ export default appSchema({ { name: 'path', type: 'string', isOptional: true }, { name: 'rid', type: 'string', isIndexed: true }, { name: 'name', type: 'string', isOptional: true }, + { name: 'tmid', type: 'string', isOptional: true }, { name: 'description', type: 'string', isOptional: true }, { name: 'size', type: 'number' }, { name: 'type', type: 'string', isOptional: true }, diff --git a/app/lib/methods/sendFileMessage.ts b/app/lib/methods/sendFileMessage.ts index dbbe6317e..08033cb60 100644 --- a/app/lib/methods/sendFileMessage.ts +++ b/app/lib/methods/sendFileMessage.ts @@ -46,7 +46,8 @@ export function sendFileMessage( fileInfo: IUpload, tmid: string | undefined, server: string, - user: Partial> + user: Partial>, + isForceTryAgain?: boolean ): Promise { return new Promise(async (resolve, reject) => { try { @@ -62,7 +63,7 @@ export function sendFileMessage( let uploadRecord: TUploadModel; try { uploadRecord = await uploadsCollection.find(uploadPath); - if (uploadRecord.id) { + if (uploadRecord.id && !isForceTryAgain) { return Alert.alert(i18n.t('FileUpload_Error'), i18n.t('Upload_in_progress')); } } catch (error) { @@ -71,6 +72,9 @@ export function sendFileMessage( uploadRecord = await uploadsCollection.create(u => { u._raw = sanitizedRaw({ id: uploadPath }, uploadsCollection.schema); Object.assign(u, fileInfo); + if (tmid) { + u.tmid = tmid; + } if (u.subscription) { u.subscription.id = rid; } diff --git a/app/views/RoomView/UploadProgress.tsx b/app/views/RoomView/UploadProgress.tsx index 2509870c9..6c78ef204 100644 --- a/app/views/RoomView/UploadProgress.tsx +++ b/app/views/RoomView/UploadProgress.tsx @@ -160,7 +160,7 @@ class UploadProgress extends Component Date: Wed, 21 Dec 2022 14:38:18 -0300 Subject: [PATCH 06/29] Bump minimist from 1.2.5 to 1.2.7 (#4616) Bumps [minimist](https://github.com/minimistjs/minimist) from 1.2.5 to 1.2.7. - [Release notes](https://github.com/minimistjs/minimist/releases) - [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md) - [Commits](https://github.com/minimistjs/minimist/compare/v1.2.5...v1.2.7) --- updated-dependencies: - dependency-name: minimist dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Diego Mello --- yarn.lock | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4f3e5d74e..5f9725605 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15015,21 +15015,11 @@ minimatch@3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.5, "minimist@~ 1.2.0": - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minimist@^1.2.0: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, "minimist@~ 1.2.0": version "1.2.7" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== -minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - minipass-collect@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" From c13e0af110b0a70bd3ebe2825e863c94c6fded32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Dec 2022 14:38:36 -0300 Subject: [PATCH 07/29] Chore: Bump underscore from 1.10.2 to 1.13.6 (#4764) Bumps [underscore](https://github.com/jashkenas/underscore) from 1.10.2 to 1.13.6. - [Release notes](https://github.com/jashkenas/underscore/releases) - [Commits](https://github.com/jashkenas/underscore/compare/1.10.2...1.13.6) --- updated-dependencies: - dependency-name: underscore dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Diego Mello --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5f9725605..be1f7c614 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19949,9 +19949,9 @@ unbox-primitive@^1.0.2: which-boxed-primitive "^1.0.2" underscore@^1.8.3: - version "1.10.2" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.10.2.tgz#73d6aa3668f3188e4adb0f1943bd12cfd7efaaaf" - integrity sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg== + version "1.13.6" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" + integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== unfetch@^4.2.0: version "4.2.0" From 67f41a712c841ab0b3b75134d94c33e137818fef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Dec 2022 14:39:09 -0300 Subject: [PATCH 08/29] Chore: Bump loader-utils from 1.4.1 to 1.4.2 (#4687) Bumps [loader-utils](https://github.com/webpack/loader-utils) from 1.4.1 to 1.4.2. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v1.4.2/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v1.4.1...v1.4.2) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Diego Mello --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index be1f7c614..49da05701 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14126,9 +14126,9 @@ loader-utils@2.0.0, loader-utils@^2.0.0: json5 "^2.1.2" loader-utils@^1.2.3: - version "1.4.1" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.1.tgz#278ad7006660bccc4d2c0c1578e17c5c78d5c0e0" - integrity sha512-1Qo97Y2oKaU+Ro2xnDMR26g1BwMT29jNbem1EvcujW2jqt+j5COXyscjM7bLQkM9HaxI7pkWeW7gnI072yMI9Q== + version "1.4.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" From 4174aef4f8f6485bbba54fe2c7031747c645a599 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 21 Dec 2022 15:47:42 -0300 Subject: [PATCH 09/29] Chore: Upgrade react-native-device-info to 10.3.0 (#4770) --- e2e/tests/assorted/14-in-app-notification.spec.ts | 5 +++-- ios/Podfile.lock | 4 ++-- package.json | 2 +- ...+8.4.8.patch => react-native-device-info+10.3.0.patch} | 0 yarn.lock | 8 ++++---- 5 files changed, 10 insertions(+), 9 deletions(-) rename patches/{react-native-device-info+8.4.8.patch => react-native-device-info+10.3.0.patch} (100%) diff --git a/e2e/tests/assorted/14-in-app-notification.spec.ts b/e2e/tests/assorted/14-in-app-notification.spec.ts index 505f12494..23381e787 100644 --- a/e2e/tests/assorted/14-in-app-notification.spec.ts +++ b/e2e/tests/assorted/14-in-app-notification.spec.ts @@ -32,8 +32,9 @@ describe('InApp Notification', () => { .withTimeout(2000); await sleep(500); await element(by.id(`in-app-notification-${text}`)).tap(); - await sleep(500); - await expect(element(by.id('room-header'))).toExist(); + await waitFor(element(by.id('room-view'))) + .toBeVisible() + .withTimeout(5000); await expect(element(by.id(`room-view-title-${data.users.alternate.username}`))).toExist(); }); }); diff --git a/ios/Podfile.lock b/ios/Podfile.lock index d8294072a..e412a206c 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -503,7 +503,7 @@ PODS: - React-Core - RNDateTimePicker (3.5.2): - React-Core - - RNDeviceInfo (8.4.8): + - RNDeviceInfo (10.3.0): - React-Core - RNFastImage (8.5.12): - React-Core @@ -982,7 +982,7 @@ SPEC CHECKSUMS: RNConfigReader: 396da6a6444182a76e8ae0930b9436c7575045cb RNCPicker: 914b557e20b3b8317b084aca9ff4b4edb95f61e4 RNDateTimePicker: 7658208086d86d09e1627b5c34ba0cf237c60140 - RNDeviceInfo: 0400a6d0c94186d1120c3cbd97b23abc022187a9 + RNDeviceInfo: 4701f0bf2a06b34654745053db0ce4cb0c53ada7 RNFastImage: d5510534be9cccc80e824bfec6369c116d212871 RNFBAnalytics: 091c8adcbb0da1e1680ce434fc6e8a0a501fe2e6 RNFBApp: b1b5a80a676a07dea17e778bda7c1e8b69b2f5ec diff --git a/package.json b/package.json index c02f8cbf7..506425329 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "react-native-bootsplash": "^4.3.3", "react-native-config-reader": "^4.1.1", "react-native-console-time-polyfill": "1.2.3", - "react-native-device-info": "8.4.8", + "react-native-device-info": "^10.3.0", "react-native-document-picker": "^8.1.2", "react-native-easy-grid": "^0.2.2", "react-native-easy-toast": "^1.2.0", diff --git a/patches/react-native-device-info+8.4.8.patch b/patches/react-native-device-info+10.3.0.patch similarity index 100% rename from patches/react-native-device-info+8.4.8.patch rename to patches/react-native-device-info+10.3.0.patch diff --git a/yarn.lock b/yarn.lock index 49da05701..602af3e80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17090,10 +17090,10 @@ react-native-console-time-polyfill@1.2.3: resolved "https://registry.yarnpkg.com/react-native-console-time-polyfill/-/react-native-console-time-polyfill-1.2.3.tgz#1039dab1bb9e2d8040f5e19de68e0da781dc9b60" integrity sha512-C7CUb1c6GsCssqvjtRuqVqnGwlfEHXxXDvCUuGNbq/gpZZt+9YbZD3ODmXBDxis3tDQA0k1lbT1VMTqWQw9rDg== -react-native-device-info@8.4.8: - version "8.4.8" - resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-8.4.8.tgz#fc92ae423e47db6cfbf30c30012e09cee63727fa" - integrity sha512-92676ZWHZHsPM/EW1ulgb2MuVfjYfMWRTWMbLcrCsipkcMaZ9Traz5mpsnCS7KZpsOksnvUinzDIjsct2XGc6Q== +react-native-device-info@^10.3.0: + version "10.3.0" + resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-10.3.0.tgz#6bab64d84d3415dd00cc446c73ec5e2e61fddbe7" + integrity sha512-/ziZN1sA1REbJTv5mQZ4tXggcTvSbct+u5kCaze8BmN//lbxcTvWsU6NQd4IihLt89VkbX+14IGc9sVApSxd/w== react-native-document-picker@^8.1.2: version "8.1.2" From 73557038a2ff78a50098f434b7d90962a0ec156f Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 21 Dec 2022 17:35:45 -0300 Subject: [PATCH 10/29] [FIX] Flipper on Android (#4771) --- .../reactnative/MainDebugApplication.java | 25 ------------- .../rocket/reactnative/MainApplication.java | 35 +++++++++++++++++++ android/gradle.properties | 2 +- 3 files changed, 36 insertions(+), 26 deletions(-) delete mode 100644 android/app/src/debug/java/chat/rocket/reactnative/MainDebugApplication.java diff --git a/android/app/src/debug/java/chat/rocket/reactnative/MainDebugApplication.java b/android/app/src/debug/java/chat/rocket/reactnative/MainDebugApplication.java deleted file mode 100644 index e6abf3b05..000000000 --- a/android/app/src/debug/java/chat/rocket/reactnative/MainDebugApplication.java +++ /dev/null @@ -1,25 +0,0 @@ -package chat.rocket.reactnative; - -import android.content.Context; - -import com.facebook.react.ReactInstanceManager; - -public class MainDebugApplication extends MainApplication { - - @Override - public void onCreate() { - super.onCreate(); - initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - } - - /** - * Loads Flipper in React Native templates. Call this in the onCreate method with something like - * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); - * - * @param context - * @param reactInstanceManager - */ - private static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { - ReactNativeFlipper.initializeFlipper(context, reactInstanceManager); - } -} diff --git a/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java b/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java index 871e6e86d..b94159e09 100644 --- a/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java +++ b/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java @@ -9,13 +9,16 @@ import com.facebook.react.ReactApplication; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.react.config.ReactFeatureFlags; +import com.facebook.react.ReactInstanceManager; import com.facebook.soloader.SoLoader; import com.reactnativecommunity.viewpager.RNCViewPagerPackage; import com.facebook.react.bridge.JSIModulePackage; import com.swmansion.reanimated.ReanimatedJSIModulePackage; +import android.content.Context; import android.content.res.Configuration; import expo.modules.ApplicationLifecycleDispatcher; import expo.modules.ReactNativeHostWrapper; +import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.List; @@ -76,6 +79,7 @@ public class MainApplication extends Application implements ReactApplication { // If you opted-in for the New Architecture, we enable the TurboModule system ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; SoLoader.init(this, /* native exopackage */ false); + initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); ApplicationLifecycleDispatcher.onApplicationCreate(this); } @@ -84,4 +88,35 @@ public class MainApplication extends Application implements ReactApplication { super.onConfigurationChanged(newConfig); ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig); } + + /** + * Loads Flipper in React Native templates. Call this in the onCreate method with something like + * initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); + * + * @param context + * @param reactInstanceManager + */ + private static void initializeFlipper( + Context context, ReactInstanceManager reactInstanceManager) { + if (BuildConfig.DEBUG) { + try { + /* + We use reflection here to pick up the class that initializes Flipper, + since Flipper library is not available in release mode + */ + Class aClass = Class.forName("chat.rocket.reactnative.ReactNativeFlipper"); + aClass + .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class) + .invoke(null, context, reactInstanceManager); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + } + } } diff --git a/android/gradle.properties b/android/gradle.properties index 59600f62e..29d16769c 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -23,7 +23,7 @@ android.useAndroidX=true android.enableJetifier=true # Version of flipper SDK to use with React Native -FLIPPER_VERSION=0.125.0 +FLIPPER_VERSION=0.175.0 # Use this property to specify which architecture you want to build. # You can also override it from the CLI using From b6b5e7294fe649523716b1bb9fab5bc01405ba86 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Wed, 4 Jan 2023 11:36:51 -0300 Subject: [PATCH 11/29] [FIX] Member list filters for All by default (#4757) Co-authored-by: Gleidson Daniel Silva --- app/views/RoomMembersView/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/RoomMembersView/index.tsx b/app/views/RoomMembersView/index.tsx index 99f20d35c..24f652a91 100644 --- a/app/views/RoomMembersView/index.tsx +++ b/app/views/RoomMembersView/index.tsx @@ -110,8 +110,8 @@ const RoomMembersView = (): React.ReactElement => { useEffect(() => { const subscription = params?.room?.observe && params.room.observe().subscribe(changes => updateState({ room: changes })); - setHeader(true); - fetchMembers(true); + setHeader(false); + fetchMembers(false); return () => subscription?.unsubscribe(); }, []); From 8102bef1d01f7719ce0cd1c3962e6ed09f4733dd Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Thu, 5 Jan 2023 15:23:11 -0300 Subject: [PATCH 12/29] [FIX] Quote message and reply with image (#4715) * send msg with attachment * send quote inside image * minor tweak * remove msg from return * fix the lint and prettier * fix visual bug for iOS * fixing the message box input --- app/containers/MessageBox/index.tsx | 37 +++++++++++++++++++---------- app/definitions/IMessage.ts | 10 +++++++- app/definitions/IUpload.ts | 1 + app/lib/methods/sendFileMessage.ts | 7 ++++++ app/stacks/types.ts | 3 +++ app/views/RoomView/index.tsx | 28 +++++++++++----------- app/views/ShareView/index.tsx | 36 +++++++++++++++++++++++++--- 7 files changed, 91 insertions(+), 31 deletions(-) diff --git a/app/containers/MessageBox/index.tsx b/app/containers/MessageBox/index.tsx index a7e6823db..85b070037 100644 --- a/app/containers/MessageBox/index.tsx +++ b/app/containers/MessageBox/index.tsx @@ -302,7 +302,7 @@ class MessageBox extends Component { if (usedCannedResponse !== nextProps.usedCannedResponse) { this.onChangeText(nextProps.usedCannedResponse ?? ''); } - if (sharing) { + if (sharing && !replying) { this.setInput(nextProps.message.msg ?? ''); return; } @@ -857,14 +857,21 @@ class MessageBox extends Component { }; openShareView = (attachments: any) => { - const { message, replyCancel, replyWithMention } = this.props; + const { message, replyCancel, replyWithMention, replying } = this.props; // Start a thread with an attachment let value: TThreadModel | IMessage = this.thread; if (replyWithMention) { value = message; replyCancel(); } - Navigation.navigate('ShareView', { room: this.room, thread: value, attachments }); + Navigation.navigate('ShareView', { + room: this.room, + thread: value, + attachments, + replying, + replyingMessage: message, + closeReply: replyCancel + }); }; createDiscussion = () => { @@ -1042,16 +1049,7 @@ class MessageBox extends Component { // Legacy reply or quote (quote is a reply without mention) } else { - const { user, roomType } = this.props; - const permalink = await this.getPermalink(replyingMessage); - let msg = `[ ](${permalink}) `; - - // if original message wasn't sent by current user and neither from a direct room - if (user.username !== replyingMessage?.u?.username && roomType !== 'd' && replyWithMention) { - msg += `@${replyingMessage?.u?.username} `; - } - - msg = `${msg} ${message}`; + const msg = await this.formatReplyMessage(replyingMessage, message); onSubmit(msg); } replyCancel(); @@ -1063,6 +1061,19 @@ class MessageBox extends Component { } }; + formatReplyMessage = async (replyingMessage: IMessage, message = '') => { + const { user, roomType, replyWithMention } = this.props; + const permalink = await this.getPermalink(replyingMessage); + let msg = `[ ](${permalink}) `; + + // if original message wasn't sent by current user and neither from a direct room + if (user.username !== replyingMessage?.u?.username && roomType !== 'd' && replyWithMention) { + msg += `@${replyingMessage?.u?.username} `; + } + + return `${msg} ${message}`; + }; + updateMentions = (keyword: any, type: string) => { if (type === MENTIONS_TRACKING_TYPE_USERS) { this.getUsers(keyword); diff --git a/app/definitions/IMessage.ts b/app/definitions/IMessage.ts index 810de1785..88dd7a88d 100644 --- a/app/definitions/IMessage.ts +++ b/app/definitions/IMessage.ts @@ -8,7 +8,15 @@ import { TThreadMessageModel } from './IThreadMessage'; import { TThreadModel } from './IThread'; import { IUrl, IUrlFromServer } from './IUrl'; -export type MessageType = 'jitsi_call_started' | 'discussion-created' | 'e2e' | 'load_more' | 'rm' | 'uj' | MessageTypeLoad | MessageTypesValues; +export type MessageType = + | 'jitsi_call_started' + | 'discussion-created' + | 'e2e' + | 'load_more' + | 'rm' + | 'uj' + | MessageTypeLoad + | MessageTypesValues; export interface IUserMessage { _id: string; diff --git a/app/definitions/IUpload.ts b/app/definitions/IUpload.ts index 52d3c1995..a2935575b 100644 --- a/app/definitions/IUpload.ts +++ b/app/definitions/IUpload.ts @@ -13,6 +13,7 @@ export interface IUpload { progress?: number; error?: boolean; subscription?: { id: string }; + msg?: string; } export type TUploadModel = IUpload & Model; diff --git a/app/lib/methods/sendFileMessage.ts b/app/lib/methods/sendFileMessage.ts index 08033cb60..8886f6064 100644 --- a/app/lib/methods/sendFileMessage.ts +++ b/app/lib/methods/sendFileMessage.ts @@ -100,6 +100,13 @@ export function sendFileMessage( }); } + if (fileInfo.msg) { + formData.push({ + name: 'msg', + data: fileInfo.msg + }); + } + if (tmid) { formData.push({ name: 'tmid', diff --git a/app/stacks/types.ts b/app/stacks/types.ts index cb00e8f1e..4ba63e1ec 100644 --- a/app/stacks/types.ts +++ b/app/stacks/types.ts @@ -272,6 +272,9 @@ export type InsideStackParamList = { text: string; room: TSubscriptionModel; thread: TThreadModel; + replying?: boolean; + replyingMessage?: IMessage; + closeReply?: Function; }; ModalBlockView: { data: any; // TODO: Change; diff --git a/app/views/RoomView/index.tsx b/app/views/RoomView/index.tsx index 96f556674..107491306 100644 --- a/app/views/RoomView/index.tsx +++ b/app/views/RoomView/index.tsx @@ -174,18 +174,18 @@ interface IRoomViewState { [key: string]: any; joined: boolean; room: - | TSubscriptionModel - | { - rid: string; - t: string; - name?: string; - fname?: string; - prid?: string; - joinCodeRequired?: boolean; - status?: string; - lastMessage?: ILastMessage; - sysMes?: boolean; - onHold?: boolean; + | TSubscriptionModel + | { + rid: string; + t: string; + name?: string; + fname?: string; + prid?: string; + joinCodeRequired?: boolean; + status?: string; + lastMessage?: ILastMessage; + sysMes?: boolean; + onHold?: boolean; }; roomUpdate: { [K in TRoomUpdate]?: any; @@ -1502,7 +1502,7 @@ class RoomView extends React.Component { return ( <> (this.messageActions = ref)} + ref={ref => this.messageActions = ref} tmid={this.tmid} room={room} user={user} @@ -1512,7 +1512,7 @@ class RoomView extends React.Component { onReactionPress={this.onReactionPress} isReadOnly={readOnly} /> - (this.messageErrorActions = ref)} tmid={this.tmid} /> + this.messageErrorActions = ref} tmid={this.tmid} /> ); }; diff --git a/app/views/ShareView/index.tsx b/app/views/ShareView/index.tsx index b9379d35e..8a0dffcb6 100644 --- a/app/views/ShareView/index.tsx +++ b/app/views/ShareView/index.tsx @@ -22,7 +22,15 @@ import Thumbs from './Thumbs'; import Preview from './Preview'; import Header from './Header'; import styles from './styles'; -import { IApplicationState, IServer, IShareAttachment, IUser, TSubscriptionModel, TThreadModel } from '../../definitions'; +import { + IApplicationState, + IMessage, + IServer, + IShareAttachment, + IUser, + TSubscriptionModel, + TThreadModel +} from '../../definitions'; import { sendFileMessage, sendMessage } from '../../lib/methods'; import { hasPermission, isAndroid, canUploadFile, isReadOnly, isBlocked } from '../../lib/methods/helpers'; @@ -50,11 +58,14 @@ interface IShareViewProps { server: string; FileUpload_MediaTypeWhiteList?: string; FileUpload_MaxFileSize?: number; + replying?: boolean; + replyingMessage?: IMessage; } interface IMessageBoxShareView { text: string; forceUpdate(): void; + formatReplyMessage: (replyingMessage: IMessage, message?: any) => Promise; } class ShareView extends Component { @@ -62,6 +73,9 @@ class ShareView extends Component { private files: any[]; private isShareExtension: boolean; private serverInfo: IServer; + private replying?: boolean; + private replyingMessage?: IMessage; + private closeReply?: Function; constructor(props: IShareViewProps) { super(props); @@ -69,6 +83,9 @@ class ShareView extends Component { this.files = props.route.params?.attachments ?? []; this.isShareExtension = props.route.params?.isShareExtension; this.serverInfo = props.route.params?.serverInfo ?? {}; + this.replying = props.route.params?.replying; + this.replyingMessage = props.route.params?.replyingMessage; + this.closeReply = props.route.params?.closeReply; this.state = { selected: {} as IShareAttachment, @@ -92,6 +109,12 @@ class ShareView extends Component { componentWillUnmount = () => { console.countReset(`${this.constructor.name}.render calls`); + // close reply from the RoomView + setTimeout(() => { + if (this.closeReply) { + this.closeReply(); + } + }, 300); }; setHeader = () => { @@ -214,6 +237,11 @@ class ShareView extends Component { navigation.pop(); } + let msg: string | undefined; + if (this.replying && this.replyingMessage) { + msg = await this.messagebox.current?.formatReplyMessage(this.replyingMessage); + } + try { // Send attachment if (attachments.length) { @@ -228,7 +256,8 @@ class ShareView extends Component { size, type, path, - store: 'Uploads' + store: 'Uploads', + msg }, thread?.id, server, @@ -313,11 +342,12 @@ class ShareView extends Component { roomType={room.t} theme={theme} onSubmit={this.send} - message={{ msg: selected?.description ?? '' }} + message={this.replyingMessage} navigation={navigation} isFocused={navigation.isFocused} iOSScrollBehavior={NativeModules.KeyboardTrackingViewManager?.KeyboardTrackingScrollBehaviorNone} isActionsEnabled={false} + replying={this.replying} > Date: Fri, 6 Jan 2023 12:36:23 -0300 Subject: [PATCH 13/29] [FIX] Opening search field after server list does not hide server list (#4792) * [FIX] Opening search field after server list does not hide server list * minor tweak --- app/views/RoomsListView/index.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/views/RoomsListView/index.tsx b/app/views/RoomsListView/index.tsx index 3ff5ff6a6..ce1ac8004 100644 --- a/app/views/RoomsListView/index.tsx +++ b/app/views/RoomsListView/index.tsx @@ -593,8 +593,11 @@ class RoomsListView extends React.Component { logEvent(events.RL_SEARCH); - const { dispatch } = this.props; + const { dispatch, showServerDropdown } = this.props; this.internalSetState({ searching: true }, () => { + if (showServerDropdown) { + dispatch(closeServerDropdown()); + } dispatch(openSearchHeader()); this.handleSearch(''); this.setHeader(); From d208373b3a21ed7971923dfd3b50193af4017da7 Mon Sep 17 00:00:00 2001 From: Gleidson Daniel Silva Date: Mon, 9 Jan 2023 10:29:58 -0300 Subject: [PATCH 14/29] Regression: Prevent screen from sleeping on Jitsi on Android (#4791) --- app/views/JitsiMeetView.android.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/views/JitsiMeetView.android.tsx b/app/views/JitsiMeetView.android.tsx index 344a656af..ce54691c1 100644 --- a/app/views/JitsiMeetView.android.tsx +++ b/app/views/JitsiMeetView.android.tsx @@ -4,6 +4,7 @@ import BackgroundTimer from 'react-native-background-timer'; import { isAppInstalled, openAppWithUri } from 'react-native-send-intent'; import WebView from 'react-native-webview'; import { WebViewMessage, WebViewNavigation } from 'react-native-webview/lib/WebViewTypes'; +import { activateKeepAwake, deactivateKeepAwake } from 'expo-keep-awake'; import { IBaseScreen } from '../definitions'; import { events, logEvent } from '../lib/methods/helpers/log'; @@ -44,6 +45,7 @@ class JitsiMeetView extends React.Component { .catch(() => {}); this.onConferenceJoined(); this.backHandler = BackHandler.addEventListener('hardwareBackPress', () => true); + activateKeepAwake(); } componentWillUnmount() { @@ -54,6 +56,7 @@ class JitsiMeetView extends React.Component { BackgroundTimer.stopBackgroundTimer(); } this.backHandler.remove(); + deactivateKeepAwake(); } // Jitsi Update Timeout needs to be called every 10 seconds to make sure From 9525ef25d8e425f91861eea90a1cbecc716f8ec7 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Mon, 9 Jan 2023 15:32:16 -0300 Subject: [PATCH 15/29] [FIX] Modal freezing app after return from the background (#4795) --- app/views/RoomView/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/RoomView/index.tsx b/app/views/RoomView/index.tsx index 107491306..ca8e7980d 100644 --- a/app/views/RoomView/index.tsx +++ b/app/views/RoomView/index.tsx @@ -388,7 +388,7 @@ class RoomView extends React.Component { if (appState === 'foreground' && appState !== prevProps.appState && this.rid) { // Fire List.query() just to keep observables working - if (this.list && this.list.current) { + if (this.list && this.list.current && !isIOS) { this.list.current?.query(); } } From 3a1b06b86c191d355da30bf4dc44612b26e8fe14 Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Tue, 10 Jan 2023 20:17:14 -0300 Subject: [PATCH 16/29] [FIX] Not Login with SSO after upgrade to version 5.4.0 and 5.4.1 (#4783) * [FIX] Not Login with SSO after upgrade to version 5.4.0 and 5.4.1 * minor tweak --- app/views/AuthenticationWebView.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/AuthenticationWebView.tsx b/app/views/AuthenticationWebView.tsx index 5b0d7f3f2..340f291a6 100644 --- a/app/views/AuthenticationWebView.tsx +++ b/app/views/AuthenticationWebView.tsx @@ -16,8 +16,8 @@ import { Services } from '../lib/services'; import { IApplicationState, ICredentials } from '../definitions'; const userAgent = isIOS - ? 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1' - : 'Mozilla/5.0 (Linux; Android 6.0.1; SM-G920V Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36'; + ? 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Mobile/15E148 Safari/604.1' + : 'Mozilla/5.0 (Linux; Android 12; SM-A315G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Mobile Safari/537.36'; // iframe uses a postMessage to send the token to the client // We'll handle this sending the token to the hash of the window.location From a1580811ed20b9f806aa6066a27ea70f3e80cb42 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Thu, 12 Jan 2023 10:32:33 -0300 Subject: [PATCH 17/29] [IMPROVE] E2EE improvements (#4763) --- app/definitions/ISubscription.ts | 2 ++ app/definitions/rest/v1/e2e.ts | 6 ++++ app/lib/database/model/Subscription.js | 2 ++ app/lib/database/model/migrations.js | 9 ++++++ app/lib/database/schema/app.js | 3 +- app/lib/encryption/encryption.ts | 18 ++++++++++++ app/lib/encryption/room.ts | 40 ++++++++++++++++++-------- app/lib/methods/subscriptions/rooms.ts | 5 ++++ app/lib/services/restApi.ts | 8 ++++++ app/sagas/encryption.js | 18 ++++++------ 10 files changed, 89 insertions(+), 22 deletions(-) diff --git a/app/definitions/ISubscription.ts b/app/definitions/ISubscription.ts index ee84c17be..904e13d02 100644 --- a/app/definitions/ISubscription.ts +++ b/app/definitions/ISubscription.ts @@ -91,6 +91,7 @@ export interface ISubscription { livechatData?: any; tags?: string[]; E2EKey?: string; + E2ESuggestedKey?: string; encrypted?: boolean; e2eKeyId?: string; avatarETag?: string; @@ -145,6 +146,7 @@ export interface IServerSubscription extends IRocketChatRecord { onHold?: boolean; encrypted?: boolean; E2EKey?: string; + E2ESuggestedKey?: string; unreadAlert?: 'default' | 'all' | 'mentions' | 'nothing'; fname?: unknown; diff --git a/app/definitions/rest/v1/e2e.ts b/app/definitions/rest/v1/e2e.ts index f23c0fac9..6c4ef7c8f 100644 --- a/app/definitions/rest/v1/e2e.ts +++ b/app/definitions/rest/v1/e2e.ts @@ -12,6 +12,12 @@ export type E2eEndpoints = { 'e2e.updateGroupKey': { POST: (params: { uid: string; rid: string; key: string }) => {}; }; + 'e2e.acceptSuggestedGroupKey': { + POST: (params: { rid: string }) => {}; + }; + 'e2e.rejectSuggestedGroupKey': { + POST: (params: { rid: string }) => {}; + }; 'e2e.setRoomKeyID': { POST: (params: { rid: string; keyID: string }) => {}; }; diff --git a/app/lib/database/model/Subscription.js b/app/lib/database/model/Subscription.js index 26fb764d7..bbc732119 100644 --- a/app/lib/database/model/Subscription.js +++ b/app/lib/database/model/Subscription.js @@ -123,6 +123,8 @@ export default class Subscription extends Model { @field('e2e_key') E2EKey; + @field('e2e_suggested_key') E2ESuggestedKey; + @field('encrypted') encrypted; @field('e2e_key_id') e2eKeyId; diff --git a/app/lib/database/model/migrations.js b/app/lib/database/model/migrations.js index 3a5374e56..678fb0e42 100644 --- a/app/lib/database/model/migrations.js +++ b/app/lib/database/model/migrations.js @@ -248,6 +248,15 @@ export default schemaMigrations({ columns: [{ name: 'tmid', type: 'string', isOptional: true }] }) ] + }, + { + toVersion: 20, + steps: [ + addColumns({ + table: 'subscriptions', + columns: [{ name: 'e2e_suggested_key', type: 'string', isOptional: true }] + }) + ] } ] }); diff --git a/app/lib/database/schema/app.js b/app/lib/database/schema/app.js index f354b34eb..754c19afa 100644 --- a/app/lib/database/schema/app.js +++ b/app/lib/database/schema/app.js @@ -1,7 +1,7 @@ import { appSchema, tableSchema } from '@nozbe/watermelondb'; export default appSchema({ - version: 19, + version: 20, tables: [ tableSchema({ name: 'subscriptions', @@ -55,6 +55,7 @@ export default appSchema({ { name: 'livechat_data', type: 'string', isOptional: true }, { name: 'tags', type: 'string', isOptional: true }, { name: 'e2e_key', type: 'string', isOptional: true }, + { name: 'e2e_suggested_key', type: 'string', isOptional: true }, { name: 'encrypted', type: 'boolean', isOptional: true }, { name: 'e2e_key_id', type: 'string', isOptional: true }, { name: 'avatar_etag', type: 'string', isOptional: true }, diff --git a/app/lib/encryption/encryption.ts b/app/lib/encryption/encryption.ts index 18e026e32..d24df42cd 100644 --- a/app/lib/encryption/encryption.ts +++ b/app/lib/encryption/encryption.ts @@ -34,6 +34,7 @@ class Encryption { handshake: Function; decrypt: Function; encrypt: Function; + importRoomKey: Function; }; }; @@ -97,6 +98,10 @@ class Encryption { }); }; + stopRoom = (rid: string) => { + delete this.roomInstances[rid]; + }; + // When a new participant join and request a new room encryption key provideRoomKeyToUser = async (keyId: string, rid: string) => { // If the client is not ready @@ -220,6 +225,19 @@ class Encryption { return roomE2E; }; + evaluateSuggestedKey = async (rid: string, E2ESuggestedKey: string) => { + try { + if (this.privateKey) { + const roomE2E = await this.getRoomInstance(rid); + await roomE2E.importRoomKey(E2ESuggestedKey, this.privateKey); + delete this.roomInstances[rid]; + await Services.e2eAcceptSuggestedGroupKey(rid); + } + } catch (e) { + await Services.e2eRejectSuggestedGroupKey(rid); + } + }; + // Logic to decrypt all pending messages/threads/threadMessages // after initialize the encryption client decryptPendingMessages = async (roomId?: string) => { diff --git a/app/lib/encryption/room.ts b/app/lib/encryption/room.ts index da1fe8b4c..acaf71194 100644 --- a/app/lib/encryption/room.ts +++ b/app/lib/encryption/room.ts @@ -74,7 +74,10 @@ export default class EncryptionRoom { if (E2EKey && Encryption.privateKey) { // We're establishing a new room encryption client this.establishing = true; - await this.importRoomKey(E2EKey, Encryption.privateKey); + const { keyID, roomKey, sessionKeyExportedString } = await this.importRoomKey(E2EKey, Encryption.privateKey); + this.keyID = keyID; + this.roomKey = roomKey; + this.sessionKeyExportedString = sessionKeyExportedString; this.readyPromise.resolve(); return; } @@ -96,20 +99,33 @@ export default class EncryptionRoom { }; // Import roomKey as an AES Decrypt key - importRoomKey = async (E2EKey: string, privateKey: string) => { - const roomE2EKey = E2EKey.slice(12); + importRoomKey = async ( + E2EKey: string, + privateKey: string + ): Promise<{ sessionKeyExportedString: string | ByteBuffer; roomKey: ArrayBuffer; keyID: string }> => { + try { + const roomE2EKey = E2EKey.slice(12); - const decryptedKey = await SimpleCrypto.RSA.decrypt(roomE2EKey, privateKey); - this.sessionKeyExportedString = toString(decryptedKey); + const decryptedKey = await SimpleCrypto.RSA.decrypt(roomE2EKey, privateKey); + const sessionKeyExportedString = toString(decryptedKey); - this.keyID = Base64.encode(this.sessionKeyExportedString as string).slice(0, 12); + const keyID = Base64.encode(sessionKeyExportedString as string).slice(0, 12); - // Extract K from Web Crypto Secret Key - // K is a base64URL encoded array of bytes - // Web Crypto API uses this as a private key to decrypt/encrypt things - // Reference: https://www.javadoc.io/doc/com.nimbusds/nimbus-jose-jwt/5.1/com/nimbusds/jose/jwk/OctetSequenceKey.html - const { k } = EJSON.parse(this.sessionKeyExportedString as string); - this.roomKey = b64ToBuffer(k); + // Extract K from Web Crypto Secret Key + // K is a base64URL encoded array of bytes + // Web Crypto API uses this as a private key to decrypt/encrypt things + // Reference: https://www.javadoc.io/doc/com.nimbusds/nimbus-jose-jwt/5.1/com/nimbusds/jose/jwk/OctetSequenceKey.html + const { k } = EJSON.parse(sessionKeyExportedString as string); + const roomKey = b64ToBuffer(k); + + return { + sessionKeyExportedString, + roomKey, + keyID + }; + } catch (e: any) { + throw new Error(e); + } }; // Create a key to a room diff --git a/app/lib/methods/subscriptions/rooms.ts b/app/lib/methods/subscriptions/rooms.ts index 5bbeffe3d..443b681f4 100644 --- a/app/lib/methods/subscriptions/rooms.ts +++ b/app/lib/methods/subscriptions/rooms.ts @@ -102,6 +102,7 @@ const createOrUpdateSubscription = async (subscription: ISubscription, room: ISe encrypted: s.encrypted, e2eKeyId: s.e2eKeyId, E2EKey: s.E2EKey, + E2ESuggestedKey: s.E2ESuggestedKey, avatarETag: s.avatarETag, onHold: s.onHold, hideMentionStatus: s.hideMentionStatus @@ -165,6 +166,8 @@ const createOrUpdateSubscription = async (subscription: ISubscription, room: ISe tmp = (await Encryption.decryptSubscription(tmp)) as ISubscription; // Decrypt all pending messages of this room in parallel Encryption.decryptPendingMessages(tmp.rid); + } else if (sub && subscription.E2ESuggestedKey) { + await Encryption.evaluateSuggestedKey(sub.rid, subscription.E2ESuggestedKey); } const batch: Model[] = []; @@ -320,6 +323,8 @@ export default function subscribeRooms() { await db.batch(sub.prepareDestroyPermanently(), ...messagesToDelete, ...threadsToDelete, ...threadMessagesToDelete); }); + Encryption.stopRoom(data.rid); + const roomState = store.getState().room; // Delete and remove events come from this stream // Here we identify which one was triggered diff --git a/app/lib/services/restApi.ts b/app/lib/services/restApi.ts index 5fa3b1555..75f256fbb 100644 --- a/app/lib/services/restApi.ts +++ b/app/lib/services/restApi.ts @@ -74,6 +74,14 @@ export const e2eRequestRoomKey = (rid: string, e2eKeyId: string): Promise<{ mess // RC 0.70.0 sdk.methodCallWrapper('stream-notify-room-users', `${rid}/e2ekeyRequest`, rid, e2eKeyId); +export const e2eAcceptSuggestedGroupKey = (rid: string): Promise<{ success: boolean }> => + // RC 5.5 + sdk.post('e2e.acceptSuggestedGroupKey', { rid }); + +export const e2eRejectSuggestedGroupKey = (rid: string): Promise<{ success: boolean }> => + // RC 5.5 + sdk.post('e2e.rejectSuggestedGroupKey', { rid }); + export const updateJitsiTimeout = (roomId: string) => // RC 0.74.0 sdk.post('video-conference/jitsi.update-timeout', { roomId }); diff --git a/app/sagas/encryption.js b/app/sagas/encryption.js index fb94930f0..9f1482f16 100644 --- a/app/sagas/encryption.js +++ b/app/sagas/encryption.js @@ -51,13 +51,6 @@ const handleEncryptionInit = function* handleEncryptionInit() { return; } - // If the user has a private key stored, but never entered the password - const storedRandomPassword = UserPreferences.getString(`${server}-${E2E_RANDOM_PASSWORD_KEY}`); - - if (storedRandomPassword) { - yield put(encryptionSet(true, E2E_BANNER_TYPE.SAVE_PASSWORD)); - } - // Fetch stored public e2e key for this server let storedPublicKey = UserPreferences.getString(`${server}-${E2E_PUBLIC_KEY}`); @@ -66,14 +59,21 @@ const handleEncryptionInit = function* handleEncryptionInit() { storedPublicKey = EJSON.parse(storedPublicKey); } - if (storedPublicKey && storedPrivateKey && !storedRandomPassword) { + if (storedPublicKey && storedPrivateKey) { // Persist these keys yield Encryption.persistKeys(server, storedPublicKey, storedPrivateKey); - yield put(encryptionSet(true)); } else { // Create new keys since the user doesn't have any yield Encryption.createKeys(user.id, server); + } + + // If the user has a private key stored, but never entered the password + const storedRandomPassword = UserPreferences.getString(`${server}-${E2E_RANDOM_PASSWORD_KEY}`); + + if (storedRandomPassword) { yield put(encryptionSet(true, E2E_BANNER_TYPE.SAVE_PASSWORD)); + } else { + yield put(encryptionSet(true)); } // Decrypt all pending messages/subscriptions From 5387d31a68de04d46a7da64379db9b8c93744ffc Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Fri, 13 Jan 2023 16:32:52 -0300 Subject: [PATCH 18/29] [FIX] Messages not loading on some edge cases (#4801) --- app/actions/actionsTypes.ts | 4 +- app/actions/room.ts | 37 +++++++- app/containers/message/index.tsx | 3 +- app/definitions/index.ts | 1 + .../methods}/getMoreMessages.ts | 9 +- app/lib/methods/index.ts | 1 + app/lib/methods/loadNextMessages.ts | 2 - app/lib/methods/loadSurroundingMessages.ts | 5 -- app/reducers/room.test.ts | 23 ++++- app/reducers/room.ts | 14 ++- app/sagas/room.js | 23 ++++- app/sagas/rooms.js | 2 +- .../RoomView/LoadMore/LoadMore.stories.tsx | 20 ++--- app/views/RoomView/LoadMore/index.tsx | 90 +++++++++---------- app/views/RoomView/index.tsx | 51 +++++------ app/views/RoomView/services/getMessages.ts | 33 ++++--- app/views/RoomView/services/index.ts | 2 - 17 files changed, 198 insertions(+), 122 deletions(-) rename app/{views/RoomView/services => lib/methods}/getMoreMessages.ts (70%) diff --git a/app/actions/actionsTypes.ts b/app/actions/actionsTypes.ts index f33c9ec7f..01c707453 100644 --- a/app/actions/actionsTypes.ts +++ b/app/actions/actionsTypes.ts @@ -28,7 +28,9 @@ export const ROOM = createRequestTypes('ROOM', [ 'DELETE', 'REMOVED', 'FORWARD', - 'USER_TYPING' + 'USER_TYPING', + 'HISTORY_REQUEST', + 'HISTORY_FINISHED' ]); export const INQUIRY = createRequestTypes('INQUIRY', [ ...defaultTypes, diff --git a/app/actions/room.ts b/app/actions/room.ts index 168110199..901aeba47 100644 --- a/app/actions/room.ts +++ b/app/actions/room.ts @@ -1,6 +1,6 @@ import { Action } from 'redux'; -import { ERoomType } from '../definitions/ERoomType'; +import { ERoomType, RoomType } from '../definitions'; import { ROOM } from './actionsTypes'; // TYPE RETURN RELATED @@ -44,7 +44,24 @@ interface IUserTyping extends Action { status: boolean; } -export type TActionsRoom = TSubscribeRoom & TUnsubscribeRoom & ILeaveRoom & IDeleteRoom & IForwardRoom & IUserTyping; +export interface IRoomHistoryRequest extends Action { + rid: string; + t: RoomType; + loaderId: string; +} + +export interface IRoomHistoryFinished extends Action { + loaderId: string; +} + +export type TActionsRoom = TSubscribeRoom & + TUnsubscribeRoom & + ILeaveRoom & + IDeleteRoom & + IForwardRoom & + IUserTyping & + IRoomHistoryRequest & + IRoomHistoryFinished; export function subscribeRoom(rid: string): TSubscribeRoom { return { @@ -99,3 +116,19 @@ export function userTyping(rid: string, status = true): IUserTyping { status }; } + +export function roomHistoryRequest({ rid, t, loaderId }: { rid: string; t: RoomType; loaderId: string }): IRoomHistoryRequest { + return { + type: ROOM.HISTORY_REQUEST, + rid, + t, + loaderId + }; +} + +export function roomHistoryFinished({ loaderId }: { loaderId: string }): IRoomHistoryFinished { + return { + type: ROOM.HISTORY_FINISHED, + loaderId + }; +} diff --git a/app/containers/message/index.tsx b/app/containers/message/index.tsx index 246284536..8595d5d0a 100644 --- a/app/containers/message/index.tsx +++ b/app/containers/message/index.tsx @@ -407,7 +407,8 @@ class MessageContainer extends React.Component + }} + > {/* @ts-ignore*/} , S extends string> { navigation: StackNavigationProp; diff --git a/app/views/RoomView/services/getMoreMessages.ts b/app/lib/methods/getMoreMessages.ts similarity index 70% rename from app/views/RoomView/services/getMoreMessages.ts rename to app/lib/methods/getMoreMessages.ts index 6e4d007a4..c82fd74a9 100644 --- a/app/views/RoomView/services/getMoreMessages.ts +++ b/app/lib/methods/getMoreMessages.ts @@ -1,16 +1,14 @@ -import { SubscriptionType, TAnyMessageModel } from '../../../definitions'; -import { loadNextMessages, loadMessagesForRoom } from '../../../lib/methods'; -import { MessageTypeLoad } from '../../../lib/constants'; +import { SubscriptionType, TAnyMessageModel } from '../../definitions'; +import { loadNextMessages, loadMessagesForRoom } from '.'; +import { MessageTypeLoad } from '../constants'; const getMoreMessages = ({ rid, t, - tmid, loaderItem }: { rid: string; t: SubscriptionType; - tmid?: string; loaderItem: TAnyMessageModel; }): Promise => { if ([MessageTypeLoad.MORE, MessageTypeLoad.PREVIOUS_CHUNK].includes(loaderItem.t as MessageTypeLoad)) { @@ -25,7 +23,6 @@ const getMoreMessages = ({ if (loaderItem.t === MessageTypeLoad.NEXT_CHUNK) { return loadNextMessages({ rid, - tmid, ts: loaderItem.ts as Date, loaderItem }); diff --git a/app/lib/methods/index.ts b/app/lib/methods/index.ts index e8b0229b1..602d78f16 100644 --- a/app/lib/methods/index.ts +++ b/app/lib/methods/index.ts @@ -16,6 +16,7 @@ export * from './getSingleMessage'; export * from './getSlashCommands'; export * from './getThreadName'; export * from './getUsersPresence'; +export * from './getMoreMessages'; export * from './loadMessagesForRoom'; export * from './loadMissedMessages'; export * from './loadNextMessages'; diff --git a/app/lib/methods/loadNextMessages.ts b/app/lib/methods/loadNextMessages.ts index 5a650c732..c221e9577 100644 --- a/app/lib/methods/loadNextMessages.ts +++ b/app/lib/methods/loadNextMessages.ts @@ -15,7 +15,6 @@ const COUNT = 50; interface ILoadNextMessages { rid: string; ts: Date; - tmid?: string; loaderItem: TMessageModel; } @@ -32,7 +31,6 @@ export function loadNextMessages(args: ILoadNextMessages): Promise { const loadMoreItem = { _id: generateLoadMoreId(lastMessage._id), rid: lastMessage.rid, - tmid: args.tmid, ts: moment(lastMessage.ts).add(1, 'millisecond'), t: MessageTypeLoad.NEXT_CHUNK }; diff --git a/app/lib/methods/loadSurroundingMessages.ts b/app/lib/methods/loadSurroundingMessages.ts index a1017b219..a3c31be89 100644 --- a/app/lib/methods/loadSurroundingMessages.ts +++ b/app/lib/methods/loadSurroundingMessages.ts @@ -19,9 +19,6 @@ export function loadSurroundingMessages({ messageId, rid }: { messageId: string; let messages: IMessage[] = EJSON.fromJSONValue(data?.messages); messages = orderBy(messages, 'ts'); - const message = messages.find(m => m._id === messageId); - const tmid = message?.tmid; - if (messages?.length) { if (data?.moreBefore) { const firstMessage = messages[0]; @@ -30,7 +27,6 @@ export function loadSurroundingMessages({ messageId, rid }: { messageId: string; const loadMoreItem = { _id: generateLoadMoreId(firstMessage._id), rid: firstMessage.rid, - tmid, ts: moment(firstMessage.ts).subtract(1, 'millisecond').toDate(), t: MessageTypeLoad.PREVIOUS_CHUNK, msg: firstMessage.msg @@ -46,7 +42,6 @@ export function loadSurroundingMessages({ messageId, rid }: { messageId: string; const loadMoreItem = { _id: generateLoadMoreId(lastMessage._id), rid: lastMessage.rid, - tmid, ts: moment(lastMessage.ts).add(1, 'millisecond').toDate(), t: MessageTypeLoad.NEXT_CHUNK, msg: lastMessage.msg diff --git a/app/reducers/room.test.ts b/app/reducers/room.test.ts index 683bf2881..8d9620e25 100644 --- a/app/reducers/room.test.ts +++ b/app/reducers/room.test.ts @@ -1,4 +1,13 @@ -import { deleteRoom, forwardRoom, leaveRoom, removedRoom, subscribeRoom, unsubscribeRoom } from '../actions/room'; +import { + deleteRoom, + forwardRoom, + leaveRoom, + removedRoom, + roomHistoryFinished, + roomHistoryRequest, + subscribeRoom, + unsubscribeRoom +} from '../actions/room'; import { ERoomType } from '../definitions/ERoomType'; import { mockedStore } from './mockedStore'; import { initialState } from './room'; @@ -48,4 +57,16 @@ describe('test room reducer', () => { const { isDeleting } = mockedStore.getState().room; expect(isDeleting).toEqual(false); }); + + it('should return historyLoaders with one item after call historyRequest', () => { + mockedStore.dispatch(roomHistoryRequest({ rid: 'GENERAL', t: 'c', loaderId: 'loader' })); + const { historyLoaders } = mockedStore.getState().room; + expect(historyLoaders).toEqual(['loader']); + }); + + it('should return historyLoaders with empty array after call historyFinished', () => { + mockedStore.dispatch(roomHistoryFinished({ loaderId: 'loader' })); + const { historyLoaders } = mockedStore.getState().room; + expect(historyLoaders).toEqual([]); + }); }); diff --git a/app/reducers/room.ts b/app/reducers/room.ts index 3462247d3..c988d8683 100644 --- a/app/reducers/room.ts +++ b/app/reducers/room.ts @@ -7,12 +7,14 @@ export interface IRoom { rid: string; isDeleting: boolean; subscribedRoom: string; + historyLoaders: string[]; } export const initialState: IRoom = { rid: '', isDeleting: false, - subscribedRoom: '' + subscribedRoom: '', + historyLoaders: [] }; export default function (state = initialState, action: TActionsRoom): IRoom { @@ -56,6 +58,16 @@ export default function (state = initialState, action: TActionsRoom): IRoom { ...state, isDeleting: false }; + case ROOM.HISTORY_REQUEST: + return { + ...state, + historyLoaders: [...state.historyLoaders, action.loaderId] + }; + case ROOM.HISTORY_FINISHED: + return { + ...state, + historyLoaders: state.historyLoaders.filter(loaderId => loaderId !== action.loaderId) + }; default: return state; } diff --git a/app/sagas/room.js b/app/sagas/room.js index 6f358ead8..89c0e7677 100644 --- a/app/sagas/room.js +++ b/app/sagas/room.js @@ -1,5 +1,5 @@ import { Alert } from 'react-native'; -import { delay, put, race, select, take, takeLatest } from 'redux-saga/effects'; +import { delay, put, race, select, take, takeLatest, actionChannel } from 'redux-saga/effects'; import EventEmitter from '../lib/methods/helpers/events'; import Navigation from '../lib/navigation/appNavigation'; @@ -10,6 +10,26 @@ import I18n from '../i18n'; import { showErrorAlert } from '../lib/methods/helpers/info'; import { LISTENER } from '../containers/Toast'; import { Services } from '../lib/services'; +import getMoreMessages from '../lib/methods/getMoreMessages'; +import { getMessageById } from '../lib/database/services/Message'; + +function* watchHistoryRequests() { + const requestChan = yield actionChannel(types.ROOM.HISTORY_REQUEST); + while (true) { + const { rid, t, tmid, loaderId } = yield take(requestChan); + + const loaderItem = yield getMessageById(loaderId); + if (loaderItem) { + try { + yield getMoreMessages({ rid, t, tmid, loaderItem }); + } catch (e) { + log(e); + } finally { + yield put({ type: types.ROOM.HISTORY_FINISHED, loaderId }); + } + } + } +} const watchUserTyping = function* watchUserTyping({ rid, status }) { const auth = yield select(state => state.login.isAuthenticated); @@ -132,5 +152,6 @@ const root = function* root() { yield takeLatest(types.ROOM.LEAVE, handleLeaveRoom); yield takeLatest(types.ROOM.DELETE, handleDeleteRoom); yield takeLatest(types.ROOM.FORWARD, handleForwardRoom); + yield watchHistoryRequests(); }; export default root; diff --git a/app/sagas/rooms.js b/app/sagas/rooms.js index 6f2bc73da..66e601e48 100644 --- a/app/sagas/rooms.js +++ b/app/sagas/rooms.js @@ -66,7 +66,7 @@ const handleRoomsRequest = function* handleRoomsRequest({ params }) { */ .filter(sub => subscribedRoom !== sub.rid) .map(sub => sub.lastMessage && buildMessage(sub.lastMessage)) - .filter(lm => lm); + .filter(lm => lm && lm._id && lm.rid); const lastMessagesIds = lastMessages.map(lm => lm._id).filter(lm => lm); const existingMessages = yield messagesCollection.query(Q.where('id', Q.oneOf(lastMessagesIds))).fetch(); const messagesToUpdate = existingMessages.filter(i1 => lastMessages.find(i2 => i1.id === i2._id)); diff --git a/app/views/RoomView/LoadMore/LoadMore.stories.tsx b/app/views/RoomView/LoadMore/LoadMore.stories.tsx index affbad3ad..c95475823 100644 --- a/app/views/RoomView/LoadMore/LoadMore.stories.tsx +++ b/app/views/RoomView/LoadMore/LoadMore.stories.tsx @@ -11,28 +11,28 @@ export default { title: 'RoomView/LoadMore' }; -const load = () => new Promise(res => setTimeout(res, 1000)); - -const LoadMore = ({ ...props }) => ; +const LoadMore = ({ ...props }) => ( + +); export const Basic = () => ( <> - - - - + + + + ); const ThemeStory = ({ theme }: { theme: TSupportedThemes }) => ( - + - - + + diff --git a/app/views/RoomView/LoadMore/index.tsx b/app/views/RoomView/LoadMore/index.tsx index d08d82460..78689923e 100644 --- a/app/views/RoomView/LoadMore/index.tsx +++ b/app/views/RoomView/LoadMore/index.tsx @@ -1,12 +1,15 @@ -import React, { useCallback, useEffect, useState } from 'react'; +import React, { useEffect } from 'react'; import { ActivityIndicator, StyleSheet, Text } from 'react-native'; +import { useDispatch } from 'react-redux'; -import { MessageTypeLoad, themes } from '../../../lib/constants'; -import { MessageType } from '../../../definitions'; +import { MessageTypeLoad } from '../../../lib/constants'; +import { MessageType, RoomType } from '../../../definitions'; import { useTheme } from '../../../theme'; import Touch from '../../../containers/Touch'; import sharedStyles from '../../Styles'; import I18n from '../../../i18n'; +import { roomHistoryRequest } from '../../../actions/room'; +import { useAppSelector } from '../../../lib/hooks'; const styles = StyleSheet.create({ button: { @@ -20,53 +23,50 @@ const styles = StyleSheet.create({ } }); -const LoadMore = ({ - load, - type, - runOnRender -}: { - load: Function; - type: MessageType; - runOnRender: boolean; -}): React.ReactElement => { - const { theme } = useTheme(); - const [loading, setLoading] = useState(false); +const LoadMore = React.memo( + ({ + rid, + t, + loaderId, + type, + runOnRender + }: { + rid: string; + t: RoomType; + loaderId: string; + type: MessageType; + runOnRender: boolean; + }): React.ReactElement => { + const { colors } = useTheme(); + const dispatch = useDispatch(); + const loading = useAppSelector(state => state.room.historyLoaders.some(historyLoader => historyLoader === loaderId)); - const handleLoad = useCallback(async () => { - try { - if (loading) { - return; + const handleLoad = () => dispatch(roomHistoryRequest({ rid, t, loaderId })); + + useEffect(() => { + if (runOnRender) { + handleLoad(); } - setLoading(true); - await load(); - } finally { - setLoading(false); + }, []); + + let text = 'Load_More'; + if (type === MessageTypeLoad.NEXT_CHUNK) { + text = 'Load_Newer'; } - }, [loading]); - - useEffect(() => { - if (runOnRender) { - handleLoad(); + if (type === MessageTypeLoad.PREVIOUS_CHUNK) { + text = 'Load_Older'; } - }, []); - let text = 'Load_More'; - if (type === MessageTypeLoad.NEXT_CHUNK) { - text = 'Load_Newer'; + return ( + + {loading ? ( + + ) : ( + {I18n.t(text)} + )} + + ); } - if (type === MessageTypeLoad.PREVIOUS_CHUNK) { - text = 'Load_Older'; - } - - return ( - - {loading ? ( - - ) : ( - {I18n.t(text)} - )} - - ); -}; +); export default LoadMore; diff --git a/app/views/RoomView/index.tsx b/app/views/RoomView/index.tsx index ca8e7980d..92f247f23 100644 --- a/app/views/RoomView/index.tsx +++ b/app/views/RoomView/index.tsx @@ -75,7 +75,8 @@ import { TThreadModel, ICustomEmojis, IEmoji, - TGetCustomEmoji + TGetCustomEmoji, + RoomType } from '../../definitions'; import { E2E_MESSAGE_TYPE, E2E_STATUS, MESSAGE_TYPE_ANY_LOAD, MessageTypeLoad, themes } from '../../lib/constants'; import { TListRef } from './List/List'; @@ -174,18 +175,18 @@ interface IRoomViewState { [key: string]: any; joined: boolean; room: - | TSubscriptionModel - | { - rid: string; - t: string; - name?: string; - fname?: string; - prid?: string; - joinCodeRequired?: boolean; - status?: string; - lastMessage?: ILastMessage; - sysMes?: boolean; - onHold?: boolean; + | TSubscriptionModel + | { + rid: string; + t: string; + name?: string; + fname?: string; + prid?: string; + joinCodeRequired?: boolean; + status?: string; + lastMessage?: ILastMessage; + sysMes?: boolean; + onHold?: boolean; }; roomUpdate: { [K in TRoomUpdate]?: any; @@ -685,7 +686,11 @@ class RoomView extends React.Component { await loadThreadMessages({ tmid: this.tmid, rid: this.rid }); } else { const newLastOpen = new Date(); - await RoomServices.getMessages(room); + await RoomServices.getMessages({ + rid: room.rid, + lastOpen: 'lastOpen' in room ? room.lastOpen : undefined, + t: room.t as RoomType + }); // if room is joined if (joined && 'id' in room) { @@ -1301,16 +1306,6 @@ class RoomView extends React.Component { return false; }; - onLoadMoreMessages = (loaderItem: TAnyMessageModel) => { - const { room } = this.state; - return RoomServices.getMoreMessages({ - rid: room.rid, - tmid: this.tmid, - t: room.t as any, - loaderItem - }); - }; - goToCannedResponses = () => { const { room } = this.state; Navigation.navigate('CannedResponsesListView', { rid: room.rid }); @@ -1337,7 +1332,9 @@ class RoomView extends React.Component { if (item.t && MESSAGE_TYPE_ANY_LOAD.includes(item.t as MessageTypeLoad)) { content = ( this.onLoadMoreMessages(item)} + rid={room.rid} + t={room.t as RoomType} + loaderId={item.id} type={item.t} runOnRender={item.t === MessageTypeLoad.MORE && !previousItem} /> @@ -1502,7 +1499,7 @@ class RoomView extends React.Component { return ( <> this.messageActions = ref} + ref={ref => (this.messageActions = ref)} tmid={this.tmid} room={room} user={user} @@ -1512,7 +1509,7 @@ class RoomView extends React.Component { onReactionPress={this.onReactionPress} isReadOnly={readOnly} /> - this.messageErrorActions = ref} tmid={this.tmid} /> + (this.messageErrorActions = ref)} tmid={this.tmid} /> ); }; diff --git a/app/views/RoomView/services/getMessages.ts b/app/views/RoomView/services/getMessages.ts index 8bb298625..b05fadeff 100644 --- a/app/views/RoomView/services/getMessages.ts +++ b/app/views/RoomView/services/getMessages.ts @@ -1,23 +1,22 @@ -import { loadMessagesForRoom, loadMissedMessages } from '../../../lib/methods'; +import { loadMessagesForRoom, loadMissedMessages, RoomTypes } from '../../../lib/methods'; -// TODO: clarify latest vs lastOpen -const getMessages = ({ - rid, - t, - latest, - lastOpen, - loaderItem -}: { +interface IBaseParams { rid: string; - t?: string; - latest?: Date; - lastOpen?: Date; - loaderItem?: any; // TODO: type this -}): Promise => { - if (lastOpen) { - return loadMissedMessages({ rid, lastOpen }); +} + +interface ILoadMessagesForRoomParams extends IBaseParams { + t: RoomTypes; +} + +interface ILoadMissedMessagesParams extends IBaseParams { + lastOpen: Date; +} + +const getMessages = (params: ILoadMissedMessagesParams | ILoadMessagesForRoomParams): Promise => { + if ('lastOpen' in params) { + return loadMissedMessages(params); } - return loadMessagesForRoom({ rid, t: t as any, latest, loaderItem }); + return loadMessagesForRoom(params); }; export default getMessages; diff --git a/app/views/RoomView/services/index.ts b/app/views/RoomView/services/index.ts index 47565eabe..aeb43669f 100644 --- a/app/views/RoomView/services/index.ts +++ b/app/views/RoomView/services/index.ts @@ -1,9 +1,7 @@ import getMessages from './getMessages'; -import getMoreMessages from './getMoreMessages'; import getMessageInfo from './getMessageInfo'; export default { getMessages, - getMoreMessages, getMessageInfo }; From 41b54d6d8736e527b1f607ab9076019508dd1ea5 Mon Sep 17 00:00:00 2001 From: Gleidson Daniel Silva Date: Sat, 14 Jan 2023 07:07:25 -0300 Subject: [PATCH 19/29] [FIX] Audio names not being handled properly (#4685) --- app/lib/methods/audioFile.ts | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/lib/methods/audioFile.ts b/app/lib/methods/audioFile.ts index 31cd09f9e..2c0f7ab5d 100644 --- a/app/lib/methods/audioFile.ts +++ b/app/lib/methods/audioFile.ts @@ -4,12 +4,17 @@ import { sanitizeLikeString } from '../database/utils'; import { store } from '../store/auxStore'; import log from './helpers/log'; +const DEFAULT_EXTENSION = 'mp3'; + const sanitizeString = (value: string) => sanitizeLikeString(value.substring(value.lastIndexOf('/') + 1)); -const parseFilename = (value: string) => { - const extension = value.substring(value.lastIndexOf('.') + 1); - const filename = sanitizeString(value.substring(value.lastIndexOf('/') + 1).split('.')[0]); - return `${filename}.${extension}`; +const getExtension = (value: string) => { + let extension = DEFAULT_EXTENSION; + const filename = value.split('/').pop(); + if (filename?.includes('.')) { + extension = value.substring(value.lastIndexOf('.') + 1); + } + return extension; }; const ensureDirAsync = async (dir: string, intermediates = true): Promise => { @@ -27,7 +32,7 @@ export const downloadAudioFile = async (url: string, fileUrl: string, messageId: const serverUrl = store.getState().server.server; const serverUrlParsed = sanitizeString(serverUrl); const folderPath = `${FileSystem.documentDirectory}audios/${serverUrlParsed}`; - const filename = `${messageId}_${parseFilename(fileUrl)}`; + const filename = `${messageId}.${getExtension(fileUrl)}`; const filePath = `${folderPath}/${filename}`; await ensureDirAsync(folderPath); const file = await FileSystem.getInfoAsync(filePath); From fbb05fa0d3b9a903c1e724edc703e610c437439d Mon Sep 17 00:00:00 2001 From: Gleidson Daniel Silva Date: Mon, 16 Jan 2023 10:17:52 -0300 Subject: [PATCH 20/29] Regression: Add bluetooth permissions for Jitsi (#4796) * add blt permissions * Update AndroidManifest.xml * add blt permissions * remove wrong permission --- android/app/src/main/AndroidManifest.xml | 9 +++++++++ app/lib/methods/videoConf.ts | 18 ++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 0765164fb..1b48b17ba 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -11,6 +11,15 @@ + + + + + + + + + => { + const systemVersion = await DeviceInfo.getApiLevel(); + if (systemVersion <= 28) { + return [PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT, PermissionsAndroid.PERMISSIONS.BLUETOOTH_SCAN]; + } + if (systemVersion === 29) { + return [PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION]; + } + return [PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION]; +}; + export const videoConfJoin = async (callId: string, cam: boolean) => { try { const result = await Services.videoConferenceJoin(callId, cam); if (result.success) { if (isAndroid) { + const bltPermission = await handleBltPermission(); await PermissionsAndroid.requestMultiple([ PermissionsAndroid.PERMISSIONS.CAMERA, - PermissionsAndroid.PERMISSIONS.RECORD_AUDIO + PermissionsAndroid.PERMISSIONS.RECORD_AUDIO, + ...bltPermission ]); } const { url, providerName } = result; From 447a2b93448d70ace314a3afe22f81a5a6b51f1c Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Mon, 16 Jan 2023 13:43:27 -0300 Subject: [PATCH 21/29] Regression: App not fetching messages properly after #4801 (#4819) --- app/views/RoomView/index.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/RoomView/index.tsx b/app/views/RoomView/index.tsx index 92f247f23..0e6f2d4ec 100644 --- a/app/views/RoomView/index.tsx +++ b/app/views/RoomView/index.tsx @@ -688,8 +688,8 @@ class RoomView extends React.Component { const newLastOpen = new Date(); await RoomServices.getMessages({ rid: room.rid, - lastOpen: 'lastOpen' in room ? room.lastOpen : undefined, - t: room.t as RoomType + t: room.t as RoomType, + ...('lastOpen' in room && room.lastOpen ? { lastOpen: room.lastOpen } : {}) }); // if room is joined From 91831c8f338aab5471c1af6bf07b99d53b437fda Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 18 Jan 2023 13:43:26 -0300 Subject: [PATCH 22/29] [FIX] Unwanted clear keychain and request challenges (#4826) --- ios/RocketChatRN.xcodeproj/project.pbxproj | 382 +++++++++--------- ios/RocketChatRN/AppDelegate.mm | 2 +- ios/ShareRocketChatRN/ShareRocketChatRN.m | 2 +- package.json | 4 +- patches/react-native-mmkv-storage+0.8.0.patch | 32 +- patches/react-native-webview+10.3.2.patch | 4 +- patches/rn-fetch-blob+0.12.0.patch | 6 +- yarn.lock | 10 +- 8 files changed, 206 insertions(+), 236 deletions(-) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 825519749..ea40c4f57 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 0C6E2DE448364EA896869ADF /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37C79D9BD0742CE936B6982 /* libc++.tbd */; }; - 0DAF353368B2DE2714B6DCE8 /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5F1EEB258E879574E6F9EADA /* libPods-defaults-Rocket.Chat.a */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 1E01C81C2511208400FEF824 /* URL+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E01C81B2511208400FEF824 /* URL+Extensions.swift */; }; @@ -80,9 +79,8 @@ 1EFEB5982493B6640072EDC0 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EFEB5972493B6640072EDC0 /* NotificationService.swift */; }; 1EFEB59C2493B6640072EDC0 /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EFEB5952493B6640072EDC0 /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; - 4BC950FF98C56CFA992BBAFE /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3982B430BE28C2D93FD9AF5C /* libPods-defaults-ShareRocketChatRN.a */; }; 4C4C8603EF082F0A33A95522 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */; }; - 58B1112437C7F012923203ED /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 674E4FB148AE2FB17415683F /* libPods-defaults-RocketChatRN.a */; }; + 53A4B76EC76B5C33C86828DB /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A3D4E5E365572E4B0A35F84 /* libPods-defaults-Rocket.Chat.a */; }; 7A006F14229C83B600803143 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7A006F13229C83B600803143 /* GoogleService-Info.plist */; }; 7A0D62D2242AB187006D5C06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */; }; 7A14FCED257FEB3A005BDCD4 /* Experimental.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */; }; @@ -143,10 +141,12 @@ 7AE10C0728A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; }; 7AE10C0828A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; }; 85160EB6C143E0493FE5F014 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194D9A8897F4A486C2C6F89A /* ExpoModulesProvider.swift */; }; - A965681B9D9B1DB968676F54 /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DEC0A8A825375FCCDCDFEFE2 /* libPods-defaults-NotificationService.a */; }; + 8635E3F5E50AB70942D94811 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8392E4F8E23182B188A28283 /* libPods-defaults-ShareRocketChatRN.a */; }; BC404914E86821389EEB543D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */; }; + C545E1FF9F7878253C7CAFC7 /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BB98B79DB037ACA18DE98A9 /* libPods-defaults-RocketChatRN.a */; }; D94D81FB9E10756FAA03F203 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */; }; DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BA7E862283664608B3894E34 /* libWatermelonDB.a */; }; + E87275738A44046F4F46262B /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E3BC4AF921B56AA2F88972 /* libPods-defaults-NotificationService.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -210,7 +210,6 @@ /* Begin PBXFileReference section */ 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; 016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-ShareRocketChatRN/ExpoModulesProvider.swift"; sourceTree = ""; }; - 04CABACAE3DF5FF44121FC30 /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = ""; }; 06BB44DD4855498082A744AD /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; 13B07F961A680F5B00A75B9A /* Rocket.Chat Experimental.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Rocket.Chat Experimental.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RocketChatRN/AppDelegate.h; sourceTree = ""; }; @@ -251,6 +250,7 @@ 1E6737FF24DC52660009E081 /* NotificationService-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NotificationService-Bridging-Header.h"; sourceTree = ""; }; 1E67380324DC529B0009E081 /* String+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = ""; }; 1E680ED82512990700C9257A /* Request.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Request.swift; sourceTree = ""; }; + 1EB4223867025212BA5BD96F /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = ""; }; 1EB8EF712510F1EE00F352B7 /* Storage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = ""; }; 1EC6ACB022CB9FC300A41C61 /* ShareRocketChatRN.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareRocketChatRN.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 1EC6ACB622CB9FC300A41C61 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; @@ -265,13 +265,11 @@ 1EFEB5992493B6640072EDC0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1EFEB5A12493B67D0072EDC0 /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = ""; }; 391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-Rocket.Chat/ExpoModulesProvider.swift"; sourceTree = ""; }; - 3982B430BE28C2D93FD9AF5C /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3AD43034372030994471D0E9 /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = ""; }; + 3A3D4E5E365572E4B0A35F84 /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-RocketChatRN/ExpoModulesProvider.swift"; sourceTree = ""; }; - 48A6FD916DB2F924F1360A4A /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = ""; }; - 5F1EEB258E879574E6F9EADA /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 51E3BC4AF921B56AA2F88972 /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 60B2A6A31FC4588700BD58E5 /* RocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = RocketChatRN.entitlements; path = RocketChatRN/RocketChatRN.entitlements; sourceTree = ""; }; - 674E4FB148AE2FB17415683F /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 679333EFF577AAD83563610D /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = ""; }; 7A006F13229C83B600803143 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Experimental.xcassets; sourceTree = ""; }; @@ -282,14 +280,16 @@ 7AAB3E52257E6A6E00707CF6 /* Rocket.Chat.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rocket.Chat.app; sourceTree = BUILT_PRODUCTS_DIR; }; 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 7AE10C0528A59530003593CB /* Inter.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Inter.ttf; sourceTree = ""; }; - 7E01AFB7FFC99A24DE24A9E7 /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = ""; }; - 8009E8CCFAA4804CCED401D8 /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = ""; }; - 94EB1DBE281212E61157DDEE /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = ""; }; - AC87BFDE8CC75468C2E87328 /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = ""; }; + 7BB98B79DB037ACA18DE98A9 /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 8392E4F8E23182B188A28283 /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + AB8144BFC3CB9DF1591BA994 /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = ""; }; B37C79D9BD0742CE936B6982 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; BA7E862283664608B3894E34 /* libWatermelonDB.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libWatermelonDB.a; sourceTree = ""; }; - C84BF59D4FEA8C08AD41906D /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = ""; }; - DEC0A8A825375FCCDCDFEFE2 /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + BBB2F496D5C0548FD76247FF /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = ""; }; + D8BF0F700D5F9DF20E5C7E18 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = ""; }; + DD46C710B0B46DD66AE1B56F /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = ""; }; + F51011A72D988B033A8C911A /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = ""; }; + FB8DBBB44E044FA53CFA3FE9 /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -310,7 +310,7 @@ 7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */, 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */, DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */, - 58B1112437C7F012923203ED /* libPods-defaults-RocketChatRN.a in Frameworks */, + C545E1FF9F7878253C7CAFC7 /* libPods-defaults-RocketChatRN.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -319,7 +319,7 @@ buildActionMask = 2147483647; files = ( 1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */, - 4BC950FF98C56CFA992BBAFE /* libPods-defaults-ShareRocketChatRN.a in Frameworks */, + 8635E3F5E50AB70942D94811 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -327,7 +327,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A965681B9D9B1DB968676F54 /* libPods-defaults-NotificationService.a in Frameworks */, + E87275738A44046F4F46262B /* libPods-defaults-NotificationService.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -348,7 +348,7 @@ 7AAB3E3D257E6A6E00707CF6 /* JavaScriptCore.framework in Frameworks */, 7AAB3E3E257E6A6E00707CF6 /* libz.tbd in Frameworks */, 7AAB3E3F257E6A6E00707CF6 /* libWatermelonDB.a in Frameworks */, - 0DAF353368B2DE2714B6DCE8 /* libPods-defaults-Rocket.Chat.a in Frameworks */, + 53A4B76EC76B5C33C86828DB /* libPods-defaults-Rocket.Chat.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -499,14 +499,14 @@ 7AC2B09613AA7C3FEBAC9F57 /* Pods */ = { isa = PBXGroup; children = ( - 8009E8CCFAA4804CCED401D8 /* Pods-defaults-NotificationService.debug.xcconfig */, - 7E01AFB7FFC99A24DE24A9E7 /* Pods-defaults-NotificationService.release.xcconfig */, - 04CABACAE3DF5FF44121FC30 /* Pods-defaults-Rocket.Chat.debug.xcconfig */, - 3AD43034372030994471D0E9 /* Pods-defaults-Rocket.Chat.release.xcconfig */, - 48A6FD916DB2F924F1360A4A /* Pods-defaults-RocketChatRN.debug.xcconfig */, - AC87BFDE8CC75468C2E87328 /* Pods-defaults-RocketChatRN.release.xcconfig */, - C84BF59D4FEA8C08AD41906D /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */, - 94EB1DBE281212E61157DDEE /* Pods-defaults-ShareRocketChatRN.release.xcconfig */, + BBB2F496D5C0548FD76247FF /* Pods-defaults-NotificationService.debug.xcconfig */, + 1EB4223867025212BA5BD96F /* Pods-defaults-NotificationService.release.xcconfig */, + AB8144BFC3CB9DF1591BA994 /* Pods-defaults-Rocket.Chat.debug.xcconfig */, + 679333EFF577AAD83563610D /* Pods-defaults-Rocket.Chat.release.xcconfig */, + F51011A72D988B033A8C911A /* Pods-defaults-RocketChatRN.debug.xcconfig */, + FB8DBBB44E044FA53CFA3FE9 /* Pods-defaults-RocketChatRN.release.xcconfig */, + D8BF0F700D5F9DF20E5C7E18 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */, + DD46C710B0B46DD66AE1B56F /* Pods-defaults-ShareRocketChatRN.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -597,10 +597,10 @@ 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */, B37C79D9BD0742CE936B6982 /* libc++.tbd */, 06BB44DD4855498082A744AD /* libz.tbd */, - DEC0A8A825375FCCDCDFEFE2 /* libPods-defaults-NotificationService.a */, - 5F1EEB258E879574E6F9EADA /* libPods-defaults-Rocket.Chat.a */, - 674E4FB148AE2FB17415683F /* libPods-defaults-RocketChatRN.a */, - 3982B430BE28C2D93FD9AF5C /* libPods-defaults-ShareRocketChatRN.a */, + 51E3BC4AF921B56AA2F88972 /* libPods-defaults-NotificationService.a */, + 3A3D4E5E365572E4B0A35F84 /* libPods-defaults-Rocket.Chat.a */, + 7BB98B79DB037ACA18DE98A9 /* libPods-defaults-RocketChatRN.a */, + 8392E4F8E23182B188A28283 /* libPods-defaults-ShareRocketChatRN.a */, ); name = Frameworks; sourceTree = ""; @@ -620,7 +620,7 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RocketChatRN" */; buildPhases = ( - E368867D90711EA1666BFF6A /* [CP] Check Pods Manifest.lock */, + 3474423C54E97576F36F5858 /* [CP] Check Pods Manifest.lock */, 7AA5C63E23E30D110005C4A7 /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, @@ -629,8 +629,8 @@ 1EC6ACF422CB9FC300A41C61 /* Embed App Extensions */, 1E1EA8082326CCE300E22452 /* ShellScript */, 7AAE9EB32891A0D20024F559 /* Upload source maps to Bugsnag */, - DE93C39DFDB4F3759B84670D /* [CP] Embed Pods Frameworks */, - 52CE06391F137AA82A402A69 /* [CP] Copy Pods Resources */, + D85E0CA1CBEF992560B4D054 /* [CP] Embed Pods Frameworks */, + B5B2A3EBFBC1507DA0BF7CE7 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -647,12 +647,12 @@ isa = PBXNativeTarget; buildConfigurationList = 1EC6ACF322CB9FC300A41C61 /* Build configuration list for PBXNativeTarget "ShareRocketChatRN" */; buildPhases = ( - 943E61A9039C6FE02871CAD9 /* [CP] Check Pods Manifest.lock */, + 7D6D08CA5569DA5D6351B282 /* [CP] Check Pods Manifest.lock */, 1EC6ACAC22CB9FC300A41C61 /* Sources */, 1EC6ACAD22CB9FC300A41C61 /* Frameworks */, 1EC6ACAE22CB9FC300A41C61 /* Resources */, 1EFE4DC322CBF36300B766B7 /* ShellScript */, - 1FB8D9B08356E6AC6201714D /* [CP] Copy Pods Resources */, + 72EF5D7265B0EB10132762B6 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -667,11 +667,11 @@ isa = PBXNativeTarget; buildConfigurationList = 1EFEB5A02493B6640072EDC0 /* Build configuration list for PBXNativeTarget "NotificationService" */; buildPhases = ( - AAFC671179263417C34C729A /* [CP] Check Pods Manifest.lock */, + 231269BDB11A771D3BF2EF95 /* [CP] Check Pods Manifest.lock */, 1EFEB5912493B6640072EDC0 /* Sources */, 1EFEB5922493B6640072EDC0 /* Frameworks */, 1EFEB5932493B6640072EDC0 /* Resources */, - 996816F401E32166714ABD9E /* [CP] Copy Pods Resources */, + 9A524A7D0DDDC7DA1E765E08 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -686,7 +686,7 @@ isa = PBXNativeTarget; buildConfigurationList = 7AAB3E4F257E6A6E00707CF6 /* Build configuration list for PBXNativeTarget "Rocket.Chat" */; buildPhases = ( - CDFA7A6FA541A8BED7CE9EE7 /* [CP] Check Pods Manifest.lock */, + 1128334A3466592BFACC8C91 /* [CP] Check Pods Manifest.lock */, 7AAB3E13257E6A6E00707CF6 /* Start Packager */, 7AAB3E14257E6A6E00707CF6 /* Sources */, 7AAB3E32257E6A6E00707CF6 /* Frameworks */, @@ -695,8 +695,8 @@ 7AAB3E48257E6A6E00707CF6 /* Embed App Extensions */, 7AAB3E4B257E6A6E00707CF6 /* ShellScript */, 7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */, - CCA2F3534731DC8EE1FAB416 /* [CP] Embed Pods Frameworks */, - DEE9CFB76371CE33773CB435 /* [CP] Copy Pods Resources */, + E8314D4F811B7375609A1949 /* [CP] Embed Pods Frameworks */, + ED1C9472F1D91155EAB359BD /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -846,6 +846,28 @@ shellPath = /bin/sh; shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; }; + 1128334A3466592BFACC8C91 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; 1E1EA8082326CCE300E22452 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -880,7 +902,51 @@ shellPath = /bin/sh; shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; }; - 1FB8D9B08356E6AC6201714D /* [CP] Copy Pods Resources */ = { + 231269BDB11A771D3BF2EF95 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-defaults-NotificationService-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3474423C54E97576F36F5858 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 72EF5D7265B0EB10132762B6 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -936,62 +1002,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 52CE06391F137AA82A402A69 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh", - "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle", - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; 7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1095,7 +1105,7 @@ shellPath = /bin/sh; shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh\n"; }; - 943E61A9039C6FE02871CAD9 /* [CP] Check Pods Manifest.lock */ = { + 7D6D08CA5569DA5D6351B282 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1117,7 +1127,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 996816F401E32166714ABD9E /* [CP] Copy Pods Resources */ = { + 9A524A7D0DDDC7DA1E765E08 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1173,75 +1183,63 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh\"\n"; showEnvVarsInLog = 0; }; - AAFC671179263417C34C729A /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-defaults-NotificationService-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - CCA2F3534731DC8EE1FAB416 /* [CP] Embed Pods Frameworks */ = { + B5B2A3EBFBC1507DA0BF7CE7 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/WebRTC.framework/WebRTC", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes", + "${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Copy Pods Resources"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeetSDK.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh\"\n"; showEnvVarsInLog = 0; }; - CDFA7A6FA541A8BED7CE9EE7 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - DE93C39DFDB4F3759B84670D /* [CP] Embed Pods Frameworks */ = { + D85E0CA1CBEF992560B4D054 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1265,7 +1263,31 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - DEE9CFB76371CE33773CB435 /* [CP] Copy Pods Resources */ = { + E8314D4F811B7375609A1949 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/WebRTC.framework/WebRTC", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeetSDK.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + ED1C9472F1D91155EAB359BD /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1321,28 +1343,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh\"\n"; showEnvVarsInLog = 0; }; - E368867D90711EA1666BFF6A /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -1500,7 +1500,7 @@ /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48A6FD916DB2F924F1360A4A /* Pods-defaults-RocketChatRN.debug.xcconfig */; + baseConfigurationReference = F51011A72D988B033A8C911A /* Pods-defaults-RocketChatRN.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APPLICATION_EXTENSION_API_ONLY = NO; @@ -1557,7 +1557,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AC87BFDE8CC75468C2E87328 /* Pods-defaults-RocketChatRN.release.xcconfig */; + baseConfigurationReference = FB8DBBB44E044FA53CFA3FE9 /* Pods-defaults-RocketChatRN.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APPLICATION_EXTENSION_API_ONLY = NO; @@ -1613,7 +1613,7 @@ }; 1EC6ACBC22CB9FC300A41C61 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C84BF59D4FEA8C08AD41906D /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */; + baseConfigurationReference = D8BF0F700D5F9DF20E5C7E18 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; @@ -1654,7 +1654,7 @@ "$(inherited)", "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", - $PODS_CONFIGURATION_BUILD_DIR/Firebase, + "$PODS_CONFIGURATION_BUILD_DIR/Firebase", ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -1681,7 +1681,7 @@ }; 1EC6ACBD22CB9FC300A41C61 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94EB1DBE281212E61157DDEE /* Pods-defaults-ShareRocketChatRN.release.xcconfig */; + baseConfigurationReference = DD46C710B0B46DD66AE1B56F /* Pods-defaults-ShareRocketChatRN.release.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; @@ -1722,7 +1722,7 @@ "$(inherited)", "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", - $PODS_CONFIGURATION_BUILD_DIR/Firebase, + "$PODS_CONFIGURATION_BUILD_DIR/Firebase", ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -1748,7 +1748,7 @@ }; 1EFEB59D2493B6640072EDC0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8009E8CCFAA4804CCED401D8 /* Pods-defaults-NotificationService.debug.xcconfig */; + baseConfigurationReference = BBB2F496D5C0548FD76247FF /* Pods-defaults-NotificationService.debug.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1785,7 +1785,7 @@ }; 1EFEB59E2493B6640072EDC0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7E01AFB7FFC99A24DE24A9E7 /* Pods-defaults-NotificationService.release.xcconfig */; + baseConfigurationReference = 1EB4223867025212BA5BD96F /* Pods-defaults-NotificationService.release.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1822,7 +1822,7 @@ }; 7AAB3E50257E6A6E00707CF6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 04CABACAE3DF5FF44121FC30 /* Pods-defaults-Rocket.Chat.debug.xcconfig */; + baseConfigurationReference = AB8144BFC3CB9DF1591BA994 /* Pods-defaults-Rocket.Chat.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APPLICATION_EXTENSION_API_ONLY = NO; @@ -1876,7 +1876,7 @@ }; 7AAB3E51257E6A6E00707CF6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3AD43034372030994471D0E9 /* Pods-defaults-Rocket.Chat.release.xcconfig */; + baseConfigurationReference = 679333EFF577AAD83563610D /* Pods-defaults-Rocket.Chat.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APPLICATION_EXTENSION_API_ONLY = NO; diff --git a/ios/RocketChatRN/AppDelegate.mm b/ios/RocketChatRN/AppDelegate.mm index 76f069866..527fc37d1 100644 --- a/ios/RocketChatRN/AppDelegate.mm +++ b/ios/RocketChatRN/AppDelegate.mm @@ -64,7 +64,7 @@ // AppGroup MMKV NSString *groupDir = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"AppGroup"]].path; - [MMKV initializeMMKV:nil groupDir:groupDir logLevel:MMKVLogNone]; + [MMKV initializeMMKV:nil groupDir:groupDir logLevel:MMKVLogInfo]; [RNBootSplash initWithStoryboard:@"LaunchScreen" rootView:rootView]; diff --git a/ios/ShareRocketChatRN/ShareRocketChatRN.m b/ios/ShareRocketChatRN/ShareRocketChatRN.m index 8202d0de0..f4a53b1b6 100644 --- a/ios/ShareRocketChatRN/ShareRocketChatRN.m +++ b/ios/ShareRocketChatRN/ShareRocketChatRN.m @@ -44,7 +44,7 @@ RCT_EXPORT_MODULE(); // AppGroup MMKV NSString *groupDir = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:[[NSBundle mainBundle] objectForInfoDictionaryKey:@"AppGroup"]].path; - [MMKV initializeMMKV:nil groupDir:groupDir logLevel:MMKVLogNone]; + [MMKV initializeMMKV:nil groupDir:groupDir logLevel:MMKVLogInfo]; return rootView; } diff --git a/package.json b/package.json index 506425329..ff3b92579 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "prop-types": "15.7.2", "react": "17.0.2", "react-hook-form": "^7.34.2", - "react-native": "RocketChat/react-native#0.68.2", + "react-native": "RocketChat/react-native#fix.request-challenges", "react-native-animatable": "^1.3.3", "react-native-background-timer": "2.4.1", "react-native-bootsplash": "^4.3.3", @@ -134,7 +134,7 @@ "remove-markdown": "^0.3.0", "reselect": "4.0.0", "rn-extensions-share": "RocketChat/rn-extensions-share", - "rn-fetch-blob": "0.12.0", + "rn-fetch-blob": "^0.12.0", "rn-root-view": "RocketChat/rn-root-view", "semver": "^7.3.8", "ua-parser-js": "^1.0.32", diff --git a/patches/react-native-mmkv-storage+0.8.0.patch b/patches/react-native-mmkv-storage+0.8.0.patch index dd23c802c..c757b6c7a 100644 --- a/patches/react-native-mmkv-storage+0.8.0.patch +++ b/patches/react-native-mmkv-storage+0.8.0.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-mmkv-storage/ios/SecureStorage.m b/node_modules/react-native-mmkv-storage/ios/SecureStorage.m -index dbea26b..7b2083c 100644 +index dbea26b..2483375 100644 --- a/node_modules/react-native-mmkv-storage/ios/SecureStorage.m +++ b/node_modules/react-native-mmkv-storage/ios/SecureStorage.m @@ -40,14 +40,14 @@ - (NSString *) getSecureKey:(NSString *)key @@ -35,33 +35,3 @@ index dbea26b..7b2083c 100644 if(serviceName == nil){ serviceName = [[NSBundle mainBundle] bundleIdentifier]; } -@@ -111,6 +114,9 @@ - (NSMutableDictionary *)newSearchDictionary:(NSString *)identifier { - [searchDictionary setObject:encodedIdentifier forKey:(id)kSecAttrAccount]; - [searchDictionary setObject:serviceName forKey:(id)kSecAttrService]; - -+ NSString *keychainGroup = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"KeychainGroup"]; -+ [searchDictionary setObject:keychainGroup forKey:(id)kSecAttrAccessGroup]; -+ - return searchDictionary; - } - -@@ -212,11 +218,14 @@ - (void)clearSecureKeyStore - - - (void)handleAppUninstallation - { -- // if (![[NSUserDefaults standardUserDefaults] boolForKey:@"RnSksIsAppInstalled"]) { -- // [self clearSecureKeyStore]; -- //[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"IsAppInstalled"]; -- [[NSUserDefaults standardUserDefaults] synchronize]; -- // } -+ // use app group user defaults to prevent clear when it's share extension -+ NSString *suiteName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"AppGroup"]; -+ NSUserDefaults *userDefaults = [[NSUserDefaults alloc] initWithSuiteName:suiteName]; -+ if (![userDefaults boolForKey:@"RnSksIsAppInstalled"]) { -+ [self clearSecureKeyStore]; -+ [userDefaults setBool:YES forKey:@"RnSksIsAppInstalled"]; -+ [userDefaults synchronize]; -+ } - } - - - (void) setServiceName:(NSString *)_serviceName diff --git a/patches/react-native-webview+10.3.2.patch b/patches/react-native-webview+10.3.2.patch index df46fcf8b..6c9db9d55 100644 --- a/patches/react-native-webview+10.3.2.patch +++ b/patches/react-native-webview+10.3.2.patch @@ -197,16 +197,16 @@ index 02b4238..e0635ed 100644 + + // https://github.com/ammarahm-ed/react-native-mmkv-storage/blob/master/src/loader.js#L31 + NSString *key = [secureStorage getSecureKey:[self stringToHex:@"com.MMKV.default"]]; ++ NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + + if (key == NULL) { -+ return; ++ return completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, credential); + } + + NSData *cryptKey = [key dataUsingEncoding:NSUTF8StringEncoding]; + MMKV *mmkv = [MMKV mmkvWithID:@"default" cryptKey:cryptKey mode:MMKVMultiProcess]; + clientSSL = [mmkv getObjectOfClass:[NSDictionary class] forKey:host]; + -+ NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + + if (clientSSL != (id)[NSNull null]) { + NSString *path = [clientSSL objectForKey:@"path"]; diff --git a/patches/rn-fetch-blob+0.12.0.patch b/patches/rn-fetch-blob+0.12.0.patch index 44a57c005..1269040fb 100644 --- a/patches/rn-fetch-blob+0.12.0.patch +++ b/patches/rn-fetch-blob+0.12.0.patch @@ -23,7 +23,7 @@ index 602d51d..920d975 100644 public String getName() { return "RNFetchBlob"; diff --git a/node_modules/rn-fetch-blob/ios/RNFetchBlobRequest.m b/node_modules/rn-fetch-blob/ios/RNFetchBlobRequest.m -index cdbe6b1..c0ce9bd 100644 +index cdbe6b1..04e5e7b 100644 --- a/node_modules/rn-fetch-blob/ios/RNFetchBlobRequest.m +++ b/node_modules/rn-fetch-blob/ios/RNFetchBlobRequest.m @@ -15,6 +15,9 @@ @@ -118,12 +118,12 @@ index cdbe6b1..c0ce9bd 100644 + + // https://github.com/ammarahm-ed/react-native-mmkv-storage/blob/master/src/loader.js#L31 + NSString *key = [secureStorage getSecureKey:[self stringToHex:@"com.MMKV.default"]]; ++ NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + + if (key == NULL) { -+ return; ++ return completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, credential); + } + -+ NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + NSData *cryptKey = [key dataUsingEncoding:NSUTF8StringEncoding]; + MMKV *mmkv = [MMKV mmkvWithID:@"default" cryptKey:cryptKey mode:MMKVMultiProcess]; + clientSSL = [mmkv getStringForKey:host]; diff --git a/yarn.lock b/yarn.lock index 602af3e80..064cdb315 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7697,7 +7697,7 @@ balanced-match@^1.0.0: base-64@0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/base-64/-/base-64-0.1.0.tgz#780a99c84e7d600260361511c4877613bf24f6bb" - integrity sha1-eAqZyE59YAJgNhURxId2E78k9rs= + integrity sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA== base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3, base64-js@^1.3.0, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" @@ -11632,7 +11632,7 @@ glob-to-regexp@^0.3.0: glob@7.0.6: version "7.0.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= + integrity sha512-f8c0rE8JiCxpa52kWPAOa3ZaYEnzofDzCQLCn3Vdk0Z5OVLq3BsRFJI4S4ykpeVW6QMGBUkMeUpoEgWnMTnw5Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -17402,9 +17402,9 @@ react-native-webview@10.3.2: escape-string-regexp "2.0.0" invariant "2.2.4" -react-native@RocketChat/react-native#0.68.2: +react-native@RocketChat/react-native#fix.request-challenges: version "0.68.2" - resolved "https://codeload.github.com/RocketChat/react-native/tar.gz/fa9253e56a8533688e92de2e977bd120213d96aa" + resolved "https://codeload.github.com/RocketChat/react-native/tar.gz/182dbfa30458aa9ac022741d0888d9a5ac296255" dependencies: "@jest/create-cache-key-function" "^27.0.1" "@react-native-community/cli" "^7.0.3" @@ -18138,7 +18138,7 @@ rn-extensions-share@RocketChat/rn-extensions-share: version "2.4.1" resolved "https://codeload.github.com/RocketChat/rn-extensions-share/tar.gz/4d7c0e4c2f300e4fb116af7b7cc0dbbc8169150c" -rn-fetch-blob@0.12.0: +rn-fetch-blob@^0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/rn-fetch-blob/-/rn-fetch-blob-0.12.0.tgz#ec610d2f9b3f1065556b58ab9c106eeb256f3cba" integrity sha512-+QnR7AsJ14zqpVVUbzbtAjq0iI8c9tCg49tIoKO2ezjzRunN7YL6zFSFSWZm6d+mE/l9r+OeDM3jmb2tBb2WbA== From af70849b5e35eacdaaeea61757513cbb508cfbc1 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 18 Jan 2023 14:55:54 -0300 Subject: [PATCH 23/29] [FIX] Point to correct RN fork commit (#4832) --- package.json | 2 +- yarn.lock | 328 +++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 243 insertions(+), 87 deletions(-) diff --git a/package.json b/package.json index ff3b92579..8c1f65a5b 100644 --- a/package.json +++ b/package.json @@ -81,7 +81,7 @@ "prop-types": "15.7.2", "react": "17.0.2", "react-hook-form": "^7.34.2", - "react-native": "RocketChat/react-native#fix.request-challenges", + "react-native": "RocketChat/react-native#281140d2e39d66a8e486db397ce0bf5bd0e334fc", "react-native-animatable": "^1.3.3", "react-native-background-timer": "2.4.1", "react-native-bootsplash": "^4.3.3", diff --git a/yarn.lock b/yarn.lock index 064cdb315..f17bb263e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -66,6 +66,11 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== +"@babel/compat-data@^7.20.5": + version "7.20.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.10.tgz#9d92fa81b87542fff50e848ed585b4212c1d34ec" + integrity sha512-sEnuDPpOJR/fcafHMjpcpGN5M2jbUGUHwmuWKM/YdPzeEDJg8bgmbcWQFUfE32MQjti1koACvoPVsDe8Uq+idg== + "@babel/core@7.12.9": version "7.12.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8" @@ -153,24 +158,24 @@ source-map "^0.5.0" "@babel/core@^7.13.16": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" - integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.12.tgz#7930db57443c6714ad216953d1356dac0eb8496d" + integrity sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.9" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/generator" "^7.20.7" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helpers" "^7.20.7" + "@babel/parser" "^7.20.7" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.12" + "@babel/types" "^7.20.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" - json5 "^2.2.1" + json5 "^2.2.2" semver "^6.3.0" "@babel/core@^7.14.0": @@ -251,12 +256,12 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/generator@^7.14.0", "@babel/generator@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" - integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== +"@babel/generator@^7.14.0", "@babel/generator@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.7.tgz#f8ef57c8242665c5929fe2e8d82ba75460187b4a" + integrity sha512-7wqMOJq8doJMZmP4ApXTzLxSr7+oO2jroJURrVEp6XShrQUObV8Tq/D0NCcoYg2uHqUrjzO0zwBjoYzelxK+sw== dependencies: - "@babel/types" "^7.18.9" + "@babel/types" "^7.20.7" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -296,6 +301,15 @@ "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" +"@babel/generator@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" + integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== + dependencies: + "@babel/types" "^7.18.9" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/generator@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" @@ -405,6 +419,17 @@ browserslist "^4.20.2" semver "^6.3.0" +"@babel/helper-compilation-targets@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz#a6cd33e93629f5eb473b021aac05df62c4cd09bb" + integrity sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-validator-option" "^7.18.6" + browserslist "^4.21.3" + lru-cache "^5.1.1" + semver "^6.3.0" + "@babel/helper-create-class-features-plugin@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.5.tgz#8842ec495516dd1ed8f6c572be92ba78b1e9beef" @@ -628,6 +653,14 @@ "@babel/template" "^7.18.6" "@babel/types" "^7.18.9" +"@babel/helper-function-name@^7.19.0": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c" + integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w== + dependencies: + "@babel/template" "^7.18.10" + "@babel/types" "^7.19.0" + "@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" @@ -811,6 +844,20 @@ "@babel/traverse" "^7.18.0" "@babel/types" "^7.18.0" +"@babel/helper-module-transforms@^7.20.11": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz#df4c7af713c557938c50ea3ad0117a7944b2f1b0" + integrity sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.20.2" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.19.1" + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.10" + "@babel/types" "^7.20.7" + "@babel/helper-module-transforms@^7.9.0": version "7.9.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" @@ -894,6 +941,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== +"@babel/helper-plugin-utils@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629" + integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ== + "@babel/helper-regex@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" @@ -1030,6 +1082,13 @@ dependencies: "@babel/types" "^7.18.6" +"@babel/helper-simple-access@^7.20.2": + version "7.20.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz#0ab452687fe0c2cfb1e2b9e0015de07fc2d62dd9" + integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA== + dependencies: + "@babel/types" "^7.20.2" + "@babel/helper-simple-access@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" @@ -1052,6 +1111,13 @@ dependencies: "@babel/types" "^7.18.9" +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0": + version "7.20.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684" + integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg== + dependencies: + "@babel/types" "^7.20.0" + "@babel/helper-split-export-declaration@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz#2c70576eaa3b5609b24cb99db2888cc3fc4251d1" @@ -1092,6 +1158,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== +"@babel/helper-string-parser@^7.19.4": + version "7.19.4" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" + integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== + "@babel/helper-validator-identifier@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" @@ -1112,6 +1183,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== +"@babel/helper-validator-identifier@^7.19.1": + version "7.19.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" + integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== + "@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": version "7.9.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" @@ -1188,6 +1264,15 @@ "@babel/traverse" "^7.18.2" "@babel/types" "^7.18.2" +"@babel/helpers@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.7.tgz#04502ff0feecc9f20ecfaad120a18f011a8e6dce" + integrity sha512-PBPjs5BppzsGaxHQCDKnZ6Gd9s6xl8bBCluz3vEInLGRJmnZan4F6BYCeqtyXqkk4W5IlPmjK4JlOuZkpJ3xZA== + dependencies: + "@babel/template" "^7.20.7" + "@babel/traverse" "^7.20.7" + "@babel/types" "^7.20.7" + "@babel/helpers@^7.9.6": version "7.9.6" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" @@ -1257,10 +1342,10 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.11.tgz#68bb07ab3d380affa9a3f96728df07969645d2d9" integrity sha512-9JKn5vN+hDt0Hdqn1PiJ2guflwP+B6Ga8qbDuoF0PzzVhrzsKIJo8yGqVk6CmMHiMei9w1C1Bp9IMJSIK+HPIQ== -"@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" - integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== +"@babel/parser@^7.13.16", "@babel/parser@^7.14.0", "@babel/parser@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.7.tgz#66fe23b3c8569220817d5feb8b9dcdc95bb4f71b" + integrity sha512-T3Z9oHybU+0vZlY9CiDSJQTD5ZapcW18ZctFMi0MOAl/4BjFF4ul7NVSARLdbGO5vDqy9eQiGTV0LtKfvCYvcg== "@babel/parser@^7.14.5": version "7.14.5" @@ -1292,6 +1377,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.8.tgz#822146080ac9c62dac0823bb3489622e0bc1cbdf" integrity sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA== +"@babel/parser@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" + integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" @@ -1609,7 +1699,7 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.0" -"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.13.12", "@babel/plugin-proposal-optional-chaining@^7.18.9": +"@babel/plugin-proposal-optional-chaining@^7.12.7", "@babel/plugin-proposal-optional-chaining@^7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== @@ -1618,6 +1708,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-proposal-optional-chaining@^7.13.12": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz#49f2b372519ab31728cc14115bb0998b15bfda55" + integrity sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-proposal-optional-chaining@^7.17.12": version "7.17.12" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" @@ -2286,15 +2385,14 @@ "@babel/helper-simple-access" "^7.8.3" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== +"@babel/plugin-transform-modules-commonjs@^7.13.8": + version "7.20.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz#8cb23010869bf7669fd4b3098598b6b2be6dc607" + integrity sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw== dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" + "@babel/helper-module-transforms" "^7.20.11" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-simple-access" "^7.20.2" "@babel/plugin-transform-modules-commonjs@^7.18.2": version "7.18.2" @@ -2306,6 +2404,16 @@ "@babel/helper-simple-access" "^7.18.2" babel-plugin-dynamic-import-node "^2.3.3" +"@babel/plugin-transform-modules-commonjs@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" + integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== + dependencies: + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + babel-plugin-dynamic-import-node "^2.3.3" + "@babel/plugin-transform-modules-systemjs@^7.18.0": version "7.18.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz#3d6fd9868c735cce8f38d6ae3a407fb7e61e6d46" @@ -3073,6 +3181,15 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" +"@babel/template@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8" + integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@babel/traverse@^7.1.6", "@babel/traverse@^7.12.11", "@babel/traverse@^7.12.9", "@babel/traverse@^7.18.10", "@babel/traverse@^7.18.11": version "7.18.11" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.11.tgz#3d51f2afbd83ecf9912bcbb5c4d94e3d2ddaa16f" @@ -3119,19 +3236,19 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.14.0", "@babel/traverse@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" - integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== +"@babel/traverse@^7.14.0", "@babel/traverse@^7.20.10", "@babel/traverse@^7.20.12", "@babel/traverse@^7.20.7": + version "7.20.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.12.tgz#7f0f787b3a67ca4475adef1f56cb94f6abd4a4b5" + integrity sha512-MsIbFN0u+raeja38qboyF8TIT7K0BFzz/Yd/77ta4MsUsmP2RAnidIlwq7d5HFQrH/OZJecGV6B71C4zAgpoSQ== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.9" + "@babel/generator" "^7.20.7" "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" + "@babel/helper-function-name" "^7.19.0" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.9" - "@babel/types" "^7.18.9" + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" debug "^4.1.0" globals "^11.1.0" @@ -3183,6 +3300,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" + debug "^4.1.0" + globals "^11.1.0" + "@babel/traverse@^7.7.2": version "7.14.7" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.7.tgz#64007c9774cfdc3abd23b0780bc18a3ce3631753" @@ -3280,6 +3413,15 @@ "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" +"@babel/types@^7.19.0", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.7": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.7.tgz#54ec75e252318423fc07fb644dc6a58a64c09b7f" + integrity sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg== + dependencies: + "@babel/helper-string-parser" "^7.19.4" + "@babel/helper-validator-identifier" "^7.19.1" + to-fast-properties "^2.0.0" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -5033,7 +5175,12 @@ resolved "https://registry.yarnpkg.com/@react-native/assets/-/assets-1.0.0.tgz#c6f9bf63d274bafc8e970628de24986b30a55c8e" integrity sha512-KrwSpS1tKI70wuKl68DwJZYEvXktDHdZMG0k2AXD/rJVSlB23/X2CB2cutVR0HwNMJIal9HOUOBB2rVfa6UGtQ== -"@react-native/normalize-color@*", "@react-native/normalize-color@2.0.0", "@react-native/normalize-color@^2.0.0": +"@react-native/normalize-color@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91" + integrity sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA== + +"@react-native/normalize-color@2.0.0", "@react-native/normalize-color@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.0.0.tgz#da955909432474a9a0fe1cbffc66576a0447f567" integrity sha512-Wip/xsc5lw8vsBlmY2MO/gFLp3MvuZ2baBZjDeTjjndMgM0h5sxz7AZR62RDPGgstp8Np7JzjvVqVT7tpFZqsw== @@ -5186,9 +5333,9 @@ "@hapi/hoek" "^9.0.0" "@sideway/formula@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.0.tgz#fe158aee32e6bd5de85044be615bc08478a0a13c" - integrity sha512-vHe7wZ4NOXVfkoRb8T5otiENVlT7a3IAiw7H5M2+GO+9CDgcVUUsX1zalAztCmwyOr2RUTGJdgB+ZvSVqmdHmg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sideway/formula/-/formula-3.0.1.tgz#80fcbcbaf7ce031e0ef2dd29b1bfc7c3f583611f" + integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg== "@sideway/pinpoint@^2.0.0": version "2.0.0" @@ -6762,7 +6909,7 @@ absolute-path@^0.0.0: resolved "https://registry.yarnpkg.com/absolute-path/-/absolute-path-0.0.0.tgz#a78762fbdadfb5297be99b15d35a785b2f095bf7" integrity sha512-HQiug4c+/s3WOvEnDRxXVmNtSG5s2gJM9r19BTcqjp7BWcE48PB+Y2G6jE65kqI0LpsQeMZygt/b60Gi4KxGyA== -accepts@^1.3.7, accepts@^1.3.8, accepts@~1.3.5, accepts@~1.3.8: +accepts@^1.3.7, accepts@^1.3.8, accepts@~1.3.5, accepts@~1.3.7, accepts@~1.3.8: version "1.3.8" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== @@ -6770,14 +6917,6 @@ accepts@^1.3.7, accepts@^1.3.8, accepts@~1.3.5, accepts@~1.3.8: mime-types "~2.1.34" negotiator "0.6.3" -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" @@ -8259,21 +8398,21 @@ call-me-maybe@^1.0.1: caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" - integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + integrity sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ== dependencies: callsites "^2.0.0" caller-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" - integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + integrity sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A== dependencies: caller-callsite "^2.0.0" callsites@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" - integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + integrity sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ== callsites@^3.0.0: version "3.1.0" @@ -8567,11 +8706,16 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-spinners@^2.0.0, cli-spinners@^2.5.0: +cli-spinners@^2.0.0: version "2.6.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== +cli-spinners@^2.5.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" + integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== + cli-table3@^0.6.1: version "0.6.2" resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.2.tgz#aaf5df9d8b5bf12634dc8b3040806a0c07120d2a" @@ -9357,9 +9501,9 @@ damerau-levenshtein@^1.0.7: integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== dayjs@^1.8.15: - version "1.11.4" - resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.4.tgz#3b3c10ca378140d8917e06ebc13a4922af4f433e" - integrity sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g== + version "1.11.7" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.7.tgz#4b296922642f70999544d1144a2c25730fce63e2" + integrity sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: version "2.6.9" @@ -11173,9 +11317,9 @@ flatted@^3.1.0: integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== flow-parser@0.*: - version "0.183.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.183.0.tgz#69bcd35608ef179c619df0036c2b61d0f84665ae" - integrity sha512-2e/aIZIM7iJpHCBxpqdXetYYoO3YQEJzA7M8v5bhWhXCu+lIfkeSfOWycWW0rhlnJyjMftbmwn6B2eenKeGlag== + version "0.197.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.197.0.tgz#9a581ef7c0b1c3377b195cec0bbad794b88be67b" + integrity sha512-yhwkJPxH1JBg0aJunk/jVRy5p3UhVZBGkzL1hq/GK+GaBh6bKr2YKkv6gDuiufaw+i3pKWQgOLtD++1cvrgXLA== flow-parser@^0.121.0: version "0.121.0" @@ -12318,7 +12462,7 @@ immer@8.0.1: import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" - integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + integrity sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg== dependencies: caller-path "^2.0.0" resolve-from "^3.0.0" @@ -12627,7 +12771,7 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" - integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + integrity sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw== is-docker@^2.0.0: version "2.0.0" @@ -13754,9 +13898,9 @@ jimp@^0.16.2: regenerator-runtime "^0.13.3" joi@^17.2.1: - version "17.6.0" - resolved "https://registry.yarnpkg.com/joi/-/joi-17.6.0.tgz#0bb54f2f006c09a96e75ce687957bd04290054b2" - integrity sha512-OX5dG6DTbcr/kbMFj0KGYxuew69HPcAE3K/sZpEV2nP6e/j/C0HV+HNiBPCASxdx5T7DMoa0s8UeHWMnb6n2zw== + version "17.7.0" + resolved "https://registry.yarnpkg.com/joi/-/joi-17.7.0.tgz#591a33b1fe1aca2bc27f290bcad9b9c1c570a6b3" + integrity sha512-1/ugc8djfn93rTE3WRKdCzGGt/EtiYKxITMO4Wiv6q5JL1gl9ePt4kBsl1S499nbosspfctIQTpYIhSmHA3WAg== dependencies: "@hapi/hoek" "^9.0.0" "@hapi/topo" "^5.0.0" @@ -13928,6 +14072,11 @@ json5@^2.1.0, json5@^2.1.2, json5@^2.1.3, json5@^2.2.1: resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== +json5@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" @@ -14212,7 +14361,7 @@ lodash.merge@^4.6.2: lodash.throttle@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" - integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== lodash.truncate@^4.4.2: version "4.4.2" @@ -15267,11 +15416,6 @@ ncp@~2.0.0: resolved "https://registry.yarnpkg.com/ncp/-/ncp-2.0.0.tgz#195a21d6c46e361d2fb1281ba38b91e9df7bdbb3" integrity sha1-GVoh1sRuNh0vsSgbo4uR6d9727M= -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - negotiator@0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -15317,7 +15461,7 @@ node-dir@^0.1.10, node-dir@^0.1.17: dependencies: minimatch "^3.0.2" -node-fetch@2.6.7, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: +node-fetch@2.6.7, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== @@ -15332,6 +15476,13 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-fetch@^2.2.0: + version "2.6.8" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.8.tgz#a68d30b162bc1d8fd71a367e81b997e1f4d4937e" + integrity sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg== + dependencies: + whatwg-url "^5.0.0" + node-forge@^1.2.1, node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" @@ -16600,9 +16751,9 @@ promise@^7.1.1: asap "~2.0.3" promise@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/promise/-/promise-8.1.0.tgz#697c25c3dfe7435dd79fcd58c38a135888eaf05e" - integrity sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q== + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== dependencies: asap "~2.0.6" @@ -16937,9 +17088,9 @@ react-dev-utils@^11.0.3: text-table "0.2.0" react-devtools-core@^4.23.0: - version "4.25.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.25.0.tgz#78b11a2c9f81dd9ebff3745ab4ee2147cc96c12a" - integrity sha512-iewRrnu0ZnmfL+jJayKphXj04CFh6i3ezVnpCtcnZbTPSQgN09XqHAzXbKbqNDl7aTg9QLNkQRP6M3DvdrinWA== + version "4.27.1" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.27.1.tgz#167aa174383c65786cbb7e965a5b39c702f0a2d3" + integrity sha512-qXhcxxDWiFmFAOq48jts9YQYe1+wVoUXzJTlY4jbaATzyio6dd6CUGu3dXBhREeVgpZ+y4kg6vFJzIOZh6vY2w== dependencies: shell-quote "^1.6.1" ws "^7" @@ -17402,9 +17553,9 @@ react-native-webview@10.3.2: escape-string-regexp "2.0.0" invariant "2.2.4" -react-native@RocketChat/react-native#fix.request-challenges: +react-native@RocketChat/react-native#281140d2e39d66a8e486db397ce0bf5bd0e334fc: version "0.68.2" - resolved "https://codeload.github.com/RocketChat/react-native/tar.gz/182dbfa30458aa9ac022741d0888d9a5ac296255" + resolved "https://codeload.github.com/RocketChat/react-native/tar.gz/281140d2e39d66a8e486db397ce0bf5bd0e334fc" dependencies: "@jest/create-cache-key-function" "^27.0.1" "@react-native-community/cli" "^7.0.3" @@ -17754,7 +17905,12 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.2, regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: +regenerator-runtime@^0.13.2: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regenerator-runtime@^0.13.3, regenerator-runtime@^0.13.4: version "0.13.5" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== @@ -17999,7 +18155,7 @@ resolve-cwd@^3.0.0: resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== resolve-from@^4.0.0: version "4.0.0" @@ -18504,9 +18660,9 @@ shell-quote@1.7.2, shell-quote@^1.7.2: integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== shell-quote@^1.6.1, shell-quote@^1.7.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + version "1.7.4" + resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8" + integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw== side-channel@^1.0.4: version "1.0.4" From ad3bfa830c9372dbecec7121a5ca40f70d777e5b Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 18 Jan 2023 19:15:22 -0300 Subject: [PATCH 24/29] Chore: Rotate CI secrets (#4797) --- .circleci/config.yml | 38 +++++++++++++++++++++----------------- ios/fastlane/Fastfile | 8 ++++---- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0de081c36..997906734 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -118,26 +118,26 @@ commands: if [[ $CIRCLE_JOB == "android-build-official" ]]; then echo -e "APPLICATION_ID=chat.rocket.android" >> ./gradle.properties echo -e "BugsnagAPIKey=$BUGSNAG_KEY_OFFICIAL" >> ./gradle.properties - echo $CHAT_ROCKET_ANDROID_STORE_FILE_BASE64_JKS | base64 --decode > ./app/$KEYSTORE_OFFICIAL + echo $KEYSTORE_OFFICIAL_BASE64 | base64 --decode > ./app/$KEYSTORE_OFFICIAL echo -e "KEYSTORE=$KEYSTORE_OFFICIAL" >> ./gradle.properties - echo -e "KEYSTORE_PASSWORD=$CHAT_ROCKET_ANDROID_STORE_PASSWORD" >> ./gradle.properties - echo -e "KEY_ALIAS=$CHAT_ROCKET_ANDROID_KEY_ALIAS" >> ./gradle.properties - echo -e "KEY_PASSWORD=$CHAT_ROCKET_ANDROID_KEY_PASSWORD" >> ./gradle.properties + echo -e "KEYSTORE_PASSWORD=$KEYSTORE_OFFICIAL_PASSWORD" >> ./gradle.properties + echo -e "KEY_ALIAS=$KEYSTORE_OFFICIAL_ALIAS" >> ./gradle.properties + echo -e "KEY_PASSWORD=$KEYSTORE_OFFICIAL_PASSWORD" >> ./gradle.properties else echo -e "APPLICATION_ID=chat.rocket.reactnative" >> ./gradle.properties echo -e "BugsnagAPIKey=$BUGSNAG_KEY" >> ./gradle.properties - echo $KEYSTORE_BASE64 | base64 --decode > ./app/$KEYSTORE - echo -e "KEYSTORE=$KEYSTORE" >> ./gradle.properties - echo -e "KEYSTORE_PASSWORD=$KEYSTORE_PASSWORD" >> ./gradle.properties - echo -e "KEY_ALIAS=$KEY_ALIAS" >> ./gradle.properties - echo -e "KEY_PASSWORD=$KEYSTORE_PASSWORD" >> ./gradle.properties + echo $KEYSTORE_EXPERIMENTAL_BASE64 | base64 --decode > ./app/$KEYSTORE_EXPERIMENTAL + echo -e "KEYSTORE=$KEYSTORE_EXPERIMENTAL" >> ./gradle.properties + echo -e "KEYSTORE_PASSWORD=$KEYSTORE_EXPERIMENTAL_PASSWORD" >> ./gradle.properties + echo -e "KEY_ALIAS=$KEYSTORE_EXPERIMENTAL_ALIAS" >> ./gradle.properties + echo -e "KEY_PASSWORD=$KEYSTORE_EXPERIMENTAL_PASSWORD" >> ./gradle.properties fi working_directory: android - run: name: Set Google Services command: | - if [[ $KEYSTORE ]]; then + if [[ $GOOGLE_SERVICES_ANDROID ]]; then echo $GOOGLE_SERVICES_ANDROID | base64 --decode > google-services.json fi working_directory: android/app @@ -151,7 +151,7 @@ commands: if [[ $CIRCLE_JOB == "android-build-experimental" || "android-automatic-build-experimental" ]]; then ./gradlew bundleExperimentalPlayRelease fi - if [[ ! $KEYSTORE ]]; then + if [[ ! $GOOGLE_SERVICES_ANDROID ]]; then ./gradlew assembleExperimentalPlayDebug fi working_directory: android @@ -200,8 +200,12 @@ commands: - run: name: Set Google Services command: | - if [[ $KEYSTORE ]]; then - echo $GOOGLE_SERVICES_IOS | base64 --decode > GoogleService-Info.plist + if [[ $APP_STORE_CONNECT_API_KEY_BASE64 ]]; then + if [[ $CIRCLE_JOB == "ios-build-official" ]]; then + echo $GOOGLE_SERVICES_IOS | base64 --decode > GoogleService-Info.plist + else + echo $GOOGLE_SERVICES_IOS_EXPERIMENTAL | base64 --decode > GoogleService-Info.plist + fi fi working_directory: ios - run: @@ -223,12 +227,12 @@ commands: /usr/libexec/PlistBuddy -c "Set IS_OFFICIAL NO" ./NotificationService/Info.plist fi - if [[ $APP_STORE_CONNECT_API_BASE64 ]]; then - echo $APP_STORE_CONNECT_API_BASE64 | base64 --decode > ./fastlane/app_store_connect_api_key.p8 + if [[ $APP_STORE_CONNECT_API_KEY_BASE64 ]]; then + echo $APP_STORE_CONNECT_API_KEY_BASE64 | base64 --decode > ./fastlane/app_store_connect_api_key.p8 if [[ $CIRCLE_JOB == "ios-build-official" ]]; then bundle exec fastlane ios build_official else - if [[ $KEYSTORE ]]; then + if [[ $APP_STORE_CONNECT_API_KEY_BASE64 ]]; then bundle exec fastlane ios build_experimental else bundle exec fastlane ios build_fork @@ -318,7 +322,7 @@ commands: - run: name: Fastlane Tesflight Upload command: | - echo $APP_STORE_CONNECT_API_BASE64 | base64 --decode > ./fastlane/app_store_connect_api_key.p8 + echo $APP_STORE_CONNECT_API_KEY_BASE64 | base64 --decode > ./fastlane/app_store_connect_api_key.p8 bundle exec fastlane ios beta official:<< parameters.official >> working_directory: ios - save_cache: *save-gems-cache diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile index f3bcd449b..2a313d2cb 100644 --- a/ios/fastlane/Fastfile +++ b/ios/fastlane/Fastfile @@ -28,8 +28,8 @@ platform :ios do desc "Submit a new Beta Build to Apple TestFlight" lane :beta do |options| api_key = app_store_connect_api_key( - key_id: "F296L2294Y", - issuer_id: "69a6de8e-75cf-47e3-e053-5b8c7c11a4d1", + key_id: ENV["APP_STORE_CONNECT_API_KEY_ID"], + issuer_id: ENV["APP_STORE_CONNECT_API_KEY_ISSUER_ID"], key_filepath: 'fastlane/app_store_connect_api_key.p8', in_house: false ) @@ -49,8 +49,8 @@ platform :ios do desc "Build Experimental app" lane :build_experimental do api_key = app_store_connect_api_key( - key_id: "F296L2294Y", - issuer_id: "69a6de8e-75cf-47e3-e053-5b8c7c11a4d1", + key_id: ENV["APP_STORE_CONNECT_API_KEY_ID"], + issuer_id: ENV["APP_STORE_CONNECT_API_KEY_ISSUER_ID"], key_filepath: 'fastlane/app_store_connect_api_key.p8', in_house: false ) From 593d12b129c127d732149ce6c55196c37227cd4a Mon Sep 17 00:00:00 2001 From: Reinaldo Neto <47038980+reinaldonetof@users.noreply.github.com> Date: Fri, 20 Jan 2023 11:42:18 -0300 Subject: [PATCH 25/29] [FIX] Add User Generated Content link on login (#4827) * [FIX] Add User Generated Content link on login * minor tweak --- app/containers/UserGeneratedContentRules.tsx | 62 ++++++++++++++++++++ app/views/LoginView.tsx | 8 ++- app/views/RegisterView.tsx | 32 +--------- 3 files changed, 70 insertions(+), 32 deletions(-) create mode 100644 app/containers/UserGeneratedContentRules.tsx diff --git a/app/containers/UserGeneratedContentRules.tsx b/app/containers/UserGeneratedContentRules.tsx new file mode 100644 index 000000000..620efd82c --- /dev/null +++ b/app/containers/UserGeneratedContentRules.tsx @@ -0,0 +1,62 @@ +import React from 'react'; +import { View, StyleSheet, Text, ViewStyle } from 'react-native'; + +import sharedStyles from '../views/Styles'; +import { useTheme } from '../theme'; +import openLink from '../lib/methods/helpers/openLink'; +import { useAppSelector } from '../lib/hooks'; +import I18n from '../i18n'; + +const styles = StyleSheet.create({ + bottomContainer: { + flexDirection: 'column', + alignItems: 'center', + marginBottom: 32, + marginHorizontal: 30 + }, + bottomContainerText: { + ...sharedStyles.textRegular, + fontSize: 13 + }, + bottomContainerTextBold: { + ...sharedStyles.textSemibold, + fontSize: 13 + } +}); + +const UGCRules = ({ styleContainer }: { styleContainer?: ViewStyle }) => { + const { colors, theme } = useTheme(); + const { server } = useAppSelector(state => ({ + server: state.server.server + })); + + const openContract = (route: string) => { + if (!server) { + return; + } + openLink(`${server}/${route}`, theme); + }; + return ( + + + {`${I18n.t('Onboarding_agree_terms')}\n`} + openContract('terms-of-service')} + > + {I18n.t('Terms_of_Service')} + {' '} + {I18n.t('and')} + openContract('privacy-policy')} + > + {' '} + {I18n.t('Privacy_Policy')} + + + + ); +}; + +export default UGCRules; diff --git a/app/views/LoginView.tsx b/app/views/LoginView.tsx index 17e6e0054..b43830f73 100644 --- a/app/views/LoginView.tsx +++ b/app/views/LoginView.tsx @@ -15,6 +15,7 @@ import I18n from '../i18n'; import { OutsideParamList } from '../stacks/types'; import { withTheme } from '../theme'; import sharedStyles from './Styles'; +import UGCRules from '../containers/UserGeneratedContentRules'; const styles = StyleSheet.create({ registerDisabled: { @@ -31,8 +32,7 @@ const styles = StyleSheet.create({ }, bottomContainer: { flexDirection: 'column', - alignItems: 'center', - marginBottom: 32 + alignItems: 'center' }, bottomContainerText: { ...sharedStyles.textRegular, @@ -44,6 +44,9 @@ const styles = StyleSheet.create({ }, loginButton: { marginTop: 16 + }, + ugcContainer: { + marginTop: 32 } }); @@ -224,6 +227,7 @@ class LoginView extends React.Component { {Accounts_RegistrationForm_LinkReplacementText} )} + ); }; diff --git a/app/views/RegisterView.tsx b/app/views/RegisterView.tsx index 039cb277a..83789f84d 100644 --- a/app/views/RegisterView.tsx +++ b/app/views/RegisterView.tsx @@ -17,9 +17,9 @@ import { OutsideParamList } from '../stacks/types'; import { withTheme } from '../theme'; import { showErrorAlert, isValidEmail } from '../lib/methods/helpers'; import log, { events, logEvent } from '../lib/methods/helpers/log'; -import openLink from '../lib/methods/helpers/openLink'; import sharedStyles from './Styles'; import { Services } from '../lib/services'; +import UGCRules from '../containers/UserGeneratedContentRules'; const styles = StyleSheet.create({ title: { @@ -50,7 +50,6 @@ const styles = StyleSheet.create({ }); interface IProps extends IBaseScreen { - server: string; Site_Name: string; Gitlab_URL: string; CAS_enabled: boolean; @@ -156,14 +155,6 @@ class RegisterView extends React.Component { this.setState({ saving: false }); }; - openContract = (route: string) => { - const { server, theme } = this.props; - if (!server) { - return; - } - openLink(`${server}/${route}`, theme); - }; - renderCustomFields = () => { const { customFields } = this.state; const { Accounts_CustomFields } = this.props; @@ -315,25 +306,7 @@ class RegisterView extends React.Component { style={styles.registerButton} /> - - - {`${I18n.t('Onboarding_agree_terms')}\n`} - this.openContract('terms-of-service')} - > - {I18n.t('Terms_of_Service')} - {' '} - {I18n.t('and')} - this.openContract('privacy-policy')} - > - {' '} - {I18n.t('Privacy_Policy')} - - - + {showLoginButton ? ( @@ -352,7 +325,6 @@ class RegisterView extends React.Component { } const mapStateToProps = (state: IApplicationState) => ({ - server: state.server.server, Site_Name: state.settings.Site_Name as string, Gitlab_URL: state.settings.API_Gitlab_URL as string, CAS_enabled: state.settings.CAS_enabled as boolean, From 38511d2f2d6d150e617d23ac299ce2b5b5b2c86f Mon Sep 17 00:00:00 2001 From: Gleidson Daniel Silva Date: Fri, 20 Jan 2023 13:55:53 -0300 Subject: [PATCH 26/29] [IMPROVE] Migrate from react-native-jitsi-meet to lib react-native-jitsimeet-custom (#4823) Co-authored-by: Diego Mello --- .circleci/config.yml | 6 +- .ruby-version | 2 +- Gemfile | 2 +- app/views/JitsiMeetView.ios.tsx | 175 +++---- ios/Gemfile.lock | 64 +-- ios/Podfile | 5 +- ios/Podfile.lock | 91 ++-- ios/RocketChatRN.xcodeproj/project.pbxproj | 488 +++++++++--------- ios/RocketChatRN/AppDelegate.mm | 6 +- package.json | 2 +- ...+react-native-jitsimeet-custom+2.5.0.patch | 11 + react-native.config.js | 2 +- yarn.lock | 8 +- 13 files changed, 411 insertions(+), 451 deletions(-) create mode 100644 patches/@socialcode-rob1+react-native-jitsimeet-custom+2.5.0.patch diff --git a/.circleci/config.yml b/.circleci/config.yml index 997906734..8f45a9a2a 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,7 +3,7 @@ defaults: &defaults macos: &macos macos: - xcode: "13.3.0" + xcode: "14.2.0" resource_class: large bash-env: &bash-env @@ -51,14 +51,14 @@ save-gems-cache: &save-gems-cache update-fastlane-ios: &update-fastlane-ios name: Update Fastlane command: | - echo "ruby-2.6.4" > ~/.ruby-version + echo "ruby-2.7.7" > ~/.ruby-version bundle install working_directory: ios update-fastlane-android: &update-fastlane-android name: Update Fastlane command: | - echo "ruby-2.6.4" > ~/.ruby-version + echo "ruby-2.7.7" > ~/.ruby-version bundle install working_directory: android diff --git a/.ruby-version b/.ruby-version index a4dd9dba4..1f7da99d4 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.7.4 +2.7.7 diff --git a/Gemfile b/Gemfile index bbba14aff..f537d7be3 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,4 @@ source 'https://rubygems.org' # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version -ruby '2.7.4' +ruby '2.7.7' gem 'cocoapods', '~> 1.11', '>= 1.11.2' \ No newline at end of file diff --git a/app/views/JitsiMeetView.ios.tsx b/app/views/JitsiMeetView.ios.tsx index 60cf7198a..a9eeae1ad 100644 --- a/app/views/JitsiMeetView.ios.tsx +++ b/app/views/JitsiMeetView.ios.tsx @@ -1,137 +1,78 @@ -import React from 'react'; -import { StyleSheet } from 'react-native'; -import BackgroundTimer from 'react-native-background-timer'; -import JitsiMeet, { JitsiMeetView as RNJitsiMeetView } from 'react-native-jitsi-meet'; -import { connect } from 'react-redux'; +// @ts-ignore +// eslint-disable-next-line import/no-unresolved +import JitsiMeet from '@socialcode-rob1/react-native-jitsimeet-custom'; +import React, { useEffect } from 'react'; +import { RouteProp, useNavigation, useRoute } from '@react-navigation/native'; import RCActivityIndicator from '../containers/ActivityIndicator'; -import { IApplicationState, IBaseScreen, IUser } from '../definitions'; +import { useAppSelector } from '../lib/hooks'; import { events, logEvent } from '../lib/methods/helpers/log'; -import { Services } from '../lib/services'; import { getUserSelector } from '../selectors/login'; import { ChatsStackParamList } from '../stacks/types'; -import { withTheme } from '../theme'; const formatUrl = (url: string, baseUrl: string, uriSize: number, avatarAuthURLFragment: string) => `${baseUrl}/avatar/${url}?format=png&width=${uriSize}&height=${uriSize}${avatarAuthURLFragment}`; -interface IJitsiMeetViewState { - userInfo: { - displayName: string; - avatar: string; - }; - loading: boolean; -} +const JitsiMeetView = (): React.ReactElement => { + const { goBack } = useNavigation(); + const { + params: { url, onlyAudio, videoConf } + } = useRoute>(); + const user = useAppSelector(state => getUserSelector(state)); + const baseUrl = useAppSelector(state => state.server.server); -interface IJitsiMeetViewProps extends IBaseScreen { - baseUrl: string; - user: IUser; -} + useEffect(() => { + initJitsi(); + }, []); -class JitsiMeetView extends React.Component { - private rid: string; - private url: string; - private videoConf: boolean; - private jitsiTimeout: number | null; - - constructor(props: IJitsiMeetViewProps) { - super(props); - this.rid = props.route.params?.rid; - this.url = props.route.params?.url; - this.videoConf = !!props.route.params?.videoConf; - this.jitsiTimeout = null; - - const { user, baseUrl } = props; + const initJitsi = async () => { + const audioOnly = onlyAudio ?? false; const { name, id: userId, token, username } = user; const avatarAuthURLFragment = `&rc_token=${token}&rc_uid=${userId}`; const avatar = formatUrl(username, baseUrl, 100, avatarAuthURLFragment); - this.state = { - userInfo: { - displayName: name as string, - avatar - }, - loading: true + + const userInfo = { + displayName: name as string, + avatar }; - } + const regex = /(?:\/.*\/)(.*)/; + const urlWithoutServer = regex.exec(url)![1]; + const serverUrl = url.replace(`/${urlWithoutServer}`, ''); + const room = urlWithoutServer.split('#')[0]; - componentDidMount() { - const { route } = this.props; - const { userInfo } = this.state; - - setTimeout(() => { - const onlyAudio = route.params?.onlyAudio ?? false; - if (onlyAudio) { - JitsiMeet.audioCall(this.url, userInfo); - } else { - JitsiMeet.call(this.url, userInfo); + const conferenceOptions = { + room, + serverUrl, + userInfo: { + displayName: userInfo.displayName, + avatar: userInfo.avatar + }, + subject: room, + audioOnly, + audioMuted: false, + videoMuted: audioOnly, + featureFlags: { + 'live-streaming.enabled': false, + 'calendar.enabled': false, + 'call-integration.enabled': false, + 'pip.enabled': false, + 'invite.enabled': false, + 'welcomepage.enabled': false, + 'add-people.enabled': false + }, + configOverrides: { + 'breakoutRooms.hideAddRoomButton': false, + 'breakoutRooms.hideAutoAssignButton': false, + 'breakoutRooms.hideJoinRoomButton': false } - this.setState({ loading: false }); - }, 1000); - } - - componentWillUnmount() { - logEvent(events.JM_CONFERENCE_TERMINATE); - if (this.jitsiTimeout && !this.videoConf) { - BackgroundTimer.clearInterval(this.jitsiTimeout); - this.jitsiTimeout = null; - BackgroundTimer.stopBackgroundTimer(); - } - JitsiMeet.endCall(); - } - - onConferenceWillJoin = () => { - this.setState({ loading: false }); + }; + logEvent(videoConf ? events.LIVECHAT_VIDEOCONF_JOIN : events.JM_CONFERENCE_JOIN); + await JitsiMeet.launchJitsiMeetView(conferenceOptions); + logEvent(videoConf ? events.LIVECHAT_VIDEOCONF_TERMINATE : events.JM_CONFERENCE_TERMINATE); + goBack(); }; - // Jitsi Update Timeout needs to be called every 10 seconds to make sure - // call is not ended and is available to web users. - onConferenceJoined = () => { - logEvent(this.videoConf ? events.LIVECHAT_VIDEOCONF_JOIN : events.JM_CONFERENCE_JOIN); - this.setState({ loading: false }); - if (this.rid && !this.videoConf) { - Services.updateJitsiTimeout(this.rid).catch((e: unknown) => console.log(e)); - if (this.jitsiTimeout) { - BackgroundTimer.clearInterval(this.jitsiTimeout); - BackgroundTimer.stopBackgroundTimer(); - this.jitsiTimeout = null; - } - this.jitsiTimeout = BackgroundTimer.setInterval(() => { - Services.updateJitsiTimeout(this.rid).catch((e: unknown) => console.log(e)); - }, 10000); - } - }; + return ; +}; - onConferenceTerminated = () => { - const { navigation } = this.props; - logEvent(this.videoConf ? events.LIVECHAT_VIDEOCONF_TERMINATE : events.JM_CONFERENCE_TERMINATE); - // fix to go back when the call ends - setTimeout(() => { - JitsiMeet.endCall(); - navigation.pop(); - }, 200); - }; - - render() { - const { loading } = this.state; - - return ( - <> - - {loading ? : null} - - ); - } -} - -const mapStateToProps = (state: IApplicationState) => ({ - user: getUserSelector(state), - baseUrl: state.server.server -}); - -export default connect(mapStateToProps)(withTheme(JitsiMeetView)); +export default JitsiMeetView; diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock index ef4092376..4c487b870 100644 --- a/ios/Gemfile.lock +++ b/ios/Gemfile.lock @@ -9,28 +9,28 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.600.0) - aws-sdk-core (3.131.2) + aws-partitions (1.696.0) + aws-sdk-core (3.169.0) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.525.0) - aws-sigv4 (~> 1.1) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.57.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (1.62.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.114.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-s3 (1.118.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) - aws-sigv4 (1.5.0) + aws-sigv4 (1.5.2) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.1.0) @@ -81,13 +81,13 @@ GEM rake (>= 12.0.0, < 14.0.0) domain_name (0.5.20190701) unf (>= 0.0.5, < 1.0.0) - dotenv (2.7.6) + dotenv (2.8.1) emoji_regex (3.2.3) escape (0.0.4) ethon (0.15.0) ffi (>= 1.15.0) - excon (0.92.3) - faraday (1.10.0) + excon (0.97.1) + faraday (1.10.3) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -116,7 +116,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.6) - fastlane (2.206.2) + fastlane (2.211.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -164,9 +164,9 @@ GEM gh_inspector (1.1.3) git (1.11.0) rchardet (~> 1.8) - google-apis-androidpublisher_v3 (0.22.0) - google-apis-core (>= 0.5, < 2.a) - google-apis-core (0.6.0) + google-apis-androidpublisher_v3 (0.32.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-core (0.9.5) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -175,27 +175,27 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.12.0) - google-apis-core (>= 0.6, < 2.a) - google-apis-playcustomapp_v1 (0.9.0) - google-apis-core (>= 0.6, < 2.a) - google-apis-storage_v1 (0.15.0) - google-apis-core (>= 0.5, < 2.a) + google-apis-iamcredentials_v1 (0.16.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-playcustomapp_v1 (0.12.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-storage_v1 (0.19.0) + google-apis-core (>= 0.9.0, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.2.0) - google-cloud-storage (1.36.2) + google-cloud-errors (1.3.0) + google-cloud-storage (1.44.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.1) + google-apis-storage_v1 (~> 0.19.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.2.0) + googleauth (1.3.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -208,11 +208,11 @@ GEM httpclient (2.8.3) i18n (1.10.0) concurrent-ruby (~> 1.0) - jmespath (1.6.1) - json (2.6.2) - jwt (2.4.1) + jmespath (1.6.2) + json (2.6.3) + jwt (2.6.0) memoist (0.16.2) - mini_magick (4.11.0) + mini_magick (4.12.0) mini_mime (1.1.2) minitest (5.16.1) molinillo (0.8.0) diff --git a/ios/Podfile b/ios/Podfile index 306f8ced6..659ca2481 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -35,8 +35,6 @@ def all_pods end abstract_target 'defaults' do - # force use our own JitsiMeetSDK - pod 'JitsiMeetSDK', :git => 'https://github.com/RocketChat/jitsi-meet-ios-sdk-releases.git' all_pods @@ -52,6 +50,9 @@ post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO' + config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = "" + config.build_settings['CODE_SIGNING_REQUIRED'] = "NO" + config.build_settings['CODE_SIGNING_ALLOWED'] = "NO" case target.name when 'RCT-Folly' config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index e412a206c..cf0c0eacf 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -82,54 +82,56 @@ PODS: - GoogleUtilities/Network (~> 7.7) - "GoogleUtilities/NSData+zlib (~> 7.7)" - nanopb (~> 2.30908.0) - - GoogleDataTransport (9.1.4): + - GoogleDataTransport (9.2.0): - GoogleUtilities/Environment (~> 7.7) - nanopb (< 2.30910.0, >= 2.30908.0) - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/AppDelegateSwizzler (7.7.0): + - GoogleUtilities/AppDelegateSwizzler (7.11.0): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (7.7.0): + - GoogleUtilities/Environment (7.11.0): - PromisesObjC (< 3.0, >= 1.2) - - GoogleUtilities/Logger (7.7.0): + - GoogleUtilities/Logger (7.11.0): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (7.7.0): + - GoogleUtilities/MethodSwizzler (7.11.0): - GoogleUtilities/Logger - - GoogleUtilities/Network (7.7.0): + - GoogleUtilities/Network (7.11.0): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (7.7.0)" - - GoogleUtilities/Reachability (7.7.0): + - "GoogleUtilities/NSData+zlib (7.11.0)" + - GoogleUtilities/Reachability (7.11.0): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (7.7.0): + - GoogleUtilities/UserDefaults (7.11.0): - GoogleUtilities/Logger - hermes-engine (0.11.0) - iosMath (0.9.4) - - JitsiMeetSDK (3.6.0) + - JitsiMeetSDKLite (7.0.1-lite): + - JitsiWebRTC (~> 106.0) + - JitsiWebRTC (106.0.0) - KeyCommands (2.0.3): - React - libevent (2.1.12) - - libwebp (1.2.1): - - libwebp/demux (= 1.2.1) - - libwebp/mux (= 1.2.1) - - libwebp/webp (= 1.2.1) - - libwebp/demux (1.2.1): + - libwebp (1.2.4): + - libwebp/demux (= 1.2.4) + - libwebp/mux (= 1.2.4) + - libwebp/webp (= 1.2.4) + - libwebp/demux (1.2.4): - libwebp/webp - - libwebp/mux (1.2.1): + - libwebp/mux (1.2.4): - libwebp/demux - - libwebp/webp (1.2.1) + - libwebp/webp (1.2.4) - MMKV (1.2.13): - MMKVCore (~> 1.2.13) - - MMKVCore (1.2.14) + - MMKVCore (1.2.15) - nanopb (2.30908.0): - nanopb/decode (= 2.30908.0) - nanopb/encode (= 2.30908.0) - nanopb/decode (2.30908.0) - nanopb/encode (2.30908.0) - OpenSSL-Universal (1.1.1100) - - PromisesObjC (2.1.0) + - PromisesObjC (2.1.1) - RCT-Folly (2021.06.28.00-v2): - boost - DoubleConversion @@ -364,9 +366,9 @@ PODS: - React-Core - react-native-document-picker (8.1.2): - React-Core - - react-native-jitsi-meet (3.6.0): - - JitsiMeetSDK (= 3.6.0) - - React + - react-native-jitsimeet-custom (2.5.0): + - JitsiMeetSDKLite (= 7.0.1-lite) + - React-Core - react-native-mmkv-storage (0.8.0): - MMKV (= 1.2.13) - React-Core @@ -573,10 +575,10 @@ PODS: - React-Core - RNVectorIcons (9.1.0): - React-Core - - SDWebImage (5.12.5): - - SDWebImage/Core (= 5.12.5) - - SDWebImage/Core (5.12.5) - - SDWebImageWebPCoder (0.8.4): + - SDWebImage (5.12.6): + - SDWebImage/Core (= 5.12.6) + - SDWebImage/Core (5.12.6) + - SDWebImageWebPCoder (0.8.5): - libwebp (~> 1.0) - SDWebImage/Core (~> 5.10) - simdjson (0.9.6-fix2) @@ -605,7 +607,6 @@ DEPENDENCIES: - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - hermes-engine (~> 0.11.0) - - JitsiMeetSDK (from `https://github.com/RocketChat/jitsi-meet-ios-sdk-releases.git`) - KeyCommands (from `../node_modules/react-native-keycommands`) - libevent (~> 2.1.12) - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) @@ -629,7 +630,7 @@ DEPENDENCIES: - "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)" - "react-native-cookies (from `../node_modules/@react-native-cookies/cookies`)" - react-native-document-picker (from `../node_modules/react-native-document-picker`) - - react-native-jitsi-meet (from `../node_modules/react-native-jitsi-meet`) + - "react-native-jitsimeet-custom (from `../node_modules/@socialcode-rob1/react-native-jitsimeet-custom`)" - react-native-mmkv-storage (from `../node_modules/react-native-mmkv-storage`) - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - react-native-notifications (from `../node_modules/react-native-notifications`) @@ -695,6 +696,8 @@ SPEC REPOS: - GoogleUtilities - hermes-engine - iosMath + - JitsiMeetSDKLite + - JitsiWebRTC - libevent - libwebp - MMKV @@ -741,8 +744,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/React/FBReactNativeSpec" glog: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" - JitsiMeetSDK: - :git: https://github.com/RocketChat/jitsi-meet-ios-sdk-releases.git KeyCommands: :path: "../node_modules/react-native-keycommands" RCT-Folly: @@ -783,8 +784,8 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-cookies/cookies" react-native-document-picker: :path: "../node_modules/react-native-document-picker" - react-native-jitsi-meet: - :path: "../node_modules/react-native-jitsi-meet" + react-native-jitsimeet-custom: + :path: "../node_modules/@socialcode-rob1/react-native-jitsimeet-custom" react-native-mmkv-storage: :path: "../node_modules/react-native-mmkv-storage" react-native-netinfo: @@ -886,11 +887,6 @@ EXTERNAL SOURCES: Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" -CHECKOUT OPTIONS: - JitsiMeetSDK: - :commit: 23797290da02324c09998a63781cd1fe0047211d - :git: https://github.com/RocketChat/jitsi-meet-ios-sdk-releases.git - SPEC CHECKSUMS: boost: a7c83b31436843459a1961bfd74b96033dc77234 BugsnagReactNative: a97b3132c1854fd7bf92350fabd505e3ebdd7829 @@ -917,19 +913,20 @@ SPEC CHECKSUMS: fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 476ee3e89abb49e07f822b48323c51c57124b572 GoogleAppMeasurement: 4c19f031220c72464d460c9daa1fb5d1acce958e - GoogleDataTransport: 5fffe35792f8b96ec8d6775f5eccd83c998d5a3b - GoogleUtilities: e0913149f6b0625b553d70dae12b49fc62914fd1 + GoogleDataTransport: 1c8145da7117bd68bbbed00cf304edb6a24de00f + GoogleUtilities: c2bdc4cf2ce786c4d2e6b3bcfd599a25ca78f06f hermes-engine: 84e3af1ea01dd7351ac5d8689cbbea1f9903ffc3 iosMath: f7a6cbadf9d836d2149c2a84c435b1effc244cba - JitsiMeetSDK: 476329f72a866f714d2802bafe1729de6d644ccf + JitsiMeetSDKLite: d59573336ce887ec52327a9927aa8443f560d0b9 + JitsiWebRTC: f441eb0e2d67f0588bf24e21c5162e97342714fb KeyCommands: f66c535f698ed14b3d3a4e58859d79a827ea907e libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 - libwebp: 98a37e597e40bfdb4c911fc98f2c53d0b12d05fc + libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef MMKV: aac95d817a100479445633f2b3ed8961b4ac5043 - MMKVCore: 89f5c8a66bba2dcd551779dea4d412eeec8ff5bb + MMKVCore: ddf41b9d9262f058419f9ba7598719af56c02cd3 nanopb: a0ba3315591a9ae0a16a309ee504766e90db0c96 OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c - PromisesObjC: 99b6f43f9e1044bd87a95a60beff28c2c44ddb72 + PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8 RCTRequired: 3e917ea5377751094f38145fdece525aa90545a0 RCTTypeSafety: c43c072a4bd60feb49a9570b0517892b4305c45e @@ -949,7 +946,7 @@ SPEC CHECKSUMS: react-native-cameraroll: 2957f2bce63ae896a848fbe0d5352c1bd4d20866 react-native-cookies: f54fcded06bb0cda05c11d86788020b43528a26c react-native-document-picker: f5ec1a712ca2a975c233117f044817bb8393cad4 - react-native-jitsi-meet: 3e3ac5d0445091154119f94342efd55c8b1124ce + react-native-jitsimeet-custom: a57ca376bfc1c69f639b138f2de2a10e0ed42c04 react-native-mmkv-storage: 8ba3c0216a6df283ece11205b442a3e435aec4e5 react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d react-native-notifications: 83b4fd4a127a6c918fc846cae90da60f84819e44 @@ -997,13 +994,13 @@ SPEC CHECKSUMS: RNScreens: 40a2cb40a02a609938137a1e0acfbf8fc9eebf19 RNSVG: 302bfc9905bd8122f08966dc2ce2d07b7b52b9f8 RNVectorIcons: 7923e585eaeb139b9f4531d25a125a1500162a0b - SDWebImage: 0905f1b7760fc8ac4198cae0036600d67478751e - SDWebImageWebPCoder: f93010f3f6c031e2f8fb3081ca4ee6966c539815 + SDWebImage: a47aea9e3d8816015db4e523daff50cfd294499d + SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d simdjson: 85016870cd17207312b718ef6652eb6a1cd6a2b0 TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863 WatermelonDB: 577c61fceff16e9f9103b59d14aee4850c0307b6 Yoga: 99652481fcd320aefa4a7ef90095b95acd181952 -PODFILE CHECKSUM: 052cbf741847405abc3b902c9e107c1ebb48b252 +PODFILE CHECKSUM: 670cc455843e2a5aeeaabfba29cc1194a8948056 COCOAPODS: 1.11.3 diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index ea40c4f57..b10946881 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -79,8 +79,9 @@ 1EFEB5982493B6640072EDC0 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EFEB5972493B6640072EDC0 /* NotificationService.swift */; }; 1EFEB59C2493B6640072EDC0 /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EFEB5952493B6640072EDC0 /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; + 460E782729C913ACC2B8EA57 /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EFDB72665B51D50D102E732D /* libPods-defaults-Rocket.Chat.a */; }; 4C4C8603EF082F0A33A95522 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */; }; - 53A4B76EC76B5C33C86828DB /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A3D4E5E365572E4B0A35F84 /* libPods-defaults-Rocket.Chat.a */; }; + 65360F282979AA1500778C04 /* JitsiMeetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65360F272979AA1500778C04 /* JitsiMeetViewController.swift */; }; 7A006F14229C83B600803143 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7A006F13229C83B600803143 /* GoogleService-Info.plist */; }; 7A0D62D2242AB187006D5C06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */; }; 7A14FCED257FEB3A005BDCD4 /* Experimental.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */; }; @@ -140,13 +141,13 @@ 7AE10C0628A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; }; 7AE10C0728A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; }; 7AE10C0828A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; }; + 7CD6EA74BD37266C0BCAC972 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0A99BB53A40C30B4B264BFA5 /* libPods-defaults-ShareRocketChatRN.a */; }; 85160EB6C143E0493FE5F014 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194D9A8897F4A486C2C6F89A /* ExpoModulesProvider.swift */; }; - 8635E3F5E50AB70942D94811 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8392E4F8E23182B188A28283 /* libPods-defaults-ShareRocketChatRN.a */; }; + A809BED7D6DCDD5DC5D2140F /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6EDFA9E4FA6C0BDF77CD23B /* libPods-defaults-RocketChatRN.a */; }; BC404914E86821389EEB543D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */; }; - C545E1FF9F7878253C7CAFC7 /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7BB98B79DB037ACA18DE98A9 /* libPods-defaults-RocketChatRN.a */; }; + CF05A6FEE970FC0F23969445 /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7107AAFABF867C2E02778938 /* libPods-defaults-NotificationService.a */; }; D94D81FB9E10756FAA03F203 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */; }; DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BA7E862283664608B3894E34 /* libWatermelonDB.a */; }; - E87275738A44046F4F46262B /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 51E3BC4AF921B56AA2F88972 /* libPods-defaults-NotificationService.a */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -211,6 +212,8 @@ 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = ""; }; 016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-ShareRocketChatRN/ExpoModulesProvider.swift"; sourceTree = ""; }; 06BB44DD4855498082A744AD /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; + 06C3117EECD04F11CB1C29A9 /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = ""; }; + 0A99BB53A40C30B4B264BFA5 /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07F961A680F5B00A75B9A /* Rocket.Chat Experimental.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Rocket.Chat Experimental.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RocketChatRN/AppDelegate.h; sourceTree = ""; }; 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RocketChatRN/Images.xcassets; sourceTree = ""; }; @@ -250,7 +253,6 @@ 1E6737FF24DC52660009E081 /* NotificationService-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NotificationService-Bridging-Header.h"; sourceTree = ""; }; 1E67380324DC529B0009E081 /* String+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Extensions.swift"; sourceTree = ""; }; 1E680ED82512990700C9257A /* Request.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Request.swift; sourceTree = ""; }; - 1EB4223867025212BA5BD96F /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = ""; }; 1EB8EF712510F1EE00F352B7 /* Storage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Storage.swift; sourceTree = ""; }; 1EC6ACB022CB9FC300A41C61 /* ShareRocketChatRN.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareRocketChatRN.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 1EC6ACB622CB9FC300A41C61 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; @@ -265,11 +267,12 @@ 1EFEB5992493B6640072EDC0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1EFEB5A12493B67D0072EDC0 /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = ""; }; 391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-Rocket.Chat/ExpoModulesProvider.swift"; sourceTree = ""; }; - 3A3D4E5E365572E4B0A35F84 /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-RocketChatRN/ExpoModulesProvider.swift"; sourceTree = ""; }; - 51E3BC4AF921B56AA2F88972 /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 496B9AFC1A3BFACA18566761 /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = ""; }; + 4E3D7377D5EE259A4C9889A7 /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = ""; }; 60B2A6A31FC4588700BD58E5 /* RocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = RocketChatRN.entitlements; path = RocketChatRN/RocketChatRN.entitlements; sourceTree = ""; }; - 679333EFF577AAD83563610D /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = ""; }; + 65360F272979AA1500778C04 /* JitsiMeetViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = JitsiMeetViewController.swift; path = "../node_modules/@socialcode-rob1/react-native-jitsimeet-custom/ios/JitsiMeetViewController.swift"; sourceTree = ""; }; + 7107AAFABF867C2E02778938 /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 7A006F13229C83B600803143 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; }; 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Experimental.xcassets; sourceTree = ""; }; @@ -280,16 +283,15 @@ 7AAB3E52257E6A6E00707CF6 /* Rocket.Chat.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rocket.Chat.app; sourceTree = BUILT_PRODUCTS_DIR; }; 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 7AE10C0528A59530003593CB /* Inter.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Inter.ttf; sourceTree = ""; }; - 7BB98B79DB037ACA18DE98A9 /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 8392E4F8E23182B188A28283 /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - AB8144BFC3CB9DF1591BA994 /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = ""; }; + A6EDFA9E4FA6C0BDF77CD23B /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + B2632520781ADB17C1AC1FAC /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = ""; }; B37C79D9BD0742CE936B6982 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; }; + B387EBF6D5D60163EA71AE10 /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = ""; }; + B90637B65093B8C2B7C93A26 /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = ""; }; BA7E862283664608B3894E34 /* libWatermelonDB.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libWatermelonDB.a; sourceTree = ""; }; - BBB2F496D5C0548FD76247FF /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = ""; }; - D8BF0F700D5F9DF20E5C7E18 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = ""; }; - DD46C710B0B46DD66AE1B56F /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = ""; }; - F51011A72D988B033A8C911A /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = ""; }; - FB8DBBB44E044FA53CFA3FE9 /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = ""; }; + CEDD8A84B710A696B2834686 /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = ""; }; + D49C1A8553D7BEA6FA98C6B9 /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = ""; }; + EFDB72665B51D50D102E732D /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -310,7 +312,7 @@ 7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */, 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */, DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */, - C545E1FF9F7878253C7CAFC7 /* libPods-defaults-RocketChatRN.a in Frameworks */, + A809BED7D6DCDD5DC5D2140F /* libPods-defaults-RocketChatRN.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -319,7 +321,7 @@ buildActionMask = 2147483647; files = ( 1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */, - 8635E3F5E50AB70942D94811 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */, + 7CD6EA74BD37266C0BCAC972 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -327,7 +329,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E87275738A44046F4F46262B /* libPods-defaults-NotificationService.a in Frameworks */, + CF05A6FEE970FC0F23969445 /* libPods-defaults-NotificationService.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -348,7 +350,7 @@ 7AAB3E3D257E6A6E00707CF6 /* JavaScriptCore.framework in Frameworks */, 7AAB3E3E257E6A6E00707CF6 /* libz.tbd in Frameworks */, 7AAB3E3F257E6A6E00707CF6 /* libWatermelonDB.a in Frameworks */, - 53A4B76EC76B5C33C86828DB /* libPods-defaults-Rocket.Chat.a in Frameworks */, + 460E782729C913ACC2B8EA57 /* libPods-defaults-Rocket.Chat.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -358,6 +360,7 @@ 13B07FAE1A68108700A75B9A /* RocketChatRN */ = { isa = PBXGroup; children = ( + 65360F272979AA1500778C04 /* JitsiMeetViewController.swift */, 7A006F13229C83B600803143 /* GoogleService-Info.plist */, 60B2A6A31FC4588700BD58E5 /* RocketChatRN.entitlements */, 008F07F21AC5B25A0029DE68 /* main.jsbundle */, @@ -499,14 +502,14 @@ 7AC2B09613AA7C3FEBAC9F57 /* Pods */ = { isa = PBXGroup; children = ( - BBB2F496D5C0548FD76247FF /* Pods-defaults-NotificationService.debug.xcconfig */, - 1EB4223867025212BA5BD96F /* Pods-defaults-NotificationService.release.xcconfig */, - AB8144BFC3CB9DF1591BA994 /* Pods-defaults-Rocket.Chat.debug.xcconfig */, - 679333EFF577AAD83563610D /* Pods-defaults-Rocket.Chat.release.xcconfig */, - F51011A72D988B033A8C911A /* Pods-defaults-RocketChatRN.debug.xcconfig */, - FB8DBBB44E044FA53CFA3FE9 /* Pods-defaults-RocketChatRN.release.xcconfig */, - D8BF0F700D5F9DF20E5C7E18 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */, - DD46C710B0B46DD66AE1B56F /* Pods-defaults-ShareRocketChatRN.release.xcconfig */, + B90637B65093B8C2B7C93A26 /* Pods-defaults-NotificationService.debug.xcconfig */, + CEDD8A84B710A696B2834686 /* Pods-defaults-NotificationService.release.xcconfig */, + B387EBF6D5D60163EA71AE10 /* Pods-defaults-Rocket.Chat.debug.xcconfig */, + 06C3117EECD04F11CB1C29A9 /* Pods-defaults-Rocket.Chat.release.xcconfig */, + 4E3D7377D5EE259A4C9889A7 /* Pods-defaults-RocketChatRN.debug.xcconfig */, + 496B9AFC1A3BFACA18566761 /* Pods-defaults-RocketChatRN.release.xcconfig */, + B2632520781ADB17C1AC1FAC /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */, + D49C1A8553D7BEA6FA98C6B9 /* Pods-defaults-ShareRocketChatRN.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -597,10 +600,10 @@ 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */, B37C79D9BD0742CE936B6982 /* libc++.tbd */, 06BB44DD4855498082A744AD /* libz.tbd */, - 51E3BC4AF921B56AA2F88972 /* libPods-defaults-NotificationService.a */, - 3A3D4E5E365572E4B0A35F84 /* libPods-defaults-Rocket.Chat.a */, - 7BB98B79DB037ACA18DE98A9 /* libPods-defaults-RocketChatRN.a */, - 8392E4F8E23182B188A28283 /* libPods-defaults-ShareRocketChatRN.a */, + 7107AAFABF867C2E02778938 /* libPods-defaults-NotificationService.a */, + EFDB72665B51D50D102E732D /* libPods-defaults-Rocket.Chat.a */, + A6EDFA9E4FA6C0BDF77CD23B /* libPods-defaults-RocketChatRN.a */, + 0A99BB53A40C30B4B264BFA5 /* libPods-defaults-ShareRocketChatRN.a */, ); name = Frameworks; sourceTree = ""; @@ -620,7 +623,7 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RocketChatRN" */; buildPhases = ( - 3474423C54E97576F36F5858 /* [CP] Check Pods Manifest.lock */, + DE29ABAFC51FDE8111D6F9EC /* [CP] Check Pods Manifest.lock */, 7AA5C63E23E30D110005C4A7 /* Start Packager */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, @@ -629,8 +632,8 @@ 1EC6ACF422CB9FC300A41C61 /* Embed App Extensions */, 1E1EA8082326CCE300E22452 /* ShellScript */, 7AAE9EB32891A0D20024F559 /* Upload source maps to Bugsnag */, - D85E0CA1CBEF992560B4D054 /* [CP] Embed Pods Frameworks */, - B5B2A3EBFBC1507DA0BF7CE7 /* [CP] Copy Pods Resources */, + 7841CD536EDA07B20BCE10B7 /* [CP] Embed Pods Frameworks */, + 8F1EAEDED27E942D30510BAC /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -647,12 +650,12 @@ isa = PBXNativeTarget; buildConfigurationList = 1EC6ACF322CB9FC300A41C61 /* Build configuration list for PBXNativeTarget "ShareRocketChatRN" */; buildPhases = ( - 7D6D08CA5569DA5D6351B282 /* [CP] Check Pods Manifest.lock */, + FAE0F7AA2756A4362BC5B30B /* [CP] Check Pods Manifest.lock */, 1EC6ACAC22CB9FC300A41C61 /* Sources */, 1EC6ACAD22CB9FC300A41C61 /* Frameworks */, 1EC6ACAE22CB9FC300A41C61 /* Resources */, 1EFE4DC322CBF36300B766B7 /* ShellScript */, - 72EF5D7265B0EB10132762B6 /* [CP] Copy Pods Resources */, + 0201B0C2059B91755F2025E4 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -667,11 +670,11 @@ isa = PBXNativeTarget; buildConfigurationList = 1EFEB5A02493B6640072EDC0 /* Build configuration list for PBXNativeTarget "NotificationService" */; buildPhases = ( - 231269BDB11A771D3BF2EF95 /* [CP] Check Pods Manifest.lock */, + 63AF6819B463EFFEB422E5FA /* [CP] Check Pods Manifest.lock */, 1EFEB5912493B6640072EDC0 /* Sources */, 1EFEB5922493B6640072EDC0 /* Frameworks */, 1EFEB5932493B6640072EDC0 /* Resources */, - 9A524A7D0DDDC7DA1E765E08 /* [CP] Copy Pods Resources */, + 729BD34038A0BFBCE2E6E9B5 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -686,7 +689,7 @@ isa = PBXNativeTarget; buildConfigurationList = 7AAB3E4F257E6A6E00707CF6 /* Build configuration list for PBXNativeTarget "Rocket.Chat" */; buildPhases = ( - 1128334A3466592BFACC8C91 /* [CP] Check Pods Manifest.lock */, + A21BC8746245EB1E7D8722FF /* [CP] Check Pods Manifest.lock */, 7AAB3E13257E6A6E00707CF6 /* Start Packager */, 7AAB3E14257E6A6E00707CF6 /* Sources */, 7AAB3E32257E6A6E00707CF6 /* Frameworks */, @@ -695,8 +698,8 @@ 7AAB3E48257E6A6E00707CF6 /* Embed App Extensions */, 7AAB3E4B257E6A6E00707CF6 /* ShellScript */, 7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */, - E8314D4F811B7375609A1949 /* [CP] Embed Pods Frameworks */, - ED1C9472F1D91155EAB359BD /* [CP] Copy Pods Resources */, + C1E9B0B4B7CD33AA69C229F5 /* [CP] Embed Pods Frameworks */, + 8DAD9AEDB28EC0ED2C88DCF8 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -846,107 +849,7 @@ shellPath = /bin/sh; shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; }; - 1128334A3466592BFACC8C91 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 1E1EA8082326CCE300E22452 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"Target architectures: $ARCHS\"\n\nAPP_PATH=\"${TARGET_BUILD_DIR}/${WRAPPER_NAME}\"\n\nfind \"$APP_PATH\" -name '*.framework' -type d | while read -r FRAMEWORK\ndo\nFRAMEWORK_EXECUTABLE_NAME=$(defaults read \"$FRAMEWORK/Info.plist\" CFBundleExecutable)\nFRAMEWORK_EXECUTABLE_PATH=\"$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME\"\necho \"Executable is $FRAMEWORK_EXECUTABLE_PATH\"\necho $(lipo -info \"$FRAMEWORK_EXECUTABLE_PATH\")\n\nFRAMEWORK_TMP_PATH=\"$FRAMEWORK_EXECUTABLE_PATH-tmp\"\n\n# remove simulator's archs if location is not simulator's directory\ncase \"${TARGET_BUILD_DIR}\" in\n*\"iphonesimulator\")\necho \"No need to remove archs\"\n;;\n*)\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"i386\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"i386\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"i386 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"x86_64\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"x86_64\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"x86_64 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\n;;\nesac\n\necho \"Completed for executable $FRAMEWORK_EXECUTABLE_PATH\"\necho $\n\ndone\n"; - }; - 1EFE4DC322CBF36300B766B7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; - }; - 231269BDB11A771D3BF2EF95 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-defaults-NotificationService-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 3474423C54E97576F36F5858 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 72EF5D7265B0EB10132762B6 /* [CP] Copy Pods Resources */ = { + 0201B0C2059B91755F2025E4 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1002,6 +905,142 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 1E1EA8082326CCE300E22452 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"Target architectures: $ARCHS\"\n\nAPP_PATH=\"${TARGET_BUILD_DIR}/${WRAPPER_NAME}\"\n\nfind \"$APP_PATH\" -name '*.framework' -type d | while read -r FRAMEWORK\ndo\nFRAMEWORK_EXECUTABLE_NAME=$(defaults read \"$FRAMEWORK/Info.plist\" CFBundleExecutable)\nFRAMEWORK_EXECUTABLE_PATH=\"$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME\"\necho \"Executable is $FRAMEWORK_EXECUTABLE_PATH\"\necho $(lipo -info \"$FRAMEWORK_EXECUTABLE_PATH\")\n\nFRAMEWORK_TMP_PATH=\"$FRAMEWORK_EXECUTABLE_PATH-tmp\"\n\n# remove simulator's archs if location is not simulator's directory\ncase \"${TARGET_BUILD_DIR}\" in\n*\"iphonesimulator\")\necho \"No need to remove archs\"\n;;\n*)\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"i386\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"i386\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"i386 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"x86_64\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"x86_64\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"x86_64 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\n;;\nesac\n\necho \"Completed for executable $FRAMEWORK_EXECUTABLE_PATH\"\necho $\n\ndone\n"; + }; + 1EFE4DC322CBF36300B766B7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; + }; + 63AF6819B463EFFEB422E5FA /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-defaults-NotificationService-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 729BD34038A0BFBCE2E6E9B5 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", + "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle", + ); + name = "[CP] Copy Pods Resources"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 7841CD536EDA07B20BCE10B7 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDKLite/JitsiMeetSDK.framework/JitsiMeetSDK", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiWebRTC/WebRTC.framework/WebRTC", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes", + ); + name = "[CP] Embed Pods Frameworks"; + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeetSDK.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1105,35 +1144,13 @@ shellPath = /bin/sh; shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh\n"; }; - 7D6D08CA5569DA5D6351B282 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-defaults-ShareRocketChatRN-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - 9A524A7D0DDDC7DA1E765E08 /* [CP] Copy Pods Resources */ = { + 8DAD9AEDB28EC0ED2C88DCF8 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh", + "${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh", "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", @@ -1180,10 +1197,10 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh\"\n"; showEnvVarsInLog = 0; }; - B5B2A3EBFBC1507DA0BF7CE7 /* [CP] Copy Pods Resources */ = { + 8F1EAEDED27E942D30510BAC /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1239,39 +1256,37 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh\"\n"; showEnvVarsInLog = 0; }; - D85E0CA1CBEF992560B4D054 /* [CP] Embed Pods Frameworks */ = { + A21BC8746245EB1E7D8722FF /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/WebRTC.framework/WebRTC", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes", + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeetSDK.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", + "$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - E8314D4F811B7375609A1949 /* [CP] Embed Pods Frameworks */ = { + C1E9B0B4B7CD33AA69C229F5 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK", - "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/WebRTC.framework/WebRTC", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDKLite/JitsiMeetSDK.framework/JitsiMeetSDK", + "${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiWebRTC/WebRTC.framework/WebRTC", "${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL", "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes", ); @@ -1287,60 +1302,48 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - ED1C9472F1D91155EAB359BD /* [CP] Copy Pods Resources */ = { + DE29ABAFC51FDE8111D6F9EC /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh", - "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf", - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf", - "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle", + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Copy Pods Resources"; outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle", + "$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + FAE0F7AA2756A4362BC5B30B /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-defaults-ShareRocketChatRN-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -1429,6 +1432,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 65360F282979AA1500778C04 /* JitsiMeetViewController.swift in Sources */, 7AAB3E15257E6A6E00707CF6 /* Sender.swift in Sources */, 7AAB3E16257E6A6E00707CF6 /* Request.swift in Sources */, 7AAB3E17257E6A6E00707CF6 /* ReplyNotification.swift in Sources */, @@ -1500,7 +1504,7 @@ /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F51011A72D988B033A8C911A /* Pods-defaults-RocketChatRN.debug.xcconfig */; + baseConfigurationReference = 4E3D7377D5EE259A4C9889A7 /* Pods-defaults-RocketChatRN.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APPLICATION_EXTENSION_API_ONLY = NO; @@ -1557,7 +1561,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FB8DBBB44E044FA53CFA3FE9 /* Pods-defaults-RocketChatRN.release.xcconfig */; + baseConfigurationReference = 496B9AFC1A3BFACA18566761 /* Pods-defaults-RocketChatRN.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APPLICATION_EXTENSION_API_ONLY = NO; @@ -1613,8 +1617,9 @@ }; 1EC6ACBC22CB9FC300A41C61 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D8BF0F700D5F9DF20E5C7E18 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */; + baseConfigurationReference = B2632520781ADB17C1AC1FAC /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)"; APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1654,7 +1659,7 @@ "$(inherited)", "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", - "$PODS_CONFIGURATION_BUILD_DIR/Firebase", + $PODS_CONFIGURATION_BUILD_DIR/Firebase, ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -1681,8 +1686,9 @@ }; 1EC6ACBD22CB9FC300A41C61 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DD46C710B0B46DD66AE1B56F /* Pods-defaults-ShareRocketChatRN.release.xcconfig */; + baseConfigurationReference = D49C1A8553D7BEA6FA98C6B9 /* Pods-defaults-ShareRocketChatRN.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)"; APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1722,7 +1728,7 @@ "$(inherited)", "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", - "$PODS_CONFIGURATION_BUILD_DIR/Firebase", + $PODS_CONFIGURATION_BUILD_DIR/Firebase, ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.0; @@ -1748,8 +1754,9 @@ }; 1EFEB59D2493B6640072EDC0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BBB2F496D5C0548FD76247FF /* Pods-defaults-NotificationService.debug.xcconfig */; + baseConfigurationReference = B90637B65093B8C2B7C93A26 /* Pods-defaults-NotificationService.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)"; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -1785,8 +1792,9 @@ }; 1EFEB59E2493B6640072EDC0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1EB4223867025212BA5BD96F /* Pods-defaults-NotificationService.release.xcconfig */; + baseConfigurationReference = CEDD8A84B710A696B2834686 /* Pods-defaults-NotificationService.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)"; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -1822,7 +1830,7 @@ }; 7AAB3E50257E6A6E00707CF6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AB8144BFC3CB9DF1591BA994 /* Pods-defaults-Rocket.Chat.debug.xcconfig */; + baseConfigurationReference = B387EBF6D5D60163EA71AE10 /* Pods-defaults-Rocket.Chat.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APPLICATION_EXTENSION_API_ONLY = NO; @@ -1876,7 +1884,7 @@ }; 7AAB3E51257E6A6E00707CF6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 679333EFF577AAD83563610D /* Pods-defaults-Rocket.Chat.release.xcconfig */; + baseConfigurationReference = 06C3117EECD04F11CB1C29A9 /* Pods-defaults-Rocket.Chat.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; APPLICATION_EXTENSION_API_ONLY = NO; diff --git a/ios/RocketChatRN/AppDelegate.mm b/ios/RocketChatRN/AppDelegate.mm index 527fc37d1..4418704fe 100644 --- a/ios/RocketChatRN/AppDelegate.mm +++ b/ios/RocketChatRN/AppDelegate.mm @@ -55,9 +55,11 @@ } self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; - UIViewController *rootViewController = [self.reactDelegate createRootViewController]; + UIViewController *rootViewController = [UIViewController new]; + UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:rootViewController]; + navigationController.navigationBarHidden = YES; rootViewController.view = rootView; - self.window.rootViewController = rootViewController; + self.window.rootViewController = navigationController; [self.window makeKeyAndVisible]; [RNNotifications startMonitorNotifications]; [ReplyNotification configure]; diff --git a/package.json b/package.json index 8c1f65a5b..b2e716236 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "@rocket.chat/message-parser": "^0.31.14", "@rocket.chat/sdk": "RocketChat/Rocket.Chat.js.SDK#mobile", "@rocket.chat/ui-kit": "^0.31.19", + "@socialcode-rob1/react-native-jitsimeet-custom": "socialcode-rob1/react-native-jitsimeet-custom.git", "bytebuffer": "^5.0.1", "color2k": "1.2.4", "commonmark": "git+https://github.com/RocketChat/commonmark.js.git", @@ -96,7 +97,6 @@ "react-native-gesture-handler": "2.4.2", "react-native-image-crop-picker": "RocketChat/react-native-image-crop-picker", "react-native-image-progress": "^1.1.1", - "react-native-jitsi-meet": "RocketChat/react-native-jitsi-meet", "react-native-keycommands": "2.0.3", "react-native-linear-gradient": "^2.6.2", "react-native-localize": "2.1.1", diff --git a/patches/@socialcode-rob1+react-native-jitsimeet-custom+2.5.0.patch b/patches/@socialcode-rob1+react-native-jitsimeet-custom+2.5.0.patch new file mode 100644 index 000000000..52777ec0c --- /dev/null +++ b/patches/@socialcode-rob1+react-native-jitsimeet-custom+2.5.0.patch @@ -0,0 +1,11 @@ +diff --git a/node_modules/@socialcode-rob1/react-native-jitsimeet-custom/react-native-jitsimeet-custom.podspec b/node_modules/@socialcode-rob1/react-native-jitsimeet-custom/react-native-jitsimeet-custom.podspec +index 80a584b..5b2f71c 100644 +--- a/node_modules/@socialcode-rob1/react-native-jitsimeet-custom/react-native-jitsimeet-custom.podspec ++++ b/node_modules/@socialcode-rob1/react-native-jitsimeet-custom/react-native-jitsimeet-custom.podspec +@@ -16,5 +16,5 @@ Pod::Spec.new do |s| + s.source_files = "ios/**/*.{h,m,mm,swift}" + + s.dependency "React-Core" +- s.dependency 'JitsiMeetSDK', '6.2.2' ++ s.dependency 'JitsiMeetSDKLite', '7.0.1-lite' + end diff --git a/react-native.config.js b/react-native.config.js index 1dbd95952..137b05c26 100644 --- a/react-native.config.js +++ b/react-native.config.js @@ -15,7 +15,7 @@ module.exports = { android: null } }, - 'react-native-jitsi-meet': { + '@socialcode-rob1/react-native-jitsimeet-custom': { platforms: { android: null } diff --git a/yarn.lock b/yarn.lock index f17bb263e..da1c2d22c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5361,6 +5361,10 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@socialcode-rob1/react-native-jitsimeet-custom@socialcode-rob1/react-native-jitsimeet-custom.git": + version "2.5.0" + resolved "https://codeload.github.com/socialcode-rob1/react-native-jitsimeet-custom/tar.gz/b1f57cd065028fef2e806824e176d2b54e12cfaf" + "@storybook/addon-storyshots@6.3": version "6.3.13" resolved "https://registry.yarnpkg.com/@storybook/addon-storyshots/-/addon-storyshots-6.3.13.tgz#282a48880e5074baea7b84f5b091591eb21a9485" @@ -17313,10 +17317,6 @@ react-native-iphone-x-helper@^1.0.3: resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz#645e2ffbbb49e80844bb4cbbe34a126fda1e6772" integrity sha512-/VbpIEp8tSNNHIvstuA3Swx610whci1Zpc9mqNkqn14DkMbw+ORviln2u0XyHG1kPvvwTNGZY6QpeFwxYaSdbQ== -react-native-jitsi-meet@RocketChat/react-native-jitsi-meet: - version "3.6.0" - resolved "https://codeload.github.com/RocketChat/react-native-jitsi-meet/tar.gz/90bae9b9d779c13829d7dc618e31d11dba60140d" - react-native-keycommands@2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/react-native-keycommands/-/react-native-keycommands-2.0.3.tgz#09b799c1f70832e5cd9fbdb712ddaa3ee683f70e" From 21f64b08e50d78a9f6dab2dc693d086a2afc7bdf Mon Sep 17 00:00:00 2001 From: Umang Patel Date: Mon, 23 Jan 2023 22:20:30 +0530 Subject: [PATCH 27/29] Docs: Fix Rocket.Chat server guide URL (#4848) --- e2e/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/README.md b/e2e/README.md index 53379ff4c..2ab010cb1 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -13,7 +13,7 @@ Either -* Install Rocket.Chat meteor app by following this [guide](https://docs.rocket.chat/guides/developer/quick-start). +* Install Rocket.Chat meteor app by following this [guide](https://developer.rocket.chat/rocket.chat/rocket-chat-environment-setup). Or From 7363d9d742aa0016aabd546d53f76a15b3ca1135 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Tue, 24 Jan 2023 09:50:17 -0300 Subject: [PATCH 28/29] [FIX] Official CI build (#4850) --- ios/RocketChatRN.xcodeproj/project.pbxproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index b10946881..b9e69bdf4 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -81,7 +81,6 @@ 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; 460E782729C913ACC2B8EA57 /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EFDB72665B51D50D102E732D /* libPods-defaults-Rocket.Chat.a */; }; 4C4C8603EF082F0A33A95522 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */; }; - 65360F282979AA1500778C04 /* JitsiMeetViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65360F272979AA1500778C04 /* JitsiMeetViewController.swift */; }; 7A006F14229C83B600803143 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7A006F13229C83B600803143 /* GoogleService-Info.plist */; }; 7A0D62D2242AB187006D5C06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */; }; 7A14FCED257FEB3A005BDCD4 /* Experimental.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */; }; @@ -1432,7 +1431,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 65360F282979AA1500778C04 /* JitsiMeetViewController.swift in Sources */, 7AAB3E15257E6A6E00707CF6 /* Sender.swift in Sources */, 7AAB3E16257E6A6E00707CF6 /* Request.swift in Sources */, 7AAB3E17257E6A6E00707CF6 /* ReplyNotification.swift in Sources */, From 192a6b055a99d4a8839032d49baa891dc6191260 Mon Sep 17 00:00:00 2001 From: Gleidson Daniel Silva Date: Tue, 24 Jan 2023 10:03:48 -0300 Subject: [PATCH 29/29] Regression: Fix RoomItem's loading status (#4835) --- app/containers/RoomItem/index.tsx | 8 +++----- app/containers/RoomItem/useUserStatus.tsx | 24 +++++++++++++++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 app/containers/RoomItem/useUserStatus.tsx diff --git a/app/containers/RoomItem/index.tsx b/app/containers/RoomItem/index.tsx index 5dd7d5469..405d2d5e0 100644 --- a/app/containers/RoomItem/index.tsx +++ b/app/containers/RoomItem/index.tsx @@ -2,13 +2,13 @@ import React, { useEffect, useReducer, useRef } from 'react'; import { Subscription } from 'rxjs'; import I18n from '../../i18n'; -import { useAppSelector } from '../../lib/hooks'; import { getUserPresence } from '../../lib/methods'; import { isGroupChat } from '../../lib/methods/helpers'; import { formatDate } from '../../lib/methods/helpers/room'; import { IRoomItemContainerProps } from './interfaces'; import RoomItem from './RoomItem'; import { ROW_HEIGHT, ROW_HEIGHT_CONDENSED } from './styles'; +import { useUserStatus } from './useUserStatus'; export { ROW_HEIGHT, ROW_HEIGHT_CONDENSED }; @@ -42,11 +42,11 @@ const RoomItemContainer = React.memo( const isRead = getIsRead(item); const date = item.roomUpdatedAt && formatDate(item.roomUpdatedAt); const alert = item.alert || item.tunread?.length; - const connected = useAppSelector(state => state.meteor.connected); - const userStatus = useAppSelector(state => state.activeUsers[id || '']?.status); const [_, forceUpdate] = useReducer(x => x + 1, 1); const roomSubscription = useRef(null); + const { connected, status } = useUserStatus(item.t, item?.visitor?.status, id); + useEffect(() => { const init = () => { if (item?.observe) { @@ -85,8 +85,6 @@ const RoomItemContainer = React.memo( accessibilityLabel = `, ${I18n.t('last_message')} ${date}`; } - const status = item.t === 'l' ? item.visitor?.status || item.v?.status : userStatus; - return ( { + const connected = useAppSelector(state => state.meteor.connected); + const userStatus = useAppSelector(state => state.activeUsers[id || '']?.status); + let status = 'loading'; + if (connected) { + if (type === 'd') { + status = userStatus || 'loading'; + } else if (type === 'l' && liveChatStatus) { + status = liveChatStatus; + } + } + return { + connected, + status: status as TUserStatus + }; +};