From 091a652883407f7fbe8c770b44bb44cb7202ac1a Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 30 May 2019 21:28:06 -0300 Subject: [PATCH 01/88] :art: Configure share-extension ios --- app/share.js | 60 ++++ index.js | 6 +- ios/Podfile | 10 + ios/RocketChatRN.xcodeproj/project.pbxproj | 287 ++++++++++++++++++ .../Base.lproj/MainInterface.storyboard | 28 ++ ios/ShareRocketChatRN/Info.plist | 43 +++ ios/ShareRocketChatRN/ShareRocketChatRN.m | 39 +++ package.json | 1 + yarn.lock | 5 + 9 files changed, 476 insertions(+), 3 deletions(-) create mode 100644 app/share.js create mode 100644 ios/ShareRocketChatRN/Base.lproj/MainInterface.storyboard create mode 100644 ios/ShareRocketChatRN/Info.plist create mode 100644 ios/ShareRocketChatRN/ShareRocketChatRN.m diff --git a/app/share.js b/app/share.js new file mode 100644 index 0000000000..5ccd5f976d --- /dev/null +++ b/app/share.js @@ -0,0 +1,60 @@ +import React from 'react'; +import { View, Text, TouchableOpacity } from 'react-native'; +import { createAppContainer, createStackNavigator } from 'react-navigation'; +import ShareExtension from 'react-native-share-extension'; + +export class Home extends React.Component { + static navigationOptions = () => ({ + headerLeft: ( + ShareExtension.close()}> + cancel + + ), + title: 'Selecionar Canais', + headerRight: null + }) + + constructor(props) { + super(props); + this.state = { + type: '', + value: '' + }; + } + + componentWillMount() { + ShareExtension.data() + .then(({ type, value }) => this.setState({ type, value })); + } + + render() { + const { type, value } = this.state; + return ( + + ShareExtension.close()}> + X + + {type} + {value} + + ); + } +} + +const Navigator = createStackNavigator({ + Home +}); + +const AppContainer = createAppContainer(Navigator); +const Root = () => ( + +); + +export default Root; diff --git a/index.js b/index.js index 959bbd7a42..6f784bea3d 100644 --- a/index.js +++ b/index.js @@ -2,10 +2,10 @@ import 'react-native-console-time-polyfill'; import './app/ReactotronConfig'; import { AppRegistry } from 'react-native'; -import App from './app/index'; import { name as appName } from './app.json'; -AppRegistry.registerComponent(appName, () => App); +AppRegistry.registerComponent(appName, () => require('./app/index').default); +AppRegistry.registerComponent('ShareRocketChatRN', () => require('./app/share').default); // For storybook, comment everything above and uncomment below -// import './storybook'; +// import './storybook'; \ No newline at end of file diff --git a/ios/Podfile b/ios/Podfile index 627b4cc721..b6d36a024a 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -46,6 +46,16 @@ target 'RocketChatRN' do end +target 'ShareRocketChatRN' do + + pod 'Firebase/Core' + pod 'Fabric', '~> 1.9.0' + pod 'Crashlytics', '~> 3.12.0' + pod 'GoogleIDFASupport', '~> 3.14.0' + pod 'Firebase/Performance', '~> 5.20.1' + +end + post_install do |installer| installer.pods_project.targets.each do |target| if target.name == "React" diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 717866eb0d..5d1e3ac025 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -20,6 +20,28 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 1E39C99D22A0AA0200D46C42 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */; }; + 1E39C9A122A0AA0200D46C42 /* ShareRocketChatRN.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 1E39C9DD22A0AA2A00D46C42 /* ShareRocketChatRN.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */; }; + 1E39C9DE22A0AA4600D46C42 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */; }; + 1E39C9DF22A0AA6D00D46C42 /* libcxxreact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */; }; + 1E39C9E022A0AA6D00D46C42 /* libdouble-conversion.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 607D61111F325B7E00F639C4 /* libdouble-conversion.a */; }; + 1E39C9E122A0AA6D00D46C42 /* libRCTActionSheet.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302AC1ABCB8CE00DB3ED1 /* libRCTActionSheet.a */; }; + 1E39C9E222A0AA6D00D46C42 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; + 1E39C9E322A0AA6D00D46C42 /* libRCTGeolocation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302BA1ABCB90400DB3ED1 /* libRCTGeolocation.a */; }; + 1E39C9E422A0AA6D00D46C42 /* libRCTImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302C01ABCB91800DB3ED1 /* libRCTImage.a */; }; + 1E39C9E522A0AA6D00D46C42 /* libRCTLinking.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78C398B91ACF4ADC00677621 /* libRCTLinking.a */; }; + 1E39C9E622A0AA6D00D46C42 /* libRCTNetwork.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302DC1ABCB9D200DB3ED1 /* libRCTNetwork.a */; }; + 1E39C9E722A0AA6D00D46C42 /* libRCTPushNotification.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88F58461FBF55E200B352B8 /* libRCTPushNotification.a */; }; + 1E39C9E822A0AA6D00D46C42 /* libRCTSettings.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139105C11AF99BAD00B5F7CC /* libRCTSettings.a */; }; + 1E39C9E922A0AA6D00D46C42 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; + 1E39C9EA22A0AA6D00D46C42 /* libRCTVibration.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 00C302E41ABCB9EE00DB3ED1 /* libRCTVibration.a */; }; + 1E39C9EB22A0AA6D00D46C42 /* libRCTWebSocket.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */; }; + 1E39C9EC22A0AA6D00D46C42 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 1E39C9ED22A0AA6D00D46C42 /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AD44CF521518C610099D147 /* libRNGestureHandler.a */; }; + 1E39C9EE22A0AA6D00D46C42 /* libRNI18n.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A770EC620BECDC7001AD51A /* libRNI18n.a */; }; + 1E39C9EF22A0AA6D00D46C42 /* libRNNotifications.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8DEB5220ED0BDE00C5DCE4 /* libRNNotifications.a */; }; + 1E39C9F622A0AA9000D46C42 /* libReactNativeShareExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E39C9F522A0AA8700D46C42 /* libReactNativeShareExtension.a */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; 2C800DF680F8451599E80AF1 /* libSafariViewManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */; }; 38CEA0ED468E49CFABCD82FD /* libRNFirebase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A36F9982B71E4662AA8DEB77 /* libRNFirebase.a */; }; @@ -100,6 +122,20 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; + 1E39C99F22A0AA0200D46C42 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1E39C99522A0AA0200D46C42; + remoteInfo = ShareRocketChatRN; + }; + 1E39C9F422A0AA8700D46C42 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 41B5DE301D0B505800949BD5; + remoteInfo = ReactNativeShareExtension; + }; 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; @@ -425,6 +461,17 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 1E39C9DB22A0AA0200D46C42 /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 1E39C9A122A0AA0200D46C42 /* ShareRocketChatRN.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; 7A6EDBE020ED6E020086E097 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -460,6 +507,11 @@ 1845C223DA364898A8400573 /* FastImage.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = FastImage.xcodeproj; path = "../node_modules/react-native-fast-image/ios/FastImage.xcodeproj"; sourceTree = ""; }; 1A34D902CC074FF1BCC7DB48 /* libimageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libimageCropPicker.a; sourceTree = ""; }; 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSafariViewManager.a; sourceTree = ""; }; + 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareRocketChatRN.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E39C99C22A0AA0200D46C42 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; + 1E39C99E22A0AA0200D46C42 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareRocketChatRN.m; sourceTree = ""; }; + 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/react-native-share-extension/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; 22D3971EAF2E4660B4FAB3DD /* RNI18n.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNI18n.xcodeproj; path = "../node_modules/react-native-i18n/ios/RNI18n.xcodeproj"; sourceTree = ""; }; @@ -533,6 +585,32 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 1E39C99322A0AA0200D46C42 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1E39C9DF22A0AA6D00D46C42 /* libcxxreact.a in Frameworks */, + 1E39C9E022A0AA6D00D46C42 /* libdouble-conversion.a in Frameworks */, + 1E39C9E122A0AA6D00D46C42 /* libRCTActionSheet.a in Frameworks */, + 1E39C9E222A0AA6D00D46C42 /* libRCTAnimation.a in Frameworks */, + 1E39C9E322A0AA6D00D46C42 /* libRCTGeolocation.a in Frameworks */, + 1E39C9E422A0AA6D00D46C42 /* libRCTImage.a in Frameworks */, + 1E39C9E522A0AA6D00D46C42 /* libRCTLinking.a in Frameworks */, + 1E39C9E622A0AA6D00D46C42 /* libRCTNetwork.a in Frameworks */, + 1E39C9E722A0AA6D00D46C42 /* libRCTPushNotification.a in Frameworks */, + 1E39C9E822A0AA6D00D46C42 /* libRCTSettings.a in Frameworks */, + 1E39C9E922A0AA6D00D46C42 /* libRCTText.a in Frameworks */, + 1E39C9EA22A0AA6D00D46C42 /* libRCTVibration.a in Frameworks */, + 1E39C9EB22A0AA6D00D46C42 /* libRCTWebSocket.a in Frameworks */, + 1E39C9EC22A0AA6D00D46C42 /* libReact.a in Frameworks */, + 1E39C9ED22A0AA6D00D46C42 /* libRNGestureHandler.a in Frameworks */, + 1E39C9EE22A0AA6D00D46C42 /* libRNI18n.a in Frameworks */, + 1E39C9EF22A0AA6D00D46C42 /* libRNNotifications.a in Frameworks */, + 1E39C9DE22A0AA4600D46C42 /* JavaScriptCore.framework in Frameworks */, + 1E39C9F622A0AA9000D46C42 /* libReactNativeShareExtension.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -636,6 +714,24 @@ name = Products; sourceTree = ""; }; + 1E39C99722A0AA0200D46C42 /* ShareRocketChatRN */ = { + isa = PBXGroup; + children = ( + 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */, + 1E39C99E22A0AA0200D46C42 /* Info.plist */, + 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */, + ); + path = ShareRocketChatRN; + sourceTree = ""; + }; + 1E39C9F122A0AA8700D46C42 /* Products */ = { + isa = PBXGroup; + children = ( + 1E39C9F522A0AA8700D46C42 /* libReactNativeShareExtension.a */, + ); + name = Products; + sourceTree = ""; + }; 22CA7F59107E0C79C2506C7C /* Pods */ = { isa = PBXGroup; children = ( @@ -741,6 +837,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */, 7A8DEB1B20ED0BDE00C5DCE4 /* RNNotifications.xcodeproj */, B8971BAC202A091D0000D245 /* KeyboardTrackingView.xcodeproj */, 7A430E1620238C01008F55BC /* RCTCustomInputController.xcodeproj */, @@ -784,6 +881,7 @@ children = ( 13B07FAE1A68108700A75B9A /* RocketChatRN */, 832341AE1AAA6A7D00B99B32 /* Libraries */, + 1E39C99722A0AA0200D46C42 /* ShareRocketChatRN */, 83CBBA001A601CBA00E9B192 /* Products */, BB4B591B5FC44CD9986DB2A6 /* Frameworks */, AF5E16F0398347E6A80C8CBE /* Resources */, @@ -798,6 +896,7 @@ isa = PBXGroup; children = ( 13B07F961A680F5B00A75B9A /* RocketChatRN.app */, + 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */, ); name = Products; sourceTree = ""; @@ -900,22 +999,43 @@ 7A6EDBE020ED6E020086E097 /* Embed Frameworks */, FD0EBB93B02BAD0637E4F286 /* [CP] Copy Pods Resources */, 7A006EDA229C7F0A00803143 /* Run Script */, + 1E39C9DB22A0AA0200D46C42 /* Embed App Extensions */, ); buildRules = ( ); dependencies = ( + 1E39C9A022A0AA0200D46C42 /* PBXTargetDependency */, ); name = RocketChatRN; productName = "Hello World"; productReference = 13B07F961A680F5B00A75B9A /* RocketChatRN.app */; productType = "com.apple.product-type.application"; }; + 1E39C99522A0AA0200D46C42 /* ShareRocketChatRN */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1E39C9DA22A0AA0200D46C42 /* Build configuration list for PBXNativeTarget "ShareRocketChatRN" */; + buildPhases = ( + 1E39C99222A0AA0200D46C42 /* Sources */, + 1E39C99322A0AA0200D46C42 /* Frameworks */, + 1E39C99422A0AA0200D46C42 /* Resources */, + 1E39C9F722A0AB1200D46C42 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ShareRocketChatRN; + productName = ShareRocketChatRN; + productReference = 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 83CBB9F71A601CBA00E9B192 /* Project object */ = { isa = PBXProject; attributes = { + DefaultBuildSystemTypeForWorkspace = Original; LastUpgradeCheck = 610; ORGANIZATIONNAME = Facebook; TargetAttributes = { @@ -928,6 +1048,11 @@ }; }; }; + 1E39C99522A0AA0200D46C42 = { + CreatedOnToolsVersion = 10.2.1; + DevelopmentTeam = S6UPZG7ZR3; + ProvisioningStyle = Automatic; + }; }; }; buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RocketChatRN" */; @@ -1007,6 +1132,10 @@ ProductGroup = 146834001AC3E56700842450 /* Products */; ProjectRef = 146833FF1AC3E56700842450 /* React.xcodeproj */; }, + { + ProductGroup = 1E39C9F122A0AA8700D46C42 /* Products */; + ProjectRef = 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */; + }, { ProductGroup = 607D60ED1F325B7D00F639C4 /* Products */; ProjectRef = 5A8684E7C27E426C9206E980 /* RealmReact.xcodeproj */; @@ -1047,6 +1176,7 @@ projectRoot = ""; targets = ( 13B07F861A680F5B00A75B9A /* RocketChatRN */, + 1E39C99522A0AA0200D46C42 /* ShareRocketChatRN */, ); }; /* End PBXProject section */ @@ -1108,6 +1238,13 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E39C9F522A0AA8700D46C42 /* libReactNativeShareExtension.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libReactNativeShareExtension.a; + remoteRef = 1E39C9F422A0AA8700D46C42 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1443,6 +1580,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 1E39C99422A0AA0200D46C42 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1E39C99D22A0AA0200D46C42 /* MainInterface.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -1460,6 +1605,23 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; }; + 1E39C9F722A0AB1200D46C42 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n"; + }; 7A006EDA229C7F0A00803143 /* Run Script */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1528,8 +1690,35 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 1E39C99222A0AA0200D46C42 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1E39C9DD22A0AA2A00D46C42 /* ShareRocketChatRN.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 1E39C9A022A0AA0200D46C42 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 1E39C99522A0AA0200D46C42 /* ShareRocketChatRN */; + targetProxy = 1E39C99F22A0AA0200D46C42 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 1E39C99C22A0AA0200D46C42 /* Base */, + ); + name = MainInterface.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; @@ -1634,6 +1823,95 @@ }; name = Release; }; + 1E39C9A222A0AA0200D46C42 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = S6UPZG7ZR3; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**"; + INFOPLIST_FILE = ShareRocketChatRN/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.ShareRocketChatRN; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1E39C9A322A0AA0200D46C42 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + CODE_SIGN_STYLE = Automatic; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = S6UPZG7ZR3; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + HEADER_SEARCH_PATHS = "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**"; + INFOPLIST_FILE = ShareRocketChatRN/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 12.2; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_FAST_MATH = YES; + OTHER_LDFLAGS = ( + "-ObjC", + "-lc++", + "$(inherited)", + ); + PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.ShareRocketChatRN; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; 83CBBA201A601CBA00E9B192 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1722,6 +2000,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 1E39C9DA22A0AA0200D46C42 /* Build configuration list for PBXNativeTarget "ShareRocketChatRN" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1E39C9A222A0AA0200D46C42 /* Debug */, + 1E39C9A322A0AA0200D46C42 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RocketChatRN" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/ios/ShareRocketChatRN/Base.lproj/MainInterface.storyboard b/ios/ShareRocketChatRN/Base.lproj/MainInterface.storyboard new file mode 100644 index 0000000000..cfcd628b35 --- /dev/null +++ b/ios/ShareRocketChatRN/Base.lproj/MainInterface.storyboard @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist new file mode 100644 index 0000000000..082a50a5b5 --- /dev/null +++ b/ios/ShareRocketChatRN/Info.plist @@ -0,0 +1,43 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Rocket.Chat Experimental + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + + NSExtension + + NSExtensionAttributes + + NSExtensionActivationRule + TRUEPREDICATE + NSExtensionActivationSupportsWebURLWithMaxCount + 1 + + NSExtensionMainStoryboard + MainInterface + NSExtensionPointIdentifier + com.apple.share-services + + + \ No newline at end of file diff --git a/ios/ShareRocketChatRN/ShareRocketChatRN.m b/ios/ShareRocketChatRN/ShareRocketChatRN.m new file mode 100644 index 0000000000..5d6a235719 --- /dev/null +++ b/ios/ShareRocketChatRN/ShareRocketChatRN.m @@ -0,0 +1,39 @@ +// +// ShareRocketChatRN.m +// ShareRocketChatRN +// +// Created by Djorkaeff Alexandre Vilela Pereira on 16/05/19. +// Copyright © 2019 Facebook. All rights reserved. +// + +#import +#import "ReactNativeShareExtension.h" +#import +#import +#import + +@interface ShareRocketChatRN : ReactNativeShareExtension +@end + +@implementation ShareRocketChatRN + +RCT_EXPORT_MODULE(); + +- (UIView*) shareView { + NSURL *jsCodeLocation; + + jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; + + RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation + moduleName:@"ShareRocketChatRN" + initialProperties:nil + launchOptions:nil]; + rootView.backgroundColor = nil; + + // Uncomment for console output in Xcode console for release mode on device: + // RCTSetLogThreshold(RCTLogLevelInfo - 1); + + return rootView; +} + +@end \ No newline at end of file diff --git a/package.json b/package.json index 24e54dd9e9..b5fd6cea12 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "react-native-safari-view": "^2.1.0", "react-native-screens": "^1.0.0-alpha.22", "react-native-scrollable-tab-view": "0.10.0", + "react-native-share-extension": "^2.0.0", "react-native-slider": "^0.11.0", "react-native-slowlog": "^1.0.2", "react-native-splash-screen": "^3.2.0", diff --git a/yarn.lock b/yarn.lock index 7afd8e88ce..6b458c133e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11568,6 +11568,11 @@ react-native-scrollable-tab-view@0.10.0: prop-types "^15.6.0" react-timer-mixin "^0.13.3" +react-native-share-extension@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/react-native-share-extension/-/react-native-share-extension-2.0.0.tgz#c645715ce6c937e1dd527c4df5635df89ca88a44" + integrity sha512-LWbyGd3Vu5m0TBvSado2NE4MJ5R3iRw4WpoT+6ptHNir19pM/inNQaFh+OiySLNNy5N058pFmWq3LFNA4DPZkg== + react-native-slider@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/react-native-slider/-/react-native-slider-0.11.0.tgz#b68a0bc43c8422b24cd57947cc5ac2bcdb58fadc" From 6b62d46633b6c6a250ad75fc79441e4a0cbf7564 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 30 May 2019 21:35:47 -0300 Subject: [PATCH 02/88] :art: Configure pods & firebase on share extension ios --- index.js | 2 +- ios/Podfile.lock | 3 +- ios/Pods/Manifest.lock | 3 +- ios/Pods/Pods.xcodeproj/project.pbxproj | 1288 +++++++++++------ ...hareRocketChatRN-acknowledgements.markdown | 1129 +++++++++++++++ ...s-ShareRocketChatRN-acknowledgements.plist | 1251 ++++++++++++++++ .../Pods-ShareRocketChatRN-dummy.m | 5 + .../Pods-ShareRocketChatRN.debug.xcconfig | 9 + .../Pods-ShareRocketChatRN.release.xcconfig | 9 + ios/RocketChatRN.xcodeproj/project.pbxproj | 51 +- ios/ShareRocketChatRN/ShareRocketChatRN.m | 4 +- 11 files changed, 3290 insertions(+), 464 deletions(-) create mode 100644 ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown create mode 100644 ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist create mode 100644 ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-dummy.m create mode 100644 ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig create mode 100644 ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig diff --git a/index.js b/index.js index 6f784bea3d..87a10f9c8a 100644 --- a/index.js +++ b/index.js @@ -8,4 +8,4 @@ AppRegistry.registerComponent(appName, () => require('./app/index').default); AppRegistry.registerComponent('ShareRocketChatRN', () => require('./app/share').default); // For storybook, comment everything above and uncomment below -// import './storybook'; \ No newline at end of file +// import './storybook'; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index a989782ab8..361811c72e 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -142,6 +142,7 @@ DEPENDENCIES: - Crashlytics (~> 3.12.0) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - Fabric (~> 1.9.0) + - Firebase/Core - Firebase/Core (~> 5.20.1) - Firebase/Performance (~> 5.20.1) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) @@ -243,6 +244,6 @@ SPEC CHECKSUMS: RSKImageCropper: 98296ad26b41753f796b6898d015509598f13d97 yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64 -PODFILE CHECKSUM: f98adf896db83acfddda2f17bf015d55d15a89f2 +PODFILE CHECKSUM: 5eb5b0e70b4137f9fad7a928c840f92f67d266bf COCOAPODS: 1.6.2 diff --git a/ios/Pods/Manifest.lock b/ios/Pods/Manifest.lock index a989782ab8..361811c72e 100644 --- a/ios/Pods/Manifest.lock +++ b/ios/Pods/Manifest.lock @@ -142,6 +142,7 @@ DEPENDENCIES: - Crashlytics (~> 3.12.0) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - Fabric (~> 1.9.0) + - Firebase/Core - Firebase/Core (~> 5.20.1) - Firebase/Performance (~> 5.20.1) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) @@ -243,6 +244,6 @@ SPEC CHECKSUMS: RSKImageCropper: 98296ad26b41753f796b6898d015509598f13d97 yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64 -PODFILE CHECKSUM: f98adf896db83acfddda2f17bf015d55d15a89f2 +PODFILE CHECKSUM: 5eb5b0e70b4137f9fad7a928c840f92f67d266bf COCOAPODS: 1.6.2 diff --git a/ios/Pods/Pods.xcodeproj/project.pbxproj b/ios/Pods/Pods.xcodeproj/project.pbxproj index b818f098f1..c490eb72fd 100644 --- a/ios/Pods/Pods.xcodeproj/project.pbxproj +++ b/ios/Pods/Pods.xcodeproj/project.pbxproj @@ -258,7 +258,7 @@ 59DE09E33DAEFA2A3334C37FCF7D5349 /* FIRInstanceIDCheckinService.m in Sources */ = {isa = PBXBuildFile; fileRef = E587B3F2F5ACE664165F9212BAC58A0B /* FIRInstanceIDCheckinService.m */; }; 5A2F03FAC8E5F5A2D356C7B91FDC88ED /* GPBArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 32461DFC0E47CD7259441A160789160E /* GPBArray.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5AD2957BC9616A15C34796F1E7487F00 /* glog-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1590D6871326CFE7CA44DFFEA384FD03 /* glog-dummy.m */; }; - 5AE34C5703510C37651F2D592E581740 /* Pods-RocketChatRN-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DB26A8DCF5A6E3B4A1BC4152C6D9DC6C /* Pods-RocketChatRN-dummy.m */; }; + 5AE34C5703510C37651F2D592E581740 /* Pods-RocketChatRN-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 30D6FDCC52D608CFD7FA1FAE7409E462 /* Pods-RocketChatRN-dummy.m */; }; 5B49E51718F58DD0B4F8F1B0E83C8582 /* RSKImageScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 13D445095FC98E1953690D565C881FDD /* RSKImageScrollView.h */; settings = {ATTRIBUTES = (Project, ); }; }; 5C2ABB749C6E8BBEC7631087BFA535DD /* GULNetworkConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 031182114156D9FD17B5BA12E328E7E0 /* GULNetworkConstants.m */; }; 5C39FAFF84E98053EAF5F44DC4B7BFAA /* GULAppDelegateSwizzler.h in Headers */ = {isa = PBXBuildFile; fileRef = E99B0D64B717D3685A2D48961E286C54 /* GULAppDelegateSwizzler.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -407,6 +407,7 @@ B7D9F8D1971A3797151BCBDF74824208 /* nanopb-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C26FDE4600EFD11466856933697391CE /* nanopb-dummy.m */; }; BA72121160AF58E9BB0CDDE7F3A8C286 /* FIRInstanceIDTokenInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 59580373A446659C07B9D6B12E8B769F /* FIRInstanceIDTokenInfo.m */; }; BCFBA8C90FCC43DF9D66551A9D371971 /* GPBCodedInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 034AB978EEAE0AA5F06DB6D822E28E93 /* GPBCodedInputStream.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + BDBF8C9C8853631C9DC84221B8A4DD36 /* Pods-ShareRocketChatRN-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C6494BF3BBF96C9957F9676F8B880E2 /* Pods-ShareRocketChatRN-dummy.m */; }; BEDC98C637D42DB31CE44DD1D5584DB2 /* GTMSessionFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = 961E5CFB6EF6E98C98144578CDA78057 /* GTMSessionFetcherService.m */; }; BF0CDE313B0F3BE180D52BAED9F06B1E /* GPBProtocolBuffers_RuntimeSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 209FB1AF949B819EDBD99CF85EA82E66 /* GPBProtocolBuffers_RuntimeSupport.h */; settings = {ATTRIBUTES = (Project, ); }; }; BF5B46626A4BAE5F8803A0510A26A5E0 /* ImageCropPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = E733BBE63869E6D6C3E02F5FCC6C08C5 /* ImageCropPicker.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -501,6 +502,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 01EF3C0B8E696A9D1C53A2BD00145F48 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 32F8EA730FE2005197F54338D2C236AC; + remoteInfo = GoogleToolboxForMac; + }; 0545D06269AACD0CA47D771CF60B0F00 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -578,6 +586,13 @@ remoteGlobalIDString = 7969F0F17682790DCAF63BC9AF2176ED; remoteInfo = GoogleUtilities; }; + 306F65FE347C36DEC79E075ACEEF5F52 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 1ABBF6F89787BBEDF49B4636ADB45587; + remoteInfo = FirebaseAnalytics; + }; 30E4AFE91AFE993916F5FF5C06DD35DD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -592,6 +607,13 @@ remoteGlobalIDString = 2543734D0A332B2588202904B99CC151; remoteInfo = nanopb; }; + 35E3379BF03957775EDA93A0CB2D690E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7C36E7C600F8DE2BE1819059C80F2182; + remoteInfo = GoogleIDFASupport; + }; 37741C1C5AB21BAD1E3305A5671E7D7A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -634,6 +656,13 @@ remoteGlobalIDString = 111EE270AF30FB09FC9EB73638F2E16A; remoteInfo = RSKImageCropper; }; + 4EE8250961151132007EB750B01F2D08 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AB021401ADE9E1431240BBA948E7965E; + remoteInfo = GoogleAppMeasurement; + }; 55607F090267C22B4E11EAEBD923379A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -683,6 +712,20 @@ remoteGlobalIDString = 7969F0F17682790DCAF63BC9AF2176ED; remoteInfo = GoogleUtilities; }; + 75954F9A986CAC4FFF8C6AFE61FDD466 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5AAD465FECAE9083F45E3DB9252A8302; + remoteInfo = FirebaseRemoteConfig; + }; + 80CDEEBF1A98B3119F5F09A3905DC9EA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 39E0403E3ACE39BC0D878D82FAB8F012; + remoteInfo = FirebaseABTesting; + }; 8133F53ED6CDC355BB2264E4DBA0BF96 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -739,6 +782,13 @@ remoteGlobalIDString = 66641B93FAF80FF325B2D7B4AD85056F; remoteInfo = "boost-for-react-native"; }; + 8C6665DED37217AEBA81552D51718915 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C8CD7E4179727E4F374CABD338D2BB; + remoteInfo = Firebase; + }; 94ACBB797039D918B9290B94A50A3F36 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -809,6 +859,20 @@ remoteGlobalIDString = 7C36E7C600F8DE2BE1819059C80F2182; remoteInfo = GoogleIDFASupport; }; + AD84D94BC5B613F54495D72A74C1BD12 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1DE11E9221F196A8A9D3464F96A345A; + remoteInfo = Protobuf; + }; + AE69AE7715773CD9ADD7679EAA07BC03 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = ABA9A411BB5A359862E5F1AA6238278E; + remoteInfo = Crashlytics; + }; AEBAA8C70F6579DE56DF4968146A8314 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -851,6 +915,13 @@ remoteGlobalIDString = 000000005960; remoteInfo = React; }; + BBDDC27DC9626CD055E16F01D3DF5EEA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E3A3FB14CD4ACD21565913CF4A4B097C; + remoteInfo = GTMSessionFetcher; + }; BC05A9D967DC5251290FC72F65B62686 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -963,6 +1034,34 @@ remoteGlobalIDString = 000000005960; remoteInfo = React; }; + DAF34818699CB553080618096D357B88 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 586739D116442BA7FCD2EC0353EA0FA4; + remoteInfo = FirebaseInstanceID; + }; + DE2B00022E1CB87F896C936284F6C0F8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 368FB7FBA34E3323BB42D13325551C95; + remoteInfo = FirebaseCore; + }; + E01E91059C20119C29F7F87FE8DBDEE6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D35E9EC86D36A4C8BC1704199FDB3552; + remoteInfo = Fabric; + }; + E32A8E7595ABEB17EC5838417DF641A8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7969F0F17682790DCAF63BC9AF2176ED; + remoteInfo = GoogleUtilities; + }; E60C05616D024BAA46966F3E6B4EDC1B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -977,6 +1076,13 @@ remoteGlobalIDString = 368FB7FBA34E3323BB42D13325551C95; remoteInfo = FirebaseCore; }; + E8DB956718B042B6AEAED5F5C20D7807 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2543734D0A332B2588202904B99CC151; + remoteInfo = nanopb; + }; EB266CA52E321F1A5BD9E62115470A38 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -998,6 +1104,13 @@ remoteGlobalIDString = 000000005960; remoteInfo = React; }; + F6C767BF3EA33A87A1CE65C6D2177484 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42F7AF66FD1178857DC3A2834552BE76; + remoteInfo = FirebasePerformance; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -1010,7 +1123,6 @@ 01667AE46D9B0857D288D0322E9859D5 /* GULAppDelegateSwizzler_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULAppDelegateSwizzler_Private.h; path = GoogleUtilities/AppDelegateSwizzler/Internal/GULAppDelegateSwizzler_Private.h; sourceTree = ""; }; 016C6F191BE51C14AD6DF11D7E2F02FF /* RCTTextAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTTextAttributes.m; path = Libraries/Text/RCTTextAttributes.m; sourceTree = ""; }; 019A59E7B810C81E40917BCCC4DAD9A2 /* RCTWebView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTWebView.m; sourceTree = ""; }; - 01DC8D519261EBAA259B879B90D6A7C5 /* libRNScreens.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNScreens.a; path = libRNScreens.a; sourceTree = BUILT_PRODUCTS_DIR; }; 01E527DC82BB0D8C7168C89D23E7D5DD /* RNDeviceInfo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNDeviceInfo-dummy.m"; sourceTree = ""; }; 02371EA5B3DB9048CE62BB28E01C696D /* RCTScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollView.h; sourceTree = ""; }; 02978CB1C748E8FA706CC0E6AEA5317D /* RCTNetworkTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTNetworkTask.m; path = Libraries/Network/RCTNetworkTask.m; sourceTree = ""; }; @@ -1019,10 +1131,10 @@ 031182114156D9FD17B5BA12E328E7E0 /* GULNetworkConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkConstants.m; path = GoogleUtilities/Network/GULNetworkConstants.m; sourceTree = ""; }; 03469186FEB5D84423E500960BC5C7A5 /* RCTSegmentedControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSegmentedControlManager.h; sourceTree = ""; }; 034AB978EEAE0AA5F06DB6D822E28E93 /* GPBCodedInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBCodedInputStream.m; path = objectivec/GPBCodedInputStream.m; sourceTree = ""; }; - 03A09AA251F031FF69A29DE97D080BF2 /* libFirebaseCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFirebaseCore.a; path = libFirebaseCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; 03D77687AAA2ABE0D98C3F9A591CFE9C /* RCTSwitchManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSwitchManager.m; sourceTree = ""; }; 04387AC8C6AE41C3100B505F8335F30D /* QBVideoIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBVideoIndicatorView.m; path = QBImagePicker/QBVideoIndicatorView.m; sourceTree = ""; }; 044793492BE04BE01BEBB918CD58520D /* RCTSurfaceHostingProxyRootView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceHostingProxyRootView.h; sourceTree = ""; }; + 045797274424DE424437D4E2415F17C1 /* libnanopb.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libnanopb.a; path = libnanopb.a; sourceTree = BUILT_PRODUCTS_DIR; }; 047C95AF51E8D46F16DDA9A4058CDAFB /* RCTErrorInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTErrorInfo.m; sourceTree = ""; }; 047F7C14D5BA3D10FDD5C05A933E8CD5 /* RSKImageCropViewController+Protected.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "RSKImageCropViewController+Protected.h"; path = "RSKImageCropper/RSKImageCropViewController+Protected.h"; sourceTree = ""; }; 0497F30F4BA1B5FDDFED9924942263B0 /* GULObjectSwizzler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULObjectSwizzler.h; path = GoogleUtilities/ISASwizzler/Private/GULObjectSwizzler.h; sourceTree = ""; }; @@ -1038,6 +1150,7 @@ 0901BD78FBA99D849CC9A1849976A30F /* React-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "React-dummy.m"; sourceTree = ""; }; 09B2554CF26F8F43E8C6001023959492 /* RCTImageViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageViewManager.h; path = Libraries/Image/RCTImageViewManager.h; sourceTree = ""; }; 0A400D5102BE84445B019430EA3BE8B4 /* RNCWKWebViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCWKWebViewManager.m; path = ios/RNCWKWebViewManager.m; sourceTree = ""; }; + 0A54AA07416E365FAD5F1636AED77796 /* libRNScreens.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNScreens.a; path = libRNScreens.a; sourceTree = BUILT_PRODUCTS_DIR; }; 0A85E6F59A948F204CF367FDFE2CA620 /* RCTFPSGraph.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTFPSGraph.h; sourceTree = ""; }; 0ACC2E217FC7B9720D6AEB5AD38C3552 /* RCTJSStackFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTJSStackFrame.m; sourceTree = ""; }; 0AF96CFD962855C85F574FBD2C954DE2 /* GPBRuntimeTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBRuntimeTypes.h; path = objectivec/GPBRuntimeTypes.h; sourceTree = ""; }; @@ -1055,7 +1168,6 @@ 0D17550BF994FBF06C73511851CEB5EE /* CompactValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CompactValue.h; path = yoga/CompactValue.h; sourceTree = ""; }; 0D1E375073365E733A757520046ED561 /* UIView+React.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIView+React.h"; sourceTree = ""; }; 0D1E7E185F853FC0062B62CDD76AF164 /* GPBWireFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBWireFormat.h; path = objectivec/GPBWireFormat.h; sourceTree = ""; }; - 0D5DF052A23CB44F008C82005B2B7C3D /* libGoogleToolboxForMac.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGoogleToolboxForMac.a; path = libGoogleToolboxForMac.a; sourceTree = BUILT_PRODUCTS_DIR; }; 0D5FCD37382BE0819264CFBA4F131B85 /* RCTImageViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTImageViewManager.m; path = Libraries/Image/RCTImageViewManager.m; sourceTree = ""; }; 0D8D5C82223C397877112DFD640E2B98 /* RCTPointerEvents.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPointerEvents.h; sourceTree = ""; }; 0DC0A60A9467868CEA7A2146861B49B6 /* FIRVersion.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRVersion.m; path = Firebase/Core/FIRVersion.m; sourceTree = ""; }; @@ -1090,6 +1202,7 @@ 16DC3363E3A5DD93919EA65165E1DD2D /* FIRInstanceIDKeyPairUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPairUtilities.m; path = Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.m; sourceTree = ""; }; 1730DF892519D8A1364D4E50B237253A /* RCTSettingsManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTSettingsManager.h; path = Libraries/Settings/RCTSettingsManager.h; sourceTree = ""; }; 174C3CDEF567F363603C3E3CB3890641 /* fishhook.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fishhook.h; path = Libraries/fishhook/fishhook.h; sourceTree = ""; }; + 17636E8730B288EBD929CA0BFCA63265 /* libRSKImageCropper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRSKImageCropper.a; path = libRSKImageCropper.a; sourceTree = BUILT_PRODUCTS_DIR; }; 17D6D1509530A33ABC1F17CCFCDFCDFF /* RCTTrackingAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTrackingAnimatedNode.h; sourceTree = ""; }; 17D71991D0280E8C03F310F0CAABB18F /* FIROptionsInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptionsInternal.h; path = Firebase/Core/Private/FIROptionsInternal.h; sourceTree = ""; }; 17F75CB326520808F2954C187E122308 /* RCTFont.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTFont.mm; sourceTree = ""; }; @@ -1099,7 +1212,6 @@ 19BDD18734E3ED77D3CAA89E3F1C4EF8 /* RCTInputAccessoryViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryViewManager.h; sourceTree = ""; }; 19D813648EB603BAF163D4B61F2C5691 /* Wrappers.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Wrappers.pbobjc.m; path = objectivec/google/protobuf/Wrappers.pbobjc.m; sourceTree = ""; }; 1A15FBFECB164015748AEC5366BF3741 /* FIRInstanceIDCombinedHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCombinedHandler.h; path = Firebase/InstanceID/FIRInstanceIDCombinedHandler.h; sourceTree = ""; }; - 1A760F53C16EFEE83DF51B39C1A8859E /* libRSKImageCropper.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRSKImageCropper.a; path = libRSKImageCropper.a; sourceTree = BUILT_PRODUCTS_DIR; }; 1AACF2E720214F71B2126A962E498349 /* RCTTransformAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTransformAnimatedNode.h; sourceTree = ""; }; 1AC5912C31AD1AE7AA799A833769F283 /* RCTShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTShadowView.m; sourceTree = ""; }; 1B17644C190C6921FF8F6E4980B8BE97 /* Struct.pbobjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Struct.pbobjc.h; path = objectivec/google/protobuf/Struct.pbobjc.h; sourceTree = ""; }; @@ -1134,7 +1246,6 @@ 20E9E9F16FB59BE7910B25BC29B02B33 /* RCTNetworking.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTNetworking.mm; path = Libraries/Network/RCTNetworking.mm; sourceTree = ""; }; 211E0ECE8F57C74C6EDD857AAF9DB816 /* instrumentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = instrumentation.h; path = yoga/instrumentation.h; sourceTree = ""; }; 21223916590270E5BC6B2E021664B69B /* RCTStatusBarManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTStatusBarManager.h; sourceTree = ""; }; - 215921D9CE6F36E7F6E845A38B13740B /* libQBImagePickerController.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libQBImagePickerController.a; path = libQBImagePickerController.a; sourceTree = BUILT_PRODUCTS_DIR; }; 21D603271270CA58860B3D9150DD5282 /* RCTMultipartStreamReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTMultipartStreamReader.h; sourceTree = ""; }; 21E490EE02F5EB3928C5955CAF2320A2 /* YGValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGValue.h; path = yoga/YGValue.h; sourceTree = ""; }; 22293BA067850112F37BE2951B912138 /* signalhandler.cc */ = {isa = PBXFileReference; includeInIndex = 1; name = signalhandler.cc; path = src/signalhandler.cc; sourceTree = ""; }; @@ -1148,7 +1259,6 @@ 27069FB870DC23ABECA4A81B71F346B9 /* RCTResizeMode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTResizeMode.m; path = Libraries/Image/RCTResizeMode.m; sourceTree = ""; }; 270E472A7E6780CBBE8A183CCA75AD74 /* RCTShadowView+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RCTShadowView+Internal.m"; sourceTree = ""; }; 278C595B434D1016AAB40EF5A84CCAD2 /* YGMarker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGMarker.h; path = yoga/YGMarker.h; sourceTree = ""; }; - 27AEE0C33CBDF4FAF22C15057410EE12 /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libReact.a; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; }; 27BA61510074129562C639CBA224030B /* UIImage+RSKImageCropper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+RSKImageCropper.h"; path = "RSKImageCropper/UIImage+RSKImageCropper.h"; sourceTree = ""; }; 2904B07AEDCD591530EE3FE6876076CD /* RCTNativeAnimatedModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTNativeAnimatedModule.m; path = Libraries/NativeAnimation/RCTNativeAnimatedModule.m; sourceTree = ""; }; 293F77756560B9164EC847E289ABEC61 /* RCTNetworkTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTNetworkTask.h; path = Libraries/Network/RCTNetworkTask.h; sourceTree = ""; }; @@ -1158,9 +1268,9 @@ 29CC28732B35F69DDD786CBEBEED2149 /* GPBDictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDictionary.h; path = objectivec/GPBDictionary.h; sourceTree = ""; }; 2ADFF1C163A290169C39AA178920361A /* RCTSwitch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSwitch.h; sourceTree = ""; }; 2B254C6B665958AB2EE0FF41B55E87D9 /* GULNetworkURLSession.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULNetworkURLSession.m; path = GoogleUtilities/Network/GULNetworkURLSession.m; sourceTree = ""; }; - 2B297F30D487A4852E7A2ED2EDEE6EE7 /* QBImagePicker.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = QBImagePicker.bundle; path = "QBImagePickerController-QBImagePicker.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; 2B3472F5B5AFC91972C23EE479F38D58 /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; 2B77F4115089B8B178E7E8E9A2EEC1A1 /* RNCUIWebView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNCUIWebView.m; path = ios/RNCUIWebView.m; sourceTree = ""; }; + 2BF641BF48FFB897A1A7A3F5BCE11A2E /* libFirebaseInstanceID.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFirebaseInstanceID.a; path = libFirebaseInstanceID.a; sourceTree = BUILT_PRODUCTS_DIR; }; 2C37447B513BB858ABEE189BB5B3199F /* YGStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGStyle.h; path = yoga/YGStyle.h; sourceTree = ""; }; 2C51918EA1808D554CF1D321442A3CBD /* RCTWebSocketModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTWebSocketModule.m; path = Libraries/WebSocket/RCTWebSocketModule.m; sourceTree = ""; }; 2CA9DA6889DF8BB4C0F9228C6AD305F8 /* RCTImageShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTImageShadowView.m; path = Libraries/Image/RCTImageShadowView.m; sourceTree = ""; }; @@ -1172,6 +1282,8 @@ 2F373F00B000E4CE4EBB9408247D435D /* RCTUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUtils.h; sourceTree = ""; }; 2FDF57448B0B3B96FCCB3ADFD8B7936B /* RCTSubtractionAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSubtractionAnimatedNode.h; sourceTree = ""; }; 303B9B16FFAD36F5401E0D101F4821BC /* RCTPickerManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPickerManager.h; sourceTree = ""; }; + 30D6FDCC52D608CFD7FA1FAE7409E462 /* Pods-RocketChatRN-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketChatRN-dummy.m"; sourceTree = ""; }; + 30E754BC495F949B7E84DF568D1A4313 /* libglog.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libglog.a; path = libglog.a; sourceTree = BUILT_PRODUCTS_DIR; }; 30FB3FB168879CE5737B4D9631DB04D4 /* RCTEventAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTEventAnimation.m; sourceTree = ""; }; 310FF05E3469CF0382DA2DD0ACE5C9DD /* RCTRefreshControlManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRefreshControlManager.m; sourceTree = ""; }; 3117A3D34B4A56C558AB6E548338C4F2 /* RNCUIWebView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCUIWebView.h; path = ios/RNCUIWebView.h; sourceTree = ""; }; @@ -1272,6 +1384,7 @@ 495AF3D800175BD4B68CB72DFAC170DF /* react-native-orientation-locker.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-orientation-locker.xcconfig"; sourceTree = ""; }; 4972B541A5E6E8E29A1869AD5C1471F1 /* RCTSpringAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSpringAnimation.h; sourceTree = ""; }; 49929B494689314869BE877D36C79F66 /* RCTWKWebViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTWKWebViewManager.h; sourceTree = ""; }; + 4A0AFC9293E40ADA39759FD3BACE021B /* libyoga.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libyoga.a; path = libyoga.a; sourceTree = BUILT_PRODUCTS_DIR; }; 4A1355EBE513DA236FA38187541A1D36 /* RCTProfileTrampoline-arm64.S */ = {isa = PBXFileReference; includeInIndex = 1; path = "RCTProfileTrampoline-arm64.S"; sourceTree = ""; }; 4A392B2042022C20AA6278A6488F3450 /* GULUserDefaults.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULUserDefaults.h; path = GoogleUtilities/UserDefaults/Private/GULUserDefaults.h; sourceTree = ""; }; 4A3D590BB5136E52176D77530465293E /* RCTDivisionAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDivisionAnimatedNode.m; sourceTree = ""; }; @@ -1293,18 +1406,20 @@ 4D1B92FF422855E7F24CBC59BA2A31C4 /* GPBCodedOutputStream_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedOutputStream_PackagePrivate.h; path = objectivec/GPBCodedOutputStream_PackagePrivate.h; sourceTree = ""; }; 4D6D63C2D1947B5314013A9F285E9A69 /* RCTMultilineTextInputViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMultilineTextInputViewManager.m; sourceTree = ""; }; 4D72526F49DB18BCD06DAA9AF5A04D9A /* RCTWrapperViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTWrapperViewController.h; sourceTree = ""; }; - 4D9AE1F5735B89A753A7A8098AC49330 /* libreact-native-splash-screen.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-splash-screen.a"; path = "libreact-native-splash-screen.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 4DC3650807C96F5E7FB2BB5E3F1F571D /* RSKImageCropperStrings.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = RSKImageCropperStrings.bundle; path = RSKImageCropper/RSKImageCropperStrings.bundle; sourceTree = ""; }; 4DC7C3515580940D0C1C64597E302966 /* QBAlbumsViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBAlbumsViewController.m; path = QBImagePicker/QBAlbumsViewController.m; sourceTree = ""; }; 4E1346157A8E9BD0479DB40C4BC2EA76 /* GPBUnknownField.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUnknownField.h; path = objectivec/GPBUnknownField.h; sourceTree = ""; }; - 4E2757FF8021BE2FC2EBAAA4A9C1C777 /* libyoga.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libyoga.a; path = libyoga.a; sourceTree = BUILT_PRODUCTS_DIR; }; 4E520CF9FB73AEE5FF2BF935BCA84731 /* RCTPropsAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTPropsAnimatedNode.m; sourceTree = ""; }; 4E53FD7884463BAE09E36BD46399952A /* RCTI18nManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTI18nManager.m; sourceTree = ""; }; + 4F6B964706F8ADC73280A6DB40F720EA /* Pods-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ShareRocketChatRN.debug.xcconfig"; sourceTree = ""; }; + 501D8262643E75ACB8B36147ADB61F0D /* Pods-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ShareRocketChatRN.release.xcconfig"; sourceTree = ""; }; 50211D8651BDEECDCF337C2943949119 /* GPBDescriptor_PackagePrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBDescriptor_PackagePrivate.h; path = objectivec/GPBDescriptor_PackagePrivate.h; sourceTree = ""; }; 50BC3074BB06BC98F23931C70A9B5C19 /* GPBUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBUtilities.m; path = objectivec/GPBUtilities.m; sourceTree = ""; }; 515A1F6C79F560E37E999D318248B68B /* FIRLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRLogger.h; path = Firebase/Core/Private/FIRLogger.h; sourceTree = ""; }; 516301F78F394A22B000158228B9A457 /* RCTLayoutAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTLayoutAnimation.m; sourceTree = ""; }; 51DB1D488B9CD90333D4917C16942248 /* ColdClass.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = ColdClass.cpp; path = folly/lang/ColdClass.cpp; sourceTree = ""; }; + 521489D94D304C6B28788EC2874F08C6 /* libGoogleUtilities.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGoogleUtilities.a; path = libGoogleUtilities.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 52214549E488F4B9D25D933A5B440A59 /* QBImagePicker.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = QBImagePicker.bundle; path = "QBImagePickerController-QBImagePicker.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; 52413708A751A44C4BBEC6FA2ED9CCE8 /* FIRInstanceIDAuthKeyChain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDAuthKeyChain.h; path = Firebase/InstanceID/FIRInstanceIDAuthKeyChain.h; sourceTree = ""; }; 525C647EEF47536DBF52A18EA0147F7C /* FIRInstanceIDCheckinPreferences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDCheckinPreferences.m; path = Firebase/InstanceID/FIRInstanceIDCheckinPreferences.m; sourceTree = ""; }; 5260785553FE1A8E4EC8EED434B58601 /* RCTScrollContentViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentViewManager.h; sourceTree = ""; }; @@ -1312,11 +1427,12 @@ 5312706937A32F9CF31880668E6CB34C /* UIView+React.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIView+React.m"; sourceTree = ""; }; 53563E1385145D00720C7953AD9E0E74 /* Crashlytics.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.xcconfig; sourceTree = ""; }; 5363EC9A46231D88DE63592159D4E167 /* RCTReconnectingWebSocket.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTReconnectingWebSocket.h; path = Libraries/WebSocket/RCTReconnectingWebSocket.h; sourceTree = ""; }; + 545ECF51D61814DD6E8C1AA1C32EE74A /* libreact-native-webview.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-webview.a"; path = "libreact-native-webview.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 54627613061D55A797A2AFCFB0A864D7 /* GULLoggerLevel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULLoggerLevel.h; path = GoogleUtilities/Logger/Public/GULLoggerLevel.h; sourceTree = ""; }; 54AB1F9A19A7EA3F67C2E69B5E342464 /* RCTModuleData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModuleData.h; sourceTree = ""; }; 5506ED24DA0C0ABCB9486F68AB52E022 /* RCTSegmentedControlManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSegmentedControlManager.m; sourceTree = ""; }; + 552B6D270D174C15FC4B12F11A062441 /* libGoogleToolboxForMac.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGoogleToolboxForMac.a; path = libGoogleToolboxForMac.a; sourceTree = BUILT_PRODUCTS_DIR; }; 559BAFBAFE3A8EEECCC160B988BF99CA /* RCTTextViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTTextViewManager.h; sourceTree = ""; }; - 56360009B0456FD26BACD30E15A84CEF /* libDoubleConversion.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDoubleConversion.a; path = libDoubleConversion.a; sourceTree = BUILT_PRODUCTS_DIR; }; 564273866CA88CC8BD0C498524CB9D22 /* RCTBackedTextInputDelegateAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBackedTextInputDelegateAdapter.h; sourceTree = ""; }; 565D524286473269CBBCCFB3B6EDD6AC /* GPBUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBUtilities.h; path = objectivec/GPBUtilities.h; sourceTree = ""; }; 579182D372EBF52F807F254285F429A7 /* RCTWebView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTWebView.h; sourceTree = ""; }; @@ -1336,10 +1452,8 @@ 5A601E6330B922C4911EB6709D982A87 /* boost-for-react-native.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "boost-for-react-native.xcconfig"; sourceTree = ""; }; 5A66D4BE8819AAEA103734F7D4F5519D /* QBImagePickerController-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "QBImagePickerController-prefix.pch"; sourceTree = ""; }; 5ACFB0EF1D24E37CA005A2812636360A /* RCTHTTPRequestHandler.mm */ = {isa = PBXFileReference; includeInIndex = 1; name = RCTHTTPRequestHandler.mm; path = Libraries/Network/RCTHTTPRequestHandler.mm; sourceTree = ""; }; - 5AD048465639525B81E23944B58005C8 /* Pods-RocketChatRN-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketChatRN-acknowledgements.plist"; sourceTree = ""; }; 5AEFCADEEBD5165AAA3FD3F30DA7F4E3 /* RCTTouchEvent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTouchEvent.m; sourceTree = ""; }; 5B444A17EA7693B11819F2C9258F71C4 /* RCTSurfaceSizeMeasureMode.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceSizeMeasureMode.mm; sourceTree = ""; }; - 5B4C2F4E3F95179CD28B9A7106F8B221 /* libGTMSessionFetcher.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGTMSessionFetcher.a; path = libGTMSessionFetcher.a; sourceTree = BUILT_PRODUCTS_DIR; }; 5B506EBED09D7451E6DB5E7FCA0353AC /* RCTShadowView+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RCTShadowView+Internal.h"; sourceTree = ""; }; 5BDEF993C35C5C5E7F196C02190C34B1 /* RCTSurface.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurface.mm; sourceTree = ""; }; 5BE41C9DFDC4FD7C408776028F523ED8 /* FirebaseABTesting.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseABTesting.framework; path = Frameworks/FirebaseABTesting.framework; sourceTree = ""; }; @@ -1377,7 +1491,9 @@ 6513B153A69122DA4C3567D902EF3824 /* FIRInstanceIDKeyPairStore.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDKeyPairStore.m; path = Firebase/InstanceID/FIRInstanceIDKeyPairStore.m; sourceTree = ""; }; 65935DE2B6D45B09853ABB8E59F1D354 /* RCTFileRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTFileRequestHandler.m; path = Libraries/Network/RCTFileRequestHandler.m; sourceTree = ""; }; 65DFDAD45501F5F47CEEF4DFC81EFBB8 /* RCTBridge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBridge.m; sourceTree = ""; }; + 661E0CA7F7810EE9B125C18F9BCED2BC /* libreact-native-splash-screen.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-splash-screen.a"; path = "libreact-native-splash-screen.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 6697EA434D23502A2D809B6B7E6E3A4B /* QBImagePickerController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBImagePickerController.h; path = QBImagePicker/QBImagePickerController.h; sourceTree = ""; }; + 66DF5A4B236B167B9E988E39F6F9D336 /* libPods-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-RocketChatRN.a"; path = "libPods-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 6734DE64ED0684F4ED7E862F0B473C09 /* GTMNSData+zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSData+zlib.h"; path = "Foundation/GTMNSData+zlib.h"; sourceTree = ""; }; 675CC4567D34CC25C1EAB70894E5B2E5 /* RCTScrollContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTScrollContentView.h; sourceTree = ""; }; 6775F807D5634E9C16A0E6098D285C15 /* RCTDeviceInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDeviceInfo.h; sourceTree = ""; }; @@ -1395,10 +1511,12 @@ 6BC6169FE9172EC3ECF6AD711B177B87 /* FIRInstanceIDKeyPairStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPairStore.h; path = Firebase/InstanceID/FIRInstanceIDKeyPairStore.h; sourceTree = ""; }; 6BEC5CB1F4874AAD0138959794C1CF02 /* QBImagePicker.storyboard */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.storyboard; name = QBImagePicker.storyboard; path = QBImagePicker/QBImagePicker.storyboard; sourceTree = ""; }; 6C0A208B50BC7DD0CB91ED9CAC3066BE /* FIRInstanceIDLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDLogger.m; path = Firebase/InstanceID/FIRInstanceIDLogger.m; sourceTree = ""; }; + 6C6494BF3BBF96C9957F9676F8B880E2 /* Pods-ShareRocketChatRN-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ShareRocketChatRN-dummy.m"; sourceTree = ""; }; 6C87924A9DA6E1AD8A21AA68BA97330B /* RCTDivisionAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDivisionAnimatedNode.h; sourceTree = ""; }; 6D048B65D5401F3B11C2CD7AD3F5FDE2 /* RSKTouchView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSKTouchView.h; path = RSKImageCropper/RSKTouchView.h; sourceTree = ""; }; 6D1AC57504505A93DD8D0EA687056CBB /* FieldMask.pbobjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FieldMask.pbobjc.m; path = objectivec/google/protobuf/FieldMask.pbobjc.m; sourceTree = ""; }; 6D4F1380084C5CF876DBC28B169C3B82 /* Folly.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Folly.xcconfig; sourceTree = ""; }; + 6D82F565EC3AB854EB6657E0657222C2 /* Pods-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketChatRN.release.xcconfig"; sourceTree = ""; }; 6DA5208649DBB873A3E30032D4681CC1 /* RCTParserUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTParserUtils.h; sourceTree = ""; }; 6DB842E29EB9934D5B365DE7714ED23B /* FirebaseAnalytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseAnalytics.framework; path = Frameworks/FirebaseAnalytics.framework; sourceTree = ""; }; 6DC579C09B3BA22DD3F694833A665382 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; @@ -1420,9 +1538,10 @@ 7228F1A5DD1E7449CFFAA650E17D8BF7 /* GTMSessionFetcher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GTMSessionFetcher-dummy.m"; sourceTree = ""; }; 732E544ACD6FE923DAA5E78E02F1E202 /* RCTFileRequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTFileRequestHandler.h; path = Libraries/Network/RCTFileRequestHandler.h; sourceTree = ""; }; 7498C22D9DF923F2EB5402E6FB46A266 /* GULReachabilityChecker+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GULReachabilityChecker+Internal.h"; path = "GoogleUtilities/Reachability/GULReachabilityChecker+Internal.h"; sourceTree = ""; }; - 756ACE90B6EF13570602DFBD7D8AE1AE /* libFolly.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFolly.a; path = libFolly.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 75E5F2FAE3615F969E1B0DA9DD23A307 /* Pods-ShareRocketChatRN-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ShareRocketChatRN-acknowledgements.plist"; sourceTree = ""; }; 7660A55CB80BDE20D9C0317022BCF2CC /* RCTVirtualTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTVirtualTextShadowView.h; sourceTree = ""; }; 7662F13E288A068B7A314AB2C0D620EB /* YGNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGNode.h; path = yoga/YGNode.h; sourceTree = ""; }; + 769F89F59A78EFBDCF06E34B3F418E0A /* libFirebaseCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFirebaseCore.a; path = libFirebaseCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; 76C141C6E462C287A85420DE860AB4A5 /* RCTKeyCommands.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTKeyCommands.m; sourceTree = ""; }; 76C1E066642A7A0926E6516B46C95FFF /* RCTSpringAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSpringAnimation.m; sourceTree = ""; }; 76EBFD3CD23982CD8310269BCF2453CF /* GoogleToolboxForMac-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleToolboxForMac-dummy.m"; sourceTree = ""; }; @@ -1439,7 +1558,6 @@ 7C3540047463FC700E369C518510468D /* RCTTouchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTouchHandler.m; sourceTree = ""; }; 7C6D7910FEF5E3363C8BCF6764FEC7F1 /* RCTSwitchManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSwitchManager.h; sourceTree = ""; }; 7C9F66BD2F5994688215F7C214C82892 /* GULUserDefaults.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULUserDefaults.m; path = GoogleUtilities/UserDefaults/GULUserDefaults.m; sourceTree = ""; }; - 7CBB70653DCBD6DD993B57C905751C64 /* Pods-RocketChatRN-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketChatRN-acknowledgements.markdown"; sourceTree = ""; }; 7D1765AB3C29325E0A549F7FA48939BE /* RNCUIWebViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCUIWebViewManager.h; path = ios/RNCUIWebViewManager.h; sourceTree = ""; }; 7DA1A080C1670377B7C3F90B446E7512 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; 7E7D5E9AB7D14742F47AC44922BD15C5 /* RCTBaseTextShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBaseTextShadowView.m; sourceTree = ""; }; @@ -1457,7 +1575,6 @@ 80938737EC82A149170F242C5B889FC0 /* RCTMaskedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTMaskedView.m; sourceTree = ""; }; 80F583A588A7BFDA1F7CB40F133E0521 /* GTMLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMLogger.h; path = Foundation/GTMLogger.h; sourceTree = ""; }; 8176AA8C6D2DD64BB3198F842BE4F65A /* YGStyle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = YGStyle.cpp; path = yoga/YGStyle.cpp; sourceTree = ""; }; - 81D09FC952E2900D349B6C091BBB48D9 /* libFirebaseInstanceID.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFirebaseInstanceID.a; path = libFirebaseInstanceID.a; sourceTree = BUILT_PRODUCTS_DIR; }; 822E127F41D73E1A442BAE48920F7F3E /* FIRInstanceID.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceID.h; path = Firebase/InstanceID/Public/FIRInstanceID.h; sourceTree = ""; }; 824CA65A50D94CA1CAE58408CB4B035F /* FirebaseABTesting.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FirebaseABTesting.xcconfig; sourceTree = ""; }; 82526C2DCA763425E2601227769528DE /* RCTModuloAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModuloAnimatedNode.h; sourceTree = ""; }; @@ -1466,6 +1583,7 @@ 833461056D9A489B4099E8A0F59BBFE7 /* GTMSessionFetcher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-prefix.pch"; sourceTree = ""; }; 83A553FB3363877DF058636D631A348A /* GPBUnknownField.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GPBUnknownField.m; path = objectivec/GPBUnknownField.m; sourceTree = ""; }; 83C4FDF340E9674860657ABE2A678B46 /* RCTClipboard.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTClipboard.h; sourceTree = ""; }; + 83C83B95887DD95F1E725F2A0DF44542 /* libRNDeviceInfo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNDeviceInfo.a; path = libRNDeviceInfo.a; sourceTree = BUILT_PRODUCTS_DIR; }; 83DDE40E4A6C095F4F0FDC63A568ED24 /* RCTSegmentedControl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSegmentedControl.h; sourceTree = ""; }; 842C3FF7F4A33E32FD5155B0230088B3 /* RCTVibration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTVibration.m; path = Libraries/Vibration/RCTVibration.m; sourceTree = ""; }; 843565E86A42E493C0FABBFD575BDB21 /* RCTImageStoreManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTImageStoreManager.m; path = Libraries/Image/RCTImageStoreManager.m; sourceTree = ""; }; @@ -1482,12 +1600,14 @@ 86144205600214BECA2C93CEDC2A76D7 /* QBCheckmarkView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QBCheckmarkView.h; path = QBImagePicker/QBCheckmarkView.h; sourceTree = ""; }; 86FB658177A76D66DFF67A1F1B6430D6 /* FIRInstanceIDTokenFetchOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDTokenFetchOperation.m; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.m; sourceTree = ""; }; 8766D58086E61F45AD40DD1A14876CB7 /* RCTDataRequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTDataRequestHandler.m; path = Libraries/Network/RCTDataRequestHandler.m; sourceTree = ""; }; + 879BFDFFA19081A0BD41557BF1988D5E /* libRNImageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNImageCropPicker.a; path = libRNImageCropPicker.a; sourceTree = BUILT_PRODUCTS_DIR; }; 88173FEAE6AA0334663679ABEB47A34D /* pb_encode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_encode.h; sourceTree = ""; }; 88329F93E6419B54BC2AC291C7A23F69 /* RCTBridgeMethod.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBridgeMethod.h; sourceTree = ""; }; 88962D292A9AFFB073AF205CCE07B1D8 /* RCTModuloAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModuloAnimatedNode.m; sourceTree = ""; }; 88A0B7F93E25602A3433BE4D084D56A1 /* RCTNetInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTNetInfo.m; path = Libraries/Network/RCTNetInfo.m; sourceTree = ""; }; 88ABD257F2B1603EFB1A5D2DE450E668 /* RNImageCropPicker-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RNImageCropPicker-dummy.m"; sourceTree = ""; }; 89180A0D89ECDC0972DAC62514E2572A /* RCTImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageCache.h; path = Libraries/Image/RCTImageCache.h; sourceTree = ""; }; + 8981A3DCA2B5E70074AD0F0F1AF4F345 /* Pods-ShareRocketChatRN-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ShareRocketChatRN-acknowledgements.markdown"; sourceTree = ""; }; 8AA5C1AD15D45DBC4FEA32704115EA3D /* RCTUIUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTUIUtils.m; sourceTree = ""; }; 8AC0FDDD94ACAF13997A378DAEE01532 /* RCTRefreshControl.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRefreshControl.m; sourceTree = ""; }; 8AC8BAF14CB666BF4E4306D74439092F /* RCTFPSGraph.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTFPSGraph.m; sourceTree = ""; }; @@ -1516,6 +1636,7 @@ 90C00B4F2EE07875CCAA480D8DA60642 /* RCTRedBox.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTRedBox.m; sourceTree = ""; }; 91A35AD1F7E5AB5426953BBB211E62FD /* Utils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Utils.cpp; path = yoga/Utils.cpp; sourceTree = ""; }; 91B82FBADC13C0319F80CC629FFB10E1 /* RCTSafeAreaViewLocalData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSafeAreaViewLocalData.m; sourceTree = ""; }; + 91E6F0DDEECEA71B48EC90595495405D /* Pods-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketChatRN.debug.xcconfig"; sourceTree = ""; }; 91FFC3ACA796AF71C4AB51C4D5637080 /* GTMSessionFetcherLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherLogging.h; path = Source/GTMSessionFetcherLogging.h; sourceTree = ""; }; 92539DBA7C237CC37CC174B30BE17026 /* QBVideoIconView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBVideoIconView.m; path = QBImagePicker/QBVideoIconView.m; sourceTree = ""; }; 92758D17E5BBA349A51A2DCB4BBDBEF5 /* react-native-webview-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "react-native-webview-prefix.pch"; sourceTree = ""; }; @@ -1523,11 +1644,11 @@ 92EA56C94D4D81CB6F8E2DC19B0144AF /* RCTDecayAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDecayAnimation.m; sourceTree = ""; }; 92F7EE09869EE82AEF4C8BBF75990045 /* react-native-splash-screen.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "react-native-splash-screen.xcconfig"; sourceTree = ""; }; 931E1E88664BF29C0559B61CDF1BD5BA /* RSKImageCropper.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RSKImageCropper.xcconfig; sourceTree = ""; }; - 93416D7D0668795471B3617499D61693 /* libRNImageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNImageCropPicker.a; path = libRNImageCropPicker.a; sourceTree = BUILT_PRODUCTS_DIR; }; 9420F602F4192D15D8FA1069CC31E68F /* RNDeviceInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RNDeviceInfo.m; path = ios/RNDeviceInfo/RNDeviceInfo.m; sourceTree = ""; }; 94A6FA416A7085E787E8E7F4E4A43A6C /* RCTWKWebView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTWKWebView.h; sourceTree = ""; }; 95C15A4BF3BF113D8E6F2239D5AFA0D3 /* GoogleToolboxForMac.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.xcconfig; sourceTree = ""; }; 95C5175F642E3D1EE1E95C61F934D79D /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 9619142ECE5FD12CA97B4BE342DC5BBB /* libreact-native-orientation-locker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-orientation-locker.a"; path = "libreact-native-orientation-locker.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 961E5CFB6EF6E98C98144578CDA78057 /* GTMSessionFetcherService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherService.m; path = Source/GTMSessionFetcherService.m; sourceTree = ""; }; 9632C230C1B82662D3DAB3FAF6426F38 /* GPBWellKnownTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBWellKnownTypes.h; path = objectivec/GPBWellKnownTypes.h; sourceTree = ""; }; 9689BF2F45F68F2EA5605017D2D9FDEE /* RCTRefreshControlManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRefreshControlManager.h; sourceTree = ""; }; @@ -1538,10 +1659,12 @@ 975D4AA90560D485466B4A51B23DE27F /* FIRInstanceIDDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDDefines.h; path = Firebase/InstanceID/FIRInstanceIDDefines.h; sourceTree = ""; }; 97869FB3CA0DCFB0FD76418677CA0467 /* RCTInterpolationAnimatedNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInterpolationAnimatedNode.h; sourceTree = ""; }; 98A65BC0BF8190887897FA8466E7C946 /* FIRInstanceIDTokenManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenManager.h; path = Firebase/InstanceID/FIRInstanceIDTokenManager.h; sourceTree = ""; }; + 98FBE56A7614651DE91A0225AF8A7CEB /* libDoubleConversion.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDoubleConversion.a; path = libDoubleConversion.a; sourceTree = BUILT_PRODUCTS_DIR; }; 9915834E233E19E5AE79248C9DEB5CFE /* RNScreens-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RNScreens-prefix.pch"; sourceTree = ""; }; 9AB317F0CFE633918FE469302716CA49 /* Assume.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Assume.cpp; path = folly/lang/Assume.cpp; sourceTree = ""; }; 9B6EB8ABBF4DBB75EEAE28A420846B0D /* raw_logging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = raw_logging.h; path = src/glog/raw_logging.h; sourceTree = ""; }; 9B7D8EB6DE4A88212952A63A64F3F6B7 /* RNCWKWebViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCWKWebViewManager.h; path = ios/RNCWKWebViewManager.h; sourceTree = ""; }; + 9C3D7C95B626AA81A49A6BEB40C8B953 /* libPods-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-ShareRocketChatRN.a"; path = "libPods-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 9C9703086F9474B7AF28244A6A1FA38C /* RCTTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTextView.m; sourceTree = ""; }; 9CA136F385C2D0C0B763BA969DDC9469 /* YGValue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = YGValue.cpp; path = yoga/YGValue.cpp; sourceTree = ""; }; 9CF1F7C4EAA5D166BEF179B226BE8A33 /* RCTModalHostViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTModalHostViewManager.h; sourceTree = ""; }; @@ -1575,6 +1698,7 @@ A41B7BFEABEB2A6449351B5C578A54D3 /* FIRInstanceIDCheckinPreferences+Internal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "FIRInstanceIDCheckinPreferences+Internal.m"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.m"; sourceTree = ""; }; A43D9F7E97531854A744062EEE491E7F /* RCTTransformAnimatedNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTransformAnimatedNode.m; sourceTree = ""; }; A452DDB9FD10DDAB60D3F04FA2DD6BAF /* RNSScreen.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNSScreen.h; path = ios/RNSScreen.h; sourceTree = ""; }; + A4BCF5D07E7A22F1BEF3C8E72DA4E002 /* Pods-RocketChatRN-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-RocketChatRN-acknowledgements.plist"; sourceTree = ""; }; A4C4E18A3498F28846447A0E2C406B18 /* RCTEventDispatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTEventDispatcher.m; sourceTree = ""; }; A4D300827816D1923359DA1557AB9D0D /* FIRAnalyticsConnector.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FIRAnalyticsConnector.framework; path = Frameworks/FIRAnalyticsConnector.framework; sourceTree = ""; }; A4E337581C3EFF579376133751882AD0 /* RCTTextShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTextShadowView.m; sourceTree = ""; }; @@ -1586,7 +1710,6 @@ A6E9647C4980516FAEF729C99A4557DF /* FIRInstanceID+Testing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceID+Testing.h"; path = "Firebase/InstanceID/FIRInstanceID+Testing.h"; sourceTree = ""; }; A6EFB033B9C1FA21E2029E9D29D92F4C /* UIView+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIView+Private.h"; sourceTree = ""; }; A7519B970EE61F43835C92AE2F9B5C71 /* RCTInputAccessoryViewContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInputAccessoryViewContent.h; sourceTree = ""; }; - A7EBD2199C28CAF29EAE45BF9FAF9209 /* Pods-RocketChatRN-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketChatRN-resources.sh"; sourceTree = ""; }; A7FB755B6494E4CBB67B357467B03FBB /* FIRLogger.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRLogger.m; path = Firebase/Core/FIRLogger.m; sourceTree = ""; }; A806266B59579741AC7963B2FBFECB97 /* RCTAlertManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTAlertManager.m; sourceTree = ""; }; A82DD3844C4A552F3FF128E2A7A93145 /* YGNodePrint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = YGNodePrint.h; path = yoga/YGNodePrint.h; sourceTree = ""; }; @@ -1597,7 +1720,6 @@ A8BD45FC504CE22F0CDFE8BA1638CFAA /* RCTSurfaceHostingView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceHostingView.mm; sourceTree = ""; }; A90C8DF4D84A81BBC40C893FF10DB5A2 /* RCTComponentData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTComponentData.h; sourceTree = ""; }; A9209D5A37DA753BC42A9DD8365F66BF /* FIRInstanceIDVersionUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDVersionUtilities.m; path = Firebase/InstanceID/FIRInstanceIDVersionUtilities.m; sourceTree = ""; }; - A99F7986D0F96BA226868846D462E69C /* libreact-native-webview.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-webview.a"; path = "libreact-native-webview.a"; sourceTree = BUILT_PRODUCTS_DIR; }; A9C9647041EE11DDCEE94AE44A3D2044 /* RCTSurfaceRootView.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = RCTSurfaceRootView.mm; sourceTree = ""; }; AA015B42B94D08FF3C4C36EA989F13DE /* FIRInstanceIDTokenInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenInfo.h; path = Firebase/InstanceID/FIRInstanceIDTokenInfo.h; sourceTree = ""; }; AA780F3BDB3F84B14129F31E0319A9C0 /* RCTImageBlurUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTImageBlurUtils.m; path = Libraries/Image/RCTImageBlurUtils.m; sourceTree = ""; }; @@ -1622,6 +1744,7 @@ AEEEE929E8E64B51C416205F1CDC2C92 /* RCTRawTextShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRawTextShadowView.h; sourceTree = ""; }; AF36203CEB5253762739AF9551301637 /* RCTModalHostViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTModalHostViewController.m; sourceTree = ""; }; B0EBF1B3694309DFDBB34914A5D348FE /* FIRAnalyticsConfiguration+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRAnalyticsConfiguration+Internal.h"; path = "Firebase/Core/Private/FIRAnalyticsConfiguration+Internal.h"; sourceTree = ""; }; + B16BE9D78C59BD67EE5A33B815B4BE47 /* libFolly.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libFolly.a; path = libFolly.a; sourceTree = BUILT_PRODUCTS_DIR; }; B18D92F9CCA81F237800EF33FA92CB4D /* FIRInstanceIDCheckinPreferences+Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "FIRInstanceIDCheckinPreferences+Internal.h"; path = "Firebase/InstanceID/FIRInstanceIDCheckinPreferences+Internal.h"; sourceTree = ""; }; B18FD72A3EB5A96181A5E65A20158C48 /* FIRErrorCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRErrorCode.h; path = Firebase/Core/Private/FIRErrorCode.h; sourceTree = ""; }; B19B41788B14BDF80A2D05A4E9B3E91B /* RCTPerformanceLogger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTPerformanceLogger.h; sourceTree = ""; }; @@ -1638,6 +1761,7 @@ B7076D6BE9B38FC1611B4AF166C11FB5 /* GULNetwork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetwork.h; path = GoogleUtilities/Network/Private/GULNetwork.h; sourceTree = ""; }; B70DF0D054083CCB1DE9AC9B8D3926B0 /* FIRErrors.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRErrors.m; path = Firebase/Core/FIRErrors.m; sourceTree = ""; }; B7239BAAA5781F25CC6387D9FF62585E /* RCTSurfaceRootShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceRootShadowView.h; sourceTree = ""; }; + B75216B930CA8C64C211BD03FDA9AA1F /* libReact.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libReact.a; path = libReact.a; sourceTree = BUILT_PRODUCTS_DIR; }; B76A6FE8AC6F9DBEAE28E16B4BED4BA1 /* RCTLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTLog.h; sourceTree = ""; }; B7CD70A4A27BBF635DC35F118B8304C2 /* RCTDecayAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTDecayAnimation.h; sourceTree = ""; }; B843F05D718A4E6A823BF7A3D02FB40D /* Unicode.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Unicode.cpp; path = folly/Unicode.cpp; sourceTree = ""; }; @@ -1704,7 +1828,6 @@ CA3CF5BEBB14D776A34700242D0055FE /* RCTClipboard.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTClipboard.m; sourceTree = ""; }; CA7DEBB32346871ACAA2B6DBA04F1CBE /* RCTSlider.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSlider.m; sourceTree = ""; }; CB0363440EAACEB8FC038D5E3688E767 /* RCTBaseTextInputView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBaseTextInputView.h; sourceTree = ""; }; - CB151BF6B6F22A525E316E9CC21FBF6C /* Pods-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketChatRN.release.xcconfig"; sourceTree = ""; }; CB4D11EBBA7921D0613F7CB87D156438 /* RCTVirtualTextShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTVirtualTextShadowView.m; sourceTree = ""; }; CB5B5B6C7D1A078C6FA74EFA5BD28636 /* RCTRawTextViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRawTextViewManager.h; sourceTree = ""; }; CB8724C8D4D696AD4C067B9326224A01 /* FIRInstanceIDUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDUtilities.h; path = Firebase/InstanceID/FIRInstanceIDUtilities.h; sourceTree = ""; }; @@ -1720,12 +1843,12 @@ CF3E4054780F65CFE5176ADF472D2710 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; D053EAC28B31536499CB2F1195351D88 /* React-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "React-prefix.pch"; sourceTree = ""; }; D057DBCC4996617F1AE42C3AA200BE73 /* RCTUITextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUITextView.h; sourceTree = ""; }; + D076FE89A5FC727E1608359C893A5547 /* libQBImagePickerController.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libQBImagePickerController.a; path = libQBImagePickerController.a; sourceTree = BUILT_PRODUCTS_DIR; }; D08A5D686D77F6A0E33952D2AD2EA06C /* GPBCodedInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBCodedInputStream.h; path = objectivec/GPBCodedInputStream.h; sourceTree = ""; }; D10DCAC9A5B6E3F4ABBCC381201E4C60 /* RCTInvalidating.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTInvalidating.h; sourceTree = ""; }; D143C57019EAA61585EDB9AA33F2BF85 /* RCTAnimationDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAnimationDriver.h; sourceTree = ""; }; D16AF918A382DA5D5F9D4257DDECA4C6 /* GULNSData+zlib.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GULNSData+zlib.m"; path = "GoogleUtilities/NSData+zlib/GULNSData+zlib.m"; sourceTree = ""; }; D19E2F79B0006C6B374700D05DB3D121 /* FirebaseInstanceID-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FirebaseInstanceID-dummy.m"; sourceTree = ""; }; - D1B2A9C0BA53D97B5E93E7E303F76EA5 /* libreact-native-orientation-locker.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libreact-native-orientation-locker.a"; path = "libreact-native-orientation-locker.a"; sourceTree = BUILT_PRODUCTS_DIR; }; D1D409B472D80F2EB4C71563990FC72D /* pb_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pb_common.h; sourceTree = ""; }; D283417C5EFC3F68C8C7F37AFCD06311 /* RCTScrollViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollViewManager.m; sourceTree = ""; }; D2E5E959768C3B5743A5DC730AF52215 /* RCTDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTDisplayLink.m; sourceTree = ""; }; @@ -1743,6 +1866,7 @@ D43303790384C3503AE4C648FE92A719 /* RCTCxxConvert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTCxxConvert.h; sourceTree = ""; }; D461093CFA26AEC4CCC4CDE780696857 /* RCTView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTView.m; sourceTree = ""; }; D4640D3CB0EE847C77BD022CCBE88A4D /* dynamic.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = dynamic.cpp; path = folly/dynamic.cpp; sourceTree = ""; }; + D48FF42EA7085207CE51B82681D66652 /* libProtobuf.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libProtobuf.a; path = libProtobuf.a; sourceTree = BUILT_PRODUCTS_DIR; }; D4C5EEE50A5951E21B340E4F9133D4BC /* DeviceUID.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DeviceUID.m; path = ios/RNDeviceInfo/DeviceUID.m; sourceTree = ""; }; D4D269F2C9249EB3191A02DBF3D4391C /* FIRInstanceIDKeyPairUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDKeyPairUtilities.h; path = Firebase/InstanceID/FIRInstanceIDKeyPairUtilities.h; sourceTree = ""; }; D4F8069389F02DDA8E79FD25A302ED28 /* RCTProgressViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTProgressViewManager.h; sourceTree = ""; }; @@ -1751,6 +1875,7 @@ D5E3DCD7AD1C184DF5044B42DDE421E4 /* FIRComponentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponentContainer.h; path = Firebase/Core/Private/FIRComponentContainer.h; sourceTree = ""; }; D64988EA80D874BD49F788383ACA30DC /* FIRInstanceIDCheckinStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDCheckinStore.h; path = Firebase/InstanceID/FIRInstanceIDCheckinStore.h; sourceTree = ""; }; D65C86424592597E866022B14EC016BA /* RCTBorderStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBorderStyle.h; sourceTree = ""; }; + D69DDA1B5884AD21A1C167DA920F1D88 /* Pods-RocketChatRN-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-RocketChatRN-resources.sh"; sourceTree = ""; }; D6A31C7A90816AB318C7AFE34C309BB4 /* RCTImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTImageView.h; path = Libraries/Image/RCTImageView.h; sourceTree = ""; }; D6A656960D32278A8A019CFB56A1B509 /* RCTScrollView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTScrollView.m; sourceTree = ""; }; D6BF93B827ABA467D63993F6147C2B88 /* RCTShadowView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTShadowView.h; sourceTree = ""; }; @@ -1768,14 +1893,12 @@ D9CB9224E6BF6EE164995B592C775D55 /* RCTExceptionsManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTExceptionsManager.m; sourceTree = ""; }; DA1C2EBCB3B2954FE868E7E781A920E4 /* RCTActionSheetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTActionSheetManager.h; path = Libraries/ActionSheetIOS/RCTActionSheetManager.h; sourceTree = ""; }; DA25CB04EA64550643955E87AD36DBB1 /* FIROptions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIROptions.h; path = Firebase/Core/Public/FIROptions.h; sourceTree = ""; }; + DA3B531E483ACD64BB5F641FCD85B103 /* libGTMSessionFetcher.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGTMSessionFetcher.a; path = libGTMSessionFetcher.a; sourceTree = BUILT_PRODUCTS_DIR; }; DAA8B42F52E23DE8B4AB068E101E8594 /* react-native-splash-screen-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "react-native-splash-screen-dummy.m"; sourceTree = ""; }; DAB4A986AEBCB76228BB567F8E0A7E82 /* RCTFileReaderModule.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RCTFileReaderModule.m; path = Libraries/Blob/RCTFileReaderModule.m; sourceTree = ""; }; DAC958D6CFDEF9A46B6BBD5E19CC0E30 /* RCTAutoInsetsProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTAutoInsetsProtocol.h; sourceTree = ""; }; - DB26A8DCF5A6E3B4A1BC4152C6D9DC6C /* Pods-RocketChatRN-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-RocketChatRN-dummy.m"; sourceTree = ""; }; DBFB2DA0BD39B37F21F1E501AA2FF9A7 /* RCTBaseTextInputView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBaseTextInputView.m; sourceTree = ""; }; - DC843BEA7141F1F2C9247CF1C926B684 /* libPods-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-RocketChatRN.a"; path = "libPods-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; DCC7600BC172CA9427C27FD82BF17552 /* GULReachabilityMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULReachabilityMessageCode.h; path = GoogleUtilities/Reachability/Private/GULReachabilityMessageCode.h; sourceTree = ""; }; - DCDBE7B0BA4228C239E0C6328B2C837D /* libProtobuf.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libProtobuf.a; path = libProtobuf.a; sourceTree = BUILT_PRODUCTS_DIR; }; DDE9DFC270AB6616C642D86C0922EDCE /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; DE081F37A56015E583D223D0A2279CA7 /* RCTUIManagerObserverCoordinator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTUIManagerObserverCoordinator.h; sourceTree = ""; }; DE36DF4600FFCFF6729ACD8B59820986 /* RCTBundleURLProvider.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTBundleURLProvider.h; sourceTree = ""; }; @@ -1826,7 +1949,6 @@ EB463BA7EB74852828A7F95F2E718754 /* Protobuf-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Protobuf-prefix.pch"; sourceTree = ""; }; EB6981EF8981D724C17B40BCE18F4DF1 /* GULNetworkMessageCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GULNetworkMessageCode.h; path = GoogleUtilities/Network/Private/GULNetworkMessageCode.h; sourceTree = ""; }; EB787F02AE83842B501819373DEA5948 /* RCTBackedTextInputDelegateAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTBackedTextInputDelegateAdapter.m; sourceTree = ""; }; - EBCE8C1DFF8C92EB029DB05833E4DE3F /* libnanopb.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libnanopb.a; path = libnanopb.a; sourceTree = BUILT_PRODUCTS_DIR; }; EBE07153C75AA5C1C38348F1B3A27364 /* DoubleConversion.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DoubleConversion.xcconfig; sourceTree = ""; }; EC1422D8BFC01458269C9EE753E02562 /* RCTSurfaceRootShadowView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTSurfaceRootShadowView.m; sourceTree = ""; }; ECAA1BE70470727702FE925831A02A0D /* FIRInstanceIDAPNSInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRInstanceIDAPNSInfo.m; path = Firebase/InstanceID/FIRInstanceIDAPNSInfo.m; sourceTree = ""; }; @@ -1852,12 +1974,10 @@ F070DB8778F84DDDEFFBD0B665025401 /* QBAssetCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QBAssetCell.m; path = QBImagePicker/QBAssetCell.m; sourceTree = ""; }; F09543430670E7368FA56F8A2A844301 /* RCTProfile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTProfile.m; sourceTree = ""; }; F12D34A89A831A7C9E5C7A21808BAA85 /* RCTSurfaceHostingView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSurfaceHostingView.h; sourceTree = ""; }; - F1306D2356A305018B757A6A8FC5F31E /* libGoogleUtilities.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGoogleUtilities.a; path = libGoogleUtilities.a; sourceTree = BUILT_PRODUCTS_DIR; }; F13C9827FFA6E7331D6E301FE4773240 /* FIRComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRComponent.h; path = Firebase/Core/Private/FIRComponent.h; sourceTree = ""; }; F152DD164DB7ACEA422FCEB079E29CB7 /* yoga.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = yoga.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; F18FB55E09E814D1A517E847819448AC /* RCTRootViewInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTRootViewInternal.h; sourceTree = ""; }; F253D6BB700AA13956A26AA399F054C7 /* json_pointer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = json_pointer.cpp; path = folly/json_pointer.cpp; sourceTree = ""; }; - F25FE0B186708D639872D3A8C84A0E72 /* libRNDeviceInfo.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRNDeviceInfo.a; path = libRNDeviceInfo.a; sourceTree = BUILT_PRODUCTS_DIR; }; F29AD233D31543D46BC2E1FBDFA10318 /* RCTManagedPointer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTManagedPointer.h; sourceTree = ""; }; F2D27DF69275FBA4A8A9B94D0AE1274C /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; F35BBFE781FBD647E07DECE1EE929527 /* RCTSafeAreaViewManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSafeAreaViewManager.h; sourceTree = ""; }; @@ -1876,8 +1996,8 @@ F60429AEE8059FEE3EBCD6841CC9A091 /* RCTTextSelection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTTextSelection.m; sourceTree = ""; }; F7578AE71D7129B33E7A7F5BE670CC01 /* RCTSourceCode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RCTSourceCode.h; sourceTree = ""; }; F7CF05F229BC12275FB5F34A6076829C /* RCTWebViewManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = RCTWebViewManager.m; sourceTree = ""; }; - F812F670169AC00AA67550FF954C1AA5 /* libglog.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libglog.a; path = libglog.a; sourceTree = BUILT_PRODUCTS_DIR; }; F861D6FCD688186A198304576ADBC85F /* FIRApp.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FIRApp.m; path = Firebase/Core/FIRApp.m; sourceTree = ""; }; + F89E875D985FE68C85B60F895874D56F /* Pods-RocketChatRN-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-RocketChatRN-acknowledgements.markdown"; sourceTree = ""; }; F921627B276D965207CE3AC377B1C935 /* RCTVibration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RCTVibration.h; path = Libraries/Vibration/RCTVibration.h; sourceTree = ""; }; F92900861A1536FC2C06F634018F7F6A /* Demangle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; name = Demangle.cpp; path = folly/Demangle.cpp; sourceTree = ""; }; F96F86515F70B8C017E7FC355A2B7CDB /* FirebaseCoreDiagnostics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FirebaseCoreDiagnostics.framework; path = Frameworks/FirebaseCoreDiagnostics.framework; sourceTree = ""; }; @@ -1897,7 +2017,6 @@ FE503EE8D17258B72EFA6478A1EE7BB2 /* RSKImageCropper-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RSKImageCropper-dummy.m"; sourceTree = ""; }; FE56DCBF8D844549273B298E9EF13AC6 /* GPBProtocolBuffers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GPBProtocolBuffers.h; path = objectivec/GPBProtocolBuffers.h; sourceTree = ""; }; FF0B4AFE49BB7BE8467BF6D0769C978A /* RNCWKWebView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RNCWKWebView.h; path = ios/RNCWKWebView.h; sourceTree = ""; }; - FF36BF4F706AA77F33A0FAC553A39934 /* Pods-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-RocketChatRN.debug.xcconfig"; sourceTree = ""; }; FF53A904DED58A3B128E71C3BB3400C2 /* GULAppDelegateSwizzler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GULAppDelegateSwizzler.m; path = GoogleUtilities/AppDelegateSwizzler/GULAppDelegateSwizzler.m; sourceTree = ""; }; FFFA6C4730580F08F48B1B15E8603BB6 /* FIRInstanceIDTokenFetchOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FIRInstanceIDTokenFetchOperation.h; path = Firebase/InstanceID/FIRInstanceIDTokenFetchOperation.h; sourceTree = ""; }; /* End PBXFileReference section */ @@ -2008,6 +2127,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B0280197820495D52585846FE58C1B86 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; C09BF11F1881278EB1AC1B19C7436806 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -2278,35 +2404,6 @@ path = "../Target Support Files/Folly"; sourceTree = ""; }; - 2CA33BD7FFDE88790D6DBF5305DB1BA8 /* Products */ = { - isa = PBXGroup; - children = ( - 56360009B0456FD26BACD30E15A84CEF /* libDoubleConversion.a */, - 03A09AA251F031FF69A29DE97D080BF2 /* libFirebaseCore.a */, - 81D09FC952E2900D349B6C091BBB48D9 /* libFirebaseInstanceID.a */, - 756ACE90B6EF13570602DFBD7D8AE1AE /* libFolly.a */, - F812F670169AC00AA67550FF954C1AA5 /* libglog.a */, - 0D5DF052A23CB44F008C82005B2B7C3D /* libGoogleToolboxForMac.a */, - F1306D2356A305018B757A6A8FC5F31E /* libGoogleUtilities.a */, - 5B4C2F4E3F95179CD28B9A7106F8B221 /* libGTMSessionFetcher.a */, - EBCE8C1DFF8C92EB029DB05833E4DE3F /* libnanopb.a */, - DC843BEA7141F1F2C9247CF1C926B684 /* libPods-RocketChatRN.a */, - DCDBE7B0BA4228C239E0C6328B2C837D /* libProtobuf.a */, - 215921D9CE6F36E7F6E845A38B13740B /* libQBImagePickerController.a */, - 27AEE0C33CBDF4FAF22C15057410EE12 /* libReact.a */, - D1B2A9C0BA53D97B5E93E7E303F76EA5 /* libreact-native-orientation-locker.a */, - 4D9AE1F5735B89A753A7A8098AC49330 /* libreact-native-splash-screen.a */, - A99F7986D0F96BA226868846D462E69C /* libreact-native-webview.a */, - F25FE0B186708D639872D3A8C84A0E72 /* libRNDeviceInfo.a */, - 93416D7D0668795471B3617499D61693 /* libRNImageCropPicker.a */, - 01DC8D519261EBAA259B879B90D6A7C5 /* libRNScreens.a */, - 1A760F53C16EFEE83DF51B39C1A8859E /* libRSKImageCropper.a */, - 4E2757FF8021BE2FC2EBAAA4A9C1C777 /* libyoga.a */, - 2B297F30D487A4852E7A2ED2EDEE6EE7 /* QBImagePicker.bundle */, - ); - name = Products; - sourceTree = ""; - }; 31B663C5361B9A0EEB26334960644935 /* Network */ = { isa = PBXGroup; children = ( @@ -2368,6 +2465,19 @@ name = Pod; sourceTree = ""; }; + 40AF612B6D0FC914E432F9D396D9D3AC /* Pods-ShareRocketChatRN */ = { + isa = PBXGroup; + children = ( + 8981A3DCA2B5E70074AD0F0F1AF4F345 /* Pods-ShareRocketChatRN-acknowledgements.markdown */, + 75E5F2FAE3615F969E1B0DA9DD23A307 /* Pods-ShareRocketChatRN-acknowledgements.plist */, + 6C6494BF3BBF96C9957F9676F8B880E2 /* Pods-ShareRocketChatRN-dummy.m */, + 4F6B964706F8ADC73280A6DB40F720EA /* Pods-ShareRocketChatRN.debug.xcconfig */, + 501D8262643E75ACB8B36147ADB61F0D /* Pods-ShareRocketChatRN.release.xcconfig */, + ); + name = "Pods-ShareRocketChatRN"; + path = "Target Support Files/Pods-ShareRocketChatRN"; + sourceTree = ""; + }; 417B32BA9DF17A9E52F36E7EDF5596E0 /* Modules */ = { isa = PBXGroup; children = ( @@ -2802,14 +2912,6 @@ name = UserDefaults; sourceTree = ""; }; - 64F063D584DCC83598AB7F1D35E7F984 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - D244689683E954BC8C0AE8160EEEFCA5 /* Pods-RocketChatRN */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; 666F9B9A920631EB9BB8D55C922D7591 /* UIUtils */ = { isa = PBXGroup; children = ( @@ -3446,6 +3548,36 @@ name = Pod; sourceTree = ""; }; + A83CADCDE4C97799ADEB69F64AAD027C /* Products */ = { + isa = PBXGroup; + children = ( + 98FBE56A7614651DE91A0225AF8A7CEB /* libDoubleConversion.a */, + 769F89F59A78EFBDCF06E34B3F418E0A /* libFirebaseCore.a */, + 2BF641BF48FFB897A1A7A3F5BCE11A2E /* libFirebaseInstanceID.a */, + B16BE9D78C59BD67EE5A33B815B4BE47 /* libFolly.a */, + 30E754BC495F949B7E84DF568D1A4313 /* libglog.a */, + 552B6D270D174C15FC4B12F11A062441 /* libGoogleToolboxForMac.a */, + 521489D94D304C6B28788EC2874F08C6 /* libGoogleUtilities.a */, + DA3B531E483ACD64BB5F641FCD85B103 /* libGTMSessionFetcher.a */, + 045797274424DE424437D4E2415F17C1 /* libnanopb.a */, + 66DF5A4B236B167B9E988E39F6F9D336 /* libPods-RocketChatRN.a */, + 9C3D7C95B626AA81A49A6BEB40C8B953 /* libPods-ShareRocketChatRN.a */, + D48FF42EA7085207CE51B82681D66652 /* libProtobuf.a */, + D076FE89A5FC727E1608359C893A5547 /* libQBImagePickerController.a */, + B75216B930CA8C64C211BD03FDA9AA1F /* libReact.a */, + 9619142ECE5FD12CA97B4BE342DC5BBB /* libreact-native-orientation-locker.a */, + 661E0CA7F7810EE9B125C18F9BCED2BC /* libreact-native-splash-screen.a */, + 545ECF51D61814DD6E8C1AA1C32EE74A /* libreact-native-webview.a */, + 83C83B95887DD95F1E725F2A0DF44542 /* libRNDeviceInfo.a */, + 879BFDFFA19081A0BD41557BF1988D5E /* libRNImageCropPicker.a */, + 0A54AA07416E365FAD5F1636AED77796 /* libRNScreens.a */, + 17636E8730B288EBD929CA0BFCA63265 /* libRSKImageCropper.a */, + 4A0AFC9293E40ADA39759FD3BACE021B /* libyoga.a */, + 52214549E488F4B9D25D933A5B440A59 /* QBImagePicker.bundle */, + ); + name = Products; + sourceTree = ""; + }; A9C624B33A20293F86DBEC550ECCF191 /* RCTBlob */ = { isa = PBXGroup; children = ( @@ -3502,6 +3634,15 @@ path = "../Target Support Files/Firebase"; sourceTree = ""; }; + AEB16DD2FFE0E872D636B036A171C005 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + F484A489448533D7BA3ECA8B4E583360 /* Pods-RocketChatRN */, + 40AF612B6D0FC914E432F9D396D9D3AC /* Pods-ShareRocketChatRN */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; B0B14F0A7B74B461C5E79F8A35BA225B /* Support Files */ = { isa = PBXGroup; children = ( @@ -3669,8 +3810,8 @@ 12E9E552113B4DDA57850B7223C441CE /* Development Pods */, D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, 4FC37C41F11924A2602F786314152701 /* Pods */, - 2CA33BD7FFDE88790D6DBF5305DB1BA8 /* Products */, - 64F063D584DCC83598AB7F1D35E7F984 /* Targets Support Files */, + A83CADCDE4C97799ADEB69F64AAD027C /* Products */, + AEB16DD2FFE0E872D636B036A171C005 /* Targets Support Files */, ); sourceTree = ""; }; @@ -3684,20 +3825,6 @@ name = Pod; sourceTree = ""; }; - D244689683E954BC8C0AE8160EEEFCA5 /* Pods-RocketChatRN */ = { - isa = PBXGroup; - children = ( - 7CBB70653DCBD6DD993B57C905751C64 /* Pods-RocketChatRN-acknowledgements.markdown */, - 5AD048465639525B81E23944B58005C8 /* Pods-RocketChatRN-acknowledgements.plist */, - DB26A8DCF5A6E3B4A1BC4152C6D9DC6C /* Pods-RocketChatRN-dummy.m */, - A7EBD2199C28CAF29EAE45BF9FAF9209 /* Pods-RocketChatRN-resources.sh */, - FF36BF4F706AA77F33A0FAC553A39934 /* Pods-RocketChatRN.debug.xcconfig */, - CB151BF6B6F22A525E316E9CC21FBF6C /* Pods-RocketChatRN.release.xcconfig */, - ); - name = "Pods-RocketChatRN"; - path = "Target Support Files/Pods-RocketChatRN"; - sourceTree = ""; - }; D2EF23320DAD5A5B1FC7AF07287026CF /* Support Files */ = { isa = PBXGroup; children = ( @@ -3977,6 +4104,20 @@ name = Frameworks; sourceTree = ""; }; + F484A489448533D7BA3ECA8B4E583360 /* Pods-RocketChatRN */ = { + isa = PBXGroup; + children = ( + F89E875D985FE68C85B60F895874D56F /* Pods-RocketChatRN-acknowledgements.markdown */, + A4BCF5D07E7A22F1BEF3C8E72DA4E002 /* Pods-RocketChatRN-acknowledgements.plist */, + 30D6FDCC52D608CFD7FA1FAE7409E462 /* Pods-RocketChatRN-dummy.m */, + D69DDA1B5884AD21A1C167DA920F1D88 /* Pods-RocketChatRN-resources.sh */, + 91E6F0DDEECEA71B48EC90595495405D /* Pods-RocketChatRN.debug.xcconfig */, + 6D82F565EC3AB854EB6657E0657222C2 /* Pods-RocketChatRN.release.xcconfig */, + ); + name = "Pods-RocketChatRN"; + path = "Target Support Files/Pods-RocketChatRN"; + sourceTree = ""; + }; F7E4478A3D73CA9997129C28318825D9 /* React */ = { isa = PBXGroup; children = ( @@ -4162,6 +4303,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 55979029463AE14DF9DA9FBFAA75AD91 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6F581F0323AF3FAB9C3E31E837326583 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -4426,7 +4574,7 @@ ); name = RNScreens; productName = RNScreens; - productReference = 01DC8D519261EBAA259B879B90D6A7C5 /* libRNScreens.a */; + productReference = 0A54AA07416E365FAD5F1636AED77796 /* libRNScreens.a */; productType = "com.apple.product-type.library.static"; }; 10D172205FBF5536819F94D0AD56DE78 /* yoga */ = { @@ -4443,7 +4591,7 @@ ); name = yoga; productName = yoga; - productReference = 4E2757FF8021BE2FC2EBAAA4A9C1C777 /* libyoga.a */; + productReference = 4A0AFC9293E40ADA39759FD3BACE021B /* libyoga.a */; productType = "com.apple.product-type.library.static"; }; 111EE270AF30FB09FC9EB73638F2E16A /* RSKImageCropper */ = { @@ -4460,7 +4608,7 @@ ); name = RSKImageCropper; productName = RSKImageCropper; - productReference = 1A760F53C16EFEE83DF51B39C1A8859E /* libRSKImageCropper.a */; + productReference = 17636E8730B288EBD929CA0BFCA63265 /* libRSKImageCropper.a */; productType = "com.apple.product-type.library.static"; }; 1414ADEE4A421F3C5F9A229345CE3F61 /* DoubleConversion */ = { @@ -4477,7 +4625,7 @@ ); name = DoubleConversion; productName = DoubleConversion; - productReference = 56360009B0456FD26BACD30E15A84CEF /* libDoubleConversion.a */; + productReference = 98FBE56A7614651DE91A0225AF8A7CEB /* libDoubleConversion.a */; productType = "com.apple.product-type.library.static"; }; 19B86FE3A045FD3536FCD8DC39B415D3 /* RNImageCropPicker */ = { @@ -4497,7 +4645,7 @@ ); name = RNImageCropPicker; productName = RNImageCropPicker; - productReference = 93416D7D0668795471B3617499D61693 /* libRNImageCropPicker.a */; + productReference = 879BFDFFA19081A0BD41557BF1988D5E /* libRNImageCropPicker.a */; productType = "com.apple.product-type.library.static"; }; 21D4CE3FA96D3BE5B8237D082505C188 /* QBImagePickerController-QBImagePicker */ = { @@ -4514,7 +4662,7 @@ ); name = "QBImagePickerController-QBImagePicker"; productName = "QBImagePickerController-QBImagePicker"; - productReference = 2B297F30D487A4852E7A2ED2EDEE6EE7 /* QBImagePicker.bundle */; + productReference = 52214549E488F4B9D25D933A5B440A59 /* QBImagePicker.bundle */; productType = "com.apple.product-type.bundle"; }; 2543734D0A332B2588202904B99CC151 /* nanopb */ = { @@ -4531,7 +4679,7 @@ ); name = nanopb; productName = nanopb; - productReference = EBCE8C1DFF8C92EB029DB05833E4DE3F /* libnanopb.a */; + productReference = 045797274424DE424437D4E2415F17C1 /* libnanopb.a */; productType = "com.apple.product-type.library.static"; }; 29FC2A0EC130F2F2AF7AC9AE94A583B4 /* glog */ = { @@ -4548,7 +4696,7 @@ ); name = glog; productName = glog; - productReference = F812F670169AC00AA67550FF954C1AA5 /* libglog.a */; + productReference = 30E754BC495F949B7E84DF568D1A4313 /* libglog.a */; productType = "com.apple.product-type.library.static"; }; 32F8EA730FE2005197F54338D2C236AC /* GoogleToolboxForMac */ = { @@ -4565,7 +4713,7 @@ ); name = GoogleToolboxForMac; productName = GoogleToolboxForMac; - productReference = 0D5DF052A23CB44F008C82005B2B7C3D /* libGoogleToolboxForMac.a */; + productReference = 552B6D270D174C15FC4B12F11A062441 /* libGoogleToolboxForMac.a */; productType = "com.apple.product-type.library.static"; }; 368FB7FBA34E3323BB42D13325551C95 /* FirebaseCore */ = { @@ -4583,7 +4731,7 @@ ); name = FirebaseCore; productName = FirebaseCore; - productReference = 03A09AA251F031FF69A29DE97D080BF2 /* libFirebaseCore.a */; + productReference = 769F89F59A78EFBDCF06E34B3F418E0A /* libFirebaseCore.a */; productType = "com.apple.product-type.library.static"; }; 57954C49E918563AF7054B31EACBAB93 /* react-native-splash-screen */ = { @@ -4601,7 +4749,7 @@ ); name = "react-native-splash-screen"; productName = "react-native-splash-screen"; - productReference = 4D9AE1F5735B89A753A7A8098AC49330 /* libreact-native-splash-screen.a */; + productReference = 661E0CA7F7810EE9B125C18F9BCED2BC /* libreact-native-splash-screen.a */; productType = "com.apple.product-type.library.static"; }; 586739D116442BA7FCD2EC0353EA0FA4 /* FirebaseInstanceID */ = { @@ -4620,7 +4768,7 @@ ); name = FirebaseInstanceID; productName = FirebaseInstanceID; - productReference = 81D09FC952E2900D349B6C091BBB48D9 /* libFirebaseInstanceID.a */; + productReference = 2BF641BF48FFB897A1A7A3F5BCE11A2E /* libFirebaseInstanceID.a */; productType = "com.apple.product-type.library.static"; }; 6C8F69E4466E5D0DB2328F5804A1F88F /* Pods-RocketChatRN */ = { @@ -4667,7 +4815,7 @@ ); name = "Pods-RocketChatRN"; productName = "Pods-RocketChatRN"; - productReference = DC843BEA7141F1F2C9247CF1C926B684 /* libPods-RocketChatRN.a */; + productReference = 66DF5A4B236B167B9E988E39F6F9D336 /* libPods-RocketChatRN.a */; productType = "com.apple.product-type.library.static"; }; 76D3860A83438EE6A0ACBBD4BBB61B14 /* react-native-orientation-locker */ = { @@ -4685,7 +4833,7 @@ ); name = "react-native-orientation-locker"; productName = "react-native-orientation-locker"; - productReference = D1B2A9C0BA53D97B5E93E7E303F76EA5 /* libreact-native-orientation-locker.a */; + productReference = 9619142ECE5FD12CA97B4BE342DC5BBB /* libreact-native-orientation-locker.a */; productType = "com.apple.product-type.library.static"; }; 7969F0F17682790DCAF63BC9AF2176ED /* GoogleUtilities */ = { @@ -4702,7 +4850,7 @@ ); name = GoogleUtilities; productName = GoogleUtilities; - productReference = F1306D2356A305018B757A6A8FC5F31E /* libGoogleUtilities.a */; + productReference = 521489D94D304C6B28788EC2874F08C6 /* libGoogleUtilities.a */; productType = "com.apple.product-type.library.static"; }; 928F6D091147C82DAB685010E23BA90B /* QBImagePickerController */ = { @@ -4720,7 +4868,40 @@ ); name = QBImagePickerController; productName = QBImagePickerController; - productReference = 215921D9CE6F36E7F6E845A38B13740B /* libQBImagePickerController.a */; + productReference = D076FE89A5FC727E1608359C893A5547 /* libQBImagePickerController.a */; + productType = "com.apple.product-type.library.static"; + }; + A56B85098C63922A1B49FD72D29EB85E /* Pods-ShareRocketChatRN */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1000BB52E7E694A45DC028F737C4134C /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */; + buildPhases = ( + 55979029463AE14DF9DA9FBFAA75AD91 /* Headers */, + 614EE56145CB5C7C6C9A7FD87476374E /* Sources */, + B0280197820495D52585846FE58C1B86 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 18E2DAC2164E55CEED6A10FD0E1F16D4 /* PBXTargetDependency */, + 694DA8712B85C350BEBD0C9DFD960061 /* PBXTargetDependency */, + 244903024F0FC9335632285A1A367A60 /* PBXTargetDependency */, + BA1B068F60227C60189BD37FE3B38561 /* PBXTargetDependency */, + 4F7148B3EDEF6BD05989EDB0D6FE5EC4 /* PBXTargetDependency */, + FD12F686BA11070A44D2BD7041528912 /* PBXTargetDependency */, + 78BA9184BCD900863CB6AFF351D022E5 /* PBXTargetDependency */, + 9DCF8CB58DD60BDC3C7BA44EC9768DD1 /* PBXTargetDependency */, + 3C271423AFD20F3951225D157B2F9E0D /* PBXTargetDependency */, + 56DF65FC67602FEFEDA182F80DD017EC /* PBXTargetDependency */, + F34AFB6E3B37D358057BA658869F93E9 /* PBXTargetDependency */, + 92D008E27F2B7A8E057950956DD4A518 /* PBXTargetDependency */, + F3B5AF7029D057275E10BF1E2F6198E0 /* PBXTargetDependency */, + 84B86D6D3FF2AEC378ED75F9C1453AE3 /* PBXTargetDependency */, + C164DC29B24AEBA36086D1F17552CA78 /* PBXTargetDependency */, + A0F23CE26E27FC313215EDC04BCCB3E0 /* PBXTargetDependency */, + ); + name = "Pods-ShareRocketChatRN"; + productName = "Pods-ShareRocketChatRN"; + productReference = 9C3D7C95B626AA81A49A6BEB40C8B953 /* libPods-ShareRocketChatRN.a */; productType = "com.apple.product-type.library.static"; }; BE8DE6BC4B9347A3FE72C52C9FAE8B4C /* RNDeviceInfo */ = { @@ -4738,7 +4919,7 @@ ); name = RNDeviceInfo; productName = RNDeviceInfo; - productReference = F25FE0B186708D639872D3A8C84A0E72 /* libRNDeviceInfo.a */; + productReference = 83C83B95887DD95F1E725F2A0DF44542 /* libRNDeviceInfo.a */; productType = "com.apple.product-type.library.static"; }; DC10A77A26D85A9F4BB77FDE1FF128C0 /* react-native-webview */ = { @@ -4756,7 +4937,7 @@ ); name = "react-native-webview"; productName = "react-native-webview"; - productReference = A99F7986D0F96BA226868846D462E69C /* libreact-native-webview.a */; + productReference = 545ECF51D61814DD6E8C1AA1C32EE74A /* libreact-native-webview.a */; productType = "com.apple.product-type.library.static"; }; DF470A1028ED32C9E70DBDAA805F8802 /* Folly */ = { @@ -4776,7 +4957,7 @@ ); name = Folly; productName = Folly; - productReference = 756ACE90B6EF13570602DFBD7D8AE1AE /* libFolly.a */; + productReference = B16BE9D78C59BD67EE5A33B815B4BE47 /* libFolly.a */; productType = "com.apple.product-type.library.static"; }; E3A3FB14CD4ACD21565913CF4A4B097C /* GTMSessionFetcher */ = { @@ -4793,7 +4974,7 @@ ); name = GTMSessionFetcher; productName = GTMSessionFetcher; - productReference = 5B4C2F4E3F95179CD28B9A7106F8B221 /* libGTMSessionFetcher.a */; + productReference = DA3B531E483ACD64BB5F641FCD85B103 /* libGTMSessionFetcher.a */; productType = "com.apple.product-type.library.static"; }; F1DE11E9221F196A8A9D3464F96A345A /* Protobuf */ = { @@ -4810,7 +4991,7 @@ ); name = Protobuf; productName = Protobuf; - productReference = DCDBE7B0BA4228C239E0C6328B2C837D /* libProtobuf.a */; + productReference = D48FF42EA7085207CE51B82681D66652 /* libProtobuf.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -4830,7 +5011,7 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 2CA33BD7FFDE88790D6DBF5305DB1BA8 /* Products */; + productRefGroup = A83CADCDE4C97799ADEB69F64AAD027C /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -4854,6 +5035,7 @@ E3A3FB14CD4ACD21565913CF4A4B097C /* GTMSessionFetcher */, 2543734D0A332B2588202904B99CC151 /* nanopb */, 6C8F69E4466E5D0DB2328F5804A1F88F /* Pods-RocketChatRN */, + A56B85098C63922A1B49FD72D29EB85E /* Pods-ShareRocketChatRN */, F1DE11E9221F196A8A9D3464F96A345A /* Protobuf */, 928F6D091147C82DAB685010E23BA90B /* QBImagePickerController */, 21D4CE3FA96D3BE5B8237D082505C188 /* QBImagePickerController-QBImagePicker */, @@ -5019,6 +5201,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 614EE56145CB5C7C6C9A7FD87476374E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + BDBF8C9C8853631C9DC84221B8A4DD36 /* Pods-ShareRocketChatRN-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6B4D15D445B0EA496CDF001FD942EA49 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -5244,6 +5434,12 @@ target = AB021401ADE9E1431240BBA948E7965E /* GoogleAppMeasurement */; targetProxy = D5582AE19A81D8922E73DAD94F1B1207 /* PBXContainerItemProxy */; }; + 18E2DAC2164E55CEED6A10FD0E1F16D4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Crashlytics; + target = ABA9A411BB5A359862E5F1AA6238278E /* Crashlytics */; + targetProxy = AE69AE7715773CD9ADD7679EAA07BC03 /* PBXContainerItemProxy */; + }; 1AF1D1F41734F10AFEB7E85DAE85C868 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseRemoteConfig; @@ -5274,6 +5470,12 @@ target = 66641B93FAF80FF325B2D7B4AD85056F /* boost-for-react-native */; targetProxy = 8B892F7DCCC4ED0A7BAB52A0E0C20117 /* PBXContainerItemProxy */; }; + 244903024F0FC9335632285A1A367A60 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Firebase; + target = 97C8CD7E4179727E4F374CABD338D2BB /* Firebase */; + targetProxy = 8C6665DED37217AEBA81552D51718915 /* PBXContainerItemProxy */; + }; 346905C1D5815D2D235745231BC39BD4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseABTesting; @@ -5309,6 +5511,12 @@ target = AB021401ADE9E1431240BBA948E7965E /* GoogleAppMeasurement */; targetProxy = DAD84C1C1E8EC3061F1FCBE800942C00 /* PBXContainerItemProxy */; }; + 3C271423AFD20F3951225D157B2F9E0D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseRemoteConfig; + target = 5AAD465FECAE9083F45E3DB9252A8302 /* FirebaseRemoteConfig */; + targetProxy = 75954F9A986CAC4FFF8C6AFE61FDD466 /* PBXContainerItemProxy */; + }; 3FD0607DDBDC01E6CFDA9FFAD045CA25 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Protobuf; @@ -5345,6 +5553,12 @@ target = 586739D116442BA7FCD2EC0353EA0FA4 /* FirebaseInstanceID */; targetProxy = 8A5745F3DDC39E72566F1C4C16892EF5 /* PBXContainerItemProxy */; }; + 4F7148B3EDEF6BD05989EDB0D6FE5EC4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseAnalytics; + target = 1ABBF6F89787BBEDF49B4636ADB45587 /* FirebaseAnalytics */; + targetProxy = 306F65FE347C36DEC79E075ACEEF5F52 /* PBXContainerItemProxy */; + }; 5150D3C8836B4C147626FF43F940A3E6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GTMSessionFetcher; @@ -5356,6 +5570,12 @@ name = React; targetProxy = BC05A9D967DC5251290FC72F65B62686 /* PBXContainerItemProxy */; }; + 56DF65FC67602FEFEDA182F80DD017EC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = E3A3FB14CD4ACD21565913CF4A4B097C /* GTMSessionFetcher */; + targetProxy = BBDDC27DC9626CD055E16F01D3DF5EEA /* PBXContainerItemProxy */; + }; 580CE7BA9AFCFB3BE76760E03B9491DD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; @@ -5391,6 +5611,12 @@ target = 42F7AF66FD1178857DC3A2834552BE76 /* FirebasePerformance */; targetProxy = CD235DDD6ED40AF6628D34E57EB6B2EE /* PBXContainerItemProxy */; }; + 694DA8712B85C350BEBD0C9DFD960061 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Fabric; + target = D35E9EC86D36A4C8BC1704199FDB3552 /* Fabric */; + targetProxy = E01E91059C20119C29F7F87FE8DBDEE6 /* PBXContainerItemProxy */; + }; 6B65871E9787D7423E4371A9FD5F46AB /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCore; @@ -5421,6 +5647,12 @@ target = 928F6D091147C82DAB685010E23BA90B /* QBImagePickerController */; targetProxy = D73FADA9406D1FBAAF34A98AF815B658 /* PBXContainerItemProxy */; }; + 78BA9184BCD900863CB6AFF351D022E5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseInstanceID; + target = 586739D116442BA7FCD2EC0353EA0FA4 /* FirebaseInstanceID */; + targetProxy = DAF34818699CB553080618096D357B88 /* PBXContainerItemProxy */; + }; 7A78CE184EABCAD6B3C0B3A8B5135B62 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = glog; @@ -5450,6 +5682,12 @@ target = 1ABBF6F89787BBEDF49B4636ADB45587 /* FirebaseAnalytics */; targetProxy = 2B8A7DF5B74DB781BBBA64EB96E56A17 /* PBXContainerItemProxy */; }; + 84B86D6D3FF2AEC378ED75F9C1453AE3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleUtilities; + target = 7969F0F17682790DCAF63BC9AF2176ED /* GoogleUtilities */; + targetProxy = E32A8E7595ABEB17EC5838417DF641A8 /* PBXContainerItemProxy */; + }; 87568C4A155C6FE7A4C315D5F199AC64 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "QBImagePickerController-QBImagePicker"; @@ -5491,12 +5729,30 @@ target = 7969F0F17682790DCAF63BC9AF2176ED /* GoogleUtilities */; targetProxy = 94E9A5D5D73EADA398147912908A9311 /* PBXContainerItemProxy */; }; + 92D008E27F2B7A8E057950956DD4A518 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleIDFASupport; + target = 7C36E7C600F8DE2BE1819059C80F2182 /* GoogleIDFASupport */; + targetProxy = 35E3379BF03957775EDA93A0CB2D690E /* PBXContainerItemProxy */; + }; + 9DCF8CB58DD60BDC3C7BA44EC9768DD1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebasePerformance; + target = 42F7AF66FD1178857DC3A2834552BE76 /* FirebasePerformance */; + targetProxy = F6C767BF3EA33A87A1CE65C6D2177484 /* PBXContainerItemProxy */; + }; 9F30F6D4E564C51989A55A6098470CA4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleUtilities; target = 7969F0F17682790DCAF63BC9AF2176ED /* GoogleUtilities */; targetProxy = 2EE116F6C770D5147861DD22F11D0681 /* PBXContainerItemProxy */; }; + A0F23CE26E27FC313215EDC04BCCB3E0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = nanopb; + target = 2543734D0A332B2588202904B99CC151 /* nanopb */; + targetProxy = E8DB956718B042B6AEAED5F5C20D7807 /* PBXContainerItemProxy */; + }; A29FDA2CE6FFCFD7F136DAEA96FC32D0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Fabric; @@ -5538,6 +5794,12 @@ target = 1414ADEE4A421F3C5F9A229345CE3F61 /* DoubleConversion */; targetProxy = D516972C7248EB94C3523FECC8F43B02 /* PBXContainerItemProxy */; }; + BA1B068F60227C60189BD37FE3B38561 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseABTesting; + target = 39E0403E3ACE39BC0D878D82FAB8F012 /* FirebaseABTesting */; + targetProxy = 80CDEEBF1A98B3119F5F09A3905DC9EA /* PBXContainerItemProxy */; + }; BD2C22AF6121E6B72DFB98F8BBAB9A69 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "boost-for-react-native"; @@ -5556,6 +5818,12 @@ target = 10D172205FBF5536819F94D0AD56DE78 /* yoga */; targetProxy = 0EE71388025283D337DDEAE1DAEAF7CC /* PBXContainerItemProxy */; }; + C164DC29B24AEBA36086D1F17552CA78 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Protobuf; + target = F1DE11E9221F196A8A9D3464F96A345A /* Protobuf */; + targetProxy = AD84D94BC5B613F54495D72A74C1BD12 /* PBXContainerItemProxy */; + }; C1B980A7F0177B327C6A07EFF5A60013 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GTMSessionFetcher; @@ -5621,6 +5889,18 @@ target = 57954C49E918563AF7054B31EACBAB93 /* react-native-splash-screen */; targetProxy = 89E34E29502C44BA69D64D5478824EEC /* PBXContainerItemProxy */; }; + F34AFB6E3B37D358057BA658869F93E9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleAppMeasurement; + target = AB021401ADE9E1431240BBA948E7965E /* GoogleAppMeasurement */; + targetProxy = 4EE8250961151132007EB750B01F2D08 /* PBXContainerItemProxy */; + }; + F3B5AF7029D057275E10BF1E2F6198E0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleToolboxForMac; + target = 32F8EA730FE2005197F54338D2C236AC /* GoogleToolboxForMac */; + targetProxy = 01EF3C0B8E696A9D1C53A2BD00145F48 /* PBXContainerItemProxy */; + }; F541B0BB5C228843BB87EB1868782C56 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Protobuf; @@ -5633,6 +5913,12 @@ target = 368FB7FBA34E3323BB42D13325551C95 /* FirebaseCore */; targetProxy = E8B9963F832AFE8E2A5593B2555C7D89 /* PBXContainerItemProxy */; }; + FD12F686BA11070A44D2BD7041528912 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 368FB7FBA34E3323BB42D13325551C95 /* FirebaseCore */; + targetProxy = DE2B00022E1CB87F896C936284F6C0F8 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -5682,35 +5968,22 @@ }; name = Debug; }; - 056C009C442A698606C063320C8BF25A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A00EC29B08CF617E218E21BB30A22296 /* Fabric.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 073CD7A5553DE61D0F2ED6B7D879C6D6 /* Debug */ = { + 0AC398FDF032A5846498C0072CC5A856 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D6CE75889A37BBAFA6619B2E2D0A9152 /* GoogleUtilities.xcconfig */; + baseConfigurationReference = 2ED73F696CD986B8483EF549CD502B8A /* Protobuf.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + GCC_PREFIX_HEADER = "Target Support Files/Protobuf/Protobuf-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleUtilities; - PRODUCT_NAME = GoogleUtilities; + PRODUCT_MODULE_NAME = Protobuf; + PRODUCT_NAME = Protobuf; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -5719,22 +5992,21 @@ }; name = Debug; }; - 0C78739B7F25FB17EE1F9D802091DB12 /* Release */ = { + 0F1BE876977A6707F34C2C9B44D3B589 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A044E0132DBBFC186CC1967069B89DDA /* nanopb.xcconfig */; + baseConfigurationReference = 495AF3D800175BD4B68CB72DFAC170DF /* react-native-orientation-locker.xcconfig */; buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/nanopb/nanopb-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 4.3; + GCC_PREFIX_HEADER = "Target Support Files/react-native-orientation-locker/react-native-orientation-locker-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = nanopb; - PRODUCT_NAME = nanopb; + PRODUCT_MODULE_NAME = react_native_orientation_locker; + PRODUCT_NAME = "react-native-orientation-locker"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -5744,49 +6016,31 @@ }; name = Release; }; - 0F1BE876977A6707F34C2C9B44D3B589 /* Release */ = { + 1337CE1CAB8B4D60777B05DA574DEFC9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 495AF3D800175BD4B68CB72DFAC170DF /* react-native-orientation-locker.xcconfig */; + baseConfigurationReference = 824CA65A50D94CA1CAE58408CB4B035F /* FirebaseABTesting.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/react-native-orientation-locker/react-native-orientation-locker-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = react_native_orientation_locker; - PRODUCT_NAME = "react-native-orientation-locker"; - PUBLIC_HEADERS_FOLDER_PATH = ""; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 1133C2D1B98ADF1CCB50633D37616F74 /* Debug */ = { + 163C07A735C49A34E18F7328AA4CB836 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AC7124E4822DB66558352E10DD54CBFA /* GTMSessionFetcher.xcconfig */; + baseConfigurationReference = 808D6DDACE2479D44956ECE70452EEDB /* FirebaseRemoteConfig.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GTMSessionFetcher; - PRODUCT_NAME = GTMSessionFetcher; - PUBLIC_HEADERS_FOLDER_PATH = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -5816,7 +6070,7 @@ }; 179224206F36EA5E46EA060A1F8254AF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FF36BF4F706AA77F33A0FAC553A39934 /* Pods-RocketChatRN.debug.xcconfig */; + baseConfigurationReference = 91E6F0DDEECEA71B48EC90595495405D /* Pods-RocketChatRN.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -5835,60 +6089,75 @@ }; name = Debug; }; - 18226030D404434E1F689DA621C8BC2B /* Debug */ = { + 18C5F4FCDB67F4F48FC5B02BFE08E872 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 122B9AF72119AEE8595D2AE55CD8F9B4 /* Firebase.xcconfig */; + baseConfigurationReference = 808D6DDACE2479D44956ECE70452EEDB /* FirebaseRemoteConfig.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 200CD2396E713A87F09DF2D0477FFC0C /* Release */ = { + 1F34667B9FDAEB93E6B1139400690335 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 53563E1385145D00720C7953AD9E0E74 /* Crashlytics.xcconfig */; + baseConfigurationReference = 501D8262643E75ACB8B36147ADB61F0D /* Pods-ShareRocketChatRN.release.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; + SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 23D5BEBA41EB0C45D1EE5EB2F36ECBE2 /* Debug */ = { + 2059489B7C209B44F49EB7E2574E7016 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 53563E1385145D00720C7953AD9E0E74 /* Crashlytics.xcconfig */; + baseConfigurationReference = B8CE294D987D45655A14860086BE1365 /* GoogleAppMeasurement.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 23E962D392779A57790E56703A2964AC /* Release */ = { + 22696B114E6C8650506840FDB63826FA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D9154A2A59EE836C6B4C8ABE26903A93 /* FirebaseInstanceID.xcconfig */; + baseConfigurationReference = 2ED73F696CD986B8483EF549CD502B8A /* Protobuf.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + GCC_PREFIX_HEADER = "Target Support Files/Protobuf/Protobuf-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FirebaseInstanceID; - PRODUCT_NAME = FirebaseInstanceID; + PRODUCT_MODULE_NAME = Protobuf; + PRODUCT_NAME = Protobuf; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -5921,10 +6190,11 @@ }; name = Debug; }; - 2B0700AB98548866873D1B6D1A9C3F99 /* Debug */ = { + 283807E41D3C76872CFBB620A3100D17 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 378AAB43F6447375572F48EAA16ACF04 /* FirebaseCore.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5943,20 +6213,6 @@ }; name = Debug; }; - 2F804D193F84038AB9CA88312F62479E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C9E29F269A06919AA1FD1E466BCF137C /* GoogleIDFASupport.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; 319CFFE4A2612311284732EF37F35110 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 36BDCE6A03EBE2DE106F2E905C173FC2 /* RNDeviceInfo.xcconfig */; @@ -5980,21 +6236,21 @@ }; name = Debug; }; - 37567867305BC89AD0FBD447257E4895 /* Release */ = { + 32EF76DEEE113FCFF0551B2288C997E6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D6CE75889A37BBAFA6619B2E2D0A9152 /* GoogleUtilities.xcconfig */; + baseConfigurationReference = D9154A2A59EE836C6B4C8ABE26903A93 /* FirebaseInstanceID.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleUtilities; - PRODUCT_NAME = GoogleUtilities; + PRODUCT_MODULE_NAME = FirebaseInstanceID; + PRODUCT_NAME = FirebaseInstanceID; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -6004,21 +6260,22 @@ }; name = Release; }; - 3F9893011771ABBFEAFD81AF1EA5926F /* Release */ = { + 343C9615EDAC74C6B01235F19C97AEEA /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6D4F1380084C5CF876DBC28B169C3B82 /* Folly.xcconfig */; + baseConfigurationReference = AC7124E4822DB66558352E10DD54CBFA /* GTMSessionFetcher.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Folly/Folly-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = folly; - PRODUCT_NAME = Folly; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -6028,20 +6285,51 @@ }; name = Release; }; - 408ADA4444D509BB1E3B7F87631D11C7 /* Release */ = { + 3994C7EED14E7E007F694DB62F037B7A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 378AAB43F6447375572F48EAA16ACF04 /* FirebaseCore.xcconfig */; + baseConfigurationReference = 122B9AF72119AEE8595D2AE55CD8F9B4 /* Firebase.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3D16C4E3685B904478AC17D932EF75C6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C9E29F269A06919AA1FD1E466BCF137C /* GoogleIDFASupport.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3F9893011771ABBFEAFD81AF1EA5926F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6D4F1380084C5CF876DBC28B169C3B82 /* Folly.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + GCC_PREFIX_HEADER = "Target Support Files/Folly/Folly-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FirebaseCore; - PRODUCT_NAME = FirebaseCore; + PRODUCT_MODULE_NAME = folly; + PRODUCT_NAME = Folly; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -6065,6 +6353,20 @@ }; name = Release; }; + 4299230F94D9CD47B09A68E027680B63 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B2CCC1A2B854A5AE761220034F5EFBF7 /* FirebaseAnalytics.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 430A223AB97555D1914309DC37429D33 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = D3697C3A80F55A1372F7514127AAE01A /* glog.xcconfig */; @@ -6112,39 +6414,49 @@ }; name = Release; }; - 456682B469493AE0DCC9A0071B5529EF /* Release */ = { + 45401995891A8A3CE32BBC3B55625A55 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D3697C3A80F55A1372F7514127AAE01A /* glog.xcconfig */; + baseConfigurationReference = 95C15A4BF3BF113D8E6F2239D5AFA0D3 /* GoogleToolboxForMac.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/glog/glog-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = glog; - PRODUCT_NAME = glog; + PRODUCT_MODULE_NAME = GoogleToolboxForMac; + PRODUCT_NAME = GoogleToolboxForMac; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 4574006F7B0394AAB7D47CB6CC077708 /* Release */ = { + 456682B469493AE0DCC9A0071B5529EF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 808D6DDACE2479D44956ECE70452EEDB /* FirebaseRemoteConfig.xcconfig */; + baseConfigurationReference = D3697C3A80F55A1372F7514127AAE01A /* glog.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/glog/glog-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = glog; + PRODUCT_NAME = glog; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -6196,6 +6508,32 @@ }; name = Debug; }; + 4B1EAD76C8D88B9548F05FDA75774D0F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A044E0132DBBFC186CC1967069B89DDA /* nanopb.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/nanopb/nanopb-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 4.3; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = nanopb; + PRODUCT_NAME = nanopb; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 4F4036DA6E482BC5EE01DBFF9ACEB927 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = EB054FF8A5D97A01475935D8C8EF580E /* QBImagePickerController.xcconfig */; @@ -6212,10 +6550,11 @@ }; name = Release; }; - 5151AC219790743E51C0CF242C3475EE /* Debug */ = { + 53E1EA1958049C03AD743B851CD2AED8 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = A044E0132DBBFC186CC1967069B89DDA /* nanopb.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -6236,19 +6575,6 @@ }; name = Debug; }; - 51C97F8F9301F99650267AAF2C0D7D22 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C9E29F269A06919AA1FD1E466BCF137C /* GoogleIDFASupport.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 5470A48A275EBA435586FD3E1231075D /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 36BDCE6A03EBE2DE106F2E905C173FC2 /* RNDeviceInfo.xcconfig */; @@ -6275,7 +6601,7 @@ }; 56B455F6A359341CB73B2A5F6C578694 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CB151BF6B6F22A525E316E9CC21FBF6C /* Pods-RocketChatRN.release.xcconfig */; + baseConfigurationReference = 6D82F565EC3AB854EB6657E0657222C2 /* Pods-RocketChatRN.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -6295,19 +6621,6 @@ }; name = Release; }; - 57AB0923263500619B1BB635FB897DB1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 808D6DDACE2479D44956ECE70452EEDB /* FirebaseRemoteConfig.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 5A6F01E01976EC67F4416E24E6DE4A8A /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = EB054FF8A5D97A01475935D8C8EF580E /* QBImagePickerController.xcconfig */; @@ -6355,6 +6668,20 @@ }; name = Release; }; + 5FF66BD3AB155E0B131E624DEAC8D76C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A00EC29B08CF617E218E21BB30A22296 /* Fabric.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 6505094E64DBC0E6638E1CEE80339AB6 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = EB054FF8A5D97A01475935D8C8EF580E /* QBImagePickerController.xcconfig */; @@ -6379,60 +6706,80 @@ }; name = Release; }; - 662534C46861FF1C86B17E2251A33709 /* Debug */ = { + 673DC2FFAFEE132263DD7296D3DDEEDB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B2CCC1A2B854A5AE761220034F5EFBF7 /* FirebaseAnalytics.xcconfig */; + baseConfigurationReference = B8CE294D987D45655A14860086BE1365 /* GoogleAppMeasurement.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 6C26F05766BDE84CD9476FFC4F0C85EB /* Debug */ = { + 6A5F4BAEBCB22DEC168C1F26C8CA1A9C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 824CA65A50D94CA1CAE58408CB4B035F /* FirebaseABTesting.xcconfig */; + baseConfigurationReference = 53563E1385145D00720C7953AD9E0E74 /* Crashlytics.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 7B7E9D7FAB7E45B9F4ADF8DC4822703B /* Debug */ = { + 6C3F9BDDC8034D1D547096E7BE61F20B /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = A00EC29B08CF617E218E21BB30A22296 /* Fabric.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 7EDF101C74DF619862132B17AAA29411 /* Release */ = { + 6C94AEB6A3B8D9876739BF8033888533 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 167F23E91459E9C1B4C7525DC2B73D56 /* RNImageCropPicker.xcconfig */; + baseConfigurationReference = B2CCC1A2B854A5AE761220034F5EFBF7 /* FirebaseAnalytics.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 6DC2380C45E94742E1855E23DCB30AB3 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 95C15A4BF3BF113D8E6F2239D5AFA0D3 /* GoogleToolboxForMac.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/RNImageCropPicker/RNImageCropPicker-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = RNImageCropPicker; - PRODUCT_NAME = RNImageCropPicker; + PRODUCT_MODULE_NAME = GoogleToolboxForMac; + PRODUCT_NAME = GoogleToolboxForMac; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -6442,35 +6789,59 @@ }; name = Release; }; - 89177EE2EFA05CE0B14BB9A8620EFBE0 /* Release */ = { + 74A55BA63479B2B38F48C5593CB6F9C0 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 824CA65A50D94CA1CAE58408CB4B035F /* FirebaseABTesting.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 78271FDE9E52DD291D46DDF4A7C01785 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 378AAB43F6447375572F48EAA16ACF04 /* FirebaseCore.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = FirebaseCore; + PRODUCT_NAME = FirebaseCore; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 8DF93C63591B4A727DE4A97CFB43C7DC /* Release */ = { + 7EDF101C74DF619862132B17AAA29411 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EBE07153C75AA5C1C38348F1B3A27364 /* DoubleConversion.xcconfig */; + baseConfigurationReference = 167F23E91459E9C1B4C7525DC2B73D56 /* RNImageCropPicker.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DoubleConversion/DoubleConversion-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/RNImageCropPicker/RNImageCropPicker-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DoubleConversion; - PRODUCT_NAME = DoubleConversion; + PRODUCT_MODULE_NAME = RNImageCropPicker; + PRODUCT_NAME = RNImageCropPicker; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -6480,18 +6851,29 @@ }; name = Release; }; - 8E0E603174B76F108D5182EB4FFD5BFE /* Debug */ = { + 8DF93C63591B4A727DE4A97CFB43C7DC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B8CE294D987D45655A14860086BE1365 /* GoogleAppMeasurement.xcconfig */; + baseConfigurationReference = EBE07153C75AA5C1C38348F1B3A27364 /* DoubleConversion.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/DoubleConversion/DoubleConversion-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = DoubleConversion; + PRODUCT_NAME = DoubleConversion; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; 8F17DC3A99F99FBAD606CE6963886315 /* Release */ = { isa = XCBuildConfiguration; @@ -6553,30 +6935,6 @@ }; name = Release; }; - 8FED4CCB30525A2CB7467E0DAC2A8799 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2ED73F696CD986B8483EF549CD502B8A /* Protobuf.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Protobuf/Protobuf-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Protobuf; - PRODUCT_NAME = Protobuf; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; 90BE1D7AA42A3833A1CCC6BA7DA3DB38 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = E8AEFB1150634D9928D55650AD9D9BB2 /* RNScreens.xcconfig */; @@ -6600,20 +6958,6 @@ }; name = Debug; }; - 90D00C1381B64E10ED224DB27D232217 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B8CE294D987D45655A14860086BE1365 /* GoogleAppMeasurement.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 6.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; 916E0404255105F480DC4950B7625F7A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -6678,94 +7022,121 @@ }; name = Debug; }; - 94538DC1F52A4DC061A416D9745641F7 /* Release */ = { + 959A7579191545FE037CD61BE7B27FB0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2F33FE55A531ACD9F959B3E74F720F24 /* FirebasePerformance.xcconfig */; + baseConfigurationReference = 4F6B964706F8ADC73280A6DB40F720EA /* Pods-ShareRocketChatRN.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 98738AA5196D3CD9470645AA4DD748A3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C9E29F269A06919AA1FD1E466BCF137C /* GoogleIDFASupport.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 95A5E0105B63F9C3D13FF2B55ACADC0A /* Debug */ = { + A9933AAF0B86C8822487C37AFDB3B032 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2ED73F696CD986B8483EF549CD502B8A /* Protobuf.xcconfig */; + baseConfigurationReference = EB054FF8A5D97A01475935D8C8EF580E /* QBImagePickerController.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Protobuf/Protobuf-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Protobuf; - PRODUCT_NAME = Protobuf; - PUBLIC_HEADERS_FOLDER_PATH = ""; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/QBImagePickerController"; + INFOPLIST_FILE = "Target Support Files/QBImagePickerController/ResourceBundle-QBImagePicker-QBImagePickerController-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = QBImagePicker; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; }; name = Debug; }; - 95ACB890C9B20F274EC11AD55DC9874F /* Release */ = { + AE32BBE60C562E1B9AC64029E973EB86 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AC7124E4822DB66558352E10DD54CBFA /* GTMSessionFetcher.xcconfig */; + baseConfigurationReference = 122B9AF72119AEE8595D2AE55CD8F9B4 /* Firebase.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + AEA4CF8BD6C1573C4E5DE6860B03D2CE /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D9154A2A59EE836C6B4C8ABE26903A93 /* FirebaseInstanceID.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GTMSessionFetcher; - PRODUCT_NAME = GTMSessionFetcher; + PRODUCT_MODULE_NAME = FirebaseInstanceID; + PRODUCT_NAME = FirebaseInstanceID; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 983DC0E799CC534E481188D6BF616E51 /* Release */ = { + BAD185FC4ADC5361D9A178279A515607 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 95C15A4BF3BF113D8E6F2239D5AFA0D3 /* GoogleToolboxForMac.xcconfig */; + baseConfigurationReference = EBE07153C75AA5C1C38348F1B3A27364 /* DoubleConversion.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + GCC_PREFIX_HEADER = "Target Support Files/DoubleConversion/DoubleConversion-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleToolboxForMac; - PRODUCT_NAME = GoogleToolboxForMac; + PRODUCT_MODULE_NAME = DoubleConversion; + PRODUCT_NAME = DoubleConversion; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 98787B2749EB24FF06880C5556A74CCF /* Debug */ = { + BCED374361B9387A457B9F7B3685F9FE /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2F33FE55A531ACD9F959B3E74F720F24 /* FirebasePerformance.xcconfig */; + baseConfigurationReference = 5A601E6330B922C4911EB6709D982A87 /* boost-for-react-native.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -6776,35 +7147,38 @@ }; name = Debug; }; - 9FFDFB3D1B4CCB092B41BC84836F7762 /* Debug */ = { + C11248EEC21FCCF110B2B200D2BEF660 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D9154A2A59EE836C6B4C8ABE26903A93 /* FirebaseInstanceID.xcconfig */; + baseConfigurationReference = 142940214879FB9B072E376B7620751E /* react-native-webview.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + GCC_PREFIX_HEADER = "Target Support Files/react-native-webview/react-native-webview-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = FirebaseInstanceID; - PRODUCT_NAME = FirebaseInstanceID; + PRODUCT_MODULE_NAME = react_native_webview; + PRODUCT_NAME = "react-native-webview"; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - A26F4E5194D98345C60CC36A0DF05606 /* Release */ = { + C1D448485CC981F9F935838C540C8548 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 122B9AF72119AEE8595D2AE55CD8F9B4 /* Firebase.xcconfig */; + baseConfigurationReference = 53563E1385145D00720C7953AD9E0E74 /* Crashlytics.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; @@ -6812,142 +7186,117 @@ }; name = Release; }; - A9933AAF0B86C8822487C37AFDB3B032 /* Debug */ = { + C6B875B2ECB4DCCE31B8E3AC9B0ECA44 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EB054FF8A5D97A01475935D8C8EF580E /* QBImagePickerController.xcconfig */; + baseConfigurationReference = 2F33FE55A531ACD9F959B3E74F720F24 /* FirebasePerformance.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/QBImagePickerController"; - INFOPLIST_FILE = "Target Support Files/QBImagePickerController/ResourceBundle-QBImagePicker-QBImagePickerController-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PRODUCT_NAME = QBImagePicker; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; - SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - BAD185FC4ADC5361D9A178279A515607 /* Debug */ = { + CC24728FCE8BA8982E5C1DBB67BFCA24 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EBE07153C75AA5C1C38348F1B3A27364 /* DoubleConversion.xcconfig */; + baseConfigurationReference = E8AEFB1150634D9928D55650AD9D9BB2 /* RNScreens.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DoubleConversion/DoubleConversion-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/RNScreens/RNScreens-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DoubleConversion; - PRODUCT_NAME = DoubleConversion; + PRODUCT_MODULE_NAME = RNScreens; + PRODUCT_NAME = RNScreens; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - BB25EE1C430BA2ED4F1EE7A0E0333F60 /* Debug */ = { + D0C7F01684D24B1A9B9D5DAA081A67FF /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 95C15A4BF3BF113D8E6F2239D5AFA0D3 /* GoogleToolboxForMac.xcconfig */; + baseConfigurationReference = D6CE75889A37BBAFA6619B2E2D0A9152 /* GoogleUtilities.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleToolboxForMac; - PRODUCT_NAME = GoogleToolboxForMac; + PRODUCT_MODULE_NAME = GoogleUtilities; + PRODUCT_NAME = GoogleUtilities; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; - }; - BCED374361B9387A457B9F7B3685F9FE /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5A601E6330B922C4911EB6709D982A87 /* boost-for-react-native.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; + name = Release; }; - C11248EEC21FCCF110B2B200D2BEF660 /* Release */ = { + D95A2809AB6B9B967AC20FE44D904515 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 142940214879FB9B072E376B7620751E /* react-native-webview.xcconfig */; + baseConfigurationReference = AC7124E4822DB66558352E10DD54CBFA /* GTMSessionFetcher.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/react-native-webview/react-native-webview-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = react_native_webview; - PRODUCT_NAME = "react-native-webview"; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; - }; - CB29CAE45A745050ED5251BE6F68B166 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B2CCC1A2B854A5AE761220034F5EFBF7 /* FirebaseAnalytics.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; + name = Debug; }; - CC24728FCE8BA8982E5C1DBB67BFCA24 /* Release */ = { + DD2F2BBC438D52719583D1D1677C965B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E8AEFB1150634D9928D55650AD9D9BB2 /* RNScreens.xcconfig */; + baseConfigurationReference = D6CE75889A37BBAFA6619B2E2D0A9152 /* GoogleUtilities.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/RNScreens/RNScreens-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + GCC_PREFIX_HEADER = "Target Support Files/GoogleUtilities/GoogleUtilities-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 6.0; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = RNScreens; - PRODUCT_NAME = RNScreens; + PRODUCT_MODULE_NAME = GoogleUtilities; + PRODUCT_NAME = GoogleUtilities; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; EBCD682A0B65F2DAD746E1A27D43E308 /* Debug */ = { isa = XCBuildConfiguration; @@ -6972,6 +7321,20 @@ }; name = Debug; }; + F681428EF28343C1F2059CFF02D37BF7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2F33FE55A531ACD9F959B3E74F720F24 /* FirebasePerformance.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; FC9E150EB587E6912C64F5E6D6430BE3 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 92F7EE09869EE82AEF4C8BBF75990045 /* react-native-splash-screen.xcconfig */; @@ -6999,11 +7362,20 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 1000BB52E7E694A45DC028F737C4134C /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 959A7579191545FE037CD61BE7B27FB0 /* Debug */, + 1F34667B9FDAEB93E6B1139400690335 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 13B185864087F75D556AC109B2D70BF7 /* Build configuration list for PBXAggregateTarget "Fabric" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7B7E9D7FAB7E45B9F4ADF8DC4822703B /* Debug */, - 056C009C442A698606C063320C8BF25A /* Release */, + 5FF66BD3AB155E0B131E624DEAC8D76C /* Debug */, + 6C3F9BDDC8034D1D547096E7BE61F20B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7011,8 +7383,8 @@ 14DC05D6DD2DB32247F6236BA580DBBC /* Build configuration list for PBXNativeTarget "Protobuf" */ = { isa = XCConfigurationList; buildConfigurations = ( - 95A5E0105B63F9C3D13FF2B55ACADC0A /* Debug */, - 8FED4CCB30525A2CB7467E0DAC2A8799 /* Release */, + 0AC398FDF032A5846498C0072CC5A856 /* Debug */, + 22696B114E6C8650506840FDB63826FA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7020,8 +7392,8 @@ 1517040FB8F3211E3574BAA7ECC7AA3A /* Build configuration list for PBXAggregateTarget "FirebasePerformance" */ = { isa = XCConfigurationList; buildConfigurations = ( - 98787B2749EB24FF06880C5556A74CCF /* Debug */, - 94538DC1F52A4DC061A416D9745641F7 /* Release */, + F681428EF28343C1F2059CFF02D37BF7 /* Debug */, + C6B875B2ECB4DCCE31B8E3AC9B0ECA44 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7029,8 +7401,8 @@ 2814D5F6B46466474CE6DD5CE093DDB4 /* Build configuration list for PBXAggregateTarget "GoogleIDFASupport" */ = { isa = XCConfigurationList; buildConfigurations = ( - 51C97F8F9301F99650267AAF2C0D7D22 /* Debug */, - 2F804D193F84038AB9CA88312F62479E /* Release */, + 98738AA5196D3CD9470645AA4DD748A3 /* Debug */, + 3D16C4E3685B904478AC17D932EF75C6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7083,8 +7455,8 @@ 38EC704BA10E3FB0DC5FB8DF2FA59187 /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */ = { isa = XCConfigurationList; buildConfigurations = ( - BB25EE1C430BA2ED4F1EE7A0E0333F60 /* Debug */, - 983DC0E799CC534E481188D6BF616E51 /* Release */, + 45401995891A8A3CE32BBC3B55625A55 /* Debug */, + 6DC2380C45E94742E1855E23DCB30AB3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7101,8 +7473,8 @@ 3D8810E196AB78ED3123A01E8F97036C /* Build configuration list for PBXAggregateTarget "GoogleAppMeasurement" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8E0E603174B76F108D5182EB4FFD5BFE /* Debug */, - 90D00C1381B64E10ED224DB27D232217 /* Release */, + 673DC2FFAFEE132263DD7296D3DDEEDB /* Debug */, + 2059489B7C209B44F49EB7E2574E7016 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7119,8 +7491,8 @@ 4884EF8472F29FED19791390956FA34E /* Build configuration list for PBXNativeTarget "FirebaseInstanceID" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9FFDFB3D1B4CCB092B41BC84836F7762 /* Debug */, - 23E962D392779A57790E56703A2964AC /* Release */, + AEA4CF8BD6C1573C4E5DE6860B03D2CE /* Debug */, + 32EF76DEEE113FCFF0551B2288C997E6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7137,8 +7509,8 @@ 5BEB1936C571C5CF86E8C7AA447F5F6C /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1133C2D1B98ADF1CCB50633D37616F74 /* Debug */, - 95ACB890C9B20F274EC11AD55DC9874F /* Release */, + D95A2809AB6B9B967AC20FE44D904515 /* Debug */, + 343C9615EDAC74C6B01235F19C97AEEA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7146,8 +7518,8 @@ 5D3CB9B809EC62E76C9CECAC507FE24E /* Build configuration list for PBXNativeTarget "FirebaseCore" */ = { isa = XCConfigurationList; buildConfigurations = ( - 2B0700AB98548866873D1B6D1A9C3F99 /* Debug */, - 408ADA4444D509BB1E3B7F87631D11C7 /* Release */, + 283807E41D3C76872CFBB620A3100D17 /* Debug */, + 78271FDE9E52DD291D46DDF4A7C01785 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7155,8 +7527,8 @@ 8D737EA61FBFEFB85394C3D203C4252A /* Build configuration list for PBXAggregateTarget "Firebase" */ = { isa = XCConfigurationList; buildConfigurations = ( - 18226030D404434E1F689DA621C8BC2B /* Debug */, - A26F4E5194D98345C60CC36A0DF05606 /* Release */, + AE32BBE60C562E1B9AC64029E973EB86 /* Debug */, + 3994C7EED14E7E007F694DB62F037B7A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7191,8 +7563,8 @@ A084C0089544D8EEE7DA4C6D8EEEF9ED /* Build configuration list for PBXAggregateTarget "Crashlytics" */ = { isa = XCConfigurationList; buildConfigurations = ( - 23D5BEBA41EB0C45D1EE5EB2F36ECBE2 /* Debug */, - 200CD2396E713A87F09DF2D0477FFC0C /* Release */, + 6A5F4BAEBCB22DEC168C1F26C8CA1A9C /* Debug */, + C1D448485CC981F9F935838C540C8548 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7218,8 +7590,8 @@ DDD1BD1ECC5150DB309F7D7A3EA53B56 /* Build configuration list for PBXNativeTarget "nanopb" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5151AC219790743E51C0CF242C3475EE /* Debug */, - 0C78739B7F25FB17EE1F9D802091DB12 /* Release */, + 53E1EA1958049C03AD743B851CD2AED8 /* Debug */, + 4B1EAD76C8D88B9548F05FDA75774D0F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7254,8 +7626,8 @@ EDE4D9C83A65084FDD68DC55411111CD /* Build configuration list for PBXAggregateTarget "FirebaseABTesting" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6C26F05766BDE84CD9476FFC4F0C85EB /* Debug */, - 89177EE2EFA05CE0B14BB9A8620EFBE0 /* Release */, + 74A55BA63479B2B38F48C5593CB6F9C0 /* Debug */, + 1337CE1CAB8B4D60777B05DA574DEFC9 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7263,8 +7635,8 @@ EE90B36F22114F8D0D633EC22567EB29 /* Build configuration list for PBXAggregateTarget "FirebaseRemoteConfig" */ = { isa = XCConfigurationList; buildConfigurations = ( - 57AB0923263500619B1BB635FB897DB1 /* Debug */, - 4574006F7B0394AAB7D47CB6CC077708 /* Release */, + 163C07A735C49A34E18F7328AA4CB836 /* Debug */, + 18C5F4FCDB67F4F48FC5B02BFE08E872 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7272,8 +7644,8 @@ EFB23A08CD9D9A7BD879907D97754523 /* Build configuration list for PBXAggregateTarget "FirebaseAnalytics" */ = { isa = XCConfigurationList; buildConfigurations = ( - 662534C46861FF1C86B17E2251A33709 /* Debug */, - CB29CAE45A745050ED5251BE6F68B166 /* Release */, + 4299230F94D9CD47B09A68E027680B63 /* Debug */, + 6C94AEB6A3B8D9876739BF8033888533 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -7281,8 +7653,8 @@ F84B7C34B5C42B3E1A56DAC5E2FC6AB4 /* Build configuration list for PBXNativeTarget "GoogleUtilities" */ = { isa = XCConfigurationList; buildConfigurations = ( - 073CD7A5553DE61D0F2ED6B7D879C6D6 /* Debug */, - 37567867305BC89AD0FBD447257E4895 /* Release */, + DD2F2BBC438D52719583D1D1677C965B /* Debug */, + D0C7F01684D24B1A9B9D5DAA081A67FF /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown new file mode 100644 index 0000000000..2711ec4b75 --- /dev/null +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown @@ -0,0 +1,1129 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## Crashlytics + +Fabric: Copyright 2018 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2018 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt + +## Fabric + +Fabric: Copyright 2018 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt + +## Firebase + +Copyright 2019 Google + +## FirebaseABTesting + +Copyright 2018 Google + +## FirebaseAnalytics + +Copyright 2019 Google + +## FirebaseCore + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +## FirebaseInstanceID + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +## FirebasePerformance + +Copyright 2019 Google + +## FirebaseRemoteConfig + +Copyright 2018 Google + +## GTMSessionFetcher + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +## GoogleAppMeasurement + +Copyright 2019 Google + +## GoogleIDFASupport + +Copyright 2015 Google Inc. + +## GoogleToolboxForMac + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +## GoogleUtilities + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +## Protobuf + +Copyright 2008 Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + + +## nanopb + +Copyright (c) 2011 Petteri Aimonen + +This software is provided 'as-is', without any express or +implied warranty. In no event will the authors be held liable +for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. + +Generated by CocoaPods - https://cocoapods.org diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist new file mode 100644 index 0000000000..d8b241bc5e --- /dev/null +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist @@ -0,0 +1,1251 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Fabric: Copyright 2018 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2018 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt + License + Commercial + Title + Crashlytics + Type + PSGroupSpecifier + + + FooterText + Fabric: Copyright 2018 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt + License + Commercial + Title + Fabric + Type + PSGroupSpecifier + + + FooterText + Copyright 2019 Google + License + Copyright + Title + Firebase + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Google + License + Copyright + Title + FirebaseABTesting + Type + PSGroupSpecifier + + + FooterText + Copyright 2019 Google + License + Copyright + Title + FirebaseAnalytics + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + License + Apache + Title + FirebaseCore + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + License + Apache + Title + FirebaseInstanceID + Type + PSGroupSpecifier + + + FooterText + Copyright 2019 Google + License + Copyright + Title + FirebasePerformance + Type + PSGroupSpecifier + + + FooterText + Copyright 2018 Google + License + Copyright + Title + FirebaseRemoteConfig + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + License + Apache + Title + GTMSessionFetcher + Type + PSGroupSpecifier + + + FooterText + Copyright 2019 Google + License + Copyright + Title + GoogleAppMeasurement + Type + PSGroupSpecifier + + + FooterText + Copyright 2015 Google Inc. + License + Copyright + Title + GoogleIDFASupport + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + License + Apache + Title + GoogleToolboxForMac + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + License + Apache + Title + GoogleUtilities + Type + PSGroupSpecifier + + + FooterText + Copyright 2008 Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + + License + 3-Clause BSD License + Title + Protobuf + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2011 Petteri Aimonen <jpa at nanopb.mail.kapsi.fi> + +This software is provided 'as-is', without any express or +implied warranty. In no event will the authors be held liable +for any damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + +2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + +3. This notice may not be removed or altered from any source + distribution. + + License + zlib + Title + nanopb + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-dummy.m b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-dummy.m new file mode 100644 index 0000000000..6f44038d14 --- /dev/null +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_ShareRocketChatRN : NSObject +@end +@implementation PodsDummy_Pods_ShareRocketChatRN +@end diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig new file mode 100644 index 0000000000..967508ebdc --- /dev/null +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig @@ -0,0 +1,9 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/FirebaseABTesting/Frameworks" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebasePerformance/Frameworks" "${PODS_ROOT}/FirebaseRemoteConfig/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/Protobuf" "${PODS_ROOT}/Headers/Public/QBImagePickerController" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-splash-screen" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/yoga" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/GoogleIDFASupport/Libraries" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"FirebaseCore" -l"FirebaseInstanceID" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"c++" -l"nanopb" -l"sqlite3" -l"z" -framework "AdSupport" -framework "CoreTelephony" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCoreDiagnostics" -framework "FirebasePerformance" -framework "FirebaseRemoteConfig" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig new file mode 100644 index 0000000000..967508ebdc --- /dev/null +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig @@ -0,0 +1,9 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/FirebaseABTesting/Frameworks" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebasePerformance/Frameworks" "${PODS_ROOT}/FirebaseRemoteConfig/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/Protobuf" "${PODS_ROOT}/Headers/Public/QBImagePickerController" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-splash-screen" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/yoga" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/GoogleIDFASupport/Libraries" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"FirebaseCore" -l"FirebaseInstanceID" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"c++" -l"nanopb" -l"sqlite3" -l"z" -framework "AdSupport" -framework "CoreTelephony" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCoreDiagnostics" -framework "FirebasePerformance" -framework "FirebaseRemoteConfig" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 5d1e3ac025..2d81106201 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -42,6 +42,8 @@ 1E39C9EE22A0AA6D00D46C42 /* libRNI18n.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A770EC620BECDC7001AD51A /* libRNI18n.a */; }; 1E39C9EF22A0AA6D00D46C42 /* libRNNotifications.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8DEB5220ED0BDE00C5DCE4 /* libRNNotifications.a */; }; 1E39C9F622A0AA9000D46C42 /* libReactNativeShareExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E39C9F522A0AA8700D46C42 /* libReactNativeShareExtension.a */; }; + 1E39CA1522A0AD0900D46C42 /* libRNFirebase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AB8E718229C6146006B474A /* libRNFirebase.a */; }; + 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; 2C800DF680F8451599E80AF1 /* libSafariViewManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */; }; 38CEA0ED468E49CFABCD82FD /* libRNFirebase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A36F9982B71E4662AA8DEB77 /* libRNFirebase.a */; }; @@ -57,6 +59,7 @@ 832341BD1AAA6AB300B99B32 /* libRCTText.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 832341B51AAA6A8300B99B32 /* libRCTText.a */; }; 8ECBD927DDAC4987B98E102E /* libRCTVideo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */; }; 95E57ADEB9A0487791D2C50E /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58E5009FCA8D40E59303C3DD /* libRNGestureHandler.a */; }; + 9702057513F9D3902E4C1120 /* libPods-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = ABAE3E0F69C76BAF74A81E37 /* libPods-ShareRocketChatRN.a */; }; B88F586F1FBF57F600B352B8 /* libRCTPushNotification.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B88F58461FBF55E200B352B8 /* libRCTPushNotification.a */; }; B8971BB2202A093B0000D245 /* libKeyboardTrackingView.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8971BB1202A091D0000D245 /* libKeyboardTrackingView.a */; }; BAB7DC22804246F3923A1833 /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FD2E2837F110483CA29EE0D4 /* libFastImage.a */; }; @@ -512,11 +515,14 @@ 1E39C99E22A0AA0200D46C42 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareRocketChatRN.m; sourceTree = ""; }; 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/react-native-share-extension/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; + 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; 22D3971EAF2E4660B4FAB3DD /* RNI18n.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNI18n.xcodeproj; path = "../node_modules/react-native-i18n/ios/RNI18n.xcodeproj"; sourceTree = ""; }; 3B696712EE2345A59F007A88 /* libRNImagePicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNImagePicker.a; sourceTree = ""; }; 4019A5E1911B4C61944FBCEC /* SafariViewManager.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = SafariViewManager.xcodeproj; path = "../node_modules/react-native-safari-view/SafariViewManager.xcodeproj"; sourceTree = ""; }; + 57567CBF5FB16FDDBDFE4989 /* Pods-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareRocketChatRN.release.xcconfig"; path = "Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig"; sourceTree = ""; }; + 57CE98D61A9A10101ED73988 /* Pods-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ShareRocketChatRN.debug.xcconfig"; path = "Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig"; sourceTree = ""; }; 58E5009FCA8D40E59303C3DD /* libRNGestureHandler.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNGestureHandler.a; sourceTree = ""; }; 5A0EEFAF8AB14F5B9E796CDD /* libRNVectorIcons.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNVectorIcons.a; sourceTree = ""; }; 5A8684E7C27E426C9206E980 /* RealmReact.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RealmReact.xcodeproj; path = "../node_modules/realm/react-native/ios/RealmReact.xcodeproj"; sourceTree = ""; }; @@ -533,6 +539,7 @@ 832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "../node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = ""; }; 921481B47B50490CA761932E /* libRNI18n.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNI18n.a; sourceTree = ""; }; A36F9982B71E4662AA8DEB77 /* libRNFirebase.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRNFirebase.a; sourceTree = ""; }; + ABAE3E0F69C76BAF74A81E37 /* libPods-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; ACD75701AFD1CB848CAB0CB3 /* Pods-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RocketChatRN.debug.xcconfig"; path = "Pods/Target Support Files/Pods-RocketChatRN/Pods-RocketChatRN.debug.xcconfig"; sourceTree = ""; }; AD0379F2BCE84C968538CDAF /* RCTVideo.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RCTVideo.xcodeproj; path = "../node_modules/react-native-video/ios/RCTVideo.xcodeproj"; sourceTree = ""; }; B1A58A7ACB0E4453A44AEC38 /* RNGestureHandler.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNGestureHandler.xcodeproj; path = "../node_modules/react-native-gesture-handler/ios/RNGestureHandler.xcodeproj"; sourceTree = ""; }; @@ -589,6 +596,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1E39CA1522A0AD0900D46C42 /* libRNFirebase.a in Frameworks */, 1E39C9DF22A0AA6D00D46C42 /* libcxxreact.a in Frameworks */, 1E39C9E022A0AA6D00D46C42 /* libdouble-conversion.a in Frameworks */, 1E39C9E122A0AA6D00D46C42 /* libRCTActionSheet.a in Frameworks */, @@ -608,6 +616,7 @@ 1E39C9EF22A0AA6D00D46C42 /* libRNNotifications.a in Frameworks */, 1E39C9DE22A0AA4600D46C42 /* JavaScriptCore.framework in Frameworks */, 1E39C9F622A0AA9000D46C42 /* libReactNativeShareExtension.a in Frameworks */, + 9702057513F9D3902E4C1120 /* libPods-ShareRocketChatRN.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -717,6 +726,7 @@ 1E39C99722A0AA0200D46C42 /* ShareRocketChatRN */ = { isa = PBXGroup; children = ( + 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */, 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */, 1E39C99E22A0AA0200D46C42 /* Info.plist */, 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */, @@ -737,6 +747,8 @@ children = ( ACD75701AFD1CB848CAB0CB3 /* Pods-RocketChatRN.debug.xcconfig */, 66D6B1D0567051BE541450C9 /* Pods-RocketChatRN.release.xcconfig */, + 57CE98D61A9A10101ED73988 /* Pods-ShareRocketChatRN.debug.xcconfig */, + 57567CBF5FB16FDDBDFE4989 /* Pods-ShareRocketChatRN.release.xcconfig */, ); name = Pods; sourceTree = ""; @@ -980,6 +992,7 @@ B37C79D9BD0742CE936B6982 /* libc++.tbd */, 06BB44DD4855498082A744AD /* libz.tbd */, C235DC7B31A4D1578EDEF219 /* libPods-RocketChatRN.a */, + ABAE3E0F69C76BAF74A81E37 /* libPods-ShareRocketChatRN.a */, ); name = Frameworks; sourceTree = ""; @@ -1015,6 +1028,7 @@ isa = PBXNativeTarget; buildConfigurationList = 1E39C9DA22A0AA0200D46C42 /* Build configuration list for PBXNativeTarget "ShareRocketChatRN" */; buildPhases = ( + BA36EE042310992204B7E17B /* [CP] Check Pods Manifest.lock */, 1E39C99222A0AA0200D46C42 /* Sources */, 1E39C99322A0AA0200D46C42 /* Frameworks */, 1E39C99422A0AA0200D46C42 /* Resources */, @@ -1585,6 +1599,7 @@ buildActionMask = 2147483647; files = ( 1E39C99D22A0AA0200D46C42 /* MainInterface.storyboard in Resources */, + 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1640,6 +1655,28 @@ shellPath = /bin/sh; shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n\"${PODS_ROOT}/Fabric/run\"\n"; }; + BA36EE042310992204B7E17B /* [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-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; + }; FB4AC4FF76ACF097F2431C74 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -1825,6 +1862,7 @@ }; 1E39C9A222A0AA0200D46C42 /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 57CE98D61A9A10101ED73988 /* Pods-ShareRocketChatRN.debug.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1850,7 +1888,11 @@ ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; - HEADER_SEARCH_PATHS = "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**"; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**", + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", + ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.2; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; @@ -1870,6 +1912,7 @@ }; 1E39C9A322A0AA0200D46C42 /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 57567CBF5FB16FDDBDFE4989 /* Pods-ShareRocketChatRN.release.xcconfig */; buildSettings = { CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -1895,7 +1938,11 @@ DEVELOPMENT_TEAM = S6UPZG7ZR3; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; - HEADER_SEARCH_PATHS = "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**"; + HEADER_SEARCH_PATHS = ( + "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**", + "$(inherited)", + "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", + ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.2; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; diff --git a/ios/ShareRocketChatRN/ShareRocketChatRN.m b/ios/ShareRocketChatRN/ShareRocketChatRN.m index 5d6a235719..dcadc013c0 100644 --- a/ios/ShareRocketChatRN/ShareRocketChatRN.m +++ b/ios/ShareRocketChatRN/ShareRocketChatRN.m @@ -11,6 +11,7 @@ #import #import #import +#import @interface ShareRocketChatRN : ReactNativeShareExtension @end @@ -21,6 +22,7 @@ @implementation ShareRocketChatRN - (UIView*) shareView { NSURL *jsCodeLocation; + [FIRApp configure]; jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; @@ -36,4 +38,4 @@ - (UIView*) shareView { return rootView; } -@end \ No newline at end of file +@end From e4fbf51f489f83281f8f5e4381e323e006309d77 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Fri, 31 May 2019 08:20:00 -0300 Subject: [PATCH 03/88] :wrench: Add linked libs to ios extension --- app/share.js | 7 ++++++- ios/RocketChatRN.xcodeproj/project.pbxproj | 4 ++++ ios/ShareRocketChatRN/Info.plist | 2 ++ ios/ShareRocketChatRN/ShareRocketChatRN.m | 5 ++++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/share.js b/app/share.js index 5ccd5f976d..b18ecb6551 100644 --- a/app/share.js +++ b/app/share.js @@ -1,8 +1,11 @@ import React from 'react'; import { View, Text, TouchableOpacity } from 'react-native'; import { createAppContainer, createStackNavigator } from 'react-navigation'; +import { Provider } from 'react-redux'; import ShareExtension from 'react-native-share-extension'; +import store from './lib/createStore'; + export class Home extends React.Component { static navigationOptions = () => ({ headerLeft: ( @@ -54,7 +57,9 @@ const Navigator = createStackNavigator({ const AppContainer = createAppContainer(Navigator); const Root = () => ( - + + + ); export default Root; diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 2d81106201..e3d7b6eb04 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -44,6 +44,8 @@ 1E39C9F622A0AA9000D46C42 /* libReactNativeShareExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E39C9F522A0AA8700D46C42 /* libReactNativeShareExtension.a */; }; 1E39CA1522A0AD0900D46C42 /* libRNFirebase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AB8E718229C6146006B474A /* libRNFirebase.a */; }; 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */; }; + 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 607D61161F325B7E00F639C4 /* libRealmReact.a */; }; + 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C915320F39A8000C8F5EE /* libRNFetchBlob.a */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; 2C800DF680F8451599E80AF1 /* libSafariViewManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */; }; 38CEA0ED468E49CFABCD82FD /* libRNFirebase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A36F9982B71E4662AA8DEB77 /* libRNFirebase.a */; }; @@ -596,6 +598,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */, + 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */, 1E39CA1522A0AD0900D46C42 /* libRNFirebase.a in Frameworks */, 1E39C9DF22A0AA6D00D46C42 /* libcxxreact.a in Frameworks */, 1E39C9E022A0AA6D00D46C42 /* libdouble-conversion.a in Frameworks */, diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 082a50a5b5..2bda16999c 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -33,6 +33,8 @@ TRUEPREDICATE NSExtensionActivationSupportsWebURLWithMaxCount 1 + NSExtensionActivationSupportsImageWithMaxCount + 1 NSExtensionMainStoryboard MainInterface diff --git a/ios/ShareRocketChatRN/ShareRocketChatRN.m b/ios/ShareRocketChatRN/ShareRocketChatRN.m index dcadc013c0..9e49beaed4 100644 --- a/ios/ShareRocketChatRN/ShareRocketChatRN.m +++ b/ios/ShareRocketChatRN/ShareRocketChatRN.m @@ -22,7 +22,10 @@ @implementation ShareRocketChatRN - (UIView*) shareView { NSURL *jsCodeLocation; - [FIRApp configure]; + + if(![FIRApp defaultApp]){ + [FIRApp configure]; + } jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil]; From 31fd136830abeeea6e089245c365a7ca70e96a8b Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Fri, 31 May 2019 11:14:01 -0300 Subject: [PATCH 04/88] :building_construction: Add provider to share container --- app/share.js | 20 ++++++++++++++----- ios/RocketChatRN.xcodeproj/project.pbxproj | 12 +++++++++++ ios/RocketChatRN/RocketChatRN.entitlements | 2 ++ .../ShareRocketChatRN.entitlements | 8 ++++++++ 4 files changed, 37 insertions(+), 5 deletions(-) create mode 100644 ios/ShareRocketChatRN/ShareRocketChatRN.entitlements diff --git a/app/share.js b/app/share.js index b18ecb6551..4d08fde690 100644 --- a/app/share.js +++ b/app/share.js @@ -4,6 +4,7 @@ import { createAppContainer, createStackNavigator } from 'react-navigation'; import { Provider } from 'react-redux'; import ShareExtension from 'react-native-share-extension'; +import { appInit } from './actions'; import store from './lib/createStore'; export class Home extends React.Component { @@ -56,10 +57,19 @@ const Navigator = createStackNavigator({ }); const AppContainer = createAppContainer(Navigator); -const Root = () => ( - - - -); +class Root extends React.Component { + constructor(props) { + super(props); + store.dispatch(appInit()); + } + + render() { + return ( + + + + ); + } +} export default Root; diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index e3d7b6eb04..f249da5251 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -518,6 +518,7 @@ 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareRocketChatRN.m; sourceTree = ""; }; 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/react-native-share-extension/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; + 1EA14C3022A16D7B00070029 /* ShareRocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareRocketChatRN.entitlements; sourceTree = ""; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; 22D3971EAF2E4660B4FAB3DD /* RNI18n.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNI18n.xcodeproj; path = "../node_modules/react-native-i18n/ios/RNI18n.xcodeproj"; sourceTree = ""; }; @@ -730,6 +731,7 @@ 1E39C99722A0AA0200D46C42 /* ShareRocketChatRN */ = { isa = PBXGroup; children = ( + 1EA14C3022A16D7B00070029 /* ShareRocketChatRN.entitlements */, 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */, 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */, 1E39C99E22A0AA0200D46C42 /* Info.plist */, @@ -1061,6 +1063,9 @@ DevelopmentTeam = S6UPZG7ZR3; ProvisioningStyle = Manual; SystemCapabilities = { + com.apple.ApplicationGroups.iOS = { + enabled = 1; + }; com.apple.Push = { enabled = 1; }; @@ -1070,6 +1075,11 @@ CreatedOnToolsVersion = 10.2.1; DevelopmentTeam = S6UPZG7ZR3; ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.ApplicationGroups.iOS = { + enabled = 1; + }; + }; }; }; }; @@ -1884,6 +1894,7 @@ CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = ShareRocketChatRN/ShareRocketChatRN.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; @@ -1934,6 +1945,7 @@ CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_ENTITLEMENTS = ShareRocketChatRN/ShareRocketChatRN.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; CODE_SIGN_STYLE = Automatic; diff --git a/ios/RocketChatRN/RocketChatRN.entitlements b/ios/RocketChatRN/RocketChatRN.entitlements index 1484e4f68b..97c11d4326 100644 --- a/ios/RocketChatRN/RocketChatRN.entitlements +++ b/ios/RocketChatRN/RocketChatRN.entitlements @@ -8,5 +8,7 @@ applinks:go.rocket.chat + com.apple.security.application-groups + diff --git a/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements b/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements new file mode 100644 index 0000000000..2eb7e333a6 --- /dev/null +++ b/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.application-groups + + + From d8245648831cfbbad18a0abb4ad60db0fba003e9 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Fri, 31 May 2019 11:19:00 -0300 Subject: [PATCH 05/88] :wrench: Add App Group --- ios/RocketChatRN/RocketChatRN.entitlements | 4 +++- ios/ShareRocketChatRN/ShareRocketChatRN.entitlements | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ios/RocketChatRN/RocketChatRN.entitlements b/ios/RocketChatRN/RocketChatRN.entitlements index 97c11d4326..38912e5b3d 100644 --- a/ios/RocketChatRN/RocketChatRN.entitlements +++ b/ios/RocketChatRN/RocketChatRN.entitlements @@ -9,6 +9,8 @@ applinks:go.rocket.chat com.apple.security.application-groups - + + group.chat.rocket.reactnative + diff --git a/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements b/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements index 2eb7e333a6..01470845f1 100644 --- a/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements +++ b/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements @@ -3,6 +3,8 @@ com.apple.security.application-groups - + + group.chat.rocket.reactnative + From b38a2d659ea1280d30af77542bfaf0d29603da1f Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 4 Jun 2019 21:35:52 -0300 Subject: [PATCH 06/88] :lipstick: Create views to share extension --- android/app/build.gradle | 1 + .../rocket/reactnative/MainApplication.java | 2 + android/settings.gradle | 2 + app/lib/realm.js | 10 +- app/lib/rocketchat.js | 13 +- app/presentation/ShareItem/index.js | 42 ++++ app/presentation/ShareItem/styles.js | 28 +++ app/sagas/init.js | 18 +- app/sagas/login.js | 9 +- app/sagas/selectServer.js | 22 +- app/share.js | 56 +---- app/views/RoomsListView/ServerDropdown.js | 6 +- app/views/ShareListView/index.js | 231 ++++++++++++++++++ app/views/ShareListView/styles.js | 39 +++ app/views/ShareView/index.js | 82 +++++++ app/views/ShareView/styles.js | 36 +++ ios/RocketChatRN.xcodeproj/project.pbxproj | 154 +++++++++++- ios/RocketChatRN/RocketChatRN.entitlements | 4 + .../ShareRocketChatRN.entitlements | 4 + package.json | 2 + yarn.lock | 10 + 21 files changed, 678 insertions(+), 93 deletions(-) create mode 100644 app/presentation/ShareItem/index.js create mode 100644 app/presentation/ShareItem/styles.js create mode 100644 app/views/ShareListView/index.js create mode 100644 app/views/ShareListView/styles.js create mode 100644 app/views/ShareView/index.js create mode 100644 app/views/ShareView/styles.js diff --git a/android/app/build.gradle b/android/app/build.gradle index f99099692e..c2c09a323e 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -166,6 +166,7 @@ android { } dependencies { + implementation project(':react-native-keychain') implementation project(':react-native-firebase') implementation project(':react-native-webview') implementation project(':react-native-orientation-locker') 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 7eb74ee57a..29d65e7aae 100644 --- a/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java +++ b/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java @@ -3,6 +3,7 @@ import android.app.Application; import com.facebook.react.ReactApplication; +import com.oblador.keychain.KeychainPackage; import io.invertase.firebase.RNFirebasePackage; import io.invertase.firebase.fabric.crashlytics.RNFirebaseCrashlyticsPackage; import io.invertase.firebase.analytics.RNFirebaseAnalyticsPackage; @@ -53,6 +54,7 @@ public boolean getUseDeveloperSupport() { protected List getPackages() { return Arrays.asList( new MainReactPackage(), + new KeychainPackage(), new RNFirebasePackage(), new RNFirebaseCrashlyticsPackage(), new RNFirebaseAnalyticsPackage(), diff --git a/android/settings.gradle b/android/settings.gradle index a74415f23b..42fde38cf8 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,4 +1,6 @@ rootProject.name = 'RocketChatRN' +include ':react-native-keychain' +project(':react-native-keychain').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keychain/android') include ':react-native-firebase' project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android') include ':react-native-webview' diff --git a/app/lib/realm.js b/app/lib/realm.js index fd14cda030..77ffe2307a 100644 --- a/app/lib/realm.js +++ b/app/lib/realm.js @@ -10,6 +10,7 @@ const serversSchema = { properties: { id: 'string', name: { type: 'string', optional: true }, + currentServer: { type: 'bool', optional: true }, iconURL: { type: 'string', optional: true }, roomsUpdatedAt: { type: 'date', optional: true }, version: 'string?' @@ -358,7 +359,7 @@ class DB { schema: [ serversSchema ], - schemaVersion: 8, + schemaVersion: 9, migration: (oldRealm, newRealm) => { if (oldRealm.schemaVersion >= 1 && newRealm.schemaVersion <= 8) { const newServers = newRealm.objects('servers'); @@ -368,6 +369,13 @@ class DB { newServers[i].roomsUpdatedAt = null; } } + if (oldRealm.schemaVersion < 9) { + const newServers = newRealm.objects('servers'); + // eslint-disable-next-line no-plusplus + for (let i = 0; i < newServers.length; i++) { + newServers[i].currentServer = false; + } + } } }), inMemoryDB: new Realm({ diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 01635f99c9..ee931617ef 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -1,6 +1,7 @@ import { AsyncStorage, InteractionManager } from 'react-native'; import semver from 'semver'; import { Rocketchat as RocketchatClient } from '@rocket.chat/sdk'; +import * as Keychain from 'react-native-keychain'; import reduxStore from './createStore'; import defaultSettings from '../constants/settings'; @@ -74,11 +75,11 @@ const RocketChat = { }); }, - async getUserToken() { + async getUserToken(server) { try { - return await AsyncStorage.getItem(TOKEN_KEY); + return await Keychain.getInternetCredentials(server, { accessGroup: 'group.chat.rocket.reactnative', service: 'chat.rocket.reactnative' }); } catch (error) { - console.warn(`AsyncStorage error: ${ error.message }`); + log(`err_get_user_token: ${ error.message }`); } }, async getServerInfo(server) { @@ -347,11 +348,7 @@ const RocketChat = { } this.sdk = null; - Promise.all([ - AsyncStorage.removeItem('currentServer'), - AsyncStorage.removeItem(TOKEN_KEY), - AsyncStorage.removeItem(`${ TOKEN_KEY }-${ server }`) - ]).catch(error => console.log(error)); + await Keychain.resetInternetCredentials(server); try { database.deleteAll(); diff --git a/app/presentation/ShareItem/index.js b/app/presentation/ShareItem/index.js new file mode 100644 index 0000000000..0a0e042f37 --- /dev/null +++ b/app/presentation/ShareItem/index.js @@ -0,0 +1,42 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { Text } from 'react-native'; +import { RectButton } from 'react-native-gesture-handler'; +import { connect } from 'react-redux'; +import Avatar from '../../containers/Avatar'; + +import styles, { ROW_HEIGHT } from './styles'; + +export { ROW_HEIGHT }; + +@connect(state => ({ + userId: state.login.user && state.login.user.id, + token: state.login.user && state.login.user.token +})) +/** @extends React.Component */ +export default class ShareItem extends React.Component { + static propTypes = { + baseUrl: PropTypes.string.isRequired, + type: PropTypes.string.isRequired, + name: PropTypes.string.isRequired, + token: PropTypes.string, + userId: PropTypes.string, + onPress: PropTypes.func + } + + render() { + const { + baseUrl, userId, token, name, type, onPress + } = this.props; + + return ( + + + {name} + + ); + } +} diff --git a/app/presentation/ShareItem/styles.js b/app/presentation/ShareItem/styles.js new file mode 100644 index 0000000000..9e3d661d16 --- /dev/null +++ b/app/presentation/ShareItem/styles.js @@ -0,0 +1,28 @@ +import { StyleSheet, PixelRatio } from 'react-native'; + +import { + COLOR_SEPARATOR +} from '../../constants/colors'; + +export const ROW_HEIGHT = 56 * PixelRatio.getFontScale(); + +export default StyleSheet.create({ + content: { + height: 40, + flexDirection: 'row', + width: '100%', + alignItems: 'center', + marginLeft: 14, + paddingRight: 28, + borderBottomWidth: StyleSheet.hairlineWidth, + borderColor: COLOR_SEPARATOR + }, + name: { + flex: 1, + fontSize: 17, + lineHeight: 20 + }, + avatar: { + marginRight: 10 + } +}); diff --git a/app/sagas/init.js b/app/sagas/init.js index 4d92b3fa23..b46bbcccb8 100644 --- a/app/sagas/init.js +++ b/app/sagas/init.js @@ -1,6 +1,6 @@ -import { AsyncStorage } from 'react-native'; -import { put, takeLatest, all } from 'redux-saga/effects'; +import { put, takeLatest } from 'redux-saga/effects'; import SplashScreen from 'react-native-splash-screen'; +import * as Keychain from 'react-native-keychain'; import * as actions from '../actions'; import { selectServerRequest } from '../actions/server'; @@ -14,22 +14,18 @@ import database from '../lib/realm'; const restore = function* restore() { try { - const { token, server } = yield all({ - token: AsyncStorage.getItem(RocketChat.TOKEN_KEY), - server: AsyncStorage.getItem('currentServer') - }); - + const { serversDB } = database.databases; + const currentServer = yield serversDB.objects('servers').filtered('currentServer = true'); + const { id: server = null } = currentServer.length && currentServer[0]; + const { password: token } = server ? yield Keychain.getInternetCredentials(server, { accessGroup: 'group.chat.rocket.reactnative', service: 'chat.rocket.reactnative' }) : { password: null }; const sortPreferences = yield RocketChat.getSortPreferences(); + yield put(setAllPreferences(sortPreferences)); const useMarkdown = yield RocketChat.getUseMarkdown(); yield put(toggleMarkdown(useMarkdown)); if (!token || !server) { - yield all([ - AsyncStorage.removeItem(RocketChat.TOKEN_KEY), - AsyncStorage.removeItem('currentServer') - ]); yield put(actions.appStart('outside')); } else if (server) { const serverObj = database.databases.serversDB.objectForPrimaryKey('servers', server); diff --git a/app/sagas/login.js b/app/sagas/login.js index 28c7232156..8c97456564 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -1,7 +1,7 @@ -import { AsyncStorage } from 'react-native'; import { put, call, takeLatest, select } from 'redux-saga/effects'; +import * as Keychain from 'react-native-keychain'; import * as types from '../actions/actionsTypes'; import { appStart } from '../actions'; @@ -33,15 +33,14 @@ const handleLoginRequest = function* handleLoginRequest({ credentials }) { const handleLoginSuccess = function* handleLoginSuccess({ user }) { const adding = yield select(state => state.server.adding); - yield AsyncStorage.setItem(RocketChat.TOKEN_KEY, user.token); const server = yield select(getServer); try { RocketChat.loginSuccess({ user }); I18n.locale = user.language; - yield AsyncStorage.setItem(`${ RocketChat.TOKEN_KEY }-${ server }`, JSON.stringify(user)); + yield Keychain.setInternetCredentials(server, JSON.stringify(user), user.token, { accessGroup: 'group.chat.rocket.reactnative', service: 'chat.rocket.reactnative' }); } catch (error) { - console.log('loginSuccess saga -> error', error); + log('err_login_success_saga', error); } if (!user.username) { @@ -71,7 +70,7 @@ const handleLogout = function* handleLogout() { // see if there's other logged in servers and selects first one if (servers.length > 0) { const newServer = servers[0].id; - const token = yield AsyncStorage.getItem(`${ RocketChat.TOKEN_KEY }-${ newServer }`); + const token = yield Keychain.getInternetCredentials(newServer, { accessGroup: 'group.chat.rocket.reactnative', service: 'chat.rocket.reactnative' }); if (token) { return yield put(selectServerRequest(newServer)); } diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js index f5315e6420..432a73f848 100644 --- a/app/sagas/selectServer.js +++ b/app/sagas/selectServer.js @@ -1,5 +1,6 @@ import { put, takeLatest } from 'redux-saga/effects'; -import { AsyncStorage, Alert } from 'react-native'; +import { Alert } from 'react-native'; +import * as Keychain from 'react-native-keychain'; import Navigation from '../lib/Navigation'; import { SERVER } from '../actions/actionsTypes'; @@ -36,14 +37,27 @@ const handleSelectServer = function* handleSelectServer({ server, version, fetch if (fetchVersion) { serverInfo = yield getServerInfo({ server }); } - yield AsyncStorage.setItem('currentServer', server); - const userStringified = yield AsyncStorage.getItem(`${ RocketChat.TOKEN_KEY }-${ server }`); + + const { serversDB } = database.databases; + const servers = yield serversDB.objects('servers'); + serversDB.write(() => { + try { + // eslint-disable-next-line no-plusplus + for (let i = 0; i < servers.length; i++) { + serversDB.create('servers', { id: servers[i].id, currentServer: servers[i].id === server }, true); + } + } catch (e) { + log('err_update_current_server ->', e); + } + }); + + const { username: userStringified } = yield Keychain.getInternetCredentials(server, { accessGroup: 'group.chat.rocket.reactnative', service: 'chat.rocket.reactnative' }); if (userStringified) { const user = JSON.parse(userStringified); RocketChat.connect({ server, user }); yield put(setUser(user)); - yield put(actions.appStart('inside')); + // yield put(actions.appStart('inside')); } else { RocketChat.connect({ server }); yield put(actions.appStart('outside')); diff --git a/app/share.js b/app/share.js index 4d08fde690..e3886aa5e2 100644 --- a/app/share.js +++ b/app/share.js @@ -1,62 +1,18 @@ import React from 'react'; -import { View, Text, TouchableOpacity } from 'react-native'; import { createAppContainer, createStackNavigator } from 'react-navigation'; import { Provider } from 'react-redux'; -import ShareExtension from 'react-native-share-extension'; -import { appInit } from './actions'; import store from './lib/createStore'; - -export class Home extends React.Component { - static navigationOptions = () => ({ - headerLeft: ( - ShareExtension.close()}> - cancel - - ), - title: 'Selecionar Canais', - headerRight: null - }) - - constructor(props) { - super(props); - this.state = { - type: '', - value: '' - }; - } - - componentWillMount() { - ShareExtension.data() - .then(({ type, value }) => this.setState({ type, value })); - } - - render() { - const { type, value } = this.state; - return ( - - ShareExtension.close()}> - X - - {type} - {value} - - ); - } -} +import { appInit } from './actions'; +import ShareListView from './views/ShareListView'; +import ShareView from './views/ShareView'; const Navigator = createStackNavigator({ - Home + ShareListView, + ShareView }); - const AppContainer = createAppContainer(Navigator); + class Root extends React.Component { constructor(props) { super(props); diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index 7953446099..a86d358d6c 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -1,7 +1,8 @@ import React, { Component } from 'react'; import { - View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList, Image, AsyncStorage + View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList, Image } from 'react-native'; +import * as Keychain from 'react-native-keychain'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import equal from 'deep-equal'; @@ -13,7 +14,6 @@ import { appStart as appStartAction } from '../../actions'; import styles from './styles'; import database, { safeAddListener } from '../../lib/realm'; import Touch from '../../utils/touch'; -import RocketChat from '../../lib/rocketchat'; import I18n from '../../i18n'; import EventEmitter from '../../utils/events'; import Check from './Check'; @@ -124,7 +124,7 @@ class ServerDropdown extends Component { this.close(); if (currentServer !== server) { - const token = await AsyncStorage.getItem(`${ RocketChat.TOKEN_KEY }-${ server }`); + const { password: token } = await Keychain.getInternetCredentials(server, { accessGroup: 'group.chat.rocket.reactnative', service: 'chat.rocket.reactnative' }); if (!token) { appStart(); this.newServerTimeout = setTimeout(() => { diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js new file mode 100644 index 0000000000..6872928cd6 --- /dev/null +++ b/app/views/ShareListView/index.js @@ -0,0 +1,231 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { + View, Text, TouchableOpacity, LayoutAnimation, InteractionManager, FlatList, ScrollView, ActivityIndicator +} from 'react-native'; +import { SafeAreaView } from 'react-navigation'; +import ShareExtension from 'react-native-share-extension'; +import { connect } from 'react-redux'; + +import database, { safeAddListener } from '../../lib/realm'; +import debounce from '../../utils/debounce'; +import { isIOS } from '../../utils/deviceInfo'; +import I18n from '../../i18n'; +import StatusBar from '../../containers/StatusBar'; +import ShareItem, { ROW_HEIGHT } from '../../presentation/ShareItem'; + +import styles from './styles'; + +const getItemLayout = (data, index) => ({ length: ROW_HEIGHT, offset: ROW_HEIGHT * index, index }); +const keyExtractor = item => item.rid; + +@connect(state => ({ + userId: state.login.user && state.login.user.id, + token: state.login.user && state.login.user.token, + baseUrl: state.settings.baseUrl || state.server ? state.server.server : '', + useRealName: state.settings.UI_Use_Real_Name, + server: state.server.server, + connected: state.meteor.connected +})) +/** @extends React.Component */ +export default class ShareListView extends React.Component { + static navigationOptions = () => ({ + headerLeft: ( + ShareExtension.close()}> + cancel + + ), + title: 'Selecionar Canais' + }) + + static propTypes = { + baseUrl: PropTypes.string.isRequired, + navigation: PropTypes.object, + server: PropTypes.string, + connected: PropTypes.bool, + useRealName: PropTypes.bool + } + + constructor(props) { + super(props); + this.data = []; + this.state = { + value: '', + discussions: [], + channels: [], + privateGroup: [], + direct: [], + livechat: [] + }; + } + + componentWillMount() { + ShareExtension.data() + .then(({ value }) => this.setState({ value })); + } + + componentDidMount() { + this.getSubscriptions(); + } + + // eslint-disable-next-line react/sort-comp + internalSetState = (...args) => { + const { navigation } = this.props; + if (isIOS && navigation.isFocused()) { + LayoutAnimation.easeInEaseOut(); + } + this.setState(...args); + } + + getSubscriptions = debounce(() => { + if (this.data && this.data.removeAllListeners) { + this.data.removeAllListeners(); + } + + const { + server + } = this.props; + + if (server && this.hasActiveDB()) { + this.data = database.objects('subscriptions').filtered('archived != true && open == true'); + this.discussions = this.data.filtered('prid != null'); + this.channels = this.data.filtered('t == $0 AND prid == null', 'c'); + this.privateGroup = this.data.filtered('t == $0 AND prid == null', 'p'); + this.direct = this.data.filtered('t == $0 AND prid == null', 'd'); + this.livechat = this.data.filtered('t == $0 AND prid == null', 'l'); + safeAddListener(this.data, this.updateState); + } + }, 300); + + // eslint-disable-next-line react/sort-comp + updateState = debounce(() => { + this.updateStateInteraction = InteractionManager.runAfterInteractions(() => { + this.internalSetState({ + discussions: this.discussions ? this.discussions.slice() : [], + channels: this.channels ? this.channels.slice() : [], + privateGroup: this.privateGroup ? this.privateGroup.slice() : [], + direct: this.direct ? this.direct.slice() : [], + livechat: this.livechat ? this.livechat.slice() : [] + }); + this.forceUpdate(); + }); + }, 300); + + // this is necessary during development (enables Cmd + r) + hasActiveDB = () => database && database.databases && database.databases.activeDB; + + componentWillReceiveProps() { + this.getSubscriptions(); + } + + getRoomTitle = (item) => { + const { useRealName } = this.props; + return ((item.prid || useRealName) && item.fname) || item.name; + } + + shareMessage = (item) => { + const { value } = this.state; + const { navigation } = this.props; + + navigation.navigate('ShareView', { + rid: item.rid, + text: value, + name: this.getRoomTitle(item) + }); + }; + + renderScroll = () => { + const { connected } = this.props; + + if (!connected) { + return ; + } + + return ( + + {this.renderScrollView()} + + ); + } + + renderScrollView = () => { + const { + discussions, channels, privateGroup, direct, livechat + } = this.state; + + return ( + + {this.renderSection(discussions, 'Discussions')} + {this.renderSection(channels, 'Channels')} + {this.renderSection(direct, 'Direct_Messages')} + {this.renderSection(privateGroup, 'Private_Groups')} + {this.renderSection(livechat, 'Livechat')} + + ); + } + + renderSectionHeader = header => ( + + + {I18n.t(header)} + + + ); + + renderItem = ({ item }) => { + const { baseUrl } = this.props; + if (item.isValid && item.isValid()) { + return ( + this.shareMessage(item)} + /> + ); + } + return null; + } + + renderSection = (data, header) => { + if (data && data.length > 0) { + return ( + this.renderSectionHeader(header)} + getItemLayout={getItemLayout} + enableEmptySections + removeClippedSubviews + keyboardShouldPersistTaps='always' + initialNumToRender={12} + windowSize={7} + /> + ); + } + return null; + } + + render() { + return ( + + + {this.renderScroll()} + + ); + } +} diff --git a/app/views/ShareListView/styles.js b/app/views/ShareListView/styles.js new file mode 100644 index 0000000000..4e00056436 --- /dev/null +++ b/app/views/ShareListView/styles.js @@ -0,0 +1,39 @@ +import { StyleSheet } from 'react-native'; +import { isIOS } from '../../utils/deviceInfo'; + +import { + COLOR_BACKGROUND_CONTAINER, COLOR_WHITE, COLOR_TEXT +} from '../../constants/colors'; + +export default StyleSheet.create({ + container: { + justifyContent: 'center', + alignItems: 'center', + flex: 1, + backgroundColor: COLOR_BACKGROUND_CONTAINER + }, + content: { + flex: 1, + backgroundColor: isIOS ? COLOR_WHITE : '#E1E5E8', + width: '100%' + }, + flatlist: { + width: '100%', + backgroundColor: COLOR_WHITE + }, + scroll: { + width: '100%' + }, + headerContainer: { + paddingHorizontal: 15, + backgroundColor: COLOR_BACKGROUND_CONTAINER, + paddingBottom: 10, + paddingTop: 17 + }, + headerText: { + color: isIOS ? COLOR_TEXT : '#54585E', + fontSize: isIOS ? 17 : 10, + letterSpacing: 0.27, + flex: 1 + } +}); diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js new file mode 100644 index 0000000000..7f3941d120 --- /dev/null +++ b/app/views/ShareView/index.js @@ -0,0 +1,82 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { + View, Text, TouchableOpacity, TextInput +} from 'react-native'; +import ShareExtension from 'react-native-share-extension'; + +import { + COLOR_TEXT_DESCRIPTION +} from '../../constants/colors'; +import RocketChat from '../../lib/rocketchat'; +import styles from './styles'; + +export default class ShareView extends React.Component { + static navigationOptions = () => ({ + title: 'Compartilhar' + }) + + static propTypes = { + navigation: PropTypes.object + }; + + constructor(props) { + super(props); + this.state = { + rid: '', + text: '', + name: '' + }; + } + + componentWillMount() { + const { navigation } = this.props; + const rid = navigation.getParam('rid', ''); + const name = navigation.getParam('name', ''); + const text = navigation.getParam('text', ''); + this.setState({ rid, text, name }); + } + + sendMessage = () => { + const { text, rid } = this.state; + if (text !== '' && rid !== '') { + RocketChat.sendMessage(rid, text, undefined).then(() => { + console.log('enviada'); + ShareExtension.close(); + }); + } + }; + + render() { + const { text, name } = this.state; + + return ( + + + To: + {`${ name }`} + + + this.component = component} + style={styles.input} + returnKeyType='default' + keyboardType='twitter' + blurOnSubmit={false} + placeholder='' + onChangeText={handleText => this.setState({ text: handleText })} + underlineColorAndroid='transparent' + defaultValue={text} + multiline + placeholderTextColor={COLOR_TEXT_DESCRIPTION} + /> + + Send + + + + ); + } +} diff --git a/app/views/ShareView/styles.js b/app/views/ShareView/styles.js new file mode 100644 index 0000000000..9e6762043b --- /dev/null +++ b/app/views/ShareView/styles.js @@ -0,0 +1,36 @@ +import { StyleSheet } from 'react-native'; + +import { + COLOR_BACKGROUND_CONTAINER, COLOR_TEXT_DESCRIPTION, COLOR_TITLE, COLOR_WHITE +} from '../../constants/colors'; + +export default StyleSheet.create({ + container: { + flex: 1, + backgroundColor: COLOR_BACKGROUND_CONTAINER + }, + text: { + paddingHorizontal: 16, + paddingVertical: 8 + }, + to: { + color: COLOR_TEXT_DESCRIPTION + }, + name: { + color: COLOR_TITLE + }, + content: { + flex: 1, + backgroundColor: COLOR_WHITE, + paddingHorizontal: 16 + }, + input: { + flex: 1, + backgroundColor: COLOR_WHITE + }, + button: { + position: 'absolute', + bottom: 16, + right: 16 + } +}); diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index f249da5251..decc9daedc 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -20,6 +20,12 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 1E36219E22A1FFD90042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; + 1E36219F22A1FFE50042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; + 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; + 1E3621A722A202E80042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; + 1E3621D022A2049C0042F8C5 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621CD22A204950042F8C5 /* libRNDeviceInfo.a */; }; + 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A770EC220BECDC7001AD51A /* libFastImage.a */; }; 1E39C99D22A0AA0200D46C42 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */; }; 1E39C9A122A0AA0200D46C42 /* ShareRocketChatRN.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 1E39C9DD22A0AA2A00D46C42 /* ShareRocketChatRN.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */; }; @@ -127,6 +133,41 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; + 1E36219622A1FFC70042F8C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5D82366F1B0CE05B005A9EF3; + remoteInfo = RNKeychain; + }; + 1E36219822A1FFC70042F8C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6478985F1F38BF9100DA1C12; + remoteInfo = "RNKeychain-tvOS"; + }; + 1E3621A422A202DE0042F8C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RNRealmPath; + }; + 1E3621CC22A204950042F8C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; + remoteInfo = RNDeviceInfo; + }; + 1E3621CE22A204950042F8C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; + remoteInfo = "RNDeviceInfo-tvOS"; + }; 1E39C99F22A0AA0200D46C42 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; @@ -512,6 +553,9 @@ 1845C223DA364898A8400573 /* FastImage.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = FastImage.xcodeproj; path = "../node_modules/react-native-fast-image/ios/FastImage.xcodeproj"; sourceTree = ""; }; 1A34D902CC074FF1BCC7DB48 /* libimageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libimageCropPicker.a; sourceTree = ""; }; 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSafariViewManager.a; sourceTree = ""; }; + 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNKeychain.xcodeproj; path = "../node_modules/react-native-keychain/RNKeychain.xcodeproj"; sourceTree = ""; }; + 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNRealmPath.xcodeproj; path = "../node_modules/react-native-realm-path/ios/RNRealmPath.xcodeproj"; sourceTree = ""; }; + 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareRocketChatRN.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 1E39C99C22A0AA0200D46C42 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; 1E39C99E22A0AA0200D46C42 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -563,6 +607,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */, + 1E36219E22A1FFD90042F8C5 /* libRNKeychain.a in Frameworks */, 7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */, 7A8DEB5A20ED0BEC00C5DCE4 /* libRNNotifications.a in Frameworks */, B8971BB2202A093B0000D245 /* libKeyboardTrackingView.a in Frameworks */, @@ -599,6 +645,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */, + 1E3621D022A2049C0042F8C5 /* libRNDeviceInfo.a in Frameworks */, + 1E3621A722A202E80042F8C5 /* libRNRealmPath.a in Frameworks */, + 1E36219F22A1FFE50042F8C5 /* libRNKeychain.a in Frameworks */, 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */, 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */, 1E39CA1522A0AD0900D46C42 /* libRNFirebase.a in Frameworks */, @@ -728,6 +778,32 @@ name = Products; sourceTree = ""; }; + 1E36215F22A1FFC60042F8C5 /* Products */ = { + isa = PBXGroup; + children = ( + 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */, + 1E36219922A1FFC70042F8C5 /* libRNKeychain.a */, + ); + name = Products; + sourceTree = ""; + }; + 1E3621A122A202DD0042F8C5 /* Products */ = { + isa = PBXGroup; + children = ( + 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */, + ); + name = Products; + sourceTree = ""; + }; + 1E3621C822A204950042F8C5 /* Products */ = { + isa = PBXGroup; + children = ( + 1E3621CD22A204950042F8C5 /* libRNDeviceInfo.a */, + 1E3621CF22A204950042F8C5 /* libRNDeviceInfo-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; 1E39C99722A0AA0200D46C42 /* ShareRocketChatRN */ = { isa = PBXGroup; children = ( @@ -855,6 +931,9 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */, + 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, + 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */, 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */, 7A8DEB1B20ED0BDE00C5DCE4 /* RNNotifications.xcodeproj */, B8971BAC202A091D0000D245 /* KeyboardTrackingView.xcodeproj */, @@ -1060,12 +1139,15 @@ ORGANIZATIONNAME = Facebook; TargetAttributes = { 13B07F861A680F5B00A75B9A = { - DevelopmentTeam = S6UPZG7ZR3; - ProvisioningStyle = Manual; + DevelopmentTeam = ETQ42GP8S4; + ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.ApplicationGroups.iOS = { enabled = 1; }; + com.apple.Keychain = { + enabled = 1; + }; com.apple.Push = { enabled = 1; }; @@ -1073,12 +1155,15 @@ }; 1E39C99522A0AA0200D46C42 = { CreatedOnToolsVersion = 10.2.1; - DevelopmentTeam = S6UPZG7ZR3; + DevelopmentTeam = ETQ42GP8S4; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.ApplicationGroups.iOS = { enabled = 1; }; + com.apple.Keychain = { + enabled = 1; + }; }; }; }; @@ -1172,6 +1257,10 @@ ProductGroup = A9A6C941204DD556006B7D9D /* Products */; ProjectRef = C21010507E5B4B37BA0E4C9D /* RNAudio.xcodeproj */; }, + { + ProductGroup = 1E3621C822A204950042F8C5 /* Products */; + ProjectRef = 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */; + }, { ProductGroup = 7A8C912120F39A8000C8F5EE /* Products */; ProjectRef = 0B82BCC462E84F308C5B5CD1 /* RNFetchBlob.xcodeproj */; @@ -1188,10 +1277,18 @@ ProductGroup = 7A770EBC20BECDC7001AD51A /* Products */; ProjectRef = 22D3971EAF2E4660B4FAB3DD /* RNI18n.xcodeproj */; }, + { + ProductGroup = 1E36215F22A1FFC60042F8C5 /* Products */; + ProjectRef = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; + }, { ProductGroup = 7A8DEB1C20ED0BDE00C5DCE4 /* Products */; ProjectRef = 7A8DEB1B20ED0BDE00C5DCE4 /* RNNotifications.xcodeproj */; }, + { + ProductGroup = 1E3621A122A202DD0042F8C5 /* Products */; + ProjectRef = 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */; + }, { ProductGroup = B8E79A8A1F3CCC6C005B464F /* Products */; ProjectRef = 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */; @@ -1266,6 +1363,41 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNKeychain.a; + remoteRef = 1E36219622A1FFC70042F8C5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1E36219922A1FFC70042F8C5 /* libRNKeychain.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNKeychain.a; + remoteRef = 1E36219822A1FFC70042F8C5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNRealmPath.a; + remoteRef = 1E3621A422A202DE0042F8C5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1E3621CD22A204950042F8C5 /* libRNDeviceInfo.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNDeviceInfo.a; + remoteRef = 1E3621CC22A204950042F8C5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1E3621CF22A204950042F8C5 /* libRNDeviceInfo-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNDeviceInfo-tvOS.a"; + remoteRef = 1E3621CE22A204950042F8C5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 1E39C9F522A0AA8700D46C42 /* libReactNativeShareExtension.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1780,10 +1912,10 @@ CODE_SIGN_ENTITLEMENTS = RocketChatRN/RocketChatRN.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 100; DEAD_CODE_STRIPPING = NO; - DEVELOPMENT_TEAM = S6UPZG7ZR3; + DEVELOPMENT_TEAM = ETQ42GP8S4; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", @@ -1818,7 +1950,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative; PRODUCT_NAME = RocketChatRN; - PROVISIONING_PROFILE_SPECIFIER = "match Development chat.rocket.reactnative"; + PROVISIONING_PROFILE_SPECIFIER = ""; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -1832,9 +1964,9 @@ CODE_SIGN_ENTITLEMENTS = RocketChatRN/RocketChatRN.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 100; - DEVELOPMENT_TEAM = S6UPZG7ZR3; + DEVELOPMENT_TEAM = ETQ42GP8S4; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", @@ -1869,7 +2001,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative; PRODUCT_NAME = RocketChatRN; - PROVISIONING_PROFILE_SPECIFIER = "match AppStore chat.rocket.reactnative 1552925104"; + PROVISIONING_PROFILE_SPECIFIER = ""; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -1899,7 +2031,7 @@ "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = S6UPZG7ZR3; + DEVELOPMENT_TEAM = ETQ42GP8S4; ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; @@ -1951,7 +2083,7 @@ CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = S6UPZG7ZR3; + DEVELOPMENT_TEAM = ETQ42GP8S4; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( diff --git a/ios/RocketChatRN/RocketChatRN.entitlements b/ios/RocketChatRN/RocketChatRN.entitlements index 38912e5b3d..889f4cfd6a 100644 --- a/ios/RocketChatRN/RocketChatRN.entitlements +++ b/ios/RocketChatRN/RocketChatRN.entitlements @@ -12,5 +12,9 @@ group.chat.rocket.reactnative + keychain-access-groups + + $(AppIdentifierPrefix)chat.rocket.reactnative + diff --git a/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements b/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements index 01470845f1..8760f94cbd 100644 --- a/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements +++ b/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements @@ -6,5 +6,9 @@ group.chat.rocket.reactnative + keychain-access-groups + + $(AppIdentifierPrefix)chat.rocket.reactnative + diff --git a/package.json b/package.json index b5fd6cea12..0b87f08d45 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "react-native-keyboard-aware-scroll-view": "0.8.0", "react-native-keyboard-input": "^5.3.1", "react-native-keyboard-tracking-view": "^5.5.0", + "react-native-keychain": "^3.1.3", "react-native-markdown-renderer": "^3.2.8", "react-native-modal": "10.0.0", "react-native-notifications": "1.2.6", @@ -55,6 +56,7 @@ "react-native-orientation-locker": "^1.1.5", "react-native-picker-select": "^5.2.3", "react-native-platform-touchable": "^1.1.1", + "react-native-realm-path": "^1.1.2", "react-native-responsive-ui": "^1.1.1", "react-native-safari-view": "^2.1.0", "react-native-screens": "^1.0.0-alpha.22", diff --git a/yarn.lock b/yarn.lock index 6b458c133e..6117cc0478 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11476,6 +11476,11 @@ react-native-keyboard-tracking-view@^5.5.0: resolved "https://registry.yarnpkg.com/react-native-keyboard-tracking-view/-/react-native-keyboard-tracking-view-5.5.0.tgz#87d28639f30e5b511de510e4063e476f23d6e4f2" integrity sha512-e/tYhvccmLOSV+6qpU5Hlpn/U2gVu5K5F555oCUBBF229vv/V/fGoq2QyBnBEKmF9IKzBEOpzxBavUR3IfaKXw== +react-native-keychain@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/react-native-keychain/-/react-native-keychain-3.1.3.tgz#fce176e7b95243cecda1896a7e6bdfe0335d778a" + integrity sha512-eWUbjYJge4icX8FhWJk/OPlyGxPnW9bZDysBX3WwOG37iurdH692HKnM2Ih+S+0te65RytImvUrcVnHVBbumYg== + react-native-markdown-renderer@^3.2.8: version "3.2.8" resolved "https://registry.yarnpkg.com/react-native-markdown-renderer/-/react-native-markdown-renderer-3.2.8.tgz#217046cf198eca632a65f93cdf7dd7766f718070" @@ -11535,6 +11540,11 @@ react-native-platform-touchable@^1.1.1: resolved "https://registry.yarnpkg.com/react-native-platform-touchable/-/react-native-platform-touchable-1.1.1.tgz#fde4acc65eea585d28b164d0c3716a42129a68e4" integrity sha1-/eSsxl7qWF0osWTQw3FqQhKaaOQ= +react-native-realm-path@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/react-native-realm-path/-/react-native-realm-path-1.1.2.tgz#26ddb2b25310270e5f21604d51091ab9afb0ad93" + integrity sha512-LFbRWHObxzmtmipHwFWvZR5urR1OMQj4R0Yr++D7stWzmmNpLt6xhkGApcpTZ54px+KGM21QZbbgCeFhHYKnOQ== + react-native-responsive-ui@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/react-native-responsive-ui/-/react-native-responsive-ui-1.1.1.tgz#eb41839d4f3951ff025660185c36a9a9ce33759f" From aadd6d17da8333713d078574cf2586c222463d91 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 6 Jun 2019 19:30:28 -0300 Subject: [PATCH 07/88] :lipstick: Update button to send and cancel share on SE --- android/app/build.gradle | 1 + .../rocket/reactnative/MainApplication.java | 2 + android/settings.gradle | 2 + app/i18n/locales/en.js | 3 + app/i18n/locales/pt-BR.js | 3 + app/lib/realm.js | 67 +++++++++++++------ app/views/ShareListView/index.js | 6 +- app/views/ShareListView/styles.js | 9 ++- app/views/ShareView/index.js | 35 ++++++---- app/views/ShareView/styles.js | 13 ++-- package.json | 2 +- yarn.lock | 8 +-- 12 files changed, 105 insertions(+), 46 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index c2c09a323e..5ee020c356 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -170,6 +170,7 @@ dependencies { implementation project(':react-native-firebase') implementation project(':react-native-webview') implementation project(':react-native-orientation-locker') + implementation project(':react-native-realm-path') implementation project(':react-native-splash-screen') implementation project(':react-native-screens') implementation project(':react-native-action-sheet') 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 29d65e7aae..32381379f2 100644 --- a/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java +++ b/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java @@ -35,6 +35,7 @@ import com.actionsheet.ActionSheetPackage; import io.realm.react.RealmReactPackage; import com.swmansion.rnscreens.RNScreensPackage; +import com.reactlibrary.RNRealmPathPackage; import android.content.Context; import android.os.Bundle; @@ -62,6 +63,7 @@ protected List getPackages() { new RNCWebViewPackage(), new OrientationPackage(), new SplashScreenReactPackage(), + new RNRealmPathPackage(), new RNGestureHandlerPackage(), new RNScreensPackage(), new ActionSheetPackage(), diff --git a/android/settings.gradle b/android/settings.gradle index 42fde38cf8..abbb4b975e 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -3,6 +3,8 @@ include ':react-native-keychain' project(':react-native-keychain').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keychain/android') include ':react-native-firebase' project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android') +include ':react-native-realm-path' +project(':react-native-realm-path').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-realm-path/android') include ':react-native-webview' project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android') include ':react-native-orientation-locker' diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js index 62b4f117a7..6d3c286bee 100644 --- a/app/i18n/locales/en.js +++ b/app/i18n/locales/en.js @@ -102,6 +102,7 @@ export default { Avatar_changed_successfully: 'Avatar changed successfully!', Avatar_Url: 'Avatar URL', Away: 'Away', + Back: 'Back', Block_user: 'Block user', Broadcast_channel_Description: 'Only authorized users can write new messages, but the other users will be able to reply', Broadcast_Channel: 'Broadcast Channel', @@ -295,6 +296,7 @@ export default { Search_Messages: 'Search Messages', Search: 'Search', Select_Avatar: 'Select Avatar', + Select_Channels: 'Select Channels', Select_Users: 'Select Users', Send: 'Send', Send_audio_message: 'Send audio message', @@ -329,6 +331,7 @@ export default { Thread: 'Thread', Threads: 'Threads', Timezone: 'Timezone', + To: 'To', topic: 'topic', Topic: 'Topic', Try_again: 'Try again', diff --git a/app/i18n/locales/pt-BR.js b/app/i18n/locales/pt-BR.js index 859b4f2990..600a1597dc 100644 --- a/app/i18n/locales/pt-BR.js +++ b/app/i18n/locales/pt-BR.js @@ -108,6 +108,7 @@ export default { Avatar_changed_successfully: 'Avatar alterado com sucesso!', Avatar_Url: 'Avatar URL', Away: 'Ausente', + Back: 'Voltar', Block_user: 'Bloquear usuário', Broadcast_channel_Description: 'Somente usuários autorizados podem escrever novas mensagens, mas os outros usuários poderão responder', Broadcast_Channel: 'Canal de Transmissão', @@ -294,6 +295,7 @@ export default { Search_Messages: 'Buscar Mensagens', Search: 'Buscar', Select_Avatar: 'Selecionar Avatar', + Select_Channels: 'Selecionar Canais', Select_Users: 'Selecionar Usuários', Send: 'Enviar', Send_audio_message: 'Enviar mensagem de áudio', @@ -325,6 +327,7 @@ export default { Thread: 'Tópico', Threads: 'Tópicos', Timezone: 'Fuso horário', + To: 'Para', topic: 'tópico', Topic: 'Tópico', Try_again: 'Tentar novamente', diff --git a/app/lib/realm.js b/app/lib/realm.js index 77ffe2307a..94b60c18b3 100644 --- a/app/lib/realm.js +++ b/app/lib/realm.js @@ -1,4 +1,5 @@ import Realm from 'realm'; +// import RNRealmPath from 'react-native-realm-path'; // import { AsyncStorage } from 'react-native'; // Realm.clearTestState(); @@ -9,8 +10,9 @@ const serversSchema = { primaryKey: 'id', properties: { id: 'string', - name: { type: 'string', optional: true }, currentServer: { type: 'bool', optional: true }, + userToken: { type: 'string', optional: true }, + name: { type: 'string', optional: true }, iconURL: { type: 'string', optional: true }, roomsUpdatedAt: { type: 'date', optional: true }, version: 'string?' @@ -44,11 +46,18 @@ const roomsSchema = { primaryKey: '_id', properties: { _id: 'string', - name: 'string?', broadcast: { type: 'bool', optional: true } } }; +const userMutedInRoomSchema = { + name: 'usersMuted', + primaryKey: 'value', + properties: { + value: 'string' + } +}; + const subscriptionSchema = { name: 'subscriptions', primaryKey: '_id', @@ -79,7 +88,7 @@ const subscriptionSchema = { archived: { type: 'bool', optional: true }, joinCodeRequired: { type: 'bool', optional: true }, notifications: { type: 'bool', optional: true }, - muted: 'string[]', + muted: { type: 'list', objectType: 'usersMuted' }, broadcast: { type: 'bool', optional: true }, prid: { type: 'string', optional: true }, draftMessage: { type: 'string', optional: true }, @@ -87,13 +96,22 @@ const subscriptionSchema = { } }; +const userSchema = { + name: 'user', + primaryKey: 'id', + properties: { + id: 'string' + } +}; + const usersSchema = { name: 'users', primaryKey: '_id', properties: { _id: 'string', username: 'string', - name: { type: 'string', optional: true } + name: { type: 'string', optional: true }, + avatarVersion: { type: 'int', optional: true } } }; @@ -148,13 +166,21 @@ const url = { } }; +const messagesReactionsUsernamesSchema = { + name: 'messagesReactionsUsernames', + primaryKey: 'value', + properties: { + value: 'string' + } +}; + const messagesReactionsSchema = { name: 'messagesReactions', primaryKey: '_id', properties: { _id: 'string', emoji: 'string', - usernames: 'string[]' + usernames: { type: 'list', objectType: 'messagesReactionsUsernames' } } }; @@ -196,9 +222,7 @@ const messagesSchema = { tmid: { type: 'string', optional: true }, tcount: { type: 'int', optional: true }, tlm: { type: 'date', optional: true }, - replies: 'string[]', - mentions: { type: 'list', objectType: 'users' }, - channels: { type: 'list', objectType: 'rooms' } + replies: 'string[]' } }; @@ -336,6 +360,7 @@ const schema = [ messagesSchema, threadsSchema, threadMessagesSchema, + userSchema, usersSchema, roomsSchema, attachment, @@ -346,7 +371,9 @@ const schema = [ frequentlyUsedEmojiSchema, customEmojisSchema, messagesReactionsSchema, + messagesReactionsUsernamesSchema, rolesSchema, + userMutedInRoomSchema, uploadsSchema ]; @@ -359,9 +386,9 @@ class DB { schema: [ serversSchema ], - schemaVersion: 9, + schemaVersion: 6, migration: (oldRealm, newRealm) => { - if (oldRealm.schemaVersion >= 1 && newRealm.schemaVersion <= 8) { + if (oldRealm.schemaVersion >= 1 && newRealm.schemaVersion <= 6) { const newServers = newRealm.objects('servers'); // eslint-disable-next-line no-plusplus @@ -369,13 +396,6 @@ class DB { newServers[i].roomsUpdatedAt = null; } } - if (oldRealm.schemaVersion < 9) { - const newServers = newRealm.objects('servers'); - // eslint-disable-next-line no-plusplus - for (let i = 0; i < newServers.length; i++) { - newServers[i].currentServer = false; - } - } } }), inMemoryDB: new Realm({ @@ -423,11 +443,16 @@ class DB { return this.databases.activeDB = new Realm({ path: `${ path }.realm`, schema, - schemaVersion: 11, + schemaVersion: 9, migration: (oldRealm, newRealm) => { - if (oldRealm.schemaVersion >= 3 && newRealm.schemaVersion <= 11) { + if (oldRealm.schemaVersion >= 3 && newRealm.schemaVersion <= 8) { const newSubs = newRealm.objects('subscriptions'); - newRealm.delete(newSubs); + + // eslint-disable-next-line no-plusplus + for (let i = 0; i < newSubs.length; i++) { + newSubs[i].lastOpen = null; + newSubs[i].ls = null; + } const newMessages = newRealm.objects('messages'); newRealm.delete(newMessages); const newThreads = newRealm.objects('threads'); @@ -436,6 +461,8 @@ class DB { newRealm.delete(newThreadMessages); } if (newRealm.schemaVersion === 9) { + const newSubs = newRealm.objects('subscriptions'); + newRealm.delete(newSubs); const newEmojis = newRealm.objects('customEmojis'); newRealm.delete(newEmojis); const newSettings = newRealm.objects('settings'); diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index 6872928cd6..e91767c1d3 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -31,11 +31,11 @@ const keyExtractor = item => item.rid; export default class ShareListView extends React.Component { static navigationOptions = () => ({ headerLeft: ( - ShareExtension.close()}> - cancel + ShareExtension.close()}> + {I18n.t('Cancel')} ), - title: 'Selecionar Canais' + title: I18n.t('Select_Channels') }) static propTypes = { diff --git a/app/views/ShareListView/styles.js b/app/views/ShareListView/styles.js index 4e00056436..655de0706e 100644 --- a/app/views/ShareListView/styles.js +++ b/app/views/ShareListView/styles.js @@ -2,7 +2,7 @@ import { StyleSheet } from 'react-native'; import { isIOS } from '../../utils/deviceInfo'; import { - COLOR_BACKGROUND_CONTAINER, COLOR_WHITE, COLOR_TEXT + COLOR_BACKGROUND_CONTAINER, COLOR_WHITE, COLOR_TEXT, HEADER_BACK } from '../../constants/colors'; export default StyleSheet.create({ @@ -35,5 +35,12 @@ export default StyleSheet.create({ fontSize: isIOS ? 17 : 10, letterSpacing: 0.27, flex: 1 + }, + cancelButton: { + marginLeft: 16 + }, + cancel: { + color: HEADER_BACK, + fontSize: 16 } }); diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 7f3941d120..5560033eea 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -4,16 +4,31 @@ import { View, Text, TouchableOpacity, TextInput } from 'react-native'; import ShareExtension from 'react-native-share-extension'; +import { HeaderBackButton } from 'react-navigation'; import { - COLOR_TEXT_DESCRIPTION + COLOR_TEXT_DESCRIPTION, HEADER_BACK } from '../../constants/colors'; +import I18n from '../../i18n'; import RocketChat from '../../lib/rocketchat'; import styles from './styles'; export default class ShareView extends React.Component { - static navigationOptions = () => ({ - title: 'Compartilhar' + static navigationOptions = ({ navigation }) => ({ + headerLeft: ( + + ), + title: I18n.t('Share'), + headerRight: ( + + Enviar + + ) }) static propTypes = { @@ -35,15 +50,14 @@ export default class ShareView extends React.Component { const name = navigation.getParam('name', ''); const text = navigation.getParam('text', ''); this.setState({ rid, text, name }); + + navigation.setParams({ sendMessage: this._sendMessagee }); } - sendMessage = () => { + _sendMessage = () => { const { text, rid } = this.state; if (text !== '' && rid !== '') { - RocketChat.sendMessage(rid, text, undefined).then(() => { - console.log('enviada'); - ShareExtension.close(); - }); + RocketChat.sendMessage(rid, text, undefined).then(ShareExtension.close); } }; @@ -55,7 +69,7 @@ export default class ShareView extends React.Component { style={styles.container} > - To: + {`${ I18n.t('To') }: `} {`${ name }`} @@ -72,9 +86,6 @@ export default class ShareView extends React.Component { multiline placeholderTextColor={COLOR_TEXT_DESCRIPTION} /> - - Send - ); diff --git a/app/views/ShareView/styles.js b/app/views/ShareView/styles.js index 9e6762043b..ddfc8c5023 100644 --- a/app/views/ShareView/styles.js +++ b/app/views/ShareView/styles.js @@ -1,7 +1,7 @@ import { StyleSheet } from 'react-native'; import { - COLOR_BACKGROUND_CONTAINER, COLOR_TEXT_DESCRIPTION, COLOR_TITLE, COLOR_WHITE + COLOR_BACKGROUND_CONTAINER, COLOR_TEXT_DESCRIPTION, COLOR_TITLE, COLOR_WHITE, HEADER_BACK } from '../../constants/colors'; export default StyleSheet.create({ @@ -28,9 +28,12 @@ export default StyleSheet.create({ flex: 1, backgroundColor: COLOR_WHITE }, - button: { - position: 'absolute', - bottom: 16, - right: 16 + sendButton: { + marginRight: 16 + }, + send: { + color: HEADER_BACK, + fontWeight: '600', + fontSize: 16 } }); diff --git a/package.json b/package.json index 0b87f08d45..5423308591 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "react-native-orientation-locker": "^1.1.5", "react-native-picker-select": "^5.2.3", "react-native-platform-touchable": "^1.1.1", - "react-native-realm-path": "^1.1.2", + "react-native-realm-path": "^1.2.7", "react-native-responsive-ui": "^1.1.1", "react-native-safari-view": "^2.1.0", "react-native-screens": "^1.0.0-alpha.22", diff --git a/yarn.lock b/yarn.lock index 6117cc0478..04e3f91649 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11540,10 +11540,10 @@ react-native-platform-touchable@^1.1.1: resolved "https://registry.yarnpkg.com/react-native-platform-touchable/-/react-native-platform-touchable-1.1.1.tgz#fde4acc65eea585d28b164d0c3716a42129a68e4" integrity sha1-/eSsxl7qWF0osWTQw3FqQhKaaOQ= -react-native-realm-path@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/react-native-realm-path/-/react-native-realm-path-1.1.2.tgz#26ddb2b25310270e5f21604d51091ab9afb0ad93" - integrity sha512-LFbRWHObxzmtmipHwFWvZR5urR1OMQj4R0Yr++D7stWzmmNpLt6xhkGApcpTZ54px+KGM21QZbbgCeFhHYKnOQ== +react-native-realm-path@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/react-native-realm-path/-/react-native-realm-path-1.2.7.tgz#b5f3f608564885adef6829dcc4f5b35fa8ffff1d" + integrity sha512-kpj5v4pdLd4tAxopGGjwRA68QzXxWQaGcrr6WpTLjkd/G8Ar+bSXePgpbepu/K2bV3KhtS1b3Zz1jqVXBzFavg== react-native-responsive-ui@^1.1.1: version "1.1.1" From f753ce7a7b12b9205bbb4086557dc0cb46f3aeef Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 6 Jun 2019 19:39:17 -0300 Subject: [PATCH 08/88] :green_apple: Fix build and Profile Development --- ios/RocketChatRN.xcodeproj/project.pbxproj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index decc9daedc..53c7180839 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -1139,8 +1139,8 @@ ORGANIZATIONNAME = Facebook; TargetAttributes = { 13B07F861A680F5B00A75B9A = { - DevelopmentTeam = ETQ42GP8S4; - ProvisioningStyle = Automatic; + DevelopmentTeam = S6UPZG7ZR3; + ProvisioningStyle = Manual; SystemCapabilities = { com.apple.ApplicationGroups.iOS = { enabled = 1; @@ -1912,10 +1912,10 @@ CODE_SIGN_ENTITLEMENTS = RocketChatRN/RocketChatRN.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 100; DEAD_CODE_STRIPPING = NO; - DEVELOPMENT_TEAM = ETQ42GP8S4; + DEVELOPMENT_TEAM = S6UPZG7ZR3; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", @@ -1950,7 +1950,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative; PRODUCT_NAME = RocketChatRN; - PROVISIONING_PROFILE_SPECIFIER = ""; + PROVISIONING_PROFILE_SPECIFIER = "match Development chat.rocket.reactnative"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -1964,9 +1964,9 @@ CODE_SIGN_ENTITLEMENTS = RocketChatRN/RocketChatRN.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - CODE_SIGN_STYLE = Automatic; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 100; - DEVELOPMENT_TEAM = ETQ42GP8S4; + DEVELOPMENT_TEAM = S6UPZG7ZR3; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)", @@ -2001,7 +2001,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative; PRODUCT_NAME = RocketChatRN; - PROVISIONING_PROFILE_SPECIFIER = ""; + PROVISIONING_PROFILE_SPECIFIER = "match AppStore chat.rocket.reactnative 1552925104"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; From e4b5c970bdda8ce14b08fda316cd6ef938c90f61 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 6 Jun 2019 22:29:58 -0300 Subject: [PATCH 09/88] :ok_hand: Fix code review --- app.json | 1 + app/lib/realm.js | 67 +++++++++++------------------------- app/sagas/selectServer.js | 2 +- app/views/ShareView/index.js | 4 +-- index.js | 4 +-- ios/Podfile | 2 +- ios/Podfile.lock | 5 ++- ios/Pods/Manifest.lock | 5 ++- 8 files changed, 32 insertions(+), 58 deletions(-) diff --git a/app.json b/app.json index 181bef9706..7b3a422dca 100644 --- a/app.json +++ b/app.json @@ -1,4 +1,5 @@ { "name": "RocketChatRN", + "share": "ShareRocketChatRN", "displayName": "RocketChatRN" } \ No newline at end of file diff --git a/app/lib/realm.js b/app/lib/realm.js index 94b60c18b3..e6fc0bf198 100644 --- a/app/lib/realm.js +++ b/app/lib/realm.js @@ -10,9 +10,8 @@ const serversSchema = { primaryKey: 'id', properties: { id: 'string', - currentServer: { type: 'bool', optional: true }, - userToken: { type: 'string', optional: true }, name: { type: 'string', optional: true }, + currentServer: { type: 'bool', optional: true }, iconURL: { type: 'string', optional: true }, roomsUpdatedAt: { type: 'date', optional: true }, version: 'string?' @@ -46,18 +45,11 @@ const roomsSchema = { primaryKey: '_id', properties: { _id: 'string', + name: 'string?', broadcast: { type: 'bool', optional: true } } }; -const userMutedInRoomSchema = { - name: 'usersMuted', - primaryKey: 'value', - properties: { - value: 'string' - } -}; - const subscriptionSchema = { name: 'subscriptions', primaryKey: '_id', @@ -88,7 +80,7 @@ const subscriptionSchema = { archived: { type: 'bool', optional: true }, joinCodeRequired: { type: 'bool', optional: true }, notifications: { type: 'bool', optional: true }, - muted: { type: 'list', objectType: 'usersMuted' }, + muted: 'string[]', broadcast: { type: 'bool', optional: true }, prid: { type: 'string', optional: true }, draftMessage: { type: 'string', optional: true }, @@ -96,22 +88,13 @@ const subscriptionSchema = { } }; -const userSchema = { - name: 'user', - primaryKey: 'id', - properties: { - id: 'string' - } -}; - const usersSchema = { name: 'users', primaryKey: '_id', properties: { _id: 'string', username: 'string', - name: { type: 'string', optional: true }, - avatarVersion: { type: 'int', optional: true } + name: { type: 'string', optional: true } } }; @@ -166,21 +149,13 @@ const url = { } }; -const messagesReactionsUsernamesSchema = { - name: 'messagesReactionsUsernames', - primaryKey: 'value', - properties: { - value: 'string' - } -}; - const messagesReactionsSchema = { name: 'messagesReactions', primaryKey: '_id', properties: { _id: 'string', emoji: 'string', - usernames: { type: 'list', objectType: 'messagesReactionsUsernames' } + usernames: 'string[]' } }; @@ -222,7 +197,9 @@ const messagesSchema = { tmid: { type: 'string', optional: true }, tcount: { type: 'int', optional: true }, tlm: { type: 'date', optional: true }, - replies: 'string[]' + replies: 'string[]', + mentions: { type: 'list', objectType: 'users' }, + channels: { type: 'list', objectType: 'rooms' } } }; @@ -360,7 +337,6 @@ const schema = [ messagesSchema, threadsSchema, threadMessagesSchema, - userSchema, usersSchema, roomsSchema, attachment, @@ -371,9 +347,7 @@ const schema = [ frequentlyUsedEmojiSchema, customEmojisSchema, messagesReactionsSchema, - messagesReactionsUsernamesSchema, rolesSchema, - userMutedInRoomSchema, uploadsSchema ]; @@ -386,9 +360,9 @@ class DB { schema: [ serversSchema ], - schemaVersion: 6, + schemaVersion: 9, migration: (oldRealm, newRealm) => { - if (oldRealm.schemaVersion >= 1 && newRealm.schemaVersion <= 6) { + if (oldRealm.schemaVersion >= 1 && newRealm.schemaVersion <= 8) { const newServers = newRealm.objects('servers'); // eslint-disable-next-line no-plusplus @@ -396,6 +370,14 @@ class DB { newServers[i].roomsUpdatedAt = null; } } + if (newRealm.schemaVersion < 9) { + const newServers = newRealm.objects('servers'); + + // eslint-disable-next-line no-plusplus + for (let i = 0; i < newServers.length; i++) { + newServers[i].currentServer = null; + } + } } }), inMemoryDB: new Realm({ @@ -443,16 +425,11 @@ class DB { return this.databases.activeDB = new Realm({ path: `${ path }.realm`, schema, - schemaVersion: 9, + schemaVersion: 11, migration: (oldRealm, newRealm) => { - if (oldRealm.schemaVersion >= 3 && newRealm.schemaVersion <= 8) { + if (oldRealm.schemaVersion >= 3 && newRealm.schemaVersion <= 11) { const newSubs = newRealm.objects('subscriptions'); - - // eslint-disable-next-line no-plusplus - for (let i = 0; i < newSubs.length; i++) { - newSubs[i].lastOpen = null; - newSubs[i].ls = null; - } + newRealm.delete(newSubs); const newMessages = newRealm.objects('messages'); newRealm.delete(newMessages); const newThreads = newRealm.objects('threads'); @@ -461,8 +438,6 @@ class DB { newRealm.delete(newThreadMessages); } if (newRealm.schemaVersion === 9) { - const newSubs = newRealm.objects('subscriptions'); - newRealm.delete(newSubs); const newEmojis = newRealm.objects('customEmojis'); newRealm.delete(newEmojis); const newSettings = newRealm.objects('settings'); diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js index 432a73f848..9cee476d3a 100644 --- a/app/sagas/selectServer.js +++ b/app/sagas/selectServer.js @@ -57,7 +57,7 @@ const handleSelectServer = function* handleSelectServer({ server, version, fetch const user = JSON.parse(userStringified); RocketChat.connect({ server, user }); yield put(setUser(user)); - // yield put(actions.appStart('inside')); + yield put(actions.appStart('inside')); } else { RocketChat.connect({ server }); yield put(actions.appStart('outside')); diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 5560033eea..219660b8c5 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -26,7 +26,7 @@ export default class ShareView extends React.Component { title: I18n.t('Share'), headerRight: ( - Enviar + {I18n.t('Send')} ) }) @@ -51,7 +51,7 @@ export default class ShareView extends React.Component { const text = navigation.getParam('text', ''); this.setState({ rid, text, name }); - navigation.setParams({ sendMessage: this._sendMessagee }); + navigation.setParams({ sendMessage: this._sendMessage }); } _sendMessage = () => { diff --git a/index.js b/index.js index 87a10f9c8a..e84346a318 100644 --- a/index.js +++ b/index.js @@ -2,10 +2,10 @@ import 'react-native-console-time-polyfill'; import './app/ReactotronConfig'; import { AppRegistry } from 'react-native'; -import { name as appName } from './app.json'; +import { name as appName, share as shareName } from './app.json'; AppRegistry.registerComponent(appName, () => require('./app/index').default); -AppRegistry.registerComponent('ShareRocketChatRN', () => require('./app/share').default); +AppRegistry.registerComponent(shareName, () => require('./app/share').default); // For storybook, comment everything above and uncomment below // import './storybook'; diff --git a/ios/Podfile b/ios/Podfile index b6d36a024a..98ab13bdb4 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -48,7 +48,7 @@ end target 'ShareRocketChatRN' do - pod 'Firebase/Core' + pod 'Firebase/Core', '~> 5.20.1' pod 'Fabric', '~> 1.9.0' pod 'Crashlytics', '~> 3.12.0' pod 'GoogleIDFASupport', '~> 3.14.0' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 361811c72e..cd1099956d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -142,7 +142,6 @@ DEPENDENCIES: - Crashlytics (~> 3.12.0) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - Fabric (~> 1.9.0) - - Firebase/Core - Firebase/Core (~> 5.20.1) - Firebase/Performance (~> 5.20.1) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) @@ -244,6 +243,6 @@ SPEC CHECKSUMS: RSKImageCropper: 98296ad26b41753f796b6898d015509598f13d97 yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64 -PODFILE CHECKSUM: 5eb5b0e70b4137f9fad7a928c840f92f67d266bf +PODFILE CHECKSUM: f98adf896db83acfddda2f17bf015d55d15a89f2 -COCOAPODS: 1.6.2 +COCOAPODS: 1.6.2 \ No newline at end of file diff --git a/ios/Pods/Manifest.lock b/ios/Pods/Manifest.lock index 361811c72e..cd1099956d 100644 --- a/ios/Pods/Manifest.lock +++ b/ios/Pods/Manifest.lock @@ -142,7 +142,6 @@ DEPENDENCIES: - Crashlytics (~> 3.12.0) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - Fabric (~> 1.9.0) - - Firebase/Core - Firebase/Core (~> 5.20.1) - Firebase/Performance (~> 5.20.1) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) @@ -244,6 +243,6 @@ SPEC CHECKSUMS: RSKImageCropper: 98296ad26b41753f796b6898d015509598f13d97 yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64 -PODFILE CHECKSUM: 5eb5b0e70b4137f9fad7a928c840f92f67d266bf +PODFILE CHECKSUM: f98adf896db83acfddda2f17bf015d55d15a89f2 -COCOAPODS: 1.6.2 +COCOAPODS: 1.6.2 \ No newline at end of file From 0a0cd874cf287ced531bfa087e9fc106cd359fe4 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 6 Jun 2019 22:45:00 -0300 Subject: [PATCH 10/88] :bug: Fix navigation on share container --- app/share.js | 46 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 42 insertions(+), 4 deletions(-) diff --git a/app/share.js b/app/share.js index e3886aa5e2..9085cc3299 100644 --- a/app/share.js +++ b/app/share.js @@ -1,17 +1,50 @@ import React from 'react'; -import { createAppContainer, createStackNavigator } from 'react-navigation'; +import { createAppContainer, createStackNavigator, createSwitchNavigator } from 'react-navigation'; import { Provider } from 'react-redux'; +import firebase from 'react-native-firebase'; +import Navigation from './lib/Navigation'; import store from './lib/createStore'; import { appInit } from './actions'; import ShareListView from './views/ShareListView'; import ShareView from './views/ShareView'; +import AuthLoadingView from './views/AuthLoadingView'; -const Navigator = createStackNavigator({ +const InsideNavigator = createStackNavigator({ ShareListView, ShareView }); -const AppContainer = createAppContainer(Navigator); +const AppContainer = createAppContainer(createSwitchNavigator( + { + InsideStack: InsideNavigator, + AuthLoading: AuthLoadingView + }, + { + initialRouteName: 'AuthLoading' + } +)); + +// gets the current screen from navigation state +const getActiveRouteName = (navigationState) => { + if (!navigationState) { + return null; + } + const route = navigationState.routes[navigationState.index]; + // dive into nested navigators + if (route.routes) { + return getActiveRouteName(route); + } + return route.routeName; +}; + +const onNavigationStateChange = (prevState, currentState) => { + const currentScreen = getActiveRouteName(currentState); + const prevScreen = getActiveRouteName(prevState); + + if (prevScreen !== currentScreen) { + firebase.analytics().setCurrentScreen(currentScreen); + } +}; class Root extends React.Component { constructor(props) { @@ -22,7 +55,12 @@ class Root extends React.Component { render() { return ( - + { + Navigation.setTopLevelNavigator(navigatorRef); + }} + onNavigationStateChange={onNavigationStateChange} + /> ); } From d777ddc8d4914199d12276a8ba303ba8c3efd27e Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Fri, 7 Jun 2019 11:05:18 -0300 Subject: [PATCH 11/88] :sparkles: Introduce select server on Share Extension --- app/i18n/locales/en.js | 1 + app/i18n/locales/pt-BR.js | 1 + app/share.js | 15 +++- app/views/SelectServerView.js | 131 ++++++++++++++++++++++++++++++ app/views/ShareListView/index.js | 48 ++++++++--- app/views/ShareListView/styles.js | 7 +- 6 files changed, 187 insertions(+), 16 deletions(-) create mode 100644 app/views/SelectServerView.js diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js index 6d3c286bee..50b7ee6bee 100644 --- a/app/i18n/locales/en.js +++ b/app/i18n/locales/en.js @@ -297,6 +297,7 @@ export default { Search: 'Search', Select_Avatar: 'Select Avatar', Select_Channels: 'Select Channels', + Select_Server: 'Select Server', Select_Users: 'Select Users', Send: 'Send', Send_audio_message: 'Send audio message', diff --git a/app/i18n/locales/pt-BR.js b/app/i18n/locales/pt-BR.js index 600a1597dc..4166db4aa4 100644 --- a/app/i18n/locales/pt-BR.js +++ b/app/i18n/locales/pt-BR.js @@ -296,6 +296,7 @@ export default { Search: 'Buscar', Select_Avatar: 'Selecionar Avatar', Select_Channels: 'Selecionar Canais', + Select_Server: 'Selecionar Servidor', Select_Users: 'Selecionar Usuários', Send: 'Enviar', Send_audio_message: 'Enviar mensagem de áudio', diff --git a/app/share.js b/app/share.js index 9085cc3299..154a011e00 100644 --- a/app/share.js +++ b/app/share.js @@ -8,12 +8,19 @@ import store from './lib/createStore'; import { appInit } from './actions'; import ShareListView from './views/ShareListView'; import ShareView from './views/ShareView'; +import SelectServerView from './views/SelectServerView'; import AuthLoadingView from './views/AuthLoadingView'; -const InsideNavigator = createStackNavigator({ - ShareListView, - ShareView -}); +const InsideNavigator = createStackNavigator( + { + ShareListView, + ShareView, + SelectServerView + }, + { + initialRouteName: 'ShareListView' + } +); const AppContainer = createAppContainer(createSwitchNavigator( { InsideStack: InsideNavigator, diff --git a/app/views/SelectServerView.js b/app/views/SelectServerView.js new file mode 100644 index 0000000000..dbedee7272 --- /dev/null +++ b/app/views/SelectServerView.js @@ -0,0 +1,131 @@ +import React from 'react'; +import { + FlatList, Text, View +} from 'react-native'; +import PropTypes from 'prop-types'; +import * as Keychain from 'react-native-keychain'; +import { connect } from 'react-redux'; +import { HeaderBackButton, SafeAreaView } from 'react-navigation'; +import FastImage from 'react-native-fast-image'; +import { RectButton } from 'react-native-gesture-handler'; + +import I18n from '../i18n'; +import database from '../lib/realm'; +import { CustomIcon } from '../lib/Icons'; +import StatusBar from '../containers/StatusBar'; +import EventEmitter from '../utils/events'; +import { selectServerRequest as selectServerRequestAction } from '../actions/server'; + +import { + HEADER_BACK, COLOR_BACKGROUND_CONTAINER +} from '../constants/colors'; +import Navigation from '../lib/Navigation'; + +const getItemLayout = (data, index) => ({ length: 70, offset: 70 * index, index }); +const keyExtractor = item => item.id; + +@connect(state => ({ + server: state.server.server +}), dispatch => ({ + selectServerRequest: server => dispatch(selectServerRequestAction(server)) +})) +export default class LoginView extends React.Component { + static navigationOptions = ({ navigation }) => ({ + headerLeft: ( + + ), + title: I18n.t('Select_Server') + }) + + static propTypes = { + server: PropTypes.string, + selectServerRequest: PropTypes.func + } + + select = async(server) => { + const { + server: currentServer, selectServerRequest + } = this.props; + + if (currentServer !== server) { + const { password: token } = await Keychain.getInternetCredentials(server, { accessGroup: 'group.chat.rocket.reactnative', service: 'chat.rocket.reactnative' }); + if (!token) { + this.newServerTimeout = setTimeout(() => { + EventEmitter.emit('NewServer', { server }); + }, 1000); + } else { + selectServerRequest(server); + Navigation.navigate('ShareListView'); + } + } + } + + renderItem = ({ item }) => { + const { server } = this.props; + return ( + this.select(item.id)} + style={{ + flexDirection: 'row', + paddingHorizontal: 16, + paddingVertical: 8, + backgroundColor: 'white', + alignItems: 'center' + }} + > + + + {item.name} + {item.id} + + {item.id === server ? : null} + + ); + } + + renderList = () => { + const { serversDB } = database.databases; + const servers = serversDB.objects('servers'); + + if (servers && servers.length > 0) { + return ( + + ); + } + return null; + } + + render() { + return ( + + + {this.renderList()} + + ); + } +} diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index e91767c1d3..b47d34ca3b 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -5,8 +5,11 @@ import { } from 'react-native'; import { SafeAreaView } from 'react-navigation'; import ShareExtension from 'react-native-share-extension'; +import FastImage from 'react-native-fast-image'; import { connect } from 'react-redux'; +import { RectButton } from 'react-native-gesture-handler'; +import Navigation from '../../lib/Navigation'; import database, { safeAddListener } from '../../lib/realm'; import debounce from '../../utils/debounce'; import { isIOS } from '../../utils/deviceInfo'; @@ -55,7 +58,8 @@ export default class ShareListView extends React.Component { channels: [], privateGroup: [], direct: [], - livechat: [] + livechat: [], + servers: [] }; } @@ -82,9 +86,8 @@ export default class ShareListView extends React.Component { this.data.removeAllListeners(); } - const { - server - } = this.props; + const { serversDB } = database.databases; + const { server } = this.props; if (server && this.hasActiveDB()) { this.data = database.objects('subscriptions').filtered('archived != true && open == true'); @@ -93,6 +96,7 @@ export default class ShareListView extends React.Component { this.privateGroup = this.data.filtered('t == $0 AND prid == null', 'p'); this.direct = this.data.filtered('t == $0 AND prid == null', 'd'); this.livechat = this.data.filtered('t == $0 AND prid == null', 'l'); + this.servers = serversDB.objects('servers'); safeAddListener(this.data, this.updateState); } }, 300); @@ -105,7 +109,8 @@ export default class ShareListView extends React.Component { channels: this.channels ? this.channels.slice() : [], privateGroup: this.privateGroup ? this.privateGroup.slice() : [], direct: this.direct ? this.direct.slice() : [], - livechat: this.livechat ? this.livechat.slice() : [] + livechat: this.livechat ? this.livechat.slice() : [], + servers: this.servers ? this.servers.slice() : [] }); this.forceUpdate(); }); @@ -160,6 +165,7 @@ export default class ShareListView extends React.Component { return ( + {this.renderServerSelector()} {this.renderSection(discussions, 'Discussions')} {this.renderSection(channels, 'Channels')} {this.renderSection(direct, 'Direct_Messages')} @@ -170,12 +176,8 @@ export default class ShareListView extends React.Component { } renderSectionHeader = header => ( - - + + {I18n.t(header)} @@ -217,6 +219,30 @@ export default class ShareListView extends React.Component { return null; } + renderServerSelector = () => { + const { servers } = this.state; + const { server } = this.props; + const currentServer = servers.find(serverFiltered => serverFiltered.id === server); + return ( + + {this.renderSectionHeader('Select_Server')} + Navigation.navigate('SelectServerView')} style={[{ flexDirection: 'row', paddingHorizontal: 16, paddingVertical: 8 }, styles.bordered]}> + + + {currentServer.name} + {currentServer.id} + + + + ); + }; + render() { return ( Date: Sat, 8 Jun 2019 10:47:19 -0300 Subject: [PATCH 12/88] :wrench: Change realm path to app group --- __mocks__/react-native-realm-path.js | 3 +++ app/lib/realm.js | 8 ++++---- 2 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 __mocks__/react-native-realm-path.js diff --git a/__mocks__/react-native-realm-path.js b/__mocks__/react-native-realm-path.js new file mode 100644 index 0000000000..5df7c3985a --- /dev/null +++ b/__mocks__/react-native-realm-path.js @@ -0,0 +1,3 @@ +export default { + realmPath: '' +}; diff --git a/app/lib/realm.js b/app/lib/realm.js index e6fc0bf198..320710b0d1 100644 --- a/app/lib/realm.js +++ b/app/lib/realm.js @@ -1,5 +1,5 @@ import Realm from 'realm'; -// import RNRealmPath from 'react-native-realm-path'; +import RNRealmPath from 'react-native-realm-path'; // import { AsyncStorage } from 'react-native'; // Realm.clearTestState(); @@ -356,7 +356,7 @@ const inMemorySchema = [usersTypingSchema, activeUsersSchema]; class DB { databases = { serversDB: new Realm({ - path: 'default.realm', + path: `${ RNRealmPath.realmPath }default.realm`, schema: [ serversSchema ], @@ -381,7 +381,7 @@ class DB { } }), inMemoryDB: new Realm({ - path: 'memory.realm', + path: `${ RNRealmPath.realmPath }memory.realm`, schema: inMemorySchema, schemaVersion: 2, inMemory: true @@ -423,7 +423,7 @@ class DB { setActiveDB(database = '') { const path = database.replace(/(^\w+:|^)\/\//, ''); return this.databases.activeDB = new Realm({ - path: `${ path }.realm`, + path: `${ RNRealmPath.realmPath }${ path }.realm`, schema, schemaVersion: 11, migration: (oldRealm, newRealm) => { From ce3720af72817acd43a27b150476bcc7add4b7db Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Sat, 8 Jun 2019 11:19:45 -0300 Subject: [PATCH 13/88] :art: Improvement server item component --- app/presentation/ServerItem/Check.js | 8 +++ app/presentation/ServerItem/index.js | 61 +++++++++++++++++++++++ app/presentation/ServerItem/styles.js | 47 +++++++++++++++++ app/views/RoomsListView/ServerDropdown.js | 43 ++++------------ app/views/SelectServerView.js | 49 +++++++----------- app/views/ShareListView/index.js | 20 ++------ 6 files changed, 147 insertions(+), 81 deletions(-) create mode 100644 app/presentation/ServerItem/Check.js create mode 100644 app/presentation/ServerItem/index.js create mode 100644 app/presentation/ServerItem/styles.js diff --git a/app/presentation/ServerItem/Check.js b/app/presentation/ServerItem/Check.js new file mode 100644 index 0000000000..2203fd8151 --- /dev/null +++ b/app/presentation/ServerItem/Check.js @@ -0,0 +1,8 @@ +import React from 'react'; + +import { CustomIcon } from '../../lib/Icons'; +import styles from './styles'; + +const Check = React.memo(() => ); + +export default Check; diff --git a/app/presentation/ServerItem/index.js b/app/presentation/ServerItem/index.js new file mode 100644 index 0000000000..187fc5dc22 --- /dev/null +++ b/app/presentation/ServerItem/index.js @@ -0,0 +1,61 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { View, Text } from 'react-native'; +import FastImage from 'react-native-fast-image'; +import { connect } from 'react-redux'; + +import Touch from '../../utils/touch'; +import log from '../../utils/log'; +import Check from './Check'; + +import styles from './styles'; + +@connect(state => ({ + server: state.server.server +})) +/** @extends React.Component */ +export default class ServerItem extends React.Component { + static propTypes = { + onPress: PropTypes.func.isRequired, + item: PropTypes.object.isRequired, + hasCheck: PropTypes.bool, + server: PropTypes.string + } + + render() { + const { + server, item, onPress, hasCheck + } = this.props; + + return ( + + + {item.iconURL + ? ( + log('error loading serverIcon')} + /> + ) + : ( + + ) + } + + {item.name || item.id} + {item.id} + + {item.id === server && hasCheck ? : null} + + + ); + } +} diff --git a/app/presentation/ServerItem/styles.js b/app/presentation/ServerItem/styles.js new file mode 100644 index 0000000000..1d6790f9c4 --- /dev/null +++ b/app/presentation/ServerItem/styles.js @@ -0,0 +1,47 @@ +import { StyleSheet } from 'react-native'; +import { + COLOR_SEPARATOR, COLOR_PRIMARY +} from '../../constants/colors'; + +import sharedStyles from '../../views/Styles'; + +export default StyleSheet.create({ + serverItem: { + height: 68 + }, + serverItemContainer: { + flexDirection: 'row', + alignItems: 'center' + }, + serverIcon: { + width: 42, + height: 42, + marginHorizontal: 15, + marginVertical: 13, + borderRadius: 4 + }, + serverTextContainer: { + flex: 1, + flexDirection: 'column', + justifyContent: 'center' + }, + serverName: { + fontSize: 18, + ...sharedStyles.textColorNormal, + ...sharedStyles.textSemibold + }, + serverUrl: { + fontSize: 15, + ...sharedStyles.textColorDescription, + ...sharedStyles.textRegular + }, + checkIcon: { + marginHorizontal: 15, + color: COLOR_PRIMARY + }, + serverSeparator: { + height: StyleSheet.hairlineWidth, + backgroundColor: COLOR_SEPARATOR, + marginLeft: 72 + } +}); diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index a86d358d6c..6beaeed26f 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import { - View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList, Image + View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList } from 'react-native'; import * as Keychain from 'react-native-keychain'; import PropTypes from 'prop-types'; @@ -13,10 +13,9 @@ import { selectServerRequest as selectServerRequestAction } from '../../actions/ import { appStart as appStartAction } from '../../actions'; import styles from './styles'; import database, { safeAddListener } from '../../lib/realm'; -import Touch from '../../utils/touch'; import I18n from '../../i18n'; import EventEmitter from '../../utils/events'; -import Check from './Check'; +import ServerItem from '../../presentation/ServerItem'; const ROW_HEIGHT = 68; const ANIMATION_DURATION = 200; @@ -138,37 +137,13 @@ class ServerDropdown extends Component { renderSeparator = () => ; - renderServer = ({ item }) => { - const { server } = this.props; - - return ( - this.select(item.id)} style={styles.serverItem} testID={`rooms-list-header-server-${ item.id }`}> - - {item.iconURL - ? ( - console.warn('error loading serverIcon')} - /> - ) - : ( - - ) - } - - {item.name || item.id} - {item.id} - - {item.id === server ? : null} - - - ); - } + renderServer = ({ item }) => ( + this.select(item.id)} + item={item} + hasCheck + /> + ); render() { const { servers } = this.state; diff --git a/app/views/SelectServerView.js b/app/views/SelectServerView.js index dbedee7272..07732cd8bb 100644 --- a/app/views/SelectServerView.js +++ b/app/views/SelectServerView.js @@ -1,29 +1,33 @@ import React from 'react'; import { - FlatList, Text, View + FlatList, View, StyleSheet } from 'react-native'; import PropTypes from 'prop-types'; import * as Keychain from 'react-native-keychain'; import { connect } from 'react-redux'; import { HeaderBackButton, SafeAreaView } from 'react-navigation'; -import FastImage from 'react-native-fast-image'; -import { RectButton } from 'react-native-gesture-handler'; import I18n from '../i18n'; import database from '../lib/realm'; -import { CustomIcon } from '../lib/Icons'; import StatusBar from '../containers/StatusBar'; import EventEmitter from '../utils/events'; import { selectServerRequest as selectServerRequestAction } from '../actions/server'; import { - HEADER_BACK, COLOR_BACKGROUND_CONTAINER + HEADER_BACK, COLOR_BACKGROUND_CONTAINER, COLOR_WHITE } from '../constants/colors'; import Navigation from '../lib/Navigation'; +import ServerItem from '../presentation/ServerItem'; const getItemLayout = (data, index) => ({ length: 70, offset: 70 * index, index }); const keyExtractor = item => item.id; +const styles = StyleSheet.create({ + server: { + backgroundColor: COLOR_WHITE + } +}); + @connect(state => ({ server: state.server.server }), dispatch => ({ @@ -65,34 +69,15 @@ export default class LoginView extends React.Component { } } - renderItem = ({ item }) => { - const { server } = this.props; - return ( - ( + + this.select(item.id)} - style={{ - flexDirection: 'row', - paddingHorizontal: 16, - paddingVertical: 8, - backgroundColor: 'white', - alignItems: 'center' - }} - > - - - {item.name} - {item.id} - - {item.id === server ? : null} - - ); - } + item={item} + hasCheck + /> + + ); renderList = () => { const { serversDB } = database.databases; diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index b47d34ca3b..715eed7e93 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -5,9 +5,7 @@ import { } from 'react-native'; import { SafeAreaView } from 'react-navigation'; import ShareExtension from 'react-native-share-extension'; -import FastImage from 'react-native-fast-image'; import { connect } from 'react-redux'; -import { RectButton } from 'react-native-gesture-handler'; import Navigation from '../../lib/Navigation'; import database, { safeAddListener } from '../../lib/realm'; @@ -18,6 +16,7 @@ import StatusBar from '../../containers/StatusBar'; import ShareItem, { ROW_HEIGHT } from '../../presentation/ShareItem'; import styles from './styles'; +import ServerItem from '../../presentation/ServerItem'; const getItemLayout = (data, index) => ({ length: ROW_HEIGHT, offset: ROW_HEIGHT * index, index }); const keyExtractor = item => item.rid; @@ -226,19 +225,10 @@ export default class ShareListView extends React.Component { return ( {this.renderSectionHeader('Select_Server')} - Navigation.navigate('SelectServerView')} style={[{ flexDirection: 'row', paddingHorizontal: 16, paddingVertical: 8 }, styles.bordered]}> - - - {currentServer.name} - {currentServer.id} - - + Navigation.navigate('SelectServerView')} + item={currentServer} + /> ); }; From af626fe81e853087047898b9aa405879d071a42c Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Sat, 8 Jun 2019 12:29:11 -0300 Subject: [PATCH 14/88] :lipstick: Add separator to share list --- app/presentation/ServerItem/styles.js | 7 +----- app/presentation/ShareItem/index.js | 13 ++++++---- app/presentation/ShareItem/styles.js | 15 ++++++------ app/sagas/init.js | 4 ++-- app/views/RoomsListView/styles.js | 34 --------------------------- app/views/SelectServerView.js | 15 +++++++++--- app/views/ShareListView/index.js | 13 ++++++---- app/views/ShareListView/styles.js | 5 ++++ 8 files changed, 45 insertions(+), 61 deletions(-) diff --git a/app/presentation/ServerItem/styles.js b/app/presentation/ServerItem/styles.js index 1d6790f9c4..f1fdda7291 100644 --- a/app/presentation/ServerItem/styles.js +++ b/app/presentation/ServerItem/styles.js @@ -1,6 +1,6 @@ import { StyleSheet } from 'react-native'; import { - COLOR_SEPARATOR, COLOR_PRIMARY + COLOR_PRIMARY } from '../../constants/colors'; import sharedStyles from '../../views/Styles'; @@ -38,10 +38,5 @@ export default StyleSheet.create({ checkIcon: { marginHorizontal: 15, color: COLOR_PRIMARY - }, - serverSeparator: { - height: StyleSheet.hairlineWidth, - backgroundColor: COLOR_SEPARATOR, - marginLeft: 72 } }); diff --git a/app/presentation/ShareItem/index.js b/app/presentation/ShareItem/index.js index 0a0e042f37..2aeacefb44 100644 --- a/app/presentation/ShareItem/index.js +++ b/app/presentation/ShareItem/index.js @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { Text } from 'react-native'; +import { Text, View } from 'react-native'; import { RectButton } from 'react-native-gesture-handler'; import { connect } from 'react-redux'; import Avatar from '../../containers/Avatar'; @@ -32,10 +32,15 @@ export default class ShareItem extends React.Component { return ( - - {name} + + + + {name} + + ); } diff --git a/app/presentation/ShareItem/styles.js b/app/presentation/ShareItem/styles.js index 9e3d661d16..defabdfb51 100644 --- a/app/presentation/ShareItem/styles.js +++ b/app/presentation/ShareItem/styles.js @@ -1,9 +1,5 @@ import { StyleSheet, PixelRatio } from 'react-native'; -import { - COLOR_SEPARATOR -} from '../../constants/colors'; - export const ROW_HEIGHT = 56 * PixelRatio.getFontScale(); export default StyleSheet.create({ @@ -13,15 +9,18 @@ export default StyleSheet.create({ width: '100%', alignItems: 'center', marginLeft: 14, - paddingRight: 28, - borderBottomWidth: StyleSheet.hairlineWidth, - borderColor: COLOR_SEPARATOR + paddingRight: 28 }, name: { - flex: 1, fontSize: 17, lineHeight: 20 }, + center: { + flex: 1, + height: '100%', + width: '100%', + justifyContent: 'center' + }, avatar: { marginRight: 10 } diff --git a/app/sagas/init.js b/app/sagas/init.js index b46bbcccb8..24fd9f99c3 100644 --- a/app/sagas/init.js +++ b/app/sagas/init.js @@ -1,5 +1,5 @@ import { put, takeLatest } from 'redux-saga/effects'; -import SplashScreen from 'react-native-splash-screen'; +// import SplashScreen from 'react-native-splash-screen'; import * as Keychain from 'react-native-keychain'; import * as actions from '../actions'; @@ -46,7 +46,7 @@ const start = function* start({ root }) { } else if (root === 'outside') { yield Navigation.navigate('OutsideStack'); } - SplashScreen.hide(); + // SplashScreen.hide(); }; const root = function* root() { diff --git a/app/views/RoomsListView/styles.js b/app/views/RoomsListView/styles.js index 95c1116647..da0d29a090 100644 --- a/app/views/RoomsListView/styles.js +++ b/app/views/RoomsListView/styles.js @@ -109,40 +109,6 @@ export default StyleSheet.create({ paddingVertical: 10, ...sharedStyles.textRegular }, - serverItem: { - height: 68 - }, - serverItemContainer: { - flexDirection: 'row', - alignItems: 'center' - }, - serverIcon: { - width: 42, - height: 42, - marginHorizontal: 15, - marginVertical: 13, - borderRadius: 4, - resizeMode: 'contain' - }, - serverTextContainer: { - flex: 1, - flexDirection: 'column', - justifyContent: 'center' - }, - serverName: { - fontSize: 18, - ...sharedStyles.textColorNormal, - ...sharedStyles.textSemibold - }, - serverUrl: { - fontSize: 15, - ...sharedStyles.textColorDescription, - ...sharedStyles.textRegular - }, - checkIcon: { - marginHorizontal: 15, - color: COLOR_PRIMARY - }, serverSeparator: { height: StyleSheet.hairlineWidth, backgroundColor: COLOR_SEPARATOR, diff --git a/app/views/SelectServerView.js b/app/views/SelectServerView.js index 07732cd8bb..64ee5a5a54 100644 --- a/app/views/SelectServerView.js +++ b/app/views/SelectServerView.js @@ -19,10 +19,19 @@ import { import Navigation from '../lib/Navigation'; import ServerItem from '../presentation/ServerItem'; -const getItemLayout = (data, index) => ({ length: 70, offset: 70 * index, index }); +const getItemLayout = (data, index) => ({ length: 68, offset: 68 * index, index }); const keyExtractor = item => item.id; const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: COLOR_BACKGROUND_CONTAINER + }, + list: { + width: '100%', + flex: 1, + paddingVertical: 32 + }, server: { backgroundColor: COLOR_WHITE } @@ -88,7 +97,7 @@ export default class LoginView extends React.Component { diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index 715eed7e93..892ebb5893 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -197,6 +197,8 @@ export default class ShareListView extends React.Component { return null; } + renderSeparator = () => ; + renderSection = (data, header) => { if (data && data.length > 0) { return ( @@ -206,6 +208,7 @@ export default class ShareListView extends React.Component { style={styles.flatlist} renderItem={this.renderItem} ListHeaderComponent={() => this.renderSectionHeader(header)} + ItemSeparatorComponent={this.renderSeparator} getItemLayout={getItemLayout} enableEmptySections removeClippedSubviews @@ -225,10 +228,12 @@ export default class ShareListView extends React.Component { return ( {this.renderSectionHeader('Select_Server')} - Navigation.navigate('SelectServerView')} - item={currentServer} - /> + + Navigation.navigate('SelectServerView')} + item={currentServer} + /> + ); }; diff --git a/app/views/ShareListView/styles.js b/app/views/ShareListView/styles.js index 5f7686e878..364b747633 100644 --- a/app/views/ShareListView/styles.js +++ b/app/views/ShareListView/styles.js @@ -47,5 +47,10 @@ export default StyleSheet.create({ cancel: { color: HEADER_BACK, fontSize: 16 + }, + separator: { + borderBottomWidth: StyleSheet.hairlineWidth, + borderColor: COLOR_SEPARATOR, + marginLeft: 48 } }); From 93dfb948b86813464ff70865ac21e0330c8c9f30 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Sat, 8 Jun 2019 12:32:48 -0300 Subject: [PATCH 15/88] :rewind: Revert splashscreen --- app/sagas/init.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/sagas/init.js b/app/sagas/init.js index 24fd9f99c3..b46bbcccb8 100644 --- a/app/sagas/init.js +++ b/app/sagas/init.js @@ -1,5 +1,5 @@ import { put, takeLatest } from 'redux-saga/effects'; -// import SplashScreen from 'react-native-splash-screen'; +import SplashScreen from 'react-native-splash-screen'; import * as Keychain from 'react-native-keychain'; import * as actions from '../actions'; @@ -46,7 +46,7 @@ const start = function* start({ root }) { } else if (root === 'outside') { yield Navigation.navigate('OutsideStack'); } - // SplashScreen.hide(); + SplashScreen.hide(); }; const root = function* root() { From 2f8cfbf9d6e6784277013214ead42116a4c1da13 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Sat, 8 Jun 2019 13:22:08 -0300 Subject: [PATCH 16/88] :children_crossing: Add validation view to share extension --- app/i18n/locales/en.js | 4 ++- app/i18n/locales/pt-BR.js | 4 ++- app/share.js | 14 +++++++-- app/views/WithoutServersView.js | 53 +++++++++++++++++++++++++++++++++ 4 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 app/views/WithoutServersView.js diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js index 50b7ee6bee..330f6ac572 100644 --- a/app/i18n/locales/en.js +++ b/app/i18n/locales/en.js @@ -369,6 +369,7 @@ export default { Welcome: 'Welcome', Welcome_to_RocketChat: 'Welcome to Rocket.Chat', Whats_your_2fa: 'What\'s your 2FA code?', + Without_Servers: 'Without Servers', Yes_action_it: 'Yes, {{action}} it!', Yesterday: 'Yesterday', You_are_in_preview_mode: 'You are in preview mode', @@ -378,5 +379,6 @@ export default { you_were_mentioned: 'you were mentioned', you: 'you', You: 'You', - You_will_not_be_able_to_recover_this_message: 'You will not be able to recover this message!' + You_will_not_be_able_to_recover_this_message: 'You will not be able to recover this message!', + You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'You need to access at least one Rocket.Chat server to share something.' }; diff --git a/app/i18n/locales/pt-BR.js b/app/i18n/locales/pt-BR.js index 4166db4aa4..c7238b8ea8 100644 --- a/app/i18n/locales/pt-BR.js +++ b/app/i18n/locales/pt-BR.js @@ -364,6 +364,7 @@ export default { Welcome: 'Bem vindo', Welcome_to_RocketChat: 'Bem vindo ao Rocket.Chat', Whats_your_2fa: 'Qual seu código de autenticação?', + Without_Servers: 'Sem Servidores', Yes_action_it: 'Sim, {{action}}!', Yesterday: 'Ontem', You_are_in_preview_mode: 'Está é uma prévia do canal', @@ -373,5 +374,6 @@ export default { you_were_mentioned: 'você foi mencionado', you: 'você', You: 'Você', - You_will_not_be_able_to_recover_this_message: 'Você não será capaz de recuperar essa mensagem!' + You_will_not_be_able_to_recover_this_message: 'Você não será capaz de recuperar essa mensagem!', + You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Você precisa acessar pelo menos um servidor Rocket.Chat para compartilhar algo.' }; diff --git a/app/share.js b/app/share.js index 154a011e00..a05e44e7dc 100644 --- a/app/share.js +++ b/app/share.js @@ -10,6 +10,7 @@ import ShareListView from './views/ShareListView'; import ShareView from './views/ShareView'; import SelectServerView from './views/SelectServerView'; import AuthLoadingView from './views/AuthLoadingView'; +import WithoutServersView from './views/WithoutServersView'; const InsideNavigator = createStackNavigator( { @@ -21,8 +22,19 @@ const InsideNavigator = createStackNavigator( initialRouteName: 'ShareListView' } ); + +const OutsideNavigator = createStackNavigator( + { + WithoutServersView + }, + { + initialRouteName: 'WithoutServersView' + } +); + const AppContainer = createAppContainer(createSwitchNavigator( { + OutsideStack: OutsideNavigator, InsideStack: InsideNavigator, AuthLoading: AuthLoadingView }, @@ -31,13 +43,11 @@ const AppContainer = createAppContainer(createSwitchNavigator( } )); -// gets the current screen from navigation state const getActiveRouteName = (navigationState) => { if (!navigationState) { return null; } const route = navigationState.routes[navigationState.index]; - // dive into nested navigators if (route.routes) { return getActiveRouteName(route); } diff --git a/app/views/WithoutServersView.js b/app/views/WithoutServersView.js new file mode 100644 index 0000000000..c87ef971b0 --- /dev/null +++ b/app/views/WithoutServersView.js @@ -0,0 +1,53 @@ +import React from 'react'; +import { + StyleSheet, View, Text, TouchableOpacity +} from 'react-native'; +import ShareExtension from 'react-native-share-extension'; + +import I18n from '../i18n'; +import { COLOR_WHITE, HEADER_BACK } from '../constants/colors'; + +const styles = StyleSheet.create({ + container: { + flex: 1, + backgroundColor: COLOR_WHITE, + justifyContent: 'center', + alignItems: 'center' + }, + title: { + fontSize: 18, + fontWeight: 'bold' + }, + content: { + fontSize: 14, + textAlign: 'center' + }, + closeButton: { + marginLeft: 16 + }, + close: { + color: HEADER_BACK, + fontSize: 16 + } +}); + +export default class WithoutServerView extends React.Component { + static navigationOptions = () => ({ + headerLeft: ( + ShareExtension.close()}> + {I18n.t('Close')} + + ) + }) + + render() { + return ( + + + {I18n.t('Without_Server')} + {I18n.t('You_need_to_access_at_least_one_RocketChat_server_to_share_something')} + + + ); + } +} From 149c39aecc29fa80372b23a16950a05bbce5c416 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Sat, 8 Jun 2019 13:28:46 -0300 Subject: [PATCH 17/88] :art: Improvement Check component --- app/containers/Check.js | 18 ++++++++++++++++++ app/presentation/ServerItem/Check.js | 8 -------- app/presentation/ServerItem/index.js | 2 +- app/presentation/ServerItem/styles.js | 7 ------- app/views/RoomsListView/Check.js | 8 -------- app/views/RoomsListView/SortDropdown.js | 2 +- 6 files changed, 20 insertions(+), 25 deletions(-) create mode 100644 app/containers/Check.js delete mode 100644 app/presentation/ServerItem/Check.js delete mode 100644 app/views/RoomsListView/Check.js diff --git a/app/containers/Check.js b/app/containers/Check.js new file mode 100644 index 0000000000..30c9cbd31c --- /dev/null +++ b/app/containers/Check.js @@ -0,0 +1,18 @@ +import React from 'react'; +import { StyleSheet } from 'react-native'; + +import { CustomIcon } from '../lib/Icons'; +import sharedStyles from '../views/Styles'; + +const styles = StyleSheet.create({ + icon: { + width: 22, + height: 22, + marginHorizontal: 15, + ...sharedStyles.textColorDescription + } +}); + +const Check = React.memo(() => ); + +export default Check; diff --git a/app/presentation/ServerItem/Check.js b/app/presentation/ServerItem/Check.js deleted file mode 100644 index 2203fd8151..0000000000 --- a/app/presentation/ServerItem/Check.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; - -import { CustomIcon } from '../../lib/Icons'; -import styles from './styles'; - -const Check = React.memo(() => ); - -export default Check; diff --git a/app/presentation/ServerItem/index.js b/app/presentation/ServerItem/index.js index 187fc5dc22..7fd4e47a7d 100644 --- a/app/presentation/ServerItem/index.js +++ b/app/presentation/ServerItem/index.js @@ -6,7 +6,7 @@ import { connect } from 'react-redux'; import Touch from '../../utils/touch'; import log from '../../utils/log'; -import Check from './Check'; +import Check from '../../containers/Check'; import styles from './styles'; diff --git a/app/presentation/ServerItem/styles.js b/app/presentation/ServerItem/styles.js index f1fdda7291..8b32b973ec 100644 --- a/app/presentation/ServerItem/styles.js +++ b/app/presentation/ServerItem/styles.js @@ -1,7 +1,4 @@ import { StyleSheet } from 'react-native'; -import { - COLOR_PRIMARY -} from '../../constants/colors'; import sharedStyles from '../../views/Styles'; @@ -34,9 +31,5 @@ export default StyleSheet.create({ fontSize: 15, ...sharedStyles.textColorDescription, ...sharedStyles.textRegular - }, - checkIcon: { - marginHorizontal: 15, - color: COLOR_PRIMARY } }); diff --git a/app/views/RoomsListView/Check.js b/app/views/RoomsListView/Check.js deleted file mode 100644 index 42685ba0a1..0000000000 --- a/app/views/RoomsListView/Check.js +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; - -import { CustomIcon } from '../../lib/Icons'; -import styles from './styles'; - -const Check = React.memo(() => ); - -export default Check; diff --git a/app/views/RoomsListView/SortDropdown.js b/app/views/RoomsListView/SortDropdown.js index ea7efaefeb..9a40c3cea9 100644 --- a/app/views/RoomsListView/SortDropdown.js +++ b/app/views/RoomsListView/SortDropdown.js @@ -12,7 +12,7 @@ import { setPreference } from '../../actions/sortPreferences'; import log from '../../utils/log'; import I18n from '../../i18n'; import { CustomIcon } from '../../lib/Icons'; -import Check from './Check'; +import Check from '../../containers/Check'; const ANIMATION_DURATION = 200; From 7a0755d7b3d0eaadb626283d7ca0594585647029 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Sat, 8 Jun 2019 14:09:49 -0300 Subject: [PATCH 18/88] :bug: Fix splashscreen on Share Extension --- ios/RocketChatRN.xcodeproj/project.pbxproj | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 53c7180839..98a225d5af 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -20,6 +20,7 @@ 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; + 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E175AEF22AC230A002E1A7B /* libSplashScreen.a */; }; 1E36219E22A1FFD90042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; 1E36219F22A1FFE50042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; @@ -133,6 +134,13 @@ remoteGlobalIDString = 83CBBA2E1A601D0E00E9B192; remoteInfo = React; }; + 1E175AEE22AC230A002E1A7B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3D7682761D8E76B80014119E; + remoteInfo = SplashScreen; + }; 1E36219622A1FFC70042F8C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; @@ -553,6 +561,7 @@ 1845C223DA364898A8400573 /* FastImage.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = FastImage.xcodeproj; path = "../node_modules/react-native-fast-image/ios/FastImage.xcodeproj"; sourceTree = ""; }; 1A34D902CC074FF1BCC7DB48 /* libimageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libimageCropPicker.a; sourceTree = ""; }; 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSafariViewManager.a; sourceTree = ""; }; + 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SplashScreen.xcodeproj; path = "../node_modules/react-native-splash-screen/ios/SplashScreen.xcodeproj"; sourceTree = ""; }; 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNKeychain.xcodeproj; path = "../node_modules/react-native-keychain/RNKeychain.xcodeproj"; sourceTree = ""; }; 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNRealmPath.xcodeproj; path = "../node_modules/react-native-realm-path/ios/RNRealmPath.xcodeproj"; sourceTree = ""; }; 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; @@ -645,6 +654,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */, 1E3621D022A2049C0042F8C5 /* libRNDeviceInfo.a in Frameworks */, 1E3621A722A202E80042F8C5 /* libRNRealmPath.a in Frameworks */, @@ -778,6 +788,14 @@ name = Products; sourceTree = ""; }; + 1E175AAF22AC230A002E1A7B /* Products */ = { + isa = PBXGroup; + children = ( + 1E175AEF22AC230A002E1A7B /* libSplashScreen.a */, + ); + name = Products; + sourceTree = ""; + }; 1E36215F22A1FFC60042F8C5 /* Products */ = { isa = PBXGroup; children = ( @@ -931,6 +949,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */, 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */, 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */, @@ -1297,6 +1316,10 @@ ProductGroup = B810DF8D203B10480010C331 /* Products */; ProjectRef = 4019A5E1911B4C61944FBCEC /* SafariViewManager.xcodeproj */; }, + { + ProductGroup = 1E175AAF22AC230A002E1A7B /* Products */; + ProjectRef = 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */; + }, ); projectRoot = ""; targets = ( @@ -1363,6 +1386,13 @@ remoteRef = 146834031AC3E56700842450 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E175AEF22AC230A002E1A7B /* libSplashScreen.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libSplashScreen.a; + remoteRef = 1E175AEE22AC230A002E1A7B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; From 4bde6757d5e60d4ae77876bc7ee4f501fb5b766d Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 10 Jun 2019 14:35:41 -0300 Subject: [PATCH 19/88] :green_apple: Fix custom icons on share extension --- ios/RocketChatRN.xcodeproj/project.pbxproj | 6 ++++++ ios/ShareRocketChatRN/Info.plist | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 98a225d5af..36a0aede9f 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -53,6 +53,8 @@ 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */; }; 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 607D61161F325B7E00F639C4 /* libRealmReact.a */; }; 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C915320F39A8000C8F5EE /* libRNFetchBlob.a */; }; + 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; }; + 1EFBE83522AECB30000175EE /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A55F1C42236D541005109A0 /* custom.ttf */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; 2C800DF680F8451599E80AF1 /* libSafariViewManager.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */; }; 38CEA0ED468E49CFABCD82FD /* libRNFirebase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A36F9982B71E4662AA8DEB77 /* libRNFirebase.a */; }; @@ -654,6 +656,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */, 1E3621D022A2049C0042F8C5 /* libRNDeviceInfo.a in Frameworks */, @@ -1774,6 +1777,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 1EFBE83522AECB30000175EE /* custom.ttf in Resources */, 1E39C99D22A0AA0200D46C42 /* MainInterface.storyboard in Resources */, 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */, ); @@ -2069,6 +2073,7 @@ "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**", "$(inherited)", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", + "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.2; @@ -2120,6 +2125,7 @@ "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**", "$(inherited)", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", + "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", ); INFOPLIST_FILE = ShareRocketChatRN/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.2; diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index 2bda16999c..baabf4efd6 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -20,6 +20,10 @@ 1.0 CFBundleVersion 1 + UIAppFonts + + custom.ttf + NSAppTransportSecurity NSAllowsArbitraryLoads From 17ec42f943cf49c95e5a7bd628fc8bedac08ed37 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 10 Jun 2019 19:25:24 -0300 Subject: [PATCH 20/88] :bug: Fix unnecessary loading statement --- app/views/ShareListView/index.js | 44 ++++++++++++++++---------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index 892ebb5893..92f8ffc685 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -26,8 +26,7 @@ const keyExtractor = item => item.rid; token: state.login.user && state.login.user.token, baseUrl: state.settings.baseUrl || state.server ? state.server.server : '', useRealName: state.settings.UI_Use_Real_Name, - server: state.server.server, - connected: state.meteor.connected + server: state.server.server })) /** @extends React.Component */ export default class ShareListView extends React.Component { @@ -44,7 +43,6 @@ export default class ShareListView extends React.Component { baseUrl: PropTypes.string.isRequired, navigation: PropTypes.object, server: PropTypes.string, - connected: PropTypes.bool, useRealName: PropTypes.bool } @@ -139,9 +137,7 @@ export default class ShareListView extends React.Component { }; renderScroll = () => { - const { connected } = this.props; - - if (!connected) { + if (!(this.data && this.data.length > 0)) { return ; } @@ -202,20 +198,24 @@ export default class ShareListView extends React.Component { renderSection = (data, header) => { if (data && data.length > 0) { return ( - this.renderSectionHeader(header)} - ItemSeparatorComponent={this.renderSeparator} - getItemLayout={getItemLayout} - enableEmptySections - removeClippedSubviews - keyboardShouldPersistTaps='always' - initialNumToRender={12} - windowSize={7} - /> + + {this.renderSectionHeader(header)} + + + + ); } return null; @@ -225,7 +225,7 @@ export default class ShareListView extends React.Component { const { servers } = this.state; const { server } = this.props; const currentServer = servers.find(serverFiltered => serverFiltered.id === server); - return ( + return currentServer ? ( {this.renderSectionHeader('Select_Server')} @@ -235,7 +235,7 @@ export default class ShareListView extends React.Component { /> - ); + ) : null; }; render() { From af94046361e95ef644e11ac9a69b91dcff21d071 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 10 Jun 2019 19:42:39 -0300 Subject: [PATCH 21/88] :art: Change function name --- app/views/ShareListView/index.js | 10 +++++----- app/views/ShareListView/styles.js | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index 92f8ffc685..d406359e5a 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -136,9 +136,9 @@ export default class ShareListView extends React.Component { }); }; - renderScroll = () => { + renderScrollView = () => { if (!(this.data && this.data.length > 0)) { - return ; + return ; } return ( @@ -148,12 +148,12 @@ export default class ShareListView extends React.Component { keyboardShouldPersistTaps='always' testID='rooms-list-view-list' > - {this.renderScrollView()} + {this.renderContent()} ); } - renderScrollView = () => { + renderContent = () => { const { discussions, channels, privateGroup, direct, livechat } = this.state; @@ -245,7 +245,7 @@ export default class ShareListView extends React.Component { forceInset={{ bottom: 'never' }} > - {this.renderScroll()} + {this.renderScrollView()} ); } diff --git a/app/views/ShareListView/styles.js b/app/views/ShareListView/styles.js index 364b747633..b486cf6999 100644 --- a/app/views/ShareListView/styles.js +++ b/app/views/ShareListView/styles.js @@ -52,5 +52,8 @@ export default StyleSheet.create({ borderBottomWidth: StyleSheet.hairlineWidth, borderColor: COLOR_SEPARATOR, marginLeft: 48 + }, + loading: { + flex: 1 } }); From 190972e176a6bf67250d89668c7526ff68a87ab8 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 10 Jun 2019 20:03:22 -0300 Subject: [PATCH 22/88] :green_heart: Fix device info lib --- ios/RocketChatRN.xcodeproj/project.pbxproj | 84 +++++++++++----------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 36a0aede9f..2750f12688 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -21,11 +21,11 @@ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E175AEF22AC230A002E1A7B /* libSplashScreen.a */; }; + 1E29034022AF191D003AC8A0 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E29033D22AF1917003AC8A0 /* libRNDeviceInfo.a */; }; 1E36219E22A1FFD90042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; 1E36219F22A1FFE50042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; 1E3621A722A202E80042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; - 1E3621D022A2049C0042F8C5 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621CD22A204950042F8C5 /* libRNDeviceInfo.a */; }; 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A770EC220BECDC7001AD51A /* libFastImage.a */; }; 1E39C99D22A0AA0200D46C42 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */; }; 1E39C9A122A0AA0200D46C42 /* ShareRocketChatRN.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; @@ -143,6 +143,20 @@ remoteGlobalIDString = 3D7682761D8E76B80014119E; remoteInfo = SplashScreen; }; + 1E29033C22AF1917003AC8A0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; + remoteInfo = RNDeviceInfo; + }; + 1E29033E22AF1917003AC8A0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; + remoteInfo = "RNDeviceInfo-tvOS"; + }; 1E36219622A1FFC70042F8C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; @@ -164,20 +178,6 @@ remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RNRealmPath; }; - 1E3621CC22A204950042F8C5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; - remoteInfo = RNDeviceInfo; - }; - 1E3621CE22A204950042F8C5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; - remoteInfo = "RNDeviceInfo-tvOS"; - }; 1E39C99F22A0AA0200D46C42 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; @@ -564,9 +564,9 @@ 1A34D902CC074FF1BCC7DB48 /* libimageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libimageCropPicker.a; sourceTree = ""; }; 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSafariViewManager.a; sourceTree = ""; }; 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SplashScreen.xcodeproj; path = "../node_modules/react-native-splash-screen/ios/SplashScreen.xcodeproj"; sourceTree = ""; }; + 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNKeychain.xcodeproj; path = "../node_modules/react-native-keychain/RNKeychain.xcodeproj"; sourceTree = ""; }; 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNRealmPath.xcodeproj; path = "../node_modules/react-native-realm-path/ios/RNRealmPath.xcodeproj"; sourceTree = ""; }; - 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareRocketChatRN.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 1E39C99C22A0AA0200D46C42 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; 1E39C99E22A0AA0200D46C42 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -656,10 +656,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1E29034022AF191D003AC8A0 /* libRNDeviceInfo.a in Frameworks */, 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */, - 1E3621D022A2049C0042F8C5 /* libRNDeviceInfo.a in Frameworks */, 1E3621A722A202E80042F8C5 /* libRNRealmPath.a in Frameworks */, 1E36219F22A1FFE50042F8C5 /* libRNKeychain.a in Frameworks */, 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */, @@ -799,28 +799,28 @@ name = Products; sourceTree = ""; }; - 1E36215F22A1FFC60042F8C5 /* Products */ = { + 1E29033822AF1917003AC8A0 /* Products */ = { isa = PBXGroup; children = ( - 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */, - 1E36219922A1FFC70042F8C5 /* libRNKeychain.a */, + 1E29033D22AF1917003AC8A0 /* libRNDeviceInfo.a */, + 1E29033F22AF1917003AC8A0 /* libRNDeviceInfo-tvOS.a */, ); name = Products; sourceTree = ""; }; - 1E3621A122A202DD0042F8C5 /* Products */ = { + 1E36215F22A1FFC60042F8C5 /* Products */ = { isa = PBXGroup; children = ( - 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */, + 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */, + 1E36219922A1FFC70042F8C5 /* libRNKeychain.a */, ); name = Products; sourceTree = ""; }; - 1E3621C822A204950042F8C5 /* Products */ = { + 1E3621A122A202DD0042F8C5 /* Products */ = { isa = PBXGroup; children = ( - 1E3621CD22A204950042F8C5 /* libRNDeviceInfo.a */, - 1E3621CF22A204950042F8C5 /* libRNDeviceInfo-tvOS.a */, + 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */, ); name = Products; sourceTree = ""; @@ -952,8 +952,8 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */, 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */, - 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */, 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */, 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */, @@ -1280,8 +1280,8 @@ ProjectRef = C21010507E5B4B37BA0E4C9D /* RNAudio.xcodeproj */; }, { - ProductGroup = 1E3621C822A204950042F8C5 /* Products */; - ProjectRef = 1E3621C722A204950042F8C5 /* RNDeviceInfo.xcodeproj */; + ProductGroup = 1E29033822AF1917003AC8A0 /* Products */; + ProjectRef = 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */; }, { ProductGroup = 7A8C912120F39A8000C8F5EE /* Products */; @@ -1396,6 +1396,20 @@ remoteRef = 1E175AEE22AC230A002E1A7B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E29033D22AF1917003AC8A0 /* libRNDeviceInfo.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNDeviceInfo.a; + remoteRef = 1E29033C22AF1917003AC8A0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1E29033F22AF1917003AC8A0 /* libRNDeviceInfo-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNDeviceInfo-tvOS.a"; + remoteRef = 1E29033E22AF1917003AC8A0 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1417,20 +1431,6 @@ remoteRef = 1E3621A422A202DE0042F8C5 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E3621CD22A204950042F8C5 /* libRNDeviceInfo.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRNDeviceInfo.a; - remoteRef = 1E3621CC22A204950042F8C5 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 1E3621CF22A204950042F8C5 /* libRNDeviceInfo-tvOS.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libRNDeviceInfo-tvOS.a"; - remoteRef = 1E3621CE22A204950042F8C5 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 1E39C9F522A0AA8700D46C42 /* libReactNativeShareExtension.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; From eb86fca3713a05135e9b44204b400ef74e47f8da Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 11 Jun 2019 13:35:21 -0300 Subject: [PATCH 23/88] :lipstick: Add disclosure indicator --- app/presentation/ServerItem/index.js | 5 +++- app/presentation/ShareItem/index.js | 2 ++ app/presentation/ShareItem/styles.js | 9 ++++--- app/views/ShareListView/index.js | 1 + ios/Podfile | 2 +- ios/Podfile.lock | 2 +- ios/Pods/Manifest.lock | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 10 ++++++-- .../Images.xcassets/Contents.json | 6 +++++ .../Images.xcassets/Icons/Contents.json | 6 +++++ .../Contents.json | 23 ++++++++++++++++++ .../disclosure_indicator-5.png | Bin 0 -> 508 bytes .../disclosure_indicator@2x.png | Bin 0 -> 550 bytes .../disclosure_indicator@3x.png | Bin 0 -> 783 bytes 14 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 ios/ShareRocketChatRN/Images.xcassets/Contents.json create mode 100644 ios/ShareRocketChatRN/Images.xcassets/Icons/Contents.json create mode 100644 ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/Contents.json create mode 100644 ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/disclosure_indicator-5.png create mode 100644 ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/disclosure_indicator@2x.png create mode 100644 ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/disclosure_indicator@3x.png diff --git a/app/presentation/ServerItem/index.js b/app/presentation/ServerItem/index.js index 7fd4e47a7d..3195a3e65e 100644 --- a/app/presentation/ServerItem/index.js +++ b/app/presentation/ServerItem/index.js @@ -9,6 +9,7 @@ import log from '../../utils/log'; import Check from '../../containers/Check'; import styles from './styles'; +import DisclosureIndicator from '../../containers/DisclosureIndicator'; @connect(state => ({ server: state.server.server @@ -19,12 +20,13 @@ export default class ServerItem extends React.Component { onPress: PropTypes.func.isRequired, item: PropTypes.object.isRequired, hasCheck: PropTypes.bool, + disclosure: PropTypes.bool, server: PropTypes.string } render() { const { - server, item, onPress, hasCheck + server, item, onPress, hasCheck, disclosure } = this.props; return ( @@ -54,6 +56,7 @@ export default class ServerItem extends React.Component { {item.id} {item.id === server && hasCheck ? : null} + {disclosure ? : null} ); diff --git a/app/presentation/ShareItem/index.js b/app/presentation/ShareItem/index.js index 2aeacefb44..b7936cede3 100644 --- a/app/presentation/ShareItem/index.js +++ b/app/presentation/ShareItem/index.js @@ -6,6 +6,7 @@ import { connect } from 'react-redux'; import Avatar from '../../containers/Avatar'; import styles, { ROW_HEIGHT } from './styles'; +import DisclosureIndicator from '../../containers/DisclosureIndicator'; export { ROW_HEIGHT }; @@ -39,6 +40,7 @@ export default class ShareItem extends React.Component { style={styles.center} > {name} + diff --git a/app/presentation/ShareItem/styles.js b/app/presentation/ShareItem/styles.js index defabdfb51..696c554b9d 100644 --- a/app/presentation/ShareItem/styles.js +++ b/app/presentation/ShareItem/styles.js @@ -9,17 +9,20 @@ export default StyleSheet.create({ width: '100%', alignItems: 'center', marginLeft: 14, - paddingRight: 28 + paddingRight: 16 }, name: { fontSize: 17, - lineHeight: 20 + lineHeight: 20, + width: '80%' }, center: { flex: 1, height: '100%', width: '100%', - justifyContent: 'center' + alignItems: 'center', + justifyContent: 'space-between', + flexDirection: 'row' }, avatar: { marginRight: 10 diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index d406359e5a..f388554330 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -232,6 +232,7 @@ export default class ShareListView extends React.Component { Navigation.navigate('SelectServerView')} item={currentServer} + disclosure /> diff --git a/ios/Podfile b/ios/Podfile index 98ab13bdb4..fd2dadc905 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -47,7 +47,7 @@ target 'RocketChatRN' do end target 'ShareRocketChatRN' do - + pod 'Firebase/Core', '~> 5.20.1' pod 'Fabric', '~> 1.9.0' pod 'Crashlytics', '~> 3.12.0' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index cd1099956d..a989782ab8 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -245,4 +245,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: f98adf896db83acfddda2f17bf015d55d15a89f2 -COCOAPODS: 1.6.2 \ No newline at end of file +COCOAPODS: 1.6.2 diff --git a/ios/Pods/Manifest.lock b/ios/Pods/Manifest.lock index cd1099956d..a989782ab8 100644 --- a/ios/Pods/Manifest.lock +++ b/ios/Pods/Manifest.lock @@ -245,4 +245,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: f98adf896db83acfddda2f17bf015d55d15a89f2 -COCOAPODS: 1.6.2 \ No newline at end of file +COCOAPODS: 1.6.2 diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 2750f12688..486ecded65 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -21,12 +21,13 @@ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E175AEF22AC230A002E1A7B /* libSplashScreen.a */; }; - 1E29034022AF191D003AC8A0 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E29033D22AF1917003AC8A0 /* libRNDeviceInfo.a */; }; 1E36219E22A1FFD90042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; 1E36219F22A1FFE50042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; 1E3621A722A202E80042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A770EC220BECDC7001AD51A /* libFastImage.a */; }; + 1E36336822B00BF600B67024 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E29033D22AF1917003AC8A0 /* libRNDeviceInfo.a */; }; + 1E36336A22B00D3B00B67024 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1E36336922B00D3B00B67024 /* Images.xcassets */; }; 1E39C99D22A0AA0200D46C42 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */; }; 1E39C9A122A0AA0200D46C42 /* ShareRocketChatRN.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 1E39C9DD22A0AA2A00D46C42 /* ShareRocketChatRN.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */; }; @@ -567,6 +568,8 @@ 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNKeychain.xcodeproj; path = "../node_modules/react-native-keychain/RNKeychain.xcodeproj"; sourceTree = ""; }; 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNRealmPath.xcodeproj; path = "../node_modules/react-native-realm-path/ios/RNRealmPath.xcodeproj"; sourceTree = ""; }; + 1E36336622B00BB600B67024 /* libPods-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libPods-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E36336922B00D3B00B67024 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareRocketChatRN.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 1E39C99C22A0AA0200D46C42 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; 1E39C99E22A0AA0200D46C42 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -656,7 +659,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1E29034022AF191D003AC8A0 /* libRNDeviceInfo.a in Frameworks */, + 1E36336822B00BF600B67024 /* libRNDeviceInfo.a in Frameworks */, 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */, @@ -833,6 +836,7 @@ 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */, 1E39C99E22A0AA0200D46C42 /* Info.plist */, 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */, + 1E36336922B00D3B00B67024 /* Images.xcassets */, ); path = ShareRocketChatRN; sourceTree = ""; @@ -1095,6 +1099,7 @@ BB4B591B5FC44CD9986DB2A6 /* Frameworks */ = { isa = PBXGroup; children = ( + 1E36336622B00BB600B67024 /* libPods-RocketChatRN.a */, 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */, B37C79D9BD0742CE936B6982 /* libc++.tbd */, 06BB44DD4855498082A744AD /* libz.tbd */, @@ -1778,6 +1783,7 @@ buildActionMask = 2147483647; files = ( 1EFBE83522AECB30000175EE /* custom.ttf in Resources */, + 1E36336A22B00D3B00B67024 /* Images.xcassets in Resources */, 1E39C99D22A0AA0200D46C42 /* MainInterface.storyboard in Resources */, 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */, ); diff --git a/ios/ShareRocketChatRN/Images.xcassets/Contents.json b/ios/ShareRocketChatRN/Images.xcassets/Contents.json new file mode 100644 index 0000000000..da4a164c91 --- /dev/null +++ b/ios/ShareRocketChatRN/Images.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/ShareRocketChatRN/Images.xcassets/Icons/Contents.json b/ios/ShareRocketChatRN/Images.xcassets/Icons/Contents.json new file mode 100644 index 0000000000..da4a164c91 --- /dev/null +++ b/ios/ShareRocketChatRN/Images.xcassets/Icons/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/Contents.json b/ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/Contents.json new file mode 100644 index 0000000000..2fd4972f99 --- /dev/null +++ b/ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "disclosure_indicator-5.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "disclosure_indicator@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "disclosure_indicator@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/disclosure_indicator-5.png b/ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/disclosure_indicator-5.png new file mode 100644 index 0000000000000000000000000000000000000000..9f6fd1dabf837390558db5bbd70a15f4ac6aecae GIT binary patch literal 508 zcmVY%d$)iSFp*h znE+0|>yk)Xt+;)ZW$CMHt}QOIIc>g9r&FtcLx^@}&G)dXsx4cbtIrwC%r(bys;@H= z+WVZ&Zgup|`STa@O6+CX6Ej_)h(h~$F}|8F==$CZjH12n!3{@r4O<$z%tzyM*uKYE zTxMa6I3GO^(KSZTksMA0aXw`9rU}KY;km z7@NIR$51j94JZ^2rMp0Jkzg=(HIxiRL)lO`ly2+J<_iLAhY@x)b~Y3ZW&8eGt=Vp~ z$cG&*LVd(xcl&NF0@?kEP)SU4egGf!8QL!{xFB zo@sJ`5vfO9<7hfC&9mt_W58l!MRfBL&Mu2%TzzSph=@F0#i0TdV&R}<8sssI@r)v@xD!cCl!Pr!I&2q_~Qz!0GI#$;g4a_2mk;807*qoM6N<$f+F1g6951J literal 0 HcmV?d00001 diff --git a/ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/disclosure_indicator@3x.png b/ios/ShareRocketChatRN/Images.xcassets/Icons/disclosure_indicator.imageset/disclosure_indicator@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..3c86346483f7a1b03e9e5d0aa98f3d6a6025e04e GIT binary patch literal 783 zcmV+q1MvKbP)zfTlF6vy}Ni6PV&kyvWu#XIgeZ2c27Ar@Lt5dI9X0R9Fo zBo;On#zg-FTUl<|BWEF&1|?Dxe%(Iiooq6@HxzKZ_coW==4Rd{JMZ(I+3(K2-5~IX zSHLUa74Qmp1-t@Yfl*LktJ{4L$3GsHi6!JpCW@0c>G9d_8J_-(;+=Ph2wY=b<-9CO z(5w=uod^W5-fGrX?3hNIWrow+h(#C-aCx(xye!70`z*k-)#@(*_&5jy?>D!*PX^<1 z5fD64b?l3slS%!~^0n_r0;?5_N@_asRv)seV)Bh_W{|`rxeMx6Yo7)t^ z)SU%w=N1Dd@G>~JC@?{5JGVG6L2Ej-wQC;@A*{7#YHSq{6_=KBWY<)P zFKJ0fRtJ`LWL01dM^**aaAX&-h)ZiZvJ05qr8OPd135 Date: Mon, 17 Jun 2019 14:46:22 -0300 Subject: [PATCH 24/88] :ok_hand: Fix code reviews --- android/app/build.gradle | 2 +- app/containers/Check.js | 2 -- app/i18n/locales/en.js | 2 +- app/i18n/locales/pt-PT.js | 1 + app/presentation/ServerItem/index.js | 1 - app/presentation/ShareItem/index.js | 5 +++-- app/presentation/ShareItem/styles.js | 6 ++++-- app/views/ShareListView/index.js | 5 ----- app/views/ShareListView/styles.js | 5 ++--- app/views/ShareView/index.js | 8 ++++++-- app/views/WithoutServersView.js | 2 +- 11 files changed, 19 insertions(+), 20 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 334c9470f1..48b7de6e73 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -171,8 +171,8 @@ android { } dependencies { - implementation project(':react-native-keychain') implementation "org.webkit:android-jsc:r241213" + implementation project(':react-native-keychain') implementation project(':react-native-firebase') implementation project(':react-native-webview') implementation project(':react-native-orientation-locker') diff --git a/app/containers/Check.js b/app/containers/Check.js index 30c9cbd31c..8934bdd698 100644 --- a/app/containers/Check.js +++ b/app/containers/Check.js @@ -6,8 +6,6 @@ import sharedStyles from '../views/Styles'; const styles = StyleSheet.create({ icon: { - width: 22, - height: 22, marginHorizontal: 15, ...sharedStyles.textColorDescription } diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js index ba9c5b845e..ee8c343657 100644 --- a/app/i18n/locales/en.js +++ b/app/i18n/locales/en.js @@ -382,7 +382,7 @@ export default { Welcome: 'Welcome', Welcome_to_RocketChat: 'Welcome to Rocket.Chat', Whats_your_2fa: 'What\'s your 2FA code?', - Without_Servers: 'Without Servers', + Without_Servers: 'Without Servers!', Yes_action_it: 'Yes, {{action}} it!', Yesterday: 'Yesterday', You_are_in_preview_mode: 'You are in preview mode', diff --git a/app/i18n/locales/pt-PT.js b/app/i18n/locales/pt-PT.js index c816756948..fd61b0b1f5 100644 --- a/app/i18n/locales/pt-PT.js +++ b/app/i18n/locales/pt-PT.js @@ -346,6 +346,7 @@ export default { Welcome: 'Bem vindo(a)', Welcome_to_RocketChat: 'Bem vindo(a) ao Rocket.Chat', Whats_your_2fa: 'Qual é o seu código 2FA?', + Without_Servers: 'Sem servidores!', Yes_action_it: 'Sim, {{action}}!', Yesterday: 'Ontem', You_are_in_preview_mode: 'Você está no modo de pré-visualização', diff --git a/app/presentation/ServerItem/index.js b/app/presentation/ServerItem/index.js index 3195a3e65e..4d2d9c3713 100644 --- a/app/presentation/ServerItem/index.js +++ b/app/presentation/ServerItem/index.js @@ -7,7 +7,6 @@ import { connect } from 'react-redux'; import Touch from '../../utils/touch'; import log from '../../utils/log'; import Check from '../../containers/Check'; - import styles from './styles'; import DisclosureIndicator from '../../containers/DisclosureIndicator'; diff --git a/app/presentation/ShareItem/index.js b/app/presentation/ShareItem/index.js index b7936cede3..c3293a30e2 100644 --- a/app/presentation/ShareItem/index.js +++ b/app/presentation/ShareItem/index.js @@ -12,16 +12,17 @@ export { ROW_HEIGHT }; @connect(state => ({ userId: state.login.user && state.login.user.id, - token: state.login.user && state.login.user.token + token: state.login.user && state.login.user.token, + baseUrl: state.settings.baseUrl || state.server ? state.server.server : '' })) /** @extends React.Component */ export default class ShareItem extends React.Component { static propTypes = { - baseUrl: PropTypes.string.isRequired, type: PropTypes.string.isRequired, name: PropTypes.string.isRequired, token: PropTypes.string, userId: PropTypes.string, + baseUrl: PropTypes.string, onPress: PropTypes.func } diff --git a/app/presentation/ShareItem/styles.js b/app/presentation/ShareItem/styles.js index 696c554b9d..047440ae85 100644 --- a/app/presentation/ShareItem/styles.js +++ b/app/presentation/ShareItem/styles.js @@ -1,6 +1,7 @@ -import { StyleSheet, PixelRatio } from 'react-native'; +import { StyleSheet } from 'react-native'; +import sharedStyles from '../../views/Styles'; -export const ROW_HEIGHT = 56 * PixelRatio.getFontScale(); +export const ROW_HEIGHT = 56; export default StyleSheet.create({ content: { @@ -14,6 +15,7 @@ export default StyleSheet.create({ name: { fontSize: 17, lineHeight: 20, + ...sharedStyles.textRegular, width: '80%' }, center: { diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index f388554330..8dc8c6620b 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -24,7 +24,6 @@ const keyExtractor = item => item.rid; @connect(state => ({ userId: state.login.user && state.login.user.id, token: state.login.user && state.login.user.token, - baseUrl: state.settings.baseUrl || state.server ? state.server.server : '', useRealName: state.settings.UI_Use_Real_Name, server: state.server.server })) @@ -40,7 +39,6 @@ export default class ShareListView extends React.Component { }) static propTypes = { - baseUrl: PropTypes.string.isRequired, navigation: PropTypes.object, server: PropTypes.string, useRealName: PropTypes.bool @@ -144,7 +142,6 @@ export default class ShareListView extends React.Component { return ( @@ -179,11 +176,9 @@ export default class ShareListView extends React.Component { ); renderItem = ({ item }) => { - const { baseUrl } = this.props; if (item.isValid && item.isValid()) { return ( this.shareMessage(item)} diff --git a/app/views/ShareListView/styles.js b/app/views/ShareListView/styles.js index b486cf6999..adec0475b1 100644 --- a/app/views/ShareListView/styles.js +++ b/app/views/ShareListView/styles.js @@ -1,5 +1,6 @@ import { StyleSheet } from 'react-native'; import { isIOS } from '../../utils/deviceInfo'; +import sharedStyles from '../Styles'; import { COLOR_BACKGROUND_CONTAINER, COLOR_WHITE, COLOR_TEXT, HEADER_BACK, COLOR_SEPARATOR @@ -22,9 +23,7 @@ export default StyleSheet.create({ backgroundColor: COLOR_WHITE }, bordered: { - borderBottomWidth: StyleSheet.hairlineWidth, - borderTopWidth: StyleSheet.hairlineWidth, - borderColor: COLOR_SEPARATOR + ...sharedStyles.separatorVertical }, scroll: { width: '100%' diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 219660b8c5..059d2c94bb 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -11,6 +11,7 @@ import { } from '../../constants/colors'; import I18n from '../../i18n'; import RocketChat from '../../lib/rocketchat'; +import log from '../../utils/log'; import styles from './styles'; export default class ShareView extends React.Component { @@ -50,14 +51,17 @@ export default class ShareView extends React.Component { const name = navigation.getParam('name', ''); const text = navigation.getParam('text', ''); this.setState({ rid, text, name }); - navigation.setParams({ sendMessage: this._sendMessage }); } _sendMessage = () => { const { text, rid } = this.state; if (text !== '' && rid !== '') { - RocketChat.sendMessage(rid, text, undefined).then(ShareExtension.close); + try { + RocketChat.sendMessage(rid, text, undefined).then(ShareExtension.close); + } catch (error) { + log('err_share_extension_send_message', error); + } } }; diff --git a/app/views/WithoutServersView.js b/app/views/WithoutServersView.js index c87ef971b0..43a4f79dcc 100644 --- a/app/views/WithoutServersView.js +++ b/app/views/WithoutServersView.js @@ -44,7 +44,7 @@ export default class WithoutServerView extends React.Component { return ( - {I18n.t('Without_Server')} + {I18n.t('Without_Servers')} {I18n.t('You_need_to_access_at_least_one_RocketChat_server_to_share_something')} From 9bebe8b54690d26860238bbfdd72f1f6249300a6 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 17 Jun 2019 21:05:31 -0300 Subject: [PATCH 25/88] :fire: Change keychain to user defaults --- android/app/build.gradle | 1 - .../rocket/reactnative/MainApplication.java | 2 - android/settings.gradle | 2 - app/constants/userDefaults.js | 3 ++ app/lib/realm.js | 26 ++++++---- app/lib/rocketchat.js | 28 +++++++++-- app/sagas/deepLinking.js | 6 +-- app/sagas/init.js | 20 +++++--- app/sagas/login.js | 18 +++++-- app/sagas/selectServer.js | 24 ++++++--- app/views/RoomsListView/ServerDropdown.js | 50 ++++++++++++++----- app/views/SidebarView/index.js | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 34 ++++++++++++- ios/RocketChatRN/RocketChatRN.entitlements | 6 +-- .../ShareRocketChatRN.entitlements | 6 +-- package.json | 3 +- yarn.lock | 5 ++ 17 files changed, 170 insertions(+), 66 deletions(-) create mode 100644 app/constants/userDefaults.js diff --git a/android/app/build.gradle b/android/app/build.gradle index 48b7de6e73..082a972752 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -172,7 +172,6 @@ android { dependencies { implementation "org.webkit:android-jsc:r241213" - implementation project(':react-native-keychain') implementation project(':react-native-firebase') implementation project(':react-native-webview') implementation project(':react-native-orientation-locker') 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 32381379f2..871acbb69f 100644 --- a/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java +++ b/android/app/src/main/java/chat/rocket/reactnative/MainApplication.java @@ -3,7 +3,6 @@ import android.app.Application; import com.facebook.react.ReactApplication; -import com.oblador.keychain.KeychainPackage; import io.invertase.firebase.RNFirebasePackage; import io.invertase.firebase.fabric.crashlytics.RNFirebaseCrashlyticsPackage; import io.invertase.firebase.analytics.RNFirebaseAnalyticsPackage; @@ -55,7 +54,6 @@ public boolean getUseDeveloperSupport() { protected List getPackages() { return Arrays.asList( new MainReactPackage(), - new KeychainPackage(), new RNFirebasePackage(), new RNFirebaseCrashlyticsPackage(), new RNFirebaseAnalyticsPackage(), diff --git a/android/settings.gradle b/android/settings.gradle index abbb4b975e..e45eccbf70 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,6 +1,4 @@ rootProject.name = 'RocketChatRN' -include ':react-native-keychain' -project(':react-native-keychain').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-keychain/android') include ':react-native-firebase' project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android') include ':react-native-realm-path' diff --git a/app/constants/userDefaults.js b/app/constants/userDefaults.js new file mode 100644 index 0000000000..0d510b8f56 --- /dev/null +++ b/app/constants/userDefaults.js @@ -0,0 +1,3 @@ +export const SERVERS = 'kServers'; +export const TOKEN = 'kAuthToken'; +export const SERVER_URL = 'kAuthServerURL'; diff --git a/app/lib/realm.js b/app/lib/realm.js index 5b827070bb..909fdb40be 100644 --- a/app/lib/realm.js +++ b/app/lib/realm.js @@ -5,13 +5,26 @@ import RNRealmPath from 'react-native-realm-path'; // Realm.clearTestState(); // AsyncStorage.clear(); +const userSchema = { + name: 'user', + primaryKey: 'id', + properties: { + id: 'string', + token: { type: 'string', optional: true }, + username: { type: 'string', optional: true }, + name: { type: 'string', optional: true }, + language: { type: 'string', optional: true }, + status: { type: 'string', optional: true }, + roles: { type: 'string[]', optional: true } + } +}; + const serversSchema = { name: 'servers', primaryKey: 'id', properties: { id: 'string', name: { type: 'string', optional: true }, - currentServer: { type: 'bool', optional: true }, iconURL: { type: 'string', optional: true }, roomsUpdatedAt: { type: 'date', optional: true }, version: 'string?' @@ -372,9 +385,10 @@ class DB { serversDB: new Realm({ path: `${ RNRealmPath.realmPath }default.realm`, schema: [ + userSchema, serversSchema ], - schemaVersion: 9, + schemaVersion: 8, migration: (oldRealm, newRealm) => { if (oldRealm.schemaVersion >= 1 && newRealm.schemaVersion <= 8) { const newServers = newRealm.objects('servers'); @@ -384,14 +398,6 @@ class DB { newServers[i].roomsUpdatedAt = null; } } - if (newRealm.schemaVersion < 9) { - const newServers = newRealm.objects('servers'); - - // eslint-disable-next-line no-plusplus - for (let i = 0; i < newServers.length; i++) { - newServers[i].currentServer = null; - } - } } }), inMemoryDB: new Realm({ diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 21ad4b1e4a..73f58e9f23 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -1,6 +1,7 @@ import { AsyncStorage, InteractionManager } from 'react-native'; import semver from 'semver'; import { Rocketchat as RocketchatClient } from '@rocket.chat/sdk'; +import RNUserDefaults from 'rn-user-defaults'; import reduxStore from './createStore'; import defaultSettings from '../constants/settings'; @@ -36,6 +37,7 @@ import sendMessage, { getMessage, sendMessageCall } from './methods/sendMessage' import { sendFileMessage, cancelUpload, isUploadActive } from './methods/sendFileMessage'; import { getDeviceToken } from '../notifications/push'; +import { SERVERS, SERVER_URL } from '../constants/userDefaults'; const TOKEN_KEY = 'reactnativemeteor_usertoken'; const SORT_PREFS_KEY = 'RC_SORT_PREFS_KEY'; @@ -58,9 +60,9 @@ const RocketChat = { }, async getUserToken() { try { - return await AsyncStorage.getItem(TOKEN_KEY); + return await RNUserDefaults.get(TOKEN_KEY); } catch (error) { - console.warn(`AsyncStorage error: ${ error.message }`); + console.warn(`RNUserDefaults error: ${ error.message }`); } }, async getServerInfo(server) { @@ -321,10 +323,26 @@ const RocketChat = { } this.sdk = null; + try { + const servers = await RNUserDefaults.objectForKey(SERVERS); + await RNUserDefaults.setObjectForKey(SERVERS, servers && servers.filter(srv => srv[SERVER_URL] !== server)); + } catch (error) { + console.log('logout_rn_user_defaults', error); + } + + const { serversDB } = database.databases; + + const userId = await RNUserDefaults.get(`${ TOKEN_KEY }-${ server }`); + + serversDB.write(() => { + const user = serversDB.objectForPrimaryKey('user', userId); + serversDB.delete(user); + }); + Promise.all([ - AsyncStorage.removeItem('currentServer'), - AsyncStorage.removeItem(TOKEN_KEY), - AsyncStorage.removeItem(`${ TOKEN_KEY }-${ server }`) + RNUserDefaults.clear('currentServer'), + RNUserDefaults.clear(TOKEN_KEY), + RNUserDefaults.clear(`${ TOKEN_KEY }-${ server }`) ]).catch(error => console.log(error)); try { diff --git a/app/sagas/deepLinking.js b/app/sagas/deepLinking.js index de7bed5948..04eccfca94 100644 --- a/app/sagas/deepLinking.js +++ b/app/sagas/deepLinking.js @@ -1,8 +1,8 @@ -import { AsyncStorage } from 'react-native'; import { delay } from 'redux-saga'; import { takeLatest, take, select, put, all } from 'redux-saga/effects'; +import RNUserDefaults from 'rn-user-defaults'; import Navigation from '../lib/Navigation'; import * as types from '../actions/actionsTypes'; @@ -43,8 +43,8 @@ const handleOpen = function* handleOpen({ params }) { } const [server, user] = yield all([ - AsyncStorage.getItem('currentServer'), - AsyncStorage.getItem(`${ RocketChat.TOKEN_KEY }-${ host }`) + RNUserDefaults.get('currentServer'), + RNUserDefaults.get(`${ RocketChat.TOKEN_KEY }-${ host }`) ]); // TODO: needs better test diff --git a/app/sagas/init.js b/app/sagas/init.js index b46bbcccb8..c1f952f41c 100644 --- a/app/sagas/init.js +++ b/app/sagas/init.js @@ -1,6 +1,6 @@ -import { put, takeLatest } from 'redux-saga/effects'; +import { put, takeLatest, all } from 'redux-saga/effects'; import SplashScreen from 'react-native-splash-screen'; -import * as Keychain from 'react-native-keychain'; +import RNUserDefaults from 'rn-user-defaults'; import * as actions from '../actions'; import { selectServerRequest } from '../actions/server'; @@ -14,18 +14,24 @@ import database from '../lib/realm'; const restore = function* restore() { try { - const { serversDB } = database.databases; - const currentServer = yield serversDB.objects('servers').filtered('currentServer = true'); - const { id: server = null } = currentServer.length && currentServer[0]; - const { password: token } = server ? yield Keychain.getInternetCredentials(server, { accessGroup: 'group.chat.rocket.reactnative', service: 'chat.rocket.reactnative' }) : { password: null }; - const sortPreferences = yield RocketChat.getSortPreferences(); + yield RNUserDefaults.setName('group.ios.chat.rocket'); + + const { token, server } = yield all({ + token: RNUserDefaults.get(RocketChat.TOKEN_KEY), + server: RNUserDefaults.get('currentServer') + }); + const sortPreferences = yield RocketChat.getSortPreferences(); yield put(setAllPreferences(sortPreferences)); const useMarkdown = yield RocketChat.getUseMarkdown(); yield put(toggleMarkdown(useMarkdown)); if (!token || !server) { + yield all([ + RNUserDefaults.clear(RocketChat.TOKEN_KEY), + RNUserDefaults.clear('currentServer') + ]); yield put(actions.appStart('outside')); } else if (server) { const serverObj = database.databases.serversDB.objectForPrimaryKey('servers', server); diff --git a/app/sagas/login.js b/app/sagas/login.js index 66b4183adb..369f636ff8 100644 --- a/app/sagas/login.js +++ b/app/sagas/login.js @@ -1,7 +1,7 @@ -import { AsyncStorage } from 'react-native'; import { put, call, takeLatest, select, take, fork, cancel } from 'redux-saga/effects'; +import RNUserDefaults from 'rn-user-defaults'; import * as types from '../actions/actionsTypes'; import { appStart } from '../actions'; @@ -60,7 +60,7 @@ const fetchUserPresence = function* fetchUserPresence() { const handleLoginSuccess = function* handleLoginSuccess({ user }) { try { const adding = yield select(state => state.server.adding); - yield AsyncStorage.setItem(RocketChat.TOKEN_KEY, user.token); + yield RNUserDefaults.set(RocketChat.TOKEN_KEY, user.token); const server = yield select(getServer); yield put(roomsRequest()); @@ -72,7 +72,17 @@ const handleLoginSuccess = function* handleLoginSuccess({ user }) { yield fork(fetchUserPresence); I18n.locale = user.language; - yield AsyncStorage.setItem(`${ RocketChat.TOKEN_KEY }-${ server }`, JSON.stringify(user)); + + const { serversDB } = database.databases; + serversDB.write(() => { + try { + serversDB.create('user', user, true); + } catch (e) { + log('err_set_user_token', e); + } + }); + + yield RNUserDefaults.set(`${ RocketChat.TOKEN_KEY }-${ server }`, user.id); yield put(setUser(user)); EventEmitter.emit('connected'); @@ -105,7 +115,7 @@ const handleLogout = function* handleLogout() { // see if there's other logged in servers and selects first one if (servers.length > 0) { const newServer = servers[0].id; - const token = yield AsyncStorage.getItem(`${ RocketChat.TOKEN_KEY }-${ newServer }`); + const token = yield RNUserDefaults.get(`${ RocketChat.TOKEN_KEY }-${ newServer }`); if (token) { return yield put(selectServerRequest(newServer)); } diff --git a/app/sagas/selectServer.js b/app/sagas/selectServer.js index b6f1efec53..f6793f998d 100644 --- a/app/sagas/selectServer.js +++ b/app/sagas/selectServer.js @@ -1,7 +1,8 @@ import { put, take, takeLatest, fork, cancel, race } from 'redux-saga/effects'; -import { AsyncStorage, Alert } from 'react-native'; +import { Alert } from 'react-native'; +import RNUserDefaults from 'rn-user-defaults'; import Navigation from '../lib/Navigation'; import { SERVER } from '../actions/actionsTypes'; @@ -14,6 +15,7 @@ import RocketChat from '../lib/rocketchat'; import database from '../lib/realm'; import log from '../utils/log'; import I18n from '../i18n'; +import { SERVERS, TOKEN, SERVER_URL } from '../constants/userDefaults'; const getServerInfo = function* getServerInfo({ server, raiseError = true }) { try { @@ -38,13 +40,21 @@ const getServerInfo = function* getServerInfo({ server, raiseError = true }) { const handleSelectServer = function* handleSelectServer({ server, version, fetchVersion }) { try { - yield AsyncStorage.setItem('currentServer', server); - const userStringified = yield AsyncStorage.getItem(`${ RocketChat.TOKEN_KEY }-${ server }`); + const { serversDB } = database.databases; - if (userStringified) { - const user = JSON.parse(userStringified); - yield RocketChat.connect({ server, user }); - yield put(setUser(user)); + yield RNUserDefaults.set('currentServer', server); + const userId = yield RNUserDefaults.get(`${ RocketChat.TOKEN_KEY }-${ server }`); + const user = userId && serversDB.objectForPrimaryKey('user', userId); + + const servers = yield RNUserDefaults.objectForKey(SERVERS); + const userCredentials = servers && servers.find(srv => srv[SERVER_URL] === server); + const userLogin = userCredentials && { + token: userCredentials[TOKEN] + }; + + if (user || userLogin) { + yield RocketChat.connect({ server, user: user || userLogin }); + yield put(setUser(user || userLogin)); yield put(actions.appStart('inside')); } else { yield RocketChat.connect({ server }); diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index 6beaeed26f..60e161d08a 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -1,21 +1,23 @@ import React, { Component } from 'react'; import { - View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList + View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList, Image } from 'react-native'; -import * as Keychain from 'react-native-keychain'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; import equal from 'deep-equal'; import { withNavigation } from 'react-navigation'; +import RNUserDefaults from 'rn-user-defaults'; import { toggleServerDropdown as toggleServerDropdownAction } from '../../actions/rooms'; import { selectServerRequest as selectServerRequestAction } from '../../actions/server'; import { appStart as appStartAction } from '../../actions'; import styles from './styles'; import database, { safeAddListener } from '../../lib/realm'; +import Touch from '../../utils/touch'; +import RocketChat from '../../lib/rocketchat'; import I18n from '../../i18n'; import EventEmitter from '../../utils/events'; -import ServerItem from '../../presentation/ServerItem'; +import Check from '../../containers/Check'; const ROW_HEIGHT = 68; const ANIMATION_DURATION = 200; @@ -123,8 +125,8 @@ class ServerDropdown extends Component { this.close(); if (currentServer !== server) { - const { password: token } = await Keychain.getInternetCredentials(server, { accessGroup: 'group.chat.rocket.reactnative', service: 'chat.rocket.reactnative' }); - if (!token) { + const userId = await RNUserDefaults.get(`${ RocketChat.TOKEN_KEY }-${ server }`); + if (!userId) { appStart(); this.newServerTimeout = setTimeout(() => { EventEmitter.emit('NewServer', { server }); @@ -137,13 +139,37 @@ class ServerDropdown extends Component { renderSeparator = () => ; - renderServer = ({ item }) => ( - this.select(item.id)} - item={item} - hasCheck - /> - ); + renderServer = ({ item }) => { + const { server } = this.props; + + return ( + this.select(item.id)} style={styles.serverItem} testID={`rooms-list-header-server-${ item.id }`}> + + {item.iconURL + ? ( + console.warn('error loading serverIcon')} + /> + ) + : ( + + ) + } + + {item.name || item.id} + {item.id} + + {item.id === server ? : null} + + + ); + } render() { const { servers } = this.state; diff --git a/app/views/SidebarView/index.js b/app/views/SidebarView/index.js index 49a0fa9e72..2249e8ad5d 100644 --- a/app/views/SidebarView/index.js +++ b/app/views/SidebarView/index.js @@ -152,7 +152,7 @@ export default class Sidebar extends Component { const permissionsFiltered = database.objects('permissions') .filter(permission => permissions.includes(permission._id)); return permissionsFiltered.reduce((result, permission) => ( - result || permission.roles.some(r => roles.includes(r))), + result || permission.roles.some(r => roles.indexOf(r) !== -1)), false); } return false; diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 486ecded65..61841ce5b6 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -54,6 +54,8 @@ 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */; }; 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 607D61161F325B7E00F639C4 /* libRealmReact.a */; }; 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C915320F39A8000C8F5EE /* libRNFetchBlob.a */; }; + 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; + 1E81DEBC22B85A9400072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; }; 1EFBE83522AECB30000175EE /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A55F1C42236D541005109A0 /* custom.ttf */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; @@ -193,6 +195,13 @@ remoteGlobalIDString = 41B5DE301D0B505800949BD5; remoteInfo = ReactNativeShareExtension; }; + 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RNUserDefaults; + }; 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; @@ -576,6 +585,7 @@ 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareRocketChatRN.m; sourceTree = ""; }; 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/react-native-share-extension/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; + 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNUserDefaults.xcodeproj; path = "../node_modules/rn-user-defaults/ios/RNUserDefaults.xcodeproj"; sourceTree = ""; }; 1EA14C3022A16D7B00070029 /* ShareRocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareRocketChatRN.entitlements; sourceTree = ""; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; @@ -621,6 +631,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 1E81DEBC22B85A9400072BF7 /* libRNUserDefaults.a in Frameworks */, 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */, 1E36219E22A1FFD90042F8C5 /* libRNKeychain.a in Frameworks */, 7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */, @@ -660,6 +671,7 @@ buildActionMask = 2147483647; files = ( 1E36336822B00BF600B67024 /* libRNDeviceInfo.a in Frameworks */, + 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */, 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */, @@ -849,6 +861,14 @@ name = Products; sourceTree = ""; }; + 1E81DE7922B85A8C00072BF7 /* Products */ = { + isa = PBXGroup; + children = ( + 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */, + ); + name = Products; + sourceTree = ""; + }; 22CA7F59107E0C79C2506C7C /* Pods */ = { isa = PBXGroup; children = ( @@ -956,6 +976,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */, 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */, 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */, 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, @@ -1189,7 +1210,7 @@ enabled = 1; }; com.apple.Keychain = { - enabled = 1; + enabled = 0; }; }; }; @@ -1316,6 +1337,10 @@ ProductGroup = 1E3621A122A202DD0042F8C5 /* Products */; ProjectRef = 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */; }, + { + ProductGroup = 1E81DE7922B85A8C00072BF7 /* Products */; + ProjectRef = 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */; + }, { ProductGroup = B8E79A8A1F3CCC6C005B464F /* Products */; ProjectRef = 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */; @@ -1443,6 +1468,13 @@ remoteRef = 1E39C9F422A0AA8700D46C42 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNUserDefaults.a; + remoteRef = 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; diff --git a/ios/RocketChatRN/RocketChatRN.entitlements b/ios/RocketChatRN/RocketChatRN.entitlements index 889f4cfd6a..dce5d2deca 100644 --- a/ios/RocketChatRN/RocketChatRN.entitlements +++ b/ios/RocketChatRN/RocketChatRN.entitlements @@ -10,11 +10,7 @@ com.apple.security.application-groups - group.chat.rocket.reactnative - - keychain-access-groups - - $(AppIdentifierPrefix)chat.rocket.reactnative + group.ios.chat.rocket diff --git a/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements b/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements index 8760f94cbd..f48f06fbc6 100644 --- a/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements +++ b/ios/ShareRocketChatRN/ShareRocketChatRN.entitlements @@ -4,11 +4,7 @@ com.apple.security.application-groups - group.chat.rocket.reactnative - - keychain-access-groups - - $(AppIdentifierPrefix)chat.rocket.reactnative + group.ios.chat.rocket diff --git a/package.json b/package.json index 747940daa2..2302394335 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "react-native-orientation-locker": "^1.1.5", "react-native-picker-select": "^5.2.3", "react-native-platform-touchable": "^1.1.1", - "react-native-realm-path": "^1.2.7", + "react-native-realm-path": "^1.2.8", "react-native-responsive-ui": "^1.1.1", "react-native-safari-view": "^2.1.0", "react-native-screens": "^1.0.0-alpha.22", @@ -80,6 +80,7 @@ "redux-saga": "^0.16.2", "remove-markdown": "^0.3.0", "rn-fetch-blob": "^0.10.15", + "rn-user-defaults": "^1.3.5", "semver": "6.0.0", "snyk": "^1.156.0", "strip-ansi": "5.2.0" diff --git a/yarn.lock b/yarn.lock index fe91a2b44f..18c78c2f28 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12477,6 +12477,11 @@ rn-fetch-blob@^0.10.15: base-64 "0.1.0" glob "7.0.6" +rn-user-defaults@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/rn-user-defaults/-/rn-user-defaults-1.3.5.tgz#8a93325e3fbbc47b1abd4147dc39b25eec8a45ab" + integrity sha512-mqB57aQBb88QK49revJeJGMQXkPl2qtLeF4mINa7XTVCruAruNkm5wgTKLyS5aNLWdd3XIjkkAUSgH6o6FvIVQ== + rsvp@^3.3.3: version "3.6.2" resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-3.6.2.tgz#2e96491599a96cde1b515d5674a8f7a91452926a" From 89e12929602f502bfeace1bac35a988a3136cfd8 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 17 Jun 2019 21:29:06 -0300 Subject: [PATCH 26/88] :ok_hand: Fix code review --- app/share.js | 30 ++++++++++++------------------ app/views/ShareView/index.js | 14 +++++++------- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/app/share.js b/app/share.js index a05e44e7dc..1b715038da 100644 --- a/app/share.js +++ b/app/share.js @@ -12,25 +12,19 @@ import SelectServerView from './views/SelectServerView'; import AuthLoadingView from './views/AuthLoadingView'; import WithoutServersView from './views/WithoutServersView'; -const InsideNavigator = createStackNavigator( - { - ShareListView, - ShareView, - SelectServerView - }, - { - initialRouteName: 'ShareListView' - } -); +const InsideNavigator = createStackNavigator({ + ShareListView, + ShareView, + SelectServerView +}, { + initialRouteName: 'ShareListView' +}); -const OutsideNavigator = createStackNavigator( - { - WithoutServersView - }, - { - initialRouteName: 'WithoutServersView' - } -); +const OutsideNavigator = createStackNavigator({ + WithoutServersView +}, { + initialRouteName: 'WithoutServersView' +}); const AppContainer = createAppContainer(createSwitchNavigator( { diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 059d2c94bb..05ffff7592 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -38,19 +38,19 @@ export default class ShareView extends React.Component { constructor(props) { super(props); + const { navigation } = this.props; + const rid = navigation.getParam('rid', ''); + const name = navigation.getParam('name', ''); + const text = navigation.getParam('text', ''); this.state = { - rid: '', - text: '', - name: '' + rid, + text, + name }; } componentWillMount() { const { navigation } = this.props; - const rid = navigation.getParam('rid', ''); - const name = navigation.getParam('name', ''); - const text = navigation.getParam('text', ''); - this.setState({ rid, text, name }); navigation.setParams({ sendMessage: this._sendMessage }); } From 85815d0f1221559705fce55de8d71335ceb55d48 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 17 Jun 2019 21:30:40 -0300 Subject: [PATCH 27/88] :green_heart: Try to fix device-info --- ios/RocketChatRN.xcodeproj/project.pbxproj | 86 +++++++++++----------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 61841ce5b6..58b859ff59 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -26,7 +26,6 @@ 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; 1E3621A722A202E80042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A770EC220BECDC7001AD51A /* libFastImage.a */; }; - 1E36336822B00BF600B67024 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E29033D22AF1917003AC8A0 /* libRNDeviceInfo.a */; }; 1E36336A22B00D3B00B67024 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1E36336922B00D3B00B67024 /* Images.xcassets */; }; 1E39C99D22A0AA0200D46C42 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1E39C99B22A0AA0200D46C42 /* MainInterface.storyboard */; }; 1E39C9A122A0AA0200D46C42 /* ShareRocketChatRN.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1E39C99622A0AA0200D46C42 /* ShareRocketChatRN.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; @@ -56,6 +55,7 @@ 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C915320F39A8000C8F5EE /* libRNFetchBlob.a */; }; 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; 1E81DEBC22B85A9400072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; + 1E81DEC622B8681A00072BF7 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEC322B8680A00072BF7 /* libRNDeviceInfo.a */; }; 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; }; 1EFBE83522AECB30000175EE /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A55F1C42236D541005109A0 /* custom.ttf */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; @@ -146,20 +146,6 @@ remoteGlobalIDString = 3D7682761D8E76B80014119E; remoteInfo = SplashScreen; }; - 1E29033C22AF1917003AC8A0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; - remoteInfo = RNDeviceInfo; - }; - 1E29033E22AF1917003AC8A0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; - remoteInfo = "RNDeviceInfo-tvOS"; - }; 1E36219622A1FFC70042F8C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; @@ -202,6 +188,20 @@ remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RNUserDefaults; }; + 1E81DEC222B8680A00072BF7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; + remoteInfo = RNDeviceInfo; + }; + 1E81DEC422B8680A00072BF7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; + remoteInfo = "RNDeviceInfo-tvOS"; + }; 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; @@ -574,7 +574,6 @@ 1A34D902CC074FF1BCC7DB48 /* libimageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libimageCropPicker.a; sourceTree = ""; }; 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSafariViewManager.a; sourceTree = ""; }; 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SplashScreen.xcodeproj; path = "../node_modules/react-native-splash-screen/ios/SplashScreen.xcodeproj"; sourceTree = ""; }; - 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNKeychain.xcodeproj; path = "../node_modules/react-native-keychain/RNKeychain.xcodeproj"; sourceTree = ""; }; 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNRealmPath.xcodeproj; path = "../node_modules/react-native-realm-path/ios/RNRealmPath.xcodeproj"; sourceTree = ""; }; 1E36336622B00BB600B67024 /* libPods-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libPods-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -586,6 +585,7 @@ 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/react-native-share-extension/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNUserDefaults.xcodeproj; path = "../node_modules/rn-user-defaults/ios/RNUserDefaults.xcodeproj"; sourceTree = ""; }; + 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1EA14C3022A16D7B00070029 /* ShareRocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareRocketChatRN.entitlements; sourceTree = ""; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; @@ -670,7 +670,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1E36336822B00BF600B67024 /* libRNDeviceInfo.a in Frameworks */, + 1E81DEC622B8681A00072BF7 /* libRNDeviceInfo.a in Frameworks */, 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */, 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, @@ -814,15 +814,6 @@ name = Products; sourceTree = ""; }; - 1E29033822AF1917003AC8A0 /* Products */ = { - isa = PBXGroup; - children = ( - 1E29033D22AF1917003AC8A0 /* libRNDeviceInfo.a */, - 1E29033F22AF1917003AC8A0 /* libRNDeviceInfo-tvOS.a */, - ); - name = Products; - sourceTree = ""; - }; 1E36215F22A1FFC60042F8C5 /* Products */ = { isa = PBXGroup; children = ( @@ -869,6 +860,15 @@ name = Products; sourceTree = ""; }; + 1E81DEBE22B8680A00072BF7 /* Products */ = { + isa = PBXGroup; + children = ( + 1E81DEC322B8680A00072BF7 /* libRNDeviceInfo.a */, + 1E81DEC522B8680A00072BF7 /* libRNDeviceInfo-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; 22CA7F59107E0C79C2506C7C /* Pods */ = { isa = PBXGroup; children = ( @@ -976,8 +976,8 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( + 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */, 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */, - 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */, 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */, 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */, @@ -1306,8 +1306,8 @@ ProjectRef = C21010507E5B4B37BA0E4C9D /* RNAudio.xcodeproj */; }, { - ProductGroup = 1E29033822AF1917003AC8A0 /* Products */; - ProjectRef = 1E29033722AF1917003AC8A0 /* RNDeviceInfo.xcodeproj */; + ProductGroup = 1E81DEBE22B8680A00072BF7 /* Products */; + ProjectRef = 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */; }, { ProductGroup = 7A8C912120F39A8000C8F5EE /* Products */; @@ -1426,20 +1426,6 @@ remoteRef = 1E175AEE22AC230A002E1A7B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E29033D22AF1917003AC8A0 /* libRNDeviceInfo.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRNDeviceInfo.a; - remoteRef = 1E29033C22AF1917003AC8A0 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 1E29033F22AF1917003AC8A0 /* libRNDeviceInfo-tvOS.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libRNDeviceInfo-tvOS.a"; - remoteRef = 1E29033E22AF1917003AC8A0 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1475,6 +1461,20 @@ remoteRef = 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E81DEC322B8680A00072BF7 /* libRNDeviceInfo.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNDeviceInfo.a; + remoteRef = 1E81DEC222B8680A00072BF7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1E81DEC522B8680A00072BF7 /* libRNDeviceInfo-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNDeviceInfo-tvOS.a"; + remoteRef = 1E81DEC422B8680A00072BF7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; From 3567a62d6af43faf5ba2833013334c85a9c5ca2a Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 17 Jun 2019 21:31:55 -0300 Subject: [PATCH 28/88] :arrow_up: Upgrade realm-path --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index 18c78c2f28..f83f5a1b52 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11540,10 +11540,10 @@ react-native-platform-touchable@^1.1.1: resolved "https://registry.yarnpkg.com/react-native-platform-touchable/-/react-native-platform-touchable-1.1.1.tgz#fde4acc65eea585d28b164d0c3716a42129a68e4" integrity sha1-/eSsxl7qWF0osWTQw3FqQhKaaOQ= -react-native-realm-path@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/react-native-realm-path/-/react-native-realm-path-1.2.7.tgz#b5f3f608564885adef6829dcc4f5b35fa8ffff1d" - integrity sha512-kpj5v4pdLd4tAxopGGjwRA68QzXxWQaGcrr6WpTLjkd/G8Ar+bSXePgpbepu/K2bV3KhtS1b3Zz1jqVXBzFavg== +react-native-realm-path@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/react-native-realm-path/-/react-native-realm-path-1.2.8.tgz#263e71621cdc7a4bfbd4bdbaad5637969c785a3d" + integrity sha512-KgP/gWbEPLyMAuYMuJPAIdIueoe8gVKv3DgEyEu0fA5K0mQWGfEdBFTFWzKJ1M+tY+4t/jIi0msqKz6W7LofMg== react-native-responsive-ui@^1.1.1: version "1.1.1" From fbc3b20010a7a17a857bda8c0bc93041521f8f91 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 17 Jun 2019 21:50:48 -0300 Subject: [PATCH 29/88] :lipstick: Fix server item --- app/views/RoomsListView/ServerDropdown.js | 43 +++++------------------ 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/app/views/RoomsListView/ServerDropdown.js b/app/views/RoomsListView/ServerDropdown.js index 60e161d08a..ff65bff9ec 100644 --- a/app/views/RoomsListView/ServerDropdown.js +++ b/app/views/RoomsListView/ServerDropdown.js @@ -1,6 +1,6 @@ import React, { Component } from 'react'; import { - View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList, Image + View, Text, Animated, Easing, TouchableWithoutFeedback, TouchableOpacity, FlatList } from 'react-native'; import PropTypes from 'prop-types'; import { connect } from 'react-redux'; @@ -13,11 +13,10 @@ import { selectServerRequest as selectServerRequestAction } from '../../actions/ import { appStart as appStartAction } from '../../actions'; import styles from './styles'; import database, { safeAddListener } from '../../lib/realm'; -import Touch from '../../utils/touch'; import RocketChat from '../../lib/rocketchat'; import I18n from '../../i18n'; import EventEmitter from '../../utils/events'; -import Check from '../../containers/Check'; +import ServerItem from '../../presentation/ServerItem'; const ROW_HEIGHT = 68; const ANIMATION_DURATION = 200; @@ -139,37 +138,13 @@ class ServerDropdown extends Component { renderSeparator = () => ; - renderServer = ({ item }) => { - const { server } = this.props; - - return ( - this.select(item.id)} style={styles.serverItem} testID={`rooms-list-header-server-${ item.id }`}> - - {item.iconURL - ? ( - console.warn('error loading serverIcon')} - /> - ) - : ( - - ) - } - - {item.name || item.id} - {item.id} - - {item.id === server ? : null} - - - ); - } + renderServer = ({ item }) => ( + this.select(item.id)} + item={item} + hasCheck + /> + ); render() { const { servers } = this.state; From 7935b4fda9295026d095ead2927f4d2461318687 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 18 Jun 2019 17:38:42 -0300 Subject: [PATCH 30/88] :sparkles: Initial image upload --- app/views/ShareView/index.js | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 05ffff7592..bd45c7d0b3 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -5,6 +5,7 @@ import { } from 'react-native'; import ShareExtension from 'react-native-share-extension'; import { HeaderBackButton } from 'react-navigation'; +import RNFetchBlob from 'rn-fetch-blob'; import { COLOR_TEXT_DESCRIPTION, HEADER_BACK @@ -51,7 +52,27 @@ export default class ShareView extends React.Component { componentWillMount() { const { navigation } = this.props; - navigation.setParams({ sendMessage: this._sendMessage }); + navigation.setParams({ sendMessage: this._sendMediaMessage }); + } + + uriToPath = uri => uri.replace(/^file:\/\//, ''); + + _sendMediaMessage = async() => { + const { text, rid } = this.state; + const data = await RNFetchBlob.fs.stat(this.uriToPath(text)); + const fileInfo = { + name: data.filename, + description: '', + size: data.size, + type: 'image/jpeg', + store: 'Uploads', + path: data.path + }; + try { + await RocketChat.sendFileMessage(rid, fileInfo, undefined); + } catch (e) { + log('err_send_media_message', e); + } } _sendMessage = () => { From 74db03cac9a86a9e364979847fb7abba02a78ad6 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 18 Jun 2019 18:04:48 -0300 Subject: [PATCH 31/88] :bug: Fix mime type on sendMediaMessage --- app/views/ShareView/index.js | 3 ++- package.json | 1 + yarn.lock | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index bd45c7d0b3..7412d765b6 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -6,6 +6,7 @@ import { import ShareExtension from 'react-native-share-extension'; import { HeaderBackButton } from 'react-navigation'; import RNFetchBlob from 'rn-fetch-blob'; +import * as mime from 'react-native-mime-types'; import { COLOR_TEXT_DESCRIPTION, HEADER_BACK @@ -64,7 +65,7 @@ export default class ShareView extends React.Component { name: data.filename, description: '', size: data.size, - type: 'image/jpeg', + type: mime.lookup(data.path), store: 'Uploads', path: data.path }; diff --git a/package.json b/package.json index 2302394335..794925dfbd 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,7 @@ "react-native-keyboard-tracking-view": "^5.5.0", "react-native-keychain": "^3.1.3", "react-native-markdown-renderer": "^3.2.8", + "react-native-mime-types": "^2.2.1", "react-native-modal": "10.0.0", "react-native-notifications": "1.2.6", "react-native-optimized-flatlist": "^1.0.4", diff --git a/yarn.lock b/yarn.lock index f83f5a1b52..6b4dd16f31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9522,6 +9522,11 @@ mime-db@~1.23.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.23.0.tgz#a31b4070adaea27d732ea333740a64d0ec9a6659" integrity sha1-oxtAcK2uon1zLqMzdApk0OyaZlk= +mime-db@~1.25.0: + version "1.25.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.25.0.tgz#c18dbd7c73a5dbf6f44a024dc0d165a1e7b1c392" + integrity sha1-wY29fHOl2/b0SgJNwNFloeexw5I= + mime-types@2.1.11: version "2.1.11" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.11.tgz#c259c471bda808a85d6cd193b430a5fae4473b3c" @@ -11492,6 +11497,13 @@ react-native-markdown-renderer@^3.2.8: prop-types "^15.5.10" react-native-fit-image "^1.5.2" +react-native-mime-types@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-native-mime-types/-/react-native-mime-types-2.2.1.tgz#a9760e9916e4e7df03512c60516668f23543f2c0" + integrity sha512-2H0jjW5l2driXiiKx9PZsJDCFgS8LeMaVLVZPy3iRkBrNcstpQosEr6+YJfihLbW3WvFtmS2qcyFKB7mYw/iJg== + dependencies: + mime-db "~1.25.0" + react-native-modal@10.0.0: version "10.0.0" resolved "https://registry.yarnpkg.com/react-native-modal/-/react-native-modal-10.0.0.tgz#1b0b15cc6cda9584f122cced106a9f9f37befc08" From 4e1ceb26840e088aaef9ea0224c383aa013c5e98 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 18 Jun 2019 19:00:27 -0300 Subject: [PATCH 32/88] :bug: Fix upload media with space on path --- app/views/ShareView/index.js | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 62 +++++++++++----------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 7412d765b6..a4191444cf 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -56,7 +56,7 @@ export default class ShareView extends React.Component { navigation.setParams({ sendMessage: this._sendMediaMessage }); } - uriToPath = uri => uri.replace(/^file:\/\//, ''); + uriToPath = uri => uri.replace(/^file:\/\//, '').replace('%20', ' '); _sendMediaMessage = async() => { const { text, rid } = this.state; diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 58b859ff59..c52390be8e 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -53,9 +53,9 @@ 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */; }; 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 607D61161F325B7E00F639C4 /* libRealmReact.a */; }; 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C915320F39A8000C8F5EE /* libRNFetchBlob.a */; }; + 1E78295B22B996610097F855 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E78295822B996570097F855 /* libRNDeviceInfo.a */; }; 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; 1E81DEBC22B85A9400072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; - 1E81DEC622B8681A00072BF7 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEC322B8680A00072BF7 /* libRNDeviceInfo.a */; }; 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; }; 1EFBE83522AECB30000175EE /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A55F1C42236D541005109A0 /* custom.ttf */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; @@ -181,27 +181,27 @@ remoteGlobalIDString = 41B5DE301D0B505800949BD5; remoteInfo = ReactNativeShareExtension; }; - 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RNUserDefaults; - }; - 1E81DEC222B8680A00072BF7 /* PBXContainerItemProxy */ = { + 1E78295722B996570097F855 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */; + containerPortal = 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */; proxyType = 2; remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; remoteInfo = RNDeviceInfo; }; - 1E81DEC422B8680A00072BF7 /* PBXContainerItemProxy */ = { + 1E78295922B996570097F855 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */; + containerPortal = 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */; proxyType = 2; remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; remoteInfo = "RNDeviceInfo-tvOS"; }; + 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RNUserDefaults; + }; 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; @@ -584,8 +584,8 @@ 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareRocketChatRN.m; sourceTree = ""; }; 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/react-native-share-extension/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; + 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNUserDefaults.xcodeproj; path = "../node_modules/rn-user-defaults/ios/RNUserDefaults.xcodeproj"; sourceTree = ""; }; - 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1EA14C3022A16D7B00070029 /* ShareRocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareRocketChatRN.entitlements; sourceTree = ""; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; @@ -670,7 +670,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1E81DEC622B8681A00072BF7 /* libRNDeviceInfo.a in Frameworks */, + 1E78295B22B996610097F855 /* libRNDeviceInfo.a in Frameworks */, 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */, 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, @@ -852,19 +852,19 @@ name = Products; sourceTree = ""; }; - 1E81DE7922B85A8C00072BF7 /* Products */ = { + 1E78295322B996570097F855 /* Products */ = { isa = PBXGroup; children = ( - 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */, + 1E78295822B996570097F855 /* libRNDeviceInfo.a */, + 1E78295A22B996570097F855 /* libRNDeviceInfo-tvOS.a */, ); name = Products; sourceTree = ""; }; - 1E81DEBE22B8680A00072BF7 /* Products */ = { + 1E81DE7922B85A8C00072BF7 /* Products */ = { isa = PBXGroup; children = ( - 1E81DEC322B8680A00072BF7 /* libRNDeviceInfo.a */, - 1E81DEC522B8680A00072BF7 /* libRNDeviceInfo-tvOS.a */, + 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */, ); name = Products; sourceTree = ""; @@ -976,7 +976,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */, + 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */, 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */, 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */, 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, @@ -1306,8 +1306,8 @@ ProjectRef = C21010507E5B4B37BA0E4C9D /* RNAudio.xcodeproj */; }, { - ProductGroup = 1E81DEBE22B8680A00072BF7 /* Products */; - ProjectRef = 1E81DEBD22B8680A00072BF7 /* RNDeviceInfo.xcodeproj */; + ProductGroup = 1E78295322B996570097F855 /* Products */; + ProjectRef = 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */; }, { ProductGroup = 7A8C912120F39A8000C8F5EE /* Products */; @@ -1454,25 +1454,25 @@ remoteRef = 1E39C9F422A0AA8700D46C42 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */ = { + 1E78295822B996570097F855 /* libRNDeviceInfo.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libRNUserDefaults.a; - remoteRef = 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */; + path = libRNDeviceInfo.a; + remoteRef = 1E78295722B996570097F855 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E81DEC322B8680A00072BF7 /* libRNDeviceInfo.a */ = { + 1E78295A22B996570097F855 /* libRNDeviceInfo-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libRNDeviceInfo.a; - remoteRef = 1E81DEC222B8680A00072BF7 /* PBXContainerItemProxy */; + path = "libRNDeviceInfo-tvOS.a"; + remoteRef = 1E78295922B996570097F855 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E81DEC522B8680A00072BF7 /* libRNDeviceInfo-tvOS.a */ = { + 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = "libRNDeviceInfo-tvOS.a"; - remoteRef = 1E81DEC422B8680A00072BF7 /* PBXContainerItemProxy */; + path = libRNUserDefaults.a; + remoteRef = 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { From c6328449d321faddf16cd94b20dfb94324fd33cc Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 18 Jun 2019 20:33:22 -0300 Subject: [PATCH 33/88] :green_apple: Try to fix link device-info --- ios/RocketChatRN.xcodeproj/project.pbxproj | 86 +++++++++++----------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index c52390be8e..cac26ca7fe 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -21,6 +21,7 @@ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E175AEF22AC230A002E1A7B /* libSplashScreen.a */; }; + 1E20A77322B9AC05004CC589 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E20A77022B9AC00004CC589 /* libRNDeviceInfo.a */; }; 1E36219E22A1FFD90042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; 1E36219F22A1FFE50042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; @@ -53,7 +54,6 @@ 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */; }; 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 607D61161F325B7E00F639C4 /* libRealmReact.a */; }; 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C915320F39A8000C8F5EE /* libRNFetchBlob.a */; }; - 1E78295B22B996610097F855 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E78295822B996570097F855 /* libRNDeviceInfo.a */; }; 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; 1E81DEBC22B85A9400072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; }; @@ -146,6 +146,20 @@ remoteGlobalIDString = 3D7682761D8E76B80014119E; remoteInfo = SplashScreen; }; + 1E20A76F22B9AC00004CC589 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; + remoteInfo = RNDeviceInfo; + }; + 1E20A77122B9AC00004CC589 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; + remoteInfo = "RNDeviceInfo-tvOS"; + }; 1E36219622A1FFC70042F8C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; @@ -181,20 +195,6 @@ remoteGlobalIDString = 41B5DE301D0B505800949BD5; remoteInfo = ReactNativeShareExtension; }; - 1E78295722B996570097F855 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; - remoteInfo = RNDeviceInfo; - }; - 1E78295922B996570097F855 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; - remoteInfo = "RNDeviceInfo-tvOS"; - }; 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */; @@ -574,6 +574,7 @@ 1A34D902CC074FF1BCC7DB48 /* libimageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libimageCropPicker.a; sourceTree = ""; }; 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSafariViewManager.a; sourceTree = ""; }; 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SplashScreen.xcodeproj; path = "../node_modules/react-native-splash-screen/ios/SplashScreen.xcodeproj"; sourceTree = ""; }; + 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNKeychain.xcodeproj; path = "../node_modules/react-native-keychain/RNKeychain.xcodeproj"; sourceTree = ""; }; 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNRealmPath.xcodeproj; path = "../node_modules/react-native-realm-path/ios/RNRealmPath.xcodeproj"; sourceTree = ""; }; 1E36336622B00BB600B67024 /* libPods-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libPods-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -584,7 +585,6 @@ 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareRocketChatRN.m; sourceTree = ""; }; 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/react-native-share-extension/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; - 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNUserDefaults.xcodeproj; path = "../node_modules/rn-user-defaults/ios/RNUserDefaults.xcodeproj"; sourceTree = ""; }; 1EA14C3022A16D7B00070029 /* ShareRocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareRocketChatRN.entitlements; sourceTree = ""; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; @@ -670,7 +670,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1E78295B22B996610097F855 /* libRNDeviceInfo.a in Frameworks */, + 1E20A77322B9AC05004CC589 /* libRNDeviceInfo.a in Frameworks */, 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */, 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, @@ -814,6 +814,15 @@ name = Products; sourceTree = ""; }; + 1E20A76B22B9AC00004CC589 /* Products */ = { + isa = PBXGroup; + children = ( + 1E20A77022B9AC00004CC589 /* libRNDeviceInfo.a */, + 1E20A77222B9AC00004CC589 /* libRNDeviceInfo-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; 1E36215F22A1FFC60042F8C5 /* Products */ = { isa = PBXGroup; children = ( @@ -852,15 +861,6 @@ name = Products; sourceTree = ""; }; - 1E78295322B996570097F855 /* Products */ = { - isa = PBXGroup; - children = ( - 1E78295822B996570097F855 /* libRNDeviceInfo.a */, - 1E78295A22B996570097F855 /* libRNDeviceInfo-tvOS.a */, - ); - name = Products; - sourceTree = ""; - }; 1E81DE7922B85A8C00072BF7 /* Products */ = { isa = PBXGroup; children = ( @@ -976,7 +976,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */, + 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */, 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */, 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */, 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, @@ -1306,8 +1306,8 @@ ProjectRef = C21010507E5B4B37BA0E4C9D /* RNAudio.xcodeproj */; }, { - ProductGroup = 1E78295322B996570097F855 /* Products */; - ProjectRef = 1E78295222B996570097F855 /* RNDeviceInfo.xcodeproj */; + ProductGroup = 1E20A76B22B9AC00004CC589 /* Products */; + ProjectRef = 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */; }, { ProductGroup = 7A8C912120F39A8000C8F5EE /* Products */; @@ -1426,6 +1426,20 @@ remoteRef = 1E175AEE22AC230A002E1A7B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E20A77022B9AC00004CC589 /* libRNDeviceInfo.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNDeviceInfo.a; + remoteRef = 1E20A76F22B9AC00004CC589 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1E20A77222B9AC00004CC589 /* libRNDeviceInfo-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNDeviceInfo-tvOS.a"; + remoteRef = 1E20A77122B9AC00004CC589 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1454,20 +1468,6 @@ remoteRef = 1E39C9F422A0AA8700D46C42 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E78295822B996570097F855 /* libRNDeviceInfo.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRNDeviceInfo.a; - remoteRef = 1E78295722B996570097F855 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 1E78295A22B996570097F855 /* libRNDeviceInfo-tvOS.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libRNDeviceInfo-tvOS.a"; - remoteRef = 1E78295922B996570097F855 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; From a1464223b96ded7a2dca3e2d9c287d53b2823a5c Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Wed, 19 Jun 2019 16:19:03 -0300 Subject: [PATCH 34/88] :art: Change share view to media type --- app/views/ShareListView/index.js | 2 +- app/views/ShareView/Loading.js | 24 +++++ app/views/ShareView/index.js | 163 ++++++++++++++++++++++--------- app/views/ShareView/styles.js | 52 +++++++++- 4 files changed, 194 insertions(+), 47 deletions(-) create mode 100644 app/views/ShareView/Loading.js diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index 8dc8c6620b..7f8e3060e5 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -129,7 +129,7 @@ export default class ShareListView extends React.Component { navigation.navigate('ShareView', { rid: item.rid, - text: value, + value, name: this.getRoomTitle(item) }); }; diff --git a/app/views/ShareView/Loading.js b/app/views/ShareView/Loading.js new file mode 100644 index 0000000000..c80200b234 --- /dev/null +++ b/app/views/ShareView/Loading.js @@ -0,0 +1,24 @@ +import React from 'react'; +import { + StyleSheet, ActivityIndicator, View +} from 'react-native'; +import { COLOR_TEXT } from '../../constants/colors'; + +const styles = StyleSheet.create({ + container: { + height: '100%', + width: '100%', + position: 'absolute', + justifyContent: 'center', + alignItems: 'center', + zIndex: 5 + } +}); + +const Loading = React.memo(() => ( + + + +)); + +export default Loading; diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index a4191444cf..c8d3e4b2be 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -1,7 +1,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { - View, Text, TouchableOpacity, TextInput + View, Text, TouchableOpacity, TextInput, Image } from 'react-native'; import ShareExtension from 'react-native-share-extension'; import { HeaderBackButton } from 'react-navigation'; @@ -15,6 +15,7 @@ import I18n from '../../i18n'; import RocketChat from '../../lib/rocketchat'; import log from '../../utils/log'; import styles from './styles'; +import Loading from './Loading'; export default class ShareView extends React.Component { static navigationOptions = ({ navigation }) => ({ @@ -43,75 +44,149 @@ export default class ShareView extends React.Component { const { navigation } = this.props; const rid = navigation.getParam('rid', ''); const name = navigation.getParam('name', ''); - const text = navigation.getParam('text', ''); + const value = navigation.getParam('value', ''); this.state = { rid, - text, - name + value, + name, + fileInfo: null, + loading: false, + file: { + name: '', + description: '' + } }; } - componentWillMount() { + async componentWillMount() { const { navigation } = this.props; - navigation.setParams({ sendMessage: this._sendMediaMessage }); + navigation.setParams({ sendMessage: this._sendMessage }); + + const { value } = this.state; + if (this.isMedia(value)) { + const data = await RNFetchBlob.fs.stat(this.uriToPath(value)); + const fileInfo = { + name: data.filename, + description: '', + size: data.size, + type: mime.lookup(data.path), + store: 'Uploads', + path: data.path + }; + this.setState({ fileInfo, file: { name: data.filename } }); + } } uriToPath = uri => uri.replace(/^file:\/\//, '').replace('%20', ' '); - _sendMediaMessage = async() => { - const { text, rid } = this.state; - const data = await RNFetchBlob.fs.stat(this.uriToPath(text)); - const fileInfo = { - name: data.filename, - description: '', - size: data.size, - type: mime.lookup(data.path), - store: 'Uploads', - path: data.path - }; - try { - await RocketChat.sendFileMessage(rid, fileInfo, undefined); - } catch (e) { - log('err_send_media_message', e); + bytesToSize = bits => `${ ((bits / 8) / 1048576).toFixed(2) }MB`; + + isMedia = uri => uri.match(/^file:\/\//); + + _sendMessage = async() => { + const { value } = this.state; + this.setState({ loading: true }); + + if (this.isMedia(value)) { + await this.sendMediaMessage(); + } else { + await this.sendTextMessage(); + } + + this.setState({ loading: false }); + ShareExtension.close(); + } + + sendMediaMessage = async() => { + const { rid, fileInfo, file } = this.state; + const { name, description } = file; + const fileMessage = { ...fileInfo, name, description }; + if (fileInfo && rid !== '') { + try { + await RocketChat.sendFileMessage(rid, fileMessage, undefined); + } catch (e) { + log('err_send_media_message', e); + } } } - _sendMessage = () => { - const { text, rid } = this.state; - if (text !== '' && rid !== '') { + sendTextMessage = async() => { + const { value, rid } = this.state; + if (value !== '' && rid !== '') { try { - RocketChat.sendMessage(rid, text, undefined).then(ShareExtension.close); + await RocketChat.sendMessage(rid, value, undefined); } catch (error) { log('err_share_extension_send_message', error); } } }; - render() { - const { text, name } = this.state; + renderMediaContent = () => { + const { fileInfo, file } = this.state; + return fileInfo ? ( + + + + + {fileInfo.name} + {this.bytesToSize(fileInfo.size)} + + + + this.setState({ file: { ...file, name } })} + underlineColorAndroid='transparent' + defaultValue={file.name} + placeholderTextColor={COLOR_TEXT_DESCRIPTION} + /> + this.setState({ file: { ...file, description } })} + underlineColorAndroid='transparent' + defaultValue={file.description} + multiline + placeholderTextColor={COLOR_TEXT_DESCRIPTION} + /> + + + ) : null; + }; + renderInput = () => { + const { value } = this.state; + return ( + this.setState({ value: handleText })} + underlineColorAndroid='transparent' + defaultValue={value} + multiline + placeholderTextColor={COLOR_TEXT_DESCRIPTION} + /> + ); + } + + render() { + const { value, name, loading } = this.state; return ( - - {`${ I18n.t('To') }: `} - {`${ name }`} - + { loading ? : null } + + + {`${ I18n.t('To') }: `} + {`${ name }`} + + - this.component = component} - style={styles.input} - returnKeyType='default' - keyboardType='twitter' - blurOnSubmit={false} - placeholder='' - onChangeText={handleText => this.setState({ text: handleText })} - underlineColorAndroid='transparent' - defaultValue={text} - multiline - placeholderTextColor={COLOR_TEXT_DESCRIPTION} - /> + {this.isMedia(value) ? this.renderMediaContent() : this.renderInput()} ); diff --git a/app/views/ShareView/styles.js b/app/views/ShareView/styles.js index ddfc8c5023..ffa5cdc479 100644 --- a/app/views/ShareView/styles.js +++ b/app/views/ShareView/styles.js @@ -1,5 +1,6 @@ import { StyleSheet } from 'react-native'; +import sharedStyles from '../Styles'; import { COLOR_BACKGROUND_CONTAINER, COLOR_TEXT_DESCRIPTION, COLOR_TITLE, COLOR_WHITE, HEADER_BACK } from '../../constants/colors'; @@ -16,16 +17,63 @@ export default StyleSheet.create({ to: { color: COLOR_TEXT_DESCRIPTION }, + toContent: { + width: '100%', + backgroundColor: COLOR_WHITE + }, name: { color: COLOR_TITLE }, content: { flex: 1, - backgroundColor: COLOR_WHITE, - paddingHorizontal: 16 + backgroundColor: COLOR_WHITE + }, + mediaContainer: { + flex: 1, + backgroundColor: COLOR_BACKGROUND_CONTAINER + }, + mediaContent: { + flexDirection: 'row', + paddingHorizontal: 16, + paddingVertical: 9, + backgroundColor: COLOR_BACKGROUND_CONTAINER + }, + mediaIcon: { + height: 80, + width: 80 + }, + mediaInfo: { + marginLeft: 9 + }, + mediaText: { + fontSize: 18, + marginBottom: 10 + }, + mediaInputContent: { + width: '100%', + ...sharedStyles.separatorVertical, + backgroundColor: COLOR_WHITE }, input: { + fontSize: 18, + backgroundColor: COLOR_WHITE + }, + textInput: { flex: 1, + paddingHorizontal: 16 + }, + mediaNameInput: { + marginLeft: 24, + paddingRight: 24, + paddingVertical: 12, + backgroundColor: COLOR_WHITE, + ...sharedStyles.separatorBottom + }, + mediaDescriptionInput: { + marginLeft: 24, + marginVertical: 12, + paddingRight: 24, + height: 100, backgroundColor: COLOR_WHITE }, sendButton: { From 51bf7becdf3e5be111b7aa925024a04c0fdb7f0e Mon Sep 17 00:00:00 2001 From: diegolmello Date: Wed, 19 Jun 2019 18:17:27 -0300 Subject: [PATCH 35/88] [FIX] App hang on "updating" --- app/lib/methods/subscriptions/rooms.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/app/lib/methods/subscriptions/rooms.js b/app/lib/methods/subscriptions/rooms.js index 5b23fbda7e..bc70b394a5 100644 --- a/app/lib/methods/subscriptions/rooms.js +++ b/app/lib/methods/subscriptions/rooms.js @@ -15,7 +15,7 @@ let disconnectedListener; let streamListener; let subServer; -export default async function subscribeRooms() { +export default function subscribeRooms() { let timer = null; const loop = () => { if (timer) { @@ -156,12 +156,13 @@ export default async function subscribeRooms() { try { // set the server that started this task subServer = this.sdk.client.host; - await this.sdk.subscribeNotifyUser(); + this.sdk.subscribeNotifyUser().catch(e => console.log(e)); + + return { + stop: () => stop() + }; } catch (e) { log('err_subscribe_rooms', e); + return Promise.reject(); } - - return { - stop: () => stop() - }; } From d6fb37d71aee8a61be4833ad02674160b61e21a5 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Wed, 19 Jun 2019 19:28:24 -0300 Subject: [PATCH 36/88] :lipstick: Add file icon on media content --- app/views/ShareView/index.js | 12 +++++++++--- app/views/ShareView/styles.js | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index c8d3e4b2be..c56f8917b0 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -13,6 +13,7 @@ import { } from '../../constants/colors'; import I18n from '../../i18n'; import RocketChat from '../../lib/rocketchat'; +import { CustomIcon } from '../../lib/Icons'; import log from '../../utils/log'; import styles from './styles'; import Loading from './Loading'; @@ -128,7 +129,11 @@ export default class ShareView extends React.Component { - + { + fileInfo.type.match(/image/) + ? + : + } {fileInfo.name} {this.bytesToSize(fileInfo.size)} @@ -174,19 +179,20 @@ export default class ShareView extends React.Component { render() { const { value, name, loading } = this.state; + const isMedia = this.isMedia(value); return ( { loading ? : null } - + {`${ I18n.t('To') }: `} {`${ name }`} - {this.isMedia(value) ? this.renderMediaContent() : this.renderInput()} + {isMedia ? this.renderMediaContent() : this.renderInput()} ); diff --git a/app/views/ShareView/styles.js b/app/views/ShareView/styles.js index ffa5cdc479..6c22970e5a 100644 --- a/app/views/ShareView/styles.js +++ b/app/views/ShareView/styles.js @@ -21,6 +21,10 @@ export default StyleSheet.create({ width: '100%', backgroundColor: COLOR_WHITE }, + toContentText: { + width: '100%', + backgroundColor: COLOR_BACKGROUND_CONTAINER + }, name: { color: COLOR_TITLE }, From 7942dd00b7f5b0a739271b93640d757281671b9e Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Wed, 19 Jun 2019 19:32:22 -0300 Subject: [PATCH 37/88] :art: Improve preview media on share --- app/views/ShareView/index.js | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index c56f8917b0..e0b6335323 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -122,23 +122,29 @@ export default class ShareView extends React.Component { } }; + renderPreview = () => { + const { fileInfo } = this.state; + + const icon = fileInfo.type.match(/image/) + ? + : ; + + return ( + + {icon} + + {fileInfo.name} + {this.bytesToSize(fileInfo.size)} + + + ); + }; + renderMediaContent = () => { const { fileInfo, file } = this.state; return fileInfo ? ( - - { - fileInfo.type.match(/image/) - ? - : - } - - {fileInfo.name} - {this.bytesToSize(fileInfo.size)} - - + {this.renderPreview()} Date: Wed, 19 Jun 2019 20:16:23 -0300 Subject: [PATCH 38/88] :wrench: Fix Extension supports --- ios/ShareRocketChatRN/Info.plist | 35 +++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index baabf4efd6..f3a28e14a5 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -20,10 +20,6 @@ 1.0 CFBundleVersion 1 - UIAppFonts - - custom.ttf - NSAppTransportSecurity NSAllowsArbitraryLoads @@ -31,19 +27,38 @@ NSExtension + NSExtensionActivationSupportsAttachmentsWithMaxCount + 1 NSExtensionAttributes + NSExtensionActionWantsFullScreenPresentation + NSExtensionActivationRule - TRUEPREDICATE - NSExtensionActivationSupportsWebURLWithMaxCount - 1 - NSExtensionActivationSupportsImageWithMaxCount - 1 + + NSExtensionActivationDictionaryVersion + 2 + NSExtensionActivationSupportsFileWithMaxCount + 1 + NSExtensionActivationSupportsImageWithMaxCount + 1 + NSExtensionActivationSupportsMovieWithMaxCount + 0 + NSExtensionActivationSupportsText + + NSExtensionActivationSupportsWebPageWithMaxCount + 1 + NSExtensionActivationSupportsWebURLWithMaxCount + 1 + NSExtensionMainStoryboard MainInterface NSExtensionPointIdentifier com.apple.share-services + UIAppFonts + + custom.ttf + - \ No newline at end of file + From 53560ba989bc1d50e85ba50a329b261a1caac1c2 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 20 Jun 2019 22:26:06 -0300 Subject: [PATCH 39/88] :arrow_up: Upgrade react-navigation to fix notch header on share extension --- package.json | 2 +- yarn.lock | 62 ++++++++++++++++++++++++++-------------------------- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index 794925dfbd..11f3db5d79 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "react-native-video": "^4.4.1", "react-native-video-controls": "^2.2.3", "react-native-webview": "5.8.1", - "react-navigation": "^3.9.1", + "react-navigation": "^3.11.0", "react-navigation-header-buttons": "^2.3.1", "react-redux": "^6.0.0", "reactotron-react-native": "2.2", diff --git a/yarn.lock b/yarn.lock index 6b4dd16f31..1ae63e3567 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1279,13 +1279,13 @@ query-string "^6.4.2" react-is "^16.8.6" -"@react-navigation/native@~3.4.0": - version "3.4.1" - resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-3.4.1.tgz#e1fbf334ac834a9f10dd7d9c3af3e36939486089" - integrity sha512-pMAPQfvwC4DvhQfsrXKAf+FiU+A5XAh216v17rEePSFcbeOEt7cvewmWxCxydN/vFjJChFiPV+xnjJyJBdPLOg== +"@react-navigation/native@~3.5.0": + version "3.5.0" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-3.5.0.tgz#f5d16e0845ac26d1147d1caa481f18a00740e7ae" + integrity sha512-TmGOis++ejEXG3sqNJhCSKqB0/qLu3FQgDtO959qpqif36R/diR8SQwJqeSdofoEiK3CepdhFlTCeHdS1/+MsQ== dependencies: hoist-non-react-statics "^3.0.1" - react-native-safe-area-view "^0.13.0" + react-native-safe-area-view "^0.14.1" react-native-screens "^1.0.0 || ^1.0.0-alpha" "@rocket.chat/sdk@1.0.0-alpha.28": @@ -11569,10 +11569,10 @@ react-native-safari-view@^2.1.0: resolved "https://registry.yarnpkg.com/react-native-safari-view/-/react-native-safari-view-2.1.0.tgz#1e0cd12c62bce79bc1759c7e281646b08b61c959" integrity sha1-HgzRLGK855vBdZx+KBZGsIthyVk= -react-native-safe-area-view@^0.13.0: - version "0.13.1" - resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.13.1.tgz#834bbb6d22f76a7ff07de56725ee5667ba1386b0" - integrity sha512-d/pu2866jApSwLtK/xWAvMXZkNTIQcFrjjbcTATBrmIfFNnu8TNFUcMRFpfJ+eOn5nmx7uGmDvs9B53Ft7JGpQ== +react-native-safe-area-view@^0.14.1: + version "0.14.5" + resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.14.5.tgz#eeded66bbeb0807f0a7f5f449e7fb2871f7ecf76" + integrity sha512-1NxWK1G0gzwCOuyNV/zf4n18s6FWsiqgwkzU3P9C0Iu8AErjhstK1jUqpRwzLH8+/7hGLsrQedmn+ZbQTOrJPg== dependencies: hoist-non-react-statics "^2.3.1" @@ -11624,10 +11624,10 @@ react-native-tab-view@^1.2.0: dependencies: prop-types "^15.6.1" -react-native-tab-view@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-1.3.4.tgz#63fc3eb09652651d0ea0e016cff0f3a5e535f4de" - integrity sha512-iufNROTPr4+Z/IKijlp5faEANiDBWxhpgx9NSCg3esZ+HN5+UtFwB0xkn4XpNRqCvbzeBkgKMRJL3V6kr5NhWg== +react-native-tab-view@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-1.4.1.tgz#f113cd87485808f0c991abec937f70fa380478b9" + integrity sha512-Bke8KkDcDhvB/z0AS7MnQKMD2p6Kwfc1rSKlMOvg9CC5CnClQ2QEnhPSbwegKDYhUkBI92iH/BYy7hNSm5kbUQ== dependencies: prop-types "^15.6.1" @@ -11720,7 +11720,7 @@ react-native@0.59.8: xmldoc "^0.4.0" yargs "^9.0.0" -react-navigation-drawer@1.2.1: +react-navigation-drawer@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/react-navigation-drawer/-/react-navigation-drawer-1.2.1.tgz#7bd5efeee7d2f611d3ebb0933e0c8e8eb7cafe52" integrity sha512-T2kaBjY2c4/3I6noWFnaf/c18ntNH5DsST38i+pdc2NPxn5Yi5lkK+ZZTeKuHSFD4a7G0jWY9OGf1iRkHWLMAQ== @@ -11734,31 +11734,31 @@ react-navigation-header-buttons@^2.3.1: dependencies: react-native-platform-touchable "^1.1.1" -react-navigation-stack@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/react-navigation-stack/-/react-navigation-stack-1.3.0.tgz#34bbddb068c094c9ab843e36059b9fd92b728250" - integrity sha512-ouyD1GkRksJSGuvAuqrJnlJnZ5g2g/+/WB/MTa8BzjSBvyOgruD5TrmEkpViCOMr1R17C8D4Htln90H4D+NV3Q== +react-navigation-stack@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/react-navigation-stack/-/react-navigation-stack-1.4.0.tgz#69cdb029ea4ee5877d7e933b3117dc90bc841eb2" + integrity sha512-zEe9wCA0Ot8agarYb//0nSWYW1GM+1R0tY/nydUV0EizeJ27At0EklYVWvYEuYU6C48va6cu8OPL7QD/CcJACw== -react-navigation-tabs@1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-1.1.2.tgz#10b7501522d99960340a0d23a471d571b70aeb82" - integrity sha512-D4fecSwZfvNh5WHTURmUVrNSgy3tiNfID0n5eKTOhCz4Sls4EM2l27UTX833ngxXhQ1FqRtBxzQZ+Dp1FWJ1pw== +react-navigation-tabs@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-1.1.4.tgz#00a312250df3c519c60b7815a523ace5ee11163a" + integrity sha512-py2hLCRxPwXOzmY1W9XcY1rWXxdK6RGW/aXh56G9gIf8cpHNDhy/bJV4e46/JrVcse3ybFaN0liT09/DM/NdwQ== dependencies: hoist-non-react-statics "^2.5.0" prop-types "^15.6.1" react-lifecycles-compat "^3.0.4" - react-native-tab-view "^1.3.4" + react-native-tab-view "^1.4.1" -react-navigation@^3.9.1: - version "3.9.1" - resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-3.9.1.tgz#2b2545f5c11905b534d96996c658d0691bc5f11f" - integrity sha512-4rUQXGT0yvLb9yX9NDuKdrXb/NcAPGUHDTlto8Fg4Tm23uuyBBSrDVStqC59rUM4JcoQnRqhenN2wXGvWE+WYA== +react-navigation@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-3.11.0.tgz#2c82217c452d07d8b9b0929bc7e77e2bcfaf9388" + integrity sha512-wlPcDtNiIdPeYxNQ/MN4arY5Xe9EphD2QVpRuvvuPWW+BamF3AJaIy060r3Yz59DODAoWllscabat/yqnih8Tg== dependencies: "@react-navigation/core" "~3.4.1" - "@react-navigation/native" "~3.4.0" - react-navigation-drawer "1.2.1" - react-navigation-stack "1.3.0" - react-navigation-tabs "1.1.2" + "@react-navigation/native" "~3.5.0" + react-navigation-drawer "~1.2.1" + react-navigation-stack "~1.4.0" + react-navigation-tabs "~1.1.4" react-proxy@^1.1.7: version "1.1.8" From c1930714787f2919b98e53f152a0ce182af729d7 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Fri, 21 Jun 2019 17:18:47 -0300 Subject: [PATCH 40/88] :green_apple: Fix deviceInfo --- ios/RocketChatRN.xcodeproj/project.pbxproj | 133 ++++++------------ .../xcschemes/ShareRocketChatRN.xcscheme | 108 ++++++++++++++ 2 files changed, 151 insertions(+), 90 deletions(-) create mode 100644 ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/ShareRocketChatRN.xcscheme diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 453e2480dd..545234545d 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -21,9 +21,6 @@ 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; }; 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E175AEF22AC230A002E1A7B /* libSplashScreen.a */; }; - 1E20A77322B9AC05004CC589 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E20A77022B9AC00004CC589 /* libRNDeviceInfo.a */; }; - 1E36219E22A1FFD90042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; - 1E36219F22A1FFE50042F8C5 /* libRNKeychain.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */; }; 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; 1E3621A722A202E80042F8C5 /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */; }; 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A770EC220BECDC7001AD51A /* libFastImage.a */; }; @@ -56,6 +53,7 @@ 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C915320F39A8000C8F5EE /* libRNFetchBlob.a */; }; 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; 1E81DEBC22B85A9400072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; + 1E9F96D222BD7307007655C7 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E9F96CF22BD72F9007655C7 /* libRNDeviceInfo.a */; }; 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; }; 1EFBE83522AECB30000175EE /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A55F1C42236D541005109A0 /* custom.ttf */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; @@ -146,34 +144,6 @@ remoteGlobalIDString = 3D7682761D8E76B80014119E; remoteInfo = SplashScreen; }; - 1E20A76F22B9AC00004CC589 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; - remoteInfo = RNDeviceInfo; - }; - 1E20A77122B9AC00004CC589 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; - remoteInfo = "RNDeviceInfo-tvOS"; - }; - 1E36219622A1FFC70042F8C5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 5D82366F1B0CE05B005A9EF3; - remoteInfo = RNKeychain; - }; - 1E36219822A1FFC70042F8C5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 6478985F1F38BF9100DA1C12; - remoteInfo = "RNKeychain-tvOS"; - }; 1E3621A422A202DE0042F8C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */; @@ -202,6 +172,20 @@ remoteGlobalIDString = 134814201AA4EA6300B7C361; remoteInfo = RNUserDefaults; }; + 1E9F96CE22BD72F9007655C7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; + remoteInfo = RNDeviceInfo; + }; + 1E9F96D022BD72F9007655C7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; + remoteInfo = "RNDeviceInfo-tvOS"; + }; 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; @@ -567,8 +551,6 @@ 1A34D902CC074FF1BCC7DB48 /* libimageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libimageCropPicker.a; sourceTree = ""; }; 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSafariViewManager.a; sourceTree = ""; }; 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SplashScreen.xcodeproj; path = "../node_modules/react-native-splash-screen/ios/SplashScreen.xcodeproj"; sourceTree = ""; }; - 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; - 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNKeychain.xcodeproj; path = "../node_modules/react-native-keychain/RNKeychain.xcodeproj"; sourceTree = ""; }; 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNRealmPath.xcodeproj; path = "../node_modules/react-native-realm-path/ios/RNRealmPath.xcodeproj"; sourceTree = ""; }; 1E36336622B00BB600B67024 /* libPods-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libPods-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 1E36336922B00D3B00B67024 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; @@ -579,6 +561,7 @@ 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/react-native-share-extension/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNUserDefaults.xcodeproj; path = "../node_modules/rn-user-defaults/ios/RNUserDefaults.xcodeproj"; sourceTree = ""; }; + 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1EA14C3022A16D7B00070029 /* ShareRocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareRocketChatRN.entitlements; sourceTree = ""; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; @@ -625,7 +608,6 @@ files = ( 1E81DEBC22B85A9400072BF7 /* libRNUserDefaults.a in Frameworks */, 1E3621A622A202E30042F8C5 /* libRNRealmPath.a in Frameworks */, - 1E36219E22A1FFD90042F8C5 /* libRNKeychain.a in Frameworks */, 7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */, 7A8DEB5A20ED0BEC00C5DCE4 /* libRNNotifications.a in Frameworks */, B8971BB2202A093B0000D245 /* libKeyboardTrackingView.a in Frameworks */, @@ -662,13 +644,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1E20A77322B9AC05004CC589 /* libRNDeviceInfo.a in Frameworks */, + 1E9F96D222BD7307007655C7 /* libRNDeviceInfo.a in Frameworks */, 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */, 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, 1E3621D122A209F10042F8C5 /* libFastImage.a in Frameworks */, 1E3621A722A202E80042F8C5 /* libRNRealmPath.a in Frameworks */, - 1E36219F22A1FFE50042F8C5 /* libRNKeychain.a in Frameworks */, 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */, 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */, 1E39CA1522A0AD0900D46C42 /* libRNFirebase.a in Frameworks */, @@ -806,24 +787,6 @@ name = Products; sourceTree = ""; }; - 1E20A76B22B9AC00004CC589 /* Products */ = { - isa = PBXGroup; - children = ( - 1E20A77022B9AC00004CC589 /* libRNDeviceInfo.a */, - 1E20A77222B9AC00004CC589 /* libRNDeviceInfo-tvOS.a */, - ); - name = Products; - sourceTree = ""; - }; - 1E36215F22A1FFC60042F8C5 /* Products */ = { - isa = PBXGroup; - children = ( - 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */, - 1E36219922A1FFC70042F8C5 /* libRNKeychain.a */, - ); - name = Products; - sourceTree = ""; - }; 1E3621A122A202DD0042F8C5 /* Products */ = { isa = PBXGroup; children = ( @@ -861,6 +824,15 @@ name = Products; sourceTree = ""; }; + 1E9F96CA22BD72F9007655C7 /* Products */ = { + isa = PBXGroup; + children = ( + 1E9F96CF22BD72F9007655C7 /* libRNDeviceInfo.a */, + 1E9F96D122BD72F9007655C7 /* libRNDeviceInfo-tvOS.a */, + ); + name = Products; + sourceTree = ""; + }; 22CA7F59107E0C79C2506C7C /* Pods */ = { isa = PBXGroup; children = ( @@ -968,11 +940,10 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */, + 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */, 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */, 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */, 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, - 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */, 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */, 7A8DEB1B20ED0BDE00C5DCE4 /* RNNotifications.xcodeproj */, B8971BAC202A091D0000D245 /* KeyboardTrackingView.xcodeproj */, @@ -1289,8 +1260,8 @@ ProjectRef = C21010507E5B4B37BA0E4C9D /* RNAudio.xcodeproj */; }, { - ProductGroup = 1E20A76B22B9AC00004CC589 /* Products */; - ProjectRef = 1E20A76A22B9AC00004CC589 /* RNDeviceInfo.xcodeproj */; + ProductGroup = 1E9F96CA22BD72F9007655C7 /* Products */; + ProjectRef = 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */; }, { ProductGroup = 7A8C912120F39A8000C8F5EE /* Products */; @@ -1308,10 +1279,6 @@ ProductGroup = 7A770EBC20BECDC7001AD51A /* Products */; ProjectRef = 22D3971EAF2E4660B4FAB3DD /* RNI18n.xcodeproj */; }, - { - ProductGroup = 1E36215F22A1FFC60042F8C5 /* Products */; - ProjectRef = 1E36215E22A1FFC60042F8C5 /* RNKeychain.xcodeproj */; - }, { ProductGroup = 7A8DEB1C20ED0BDE00C5DCE4 /* Products */; ProjectRef = 7A8DEB1B20ED0BDE00C5DCE4 /* RNNotifications.xcodeproj */; @@ -1405,34 +1372,6 @@ remoteRef = 1E175AEE22AC230A002E1A7B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E20A77022B9AC00004CC589 /* libRNDeviceInfo.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRNDeviceInfo.a; - remoteRef = 1E20A76F22B9AC00004CC589 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 1E20A77222B9AC00004CC589 /* libRNDeviceInfo-tvOS.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libRNDeviceInfo-tvOS.a"; - remoteRef = 1E20A77122B9AC00004CC589 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 1E36219722A1FFC70042F8C5 /* libRNKeychain.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRNKeychain.a; - remoteRef = 1E36219622A1FFC70042F8C5 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 1E36219922A1FFC70042F8C5 /* libRNKeychain.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRNKeychain.a; - remoteRef = 1E36219822A1FFC70042F8C5 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 1E3621A522A202DE0042F8C5 /* libRNRealmPath.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1454,6 +1393,20 @@ remoteRef = 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E9F96CF22BD72F9007655C7 /* libRNDeviceInfo.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libRNDeviceInfo.a; + remoteRef = 1E9F96CE22BD72F9007655C7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 1E9F96D122BD72F9007655C7 /* libRNDeviceInfo-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libRNDeviceInfo-tvOS.a"; + remoteRef = 1E9F96D022BD72F9007655C7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; diff --git a/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/ShareRocketChatRN.xcscheme b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/ShareRocketChatRN.xcscheme new file mode 100644 index 0000000000..1726b0451e --- /dev/null +++ b/ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/ShareRocketChatRN.xcscheme @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 5f29b63ef1b527d505bc0aaa1ad02d96de741205 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Mon, 24 Jun 2019 16:55:48 -0300 Subject: [PATCH 41/88] :heavy_plus_sign: Change dependency to share-extension --- app/views/ShareListView/index.js | 2 +- app/views/ShareView/index.js | 2 +- app/views/WithoutServersView.js | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 6 +++--- package.json | 2 +- yarn.lock | 10 +++++----- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index 7f8e3060e5..b3ae65310e 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -4,7 +4,7 @@ import { View, Text, TouchableOpacity, LayoutAnimation, InteractionManager, FlatList, ScrollView, ActivityIndicator } from 'react-native'; import { SafeAreaView } from 'react-navigation'; -import ShareExtension from 'react-native-share-extension'; +import ShareExtension from 'rn-extensions-share'; import { connect } from 'react-redux'; import Navigation from '../../lib/Navigation'; diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index e0b6335323..4945af5132 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; import { View, Text, TouchableOpacity, TextInput, Image } from 'react-native'; -import ShareExtension from 'react-native-share-extension'; +import ShareExtension from 'rn-extensions-share'; import { HeaderBackButton } from 'react-navigation'; import RNFetchBlob from 'rn-fetch-blob'; import * as mime from 'react-native-mime-types'; diff --git a/app/views/WithoutServersView.js b/app/views/WithoutServersView.js index 43a4f79dcc..952c8c2d07 100644 --- a/app/views/WithoutServersView.js +++ b/app/views/WithoutServersView.js @@ -2,7 +2,7 @@ import React from 'react'; import { StyleSheet, View, Text, TouchableOpacity } from 'react-native'; -import ShareExtension from 'react-native-share-extension'; +import ShareExtension from 'rn-extensions-share'; import I18n from '../i18n'; import { COLOR_WHITE, HEADER_BACK } from '../constants/colors'; diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 545234545d..880a11e256 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -558,7 +558,7 @@ 1E39C99C22A0AA0200D46C42 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; 1E39C99E22A0AA0200D46C42 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareRocketChatRN.m; sourceTree = ""; }; - 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/react-native-share-extension/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; + 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/rn-extensions-share/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNUserDefaults.xcodeproj; path = "../node_modules/rn-user-defaults/ios/RNUserDefaults.xcodeproj"; sourceTree = ""; }; 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; @@ -2033,7 +2033,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( - "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**", + "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(inherited)", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", @@ -2085,7 +2085,7 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( - "$(SRCROOT)/../node_modules/react-native-share-extension/ios/**", + "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(inherited)", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", "$(SRCROOT)/../node_modules/react-native-vector-icons/RNVectorIconsManager", diff --git a/package.json b/package.json index b4437ed781..7a277b8b1c 100644 --- a/package.json +++ b/package.json @@ -61,7 +61,6 @@ "react-native-responsive-ui": "^1.1.1", "react-native-screens": "^1.0.0-alpha.22", "react-native-scrollable-tab-view": "0.10.0", - "react-native-share-extension": "^2.0.0", "react-native-slider": "^0.11.0", "react-native-slowlog": "^1.0.2", "react-native-splash-screen": "^3.2.0", @@ -80,6 +79,7 @@ "redux-immutable-state-invariant": "^2.1.0", "redux-saga": "^0.16.2", "remove-markdown": "^0.3.0", + "rn-extensions-share": "^1.0.0", "rn-fetch-blob": "^0.10.15", "rn-user-defaults": "^1.3.5", "semver": "6.0.0", diff --git a/yarn.lock b/yarn.lock index 4814da2021..0dc160a186 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11649,11 +11649,6 @@ react-native-scrollable-tab-view@0.10.0: prop-types "^15.6.0" react-timer-mixin "^0.13.3" -react-native-share-extension@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-native-share-extension/-/react-native-share-extension-2.0.0.tgz#c645715ce6c937e1dd527c4df5635df89ca88a44" - integrity sha512-LWbyGd3Vu5m0TBvSado2NE4MJ5R3iRw4WpoT+6ptHNir19pM/inNQaFh+OiySLNNy5N058pFmWq3LFNA4DPZkg== - react-native-slider@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/react-native-slider/-/react-native-slider-0.11.0.tgz#b68a0bc43c8422b24cd57947cc5ac2bcdb58fadc" @@ -12564,6 +12559,11 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" +rn-extensions-share@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rn-extensions-share/-/rn-extensions-share-1.0.0.tgz#30a8be45ba0f45e3b4ea96e7b61bbefeff439332" + integrity sha512-GXcxZpxYEhBAPuksVcHJls/Ef0GfytSkXQ6NaFCrz0PB/+IyT3mOsS89kW/cNF5nVIKzGXseHF2czy0IlTPuHg== + rn-fetch-blob@^0.10.15: version "0.10.15" resolved "https://registry.yarnpkg.com/rn-fetch-blob/-/rn-fetch-blob-0.10.15.tgz#3526860c1c57e0bf4c09bdbe409c919264afffba" From 8e09c7cd57b381a53d295b4451dc32c810486036 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 25 Jun 2019 19:21:03 -0300 Subject: [PATCH 42/88] :sparkles: Add gallery video suport (iOS) --- app/views/ShareView/index.js | 2 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 2 +- yarn.lock | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 4945af5132..1072ee5c0c 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -82,7 +82,7 @@ export default class ShareView extends React.Component { bytesToSize = bits => `${ ((bits / 8) / 1048576).toFixed(2) }MB`; - isMedia = uri => uri.match(/^file:\/\//); + isMedia = uri => (uri || '').match(/^file:\/\//); _sendMessage = async() => { const { value } = this.state; diff --git a/ios/ShareRocketChatRN/Info.plist b/ios/ShareRocketChatRN/Info.plist index f3a28e14a5..926b25005c 100644 --- a/ios/ShareRocketChatRN/Info.plist +++ b/ios/ShareRocketChatRN/Info.plist @@ -42,7 +42,7 @@ NSExtensionActivationSupportsImageWithMaxCount 1 NSExtensionActivationSupportsMovieWithMaxCount - 0 + 1 NSExtensionActivationSupportsText NSExtensionActivationSupportsWebPageWithMaxCount diff --git a/package.json b/package.json index 7a277b8b1c..1a45d8f423 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "redux-immutable-state-invariant": "^2.1.0", "redux-saga": "^0.16.2", "remove-markdown": "^0.3.0", - "rn-extensions-share": "^1.0.0", + "rn-extensions-share": "^2.1.1", "rn-fetch-blob": "^0.10.15", "rn-user-defaults": "^1.3.5", "semver": "6.0.0", diff --git a/yarn.lock b/yarn.lock index 0dc160a186..f723ad414a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12559,10 +12559,10 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rn-extensions-share@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/rn-extensions-share/-/rn-extensions-share-1.0.0.tgz#30a8be45ba0f45e3b4ea96e7b61bbefeff439332" - integrity sha512-GXcxZpxYEhBAPuksVcHJls/Ef0GfytSkXQ6NaFCrz0PB/+IyT3mOsS89kW/cNF5nVIKzGXseHF2czy0IlTPuHg== +rn-extensions-share@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/rn-extensions-share/-/rn-extensions-share-2.1.1.tgz#e6f8dd589cd8cdbe35d1dfa6b2c144737719c0f0" + integrity sha512-kV2zvgB9siTXNO/xgS8gTs/JX3mWbMdgTiBd+zmGwOl8LVBPJ7AlWcesSLcnXgD8EpLyhnpUs/bwwHhsOWg0PA== rn-fetch-blob@^0.10.15: version "0.10.15" From 6866af3272f989974521b4f0d4193dbc4b527139 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 25 Jun 2019 20:01:33 -0300 Subject: [PATCH 43/88] :green_heart: Fix device-info --- ios/RocketChatRN.xcodeproj/project.pbxproj | 62 +++++++++++----------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 880a11e256..4f89ff35dd 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -51,9 +51,9 @@ 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */; }; 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 607D61161F325B7E00F639C4 /* libRealmReact.a */; }; 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C915320F39A8000C8F5EE /* libRNFetchBlob.a */; }; + 1E8173AF22C2DF3B0055BF1B /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E8173AC22C2DF320055BF1B /* libRNDeviceInfo.a */; }; 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; 1E81DEBC22B85A9400072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; - 1E9F96D222BD7307007655C7 /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E9F96CF22BD72F9007655C7 /* libRNDeviceInfo.a */; }; 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; }; 1EFBE83522AECB30000175EE /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A55F1C42236D541005109A0 /* custom.ttf */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; @@ -165,27 +165,27 @@ remoteGlobalIDString = 41B5DE301D0B505800949BD5; remoteInfo = ReactNativeShareExtension; }; - 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 134814201AA4EA6300B7C361; - remoteInfo = RNUserDefaults; - }; - 1E9F96CE22BD72F9007655C7 /* PBXContainerItemProxy */ = { + 1E8173AB22C2DF320055BF1B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */; + containerPortal = 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */; proxyType = 2; remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; remoteInfo = RNDeviceInfo; }; - 1E9F96D022BD72F9007655C7 /* PBXContainerItemProxy */ = { + 1E8173AD22C2DF320055BF1B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */; + containerPortal = 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */; proxyType = 2; remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; remoteInfo = "RNDeviceInfo-tvOS"; }; + 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 134814201AA4EA6300B7C361; + remoteInfo = RNUserDefaults; + }; 3DAD3E831DF850E9000B6D8A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 00C302BB1ABCB91800DB3ED1 /* RCTImage.xcodeproj */; @@ -560,8 +560,8 @@ 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareRocketChatRN.m; sourceTree = ""; }; 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/rn-extensions-share/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; + 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNUserDefaults.xcodeproj; path = "../node_modules/rn-user-defaults/ios/RNUserDefaults.xcodeproj"; sourceTree = ""; }; - 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1EA14C3022A16D7B00070029 /* ShareRocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareRocketChatRN.entitlements; sourceTree = ""; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; 22A8B76C8EBA443BB97CE82D /* RNVectorIcons.xcodeproj */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "wrapper.pb-project"; name = RNVectorIcons.xcodeproj; path = "../node_modules/react-native-vector-icons/RNVectorIcons.xcodeproj"; sourceTree = ""; }; @@ -644,7 +644,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1E9F96D222BD7307007655C7 /* libRNDeviceInfo.a in Frameworks */, + 1E8173AF22C2DF3B0055BF1B /* libRNDeviceInfo.a in Frameworks */, 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */, 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, @@ -816,19 +816,19 @@ name = Products; sourceTree = ""; }; - 1E81DE7922B85A8C00072BF7 /* Products */ = { + 1E8173A722C2DF320055BF1B /* Products */ = { isa = PBXGroup; children = ( - 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */, + 1E8173AC22C2DF320055BF1B /* libRNDeviceInfo.a */, + 1E8173AE22C2DF320055BF1B /* libRNDeviceInfo-tvOS.a */, ); name = Products; sourceTree = ""; }; - 1E9F96CA22BD72F9007655C7 /* Products */ = { + 1E81DE7922B85A8C00072BF7 /* Products */ = { isa = PBXGroup; children = ( - 1E9F96CF22BD72F9007655C7 /* libRNDeviceInfo.a */, - 1E9F96D122BD72F9007655C7 /* libRNDeviceInfo-tvOS.a */, + 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */, ); name = Products; sourceTree = ""; @@ -940,7 +940,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */, + 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */, 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */, 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */, 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, @@ -1260,8 +1260,8 @@ ProjectRef = C21010507E5B4B37BA0E4C9D /* RNAudio.xcodeproj */; }, { - ProductGroup = 1E9F96CA22BD72F9007655C7 /* Products */; - ProjectRef = 1E9F96C922BD72F9007655C7 /* RNDeviceInfo.xcodeproj */; + ProductGroup = 1E8173A722C2DF320055BF1B /* Products */; + ProjectRef = 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */; }, { ProductGroup = 7A8C912120F39A8000C8F5EE /* Products */; @@ -1386,25 +1386,25 @@ remoteRef = 1E39C9F422A0AA8700D46C42 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */ = { + 1E8173AC22C2DF320055BF1B /* libRNDeviceInfo.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libRNUserDefaults.a; - remoteRef = 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */; + path = libRNDeviceInfo.a; + remoteRef = 1E8173AB22C2DF320055BF1B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E9F96CF22BD72F9007655C7 /* libRNDeviceInfo.a */ = { + 1E8173AE22C2DF320055BF1B /* libRNDeviceInfo-tvOS.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libRNDeviceInfo.a; - remoteRef = 1E9F96CE22BD72F9007655C7 /* PBXContainerItemProxy */; + path = "libRNDeviceInfo-tvOS.a"; + remoteRef = 1E8173AD22C2DF320055BF1B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E9F96D122BD72F9007655C7 /* libRNDeviceInfo-tvOS.a */ = { + 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = "libRNDeviceInfo-tvOS.a"; - remoteRef = 1E9F96D022BD72F9007655C7 /* PBXContainerItemProxy */; + path = libRNUserDefaults.a; + remoteRef = 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 3DAD3E841DF850E9000B6D8A /* libRCTImage-tvOS.a */ = { From 23255f044d0e7e44bcf720a5789fa79da4d3a734 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 27 Jun 2019 19:40:16 -0300 Subject: [PATCH 44/88] :green_heart: DeviceInfo-ShareRocketChatRN on podfile --- ios/Podfile | 23 + ios/Podfile.lock | 2 +- ios/Pods/Manifest.lock | 2 +- ios/Pods/Pods.xcodeproj/project.pbxproj | 1107 +++++++++-------- ...hareRocketChatRN-acknowledgements.markdown | 357 ++++++ ...s-ShareRocketChatRN-acknowledgements.plist | 393 ++++++ .../Pods-ShareRocketChatRN.debug.xcconfig | 4 +- .../Pods-ShareRocketChatRN.release.xcconfig | 4 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 49 +- 9 files changed, 1391 insertions(+), 550 deletions(-) diff --git a/ios/Podfile b/ios/Podfile index dca9c3872c..ebbb47f2b6 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -51,7 +51,30 @@ target 'RocketChatRN' do end target 'ShareRocketChatRN' do + + rn_path = '../node_modules/react-native' + + pod 'React', path: rn_path, subspecs: [ + 'Core', + 'RCTActionSheet', + 'RCTAnimation', +# 'RCTGeolocation', + 'RCTImage', + 'RCTLinkingIOS', + 'RCTNetwork', + 'RCTSettings', + 'RCTText', + 'RCTVibration', + 'RCTWebSocket' + ] + pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info' + + pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga' + pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec' + pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec' + pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' + pod 'Firebase/Core', '~> 5.20.1' pod 'Fabric', '~> 1.9.0' pod 'Crashlytics', '~> 3.12.0' diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 17a9a76a42..ab4c5faec6 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -355,6 +355,6 @@ SPEC CHECKSUMS: UMTaskManagerInterface: 296793ab2a7e181fe5ebe2ba9b40ae208ab4b8fa yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64 -PODFILE CHECKSUM: 0317bf26d70f0768658cd2d28919333d7dd6dd60 +PODFILE CHECKSUM: 9a5c81ad10e0436e7fe9e79ad387c5f77ea919c8 COCOAPODS: 1.6.2 diff --git a/ios/Pods/Manifest.lock b/ios/Pods/Manifest.lock index 17a9a76a42..ab4c5faec6 100644 --- a/ios/Pods/Manifest.lock +++ b/ios/Pods/Manifest.lock @@ -355,6 +355,6 @@ SPEC CHECKSUMS: UMTaskManagerInterface: 296793ab2a7e181fe5ebe2ba9b40ae208ab4b8fa yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64 -PODFILE CHECKSUM: 0317bf26d70f0768658cd2d28919333d7dd6dd60 +PODFILE CHECKSUM: 9a5c81ad10e0436e7fe9e79ad387c5f77ea919c8 COCOAPODS: 1.6.2 diff --git a/ios/Pods/Pods.xcodeproj/project.pbxproj b/ios/Pods/Pods.xcodeproj/project.pbxproj index 2b60321420..a1f8374181 100644 --- a/ios/Pods/Pods.xcodeproj/project.pbxproj +++ b/ios/Pods/Pods.xcodeproj/project.pbxproj @@ -270,7 +270,6 @@ 18FB4261493C670629A85992F786101C /* Wrappers.pbobjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CB3EF08CDD1CF865F3C42A5BB449708 /* Wrappers.pbobjc.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1B5BCA7CE5BC8921E2C38DF493C52578 /* FIRErrorCode.h in Headers */ = {isa = PBXBuildFile; fileRef = B18FD72A3EB5A96181A5E65A20158C48 /* FIRErrorCode.h */; settings = {ATTRIBUTES = (Project, ); }; }; 1B9046261DFEF117ACDC9B34FA8DEE06 /* UMLogHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = A14A6093EFD30BB027DD8CCF002590BD /* UMLogHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C3C6F89AD9488770F3EC26780A2983F /* Pods-ShareRocketChatRN-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C6494BF3BBF96C9957F9676F8B880E2 /* Pods-ShareRocketChatRN-dummy.m */; }; 1DB06C995ABDDD738BFD40217EC07EF7 /* FIRLogger.m in Sources */ = {isa = PBXBuildFile; fileRef = A7FB755B6494E4CBB67B357467B03FBB /* FIRLogger.m */; }; 1E08C088A919FA2420743DA08223E0BC /* ScopeGuard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BD302C365DF1C82AA1668E93CD114EE4 /* ScopeGuard.cpp */; settings = {COMPILER_FLAGS = "-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1"; }; }; 1E0AE700C88768E5EDA7B4563BC1A3A3 /* cached-powers.cc in Sources */ = {isa = PBXBuildFile; fileRef = 444245D3CCBAB1A0DEEB6D89589ABEE7 /* cached-powers.cc */; }; @@ -555,6 +554,7 @@ B48B175BF8D11872F05DD9B0BE7A5A02 /* pb_encode.c in Sources */ = {isa = PBXBuildFile; fileRef = A67A93040C93F21781D539C991CCEE83 /* pb_encode.c */; settings = {COMPILER_FLAGS = "-fno-objc-arc -fno-objc-arc"; }; }; B538A02010648DCAA2E9D5FE3BB0C779 /* RNSScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 0107A3ABF10D02533CF3C32C99548012 /* RNSScreen.m */; }; B6CE63A97BACE41020A26A9FBDA65E4E /* GPBDescriptor_PackagePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 50211D8651BDEECDCF337C2943949119 /* GPBDescriptor_PackagePrivate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B7AC9EB3715FB6B9165A39D1A07D6F08 /* Pods-ShareRocketChatRN-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C6494BF3BBF96C9957F9676F8B880E2 /* Pods-ShareRocketChatRN-dummy.m */; }; B7D9F8D1971A3797151BCBDF74824208 /* nanopb-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C26FDE4600EFD11466856933697391CE /* nanopb-dummy.m */; }; B804FC8AD528D429E085A9B52631B33D /* diy-fp.cc in Sources */ = {isa = PBXBuildFile; fileRef = 16425F137AEAF28E31DBF3D7192A5571 /* diy-fp.cc */; }; B83D4E85EE603B0A942FBDF71D3DD36E /* QBSlomoIconView.h in Headers */ = {isa = PBXBuildFile; fileRef = 256F73640791D9E203ABC811B5F47544 /* QBSlomoIconView.h */; settings = {ATTRIBUTES = (Project, ); }; }; @@ -724,13 +724,6 @@ remoteGlobalIDString = 7C36E7C600F8DE2BE1819059C80F2182; remoteInfo = GoogleIDFASupport; }; - 0A435E29CDF21776238C3E1BA3AC665D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D35E9EC86D36A4C8BC1704199FDB3552; - remoteInfo = Fabric; - }; 0AA214FA59848B00F56B6EFD83FC82F2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -808,6 +801,13 @@ remoteGlobalIDString = 66641B93FAF80FF325B2D7B4AD85056F; remoteInfo = "boost-for-react-native"; }; + 1F3068894AD4D72E4C1BE3418381C291 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 368FB7FBA34E3323BB42D13325551C95; + remoteInfo = FirebaseCore; + }; 212543D9458C15CC9610D5046104C27E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -822,6 +822,13 @@ remoteGlobalIDString = 1DBC3090C8BE77C9F4202B0421E0791E; remoteInfo = glog; }; + 25BE353C6D5F30F874A7C1694A209801 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2543734D0A332B2588202904B99CC151; + remoteInfo = nanopb; + }; 262B4CED593485DF6B54938DED848FD9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -850,6 +857,13 @@ remoteGlobalIDString = 1ABBF6F89787BBEDF49B4636ADB45587; remoteInfo = FirebaseAnalytics; }; + 2C0606232E0B42E43B9ADF9864EFBF13 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E3A3FB14CD4ACD21565913CF4A4B097C; + remoteInfo = GTMSessionFetcher; + }; 2DD630D042882F3D5E45FCF4144EEABE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -857,6 +871,13 @@ remoteGlobalIDString = B11E238094137347E8790BFEB1BEF01F; remoteInfo = EXWebBrowser; }; + 2FA2EBC0B04187DD94479196DEA013CB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 645DEAED47D48A55A088EE2AD4BCABE9; + remoteInfo = DoubleConversion; + }; 30E4AFE91AFE993916F5FF5C06DD35DD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -892,12 +913,19 @@ remoteGlobalIDString = 9700E82DC1DD9AEE8964696B9FDCD4D6; remoteInfo = RSKImageCropper; }; - 3AC3659215B426CC135312FAA756AE8F /* PBXContainerItemProxy */ = { + 3AB66399BABD2C2613795405724BE628 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F1DE11E9221F196A8A9D3464F96A345A; - remoteInfo = Protobuf; + remoteGlobalIDString = 97C8CD7E4179727E4F374CABD338D2BB; + remoteInfo = Firebase; + }; + 3B5F3BF03BB33127186914A4F8DB1094 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7C36E7C600F8DE2BE1819059C80F2182; + remoteInfo = GoogleIDFASupport; }; 3CC2EA99A4F73187F7A2CD42265AD7C9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -934,20 +962,6 @@ remoteGlobalIDString = 81D51EABFACD0DA18145BA0F31509098; remoteInfo = yoga; }; - 412D91C5D496EBD6B21CE12024AF94EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 368FB7FBA34E3323BB42D13325551C95; - remoteInfo = FirebaseCore; - }; - 4399EC0C081230E95721D079EF0B39BC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 97C8CD7E4179727E4F374CABD338D2BB; - remoteInfo = Firebase; - }; 466638C92679EA14EB05EAC73934204D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -976,6 +990,13 @@ remoteGlobalIDString = 368FB7FBA34E3323BB42D13325551C95; remoteInfo = FirebaseCore; }; + 4987EE2263296A6FAE6187E970EF66E4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 39E0403E3ACE39BC0D878D82FAB8F012; + remoteInfo = FirebaseABTesting; + }; 4A3199969780A43330E63EF7CC771666 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -983,19 +1004,19 @@ remoteGlobalIDString = A16170A1CADE5594CBF696AE060331E4; remoteInfo = UMCameraInterface; }; - 576F0658721FA3498AB10CF09349FDA6 /* PBXContainerItemProxy */ = { + 4D9664BCCF18C189C83C942A612FA44E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 8601F7B19425496C5312C6F111D6E777; - remoteInfo = UMCore; + remoteGlobalIDString = AB021401ADE9E1431240BBA948E7965E; + remoteInfo = GoogleAppMeasurement; }; - 59A324572B18684F66C07AF7F348D066 /* PBXContainerItemProxy */ = { + 576F0658721FA3498AB10CF09349FDA6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 586739D116442BA7FCD2EC0353EA0FA4; - remoteInfo = FirebaseInstanceID; + remoteGlobalIDString = 8601F7B19425496C5312C6F111D6E777; + remoteInfo = UMCore; }; 5A9363F4FD6B77942B665046B14395CF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -1011,12 +1032,12 @@ remoteGlobalIDString = 5AAD465FECAE9083F45E3DB9252A8302; remoteInfo = FirebaseRemoteConfig; }; - 5C507B2568C38B4E1A3D37956F4A4F30 /* PBXContainerItemProxy */ = { + 5C6C5CC1DBD74AB4BD37F65A634BA510 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E3A3FB14CD4ACD21565913CF4A4B097C; - remoteInfo = GTMSessionFetcher; + remoteGlobalIDString = 000000006B30; + remoteInfo = React; }; 5D4696B5DC0410EBB318096CDEA1B03B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -1025,13 +1046,6 @@ remoteGlobalIDString = 7969F0F17682790DCAF63BC9AF2176ED; remoteInfo = GoogleUtilities; }; - 5F944F2C6075941E0C5EC713556F29C3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = ABA9A411BB5A359862E5F1AA6238278E; - remoteInfo = Crashlytics; - }; 5FDD7E408B08AF566972547CAF4A8B67 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1074,12 +1088,12 @@ remoteGlobalIDString = 586739D116442BA7FCD2EC0353EA0FA4; remoteInfo = FirebaseInstanceID; }; - 75370CD2CE4413B5B85CA9B06C2A11D1 /* PBXContainerItemProxy */ = { + 73B55AA3A85FDB3671051D2287B32BFD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 1ABBF6F89787BBEDF49B4636ADB45587; - remoteInfo = FirebaseAnalytics; + remoteGlobalIDString = 66641B93FAF80FF325B2D7B4AD85056F; + remoteInfo = "boost-for-react-native"; }; 75709DA4236EE310812BED9AE5852B6C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -1095,13 +1109,6 @@ remoteGlobalIDString = 66BD78D808E807402FBF77225857065B; remoteInfo = RNImageCropPicker; }; - 811FE9F28117CA3E4E2899FDB551F09B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7969F0F17682790DCAF63BC9AF2176ED; - remoteInfo = GoogleUtilities; - }; 812726FDCEB51115850FD00FF42B84F5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1172,12 +1179,26 @@ remoteGlobalIDString = 7969F0F17682790DCAF63BC9AF2176ED; remoteInfo = GoogleUtilities; }; - 98F68B056E821292CFE2E6BF8EB99106 /* PBXContainerItemProxy */ = { + 96464AA1535CCBFA7B894CAFCA30F3A9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5AAD465FECAE9083F45E3DB9252A8302; - remoteInfo = FirebaseRemoteConfig; + remoteGlobalIDString = ABA9A411BB5A359862E5F1AA6238278E; + remoteInfo = Crashlytics; + }; + 98482A628427821074589E341896F30A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 2204E533997A82F0D6F7AD16CE4C7106; + remoteInfo = Folly; + }; + 9850684ADF4536DB986C5EB64C8159DE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 32F8EA730FE2005197F54338D2C236AC; + remoteInfo = GoogleToolboxForMac; }; 9A2D94180C1D8549B209C4F116F4FC88 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -1193,6 +1214,13 @@ remoteGlobalIDString = 586739D116442BA7FCD2EC0353EA0FA4; remoteInfo = FirebaseInstanceID; }; + 9F22BAB5E403097A503C5BACF37CA460 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 586739D116442BA7FCD2EC0353EA0FA4; + remoteInfo = FirebaseInstanceID; + }; 9F3D4A1B526858AC9F1D87DD68C4EC29 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1214,6 +1242,13 @@ remoteGlobalIDString = 368FB7FBA34E3323BB42D13325551C95; remoteInfo = FirebaseCore; }; + A315E65CE1E0E4CB091F9216B1BD2672 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 81D51EABFACD0DA18145BA0F31509098; + remoteInfo = yoga; + }; A560693278F98FFD671DF28C1A701DFB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1270,26 +1305,19 @@ remoteGlobalIDString = 97DD9549F2442B64709902FC69B84881; remoteInfo = RNScreens; }; - BA8419CF135B3BE6EDE18A3AFE6A7FCB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 000000006B30; - remoteInfo = React; - }; - BFE6F4E08A9FE59977F6DE1309A47916 /* PBXContainerItemProxy */ = { + B78A0A3FEDE380AA0B1E8B951872C2D2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7C36E7C600F8DE2BE1819059C80F2182; - remoteInfo = GoogleIDFASupport; + remoteGlobalIDString = 1DBC3090C8BE77C9F4202B0421E0791E; + remoteInfo = glog; }; - C012FCE966232551CAE2264510F53E2A /* PBXContainerItemProxy */ = { + BA8419CF135B3BE6EDE18A3AFE6A7FCB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 39E0403E3ACE39BC0D878D82FAB8F012; - remoteInfo = FirebaseABTesting; + remoteGlobalIDString = 000000006B30; + remoteInfo = React; }; C6E67451067E44E2BAF9B3D37F53D047 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -1305,13 +1333,6 @@ remoteGlobalIDString = 1ABBF6F89787BBEDF49B4636ADB45587; remoteInfo = FirebaseAnalytics; }; - C9282A673DE42C34A281DF501B99604D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 32F8EA730FE2005197F54338D2C236AC; - remoteInfo = GoogleToolboxForMac; - }; CA14A5C4496877A1588F1ACEAA500D70 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1347,6 +1368,13 @@ remoteGlobalIDString = 368FB7FBA34E3323BB42D13325551C95; remoteInfo = FirebaseCore; }; + D2642A9CC30A873D9336660485F30077 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7DD31C1AC5FA3D0ABD1746EFF4D08FCA; + remoteInfo = RNDeviceInfo; + }; D3CD5D55A8E05F40A3C4A7EBA292BEE5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1368,13 +1396,6 @@ remoteGlobalIDString = AB021401ADE9E1431240BBA948E7965E; remoteInfo = GoogleAppMeasurement; }; - D710CFA5948B177154C1ACE0599E0551 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 42F7AF66FD1178857DC3A2834552BE76; - remoteInfo = FirebasePerformance; - }; D9C92E70FB1DB238B6BEDDF8C6B1D814 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1396,6 +1417,13 @@ remoteGlobalIDString = 035EBFD13B662A74505BB1086EC1F0D6; remoteInfo = UMImageLoaderInterface; }; + E3DA3FD815A299E4B44A37FFD83F36FC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 42F7AF66FD1178857DC3A2834552BE76; + remoteInfo = FirebasePerformance; + }; E460B2E3824221A946E41A5895D93B02 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1417,6 +1445,13 @@ remoteGlobalIDString = 000000006B30; remoteInfo = React; }; + E72F6B6AD9EE0E49C1305E1E1E1DB257 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5AAD465FECAE9083F45E3DB9252A8302; + remoteInfo = FirebaseRemoteConfig; + }; E8370994DFB9580E9A73D8148D2F6D2A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1431,12 +1466,12 @@ remoteGlobalIDString = FD0F4E74C14C4B5B552686BD9576466F; remoteInfo = EXFileSystem; }; - EE8291B13D953FA4E0760ABCB228ED24 /* PBXContainerItemProxy */ = { + E9F32AFB1232B80C26B9929877A1A702 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = AB021401ADE9E1431240BBA948E7965E; - remoteInfo = GoogleAppMeasurement; + remoteGlobalIDString = 7969F0F17682790DCAF63BC9AF2176ED; + remoteInfo = GoogleUtilities; }; EEBBFE74636D6BC7E8D380B4DBDBC621 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -1445,6 +1480,13 @@ remoteGlobalIDString = 32F8EA730FE2005197F54338D2C236AC; remoteInfo = GoogleToolboxForMac; }; + EFAED55A3773814FB6F281AFA981BE4C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D35E9EC86D36A4C8BC1704199FDB3552; + remoteInfo = Fabric; + }; F0930095AC4715998CB9B7036E73B726 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -1452,12 +1494,12 @@ remoteGlobalIDString = 1DBC3090C8BE77C9F4202B0421E0791E; remoteInfo = glog; }; - F3FAE919AB8625BAAF1851A93EBD8B17 /* PBXContainerItemProxy */ = { + F1268A4BF93A1703CE4F1E552418051D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 2543734D0A332B2588202904B99CC151; - remoteInfo = nanopb; + remoteGlobalIDString = 1ABBF6F89787BBEDF49B4636ADB45587; + remoteInfo = FirebaseAnalytics; }; F5230064930769D695E37609DCAA1CE0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -1466,6 +1508,13 @@ remoteGlobalIDString = 2543734D0A332B2588202904B99CC151; remoteInfo = nanopb; }; + F7645965D7AAE6A72378FDC8B615DE8E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1DE11E9221F196A8A9D3464F96A345A; + remoteInfo = Protobuf; + }; F7D7760026EAB6826DEE69AEDDC2A369 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -2639,6 +2688,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4D873812E9C0B837BDE81D49BC33268D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 68E4DC721715B13364B7CFA56B002488 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -2716,13 +2772,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - CC01B93DDB1914892D01A04E14D2FC62 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; D5160AC8D9E9883FF9CDAFE6359FF22E /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -5666,6 +5715,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 62F395F8A8E749BC17D96C28B1AB5C53 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 66ADEED25B5D55B9C77EF441435D4975 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -5697,13 +5753,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 7F7401E1BBB5A666E9839C19D03480EF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 86443166406C6DC2E36DEAA89F3D06BE /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -6427,39 +6476,6 @@ productReference = 881E68F0BAFF1089529EBD64A320E525 /* libPods-RocketChatRN.a */; productType = "com.apple.product-type.library.static"; }; - CD6B9B056FC197A3115BE73F0EA6D140 /* Pods-ShareRocketChatRN */ = { - isa = PBXNativeTarget; - buildConfigurationList = 91FAF02B3A41D5093EAC4B32162F594F /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */; - buildPhases = ( - 7F7401E1BBB5A666E9839C19D03480EF /* Headers */, - 30BA86BA2F9174C37970E36E028F1606 /* Sources */, - CC01B93DDB1914892D01A04E14D2FC62 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 464F75AAA2C0DB7696715ADBD060DE32 /* PBXTargetDependency */, - 25DD171E7FF739D63382CBC766F90966 /* PBXTargetDependency */, - 29EA5E08B6FAA0A6A4ABCDB82B3066CF /* PBXTargetDependency */, - AAF4543354531F4FDB586FAE3E3BA9F9 /* PBXTargetDependency */, - 38FC119249E71B4A0AF18CE97770A0EF /* PBXTargetDependency */, - 152AD81BF7AC1ED31F0E5EC9FA61F342 /* PBXTargetDependency */, - 8A0737855B76D72CC55A3743D6AC9262 /* PBXTargetDependency */, - E84A45BF16329BD1B3647C862103932B /* PBXTargetDependency */, - 3A5AE5BA22E8600E8B81E3D4F175BD6D /* PBXTargetDependency */, - D61AE925A4AA7518DC4B51442792E561 /* PBXTargetDependency */, - F94A1CBF2D68C6C93F49DCF5B9961D4F /* PBXTargetDependency */, - 0DD30CD9E10C522A3DB86C04E3758CC6 /* PBXTargetDependency */, - 8E814F25F678CE8AF36174535EEF7017 /* PBXTargetDependency */, - B2B55480124EF7F333A08111E8189188 /* PBXTargetDependency */, - 4D85A47ED94479B0BD0148DD053CDD37 /* PBXTargetDependency */, - 1D7A3F6F12A06A296A53EA05184C43B2 /* PBXTargetDependency */, - ); - name = "Pods-ShareRocketChatRN"; - productName = "Pods-ShareRocketChatRN"; - productReference = 36B928D7B4BF7A5F73102F22B8C28902 /* libPods-ShareRocketChatRN.a */; - productType = "com.apple.product-type.library.static"; - }; E07EA1A35FBB3A986F484EB01CDD5527 /* EXPermissions */ = { isa = PBXNativeTarget; buildConfigurationList = 694A8CE4B2F3D4A51F73B435FF654E3C /* Build configuration list for PBXNativeTarget "EXPermissions" */; @@ -6496,6 +6512,46 @@ productReference = BC5D3BF01CDAB84301BBF1733B49EFF6 /* libGTMSessionFetcher.a */; productType = "com.apple.product-type.library.static"; }; + EA610EE1C2AF40ED6E78CB8DDC51836C /* Pods-ShareRocketChatRN */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3B3E3692FDC9994247F65BD145818848 /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */; + buildPhases = ( + 62F395F8A8E749BC17D96C28B1AB5C53 /* Headers */, + B3BC9C9930B91FDC324A68E00E0B7DC8 /* Sources */, + 4D873812E9C0B837BDE81D49BC33268D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 65EFFCE753F50F6682C6F072A14FCB18 /* PBXTargetDependency */, + 52B6404986C8A6ED662B2E760350A9C9 /* PBXTargetDependency */, + 4E95331704550F0683DC64C380B6EA02 /* PBXTargetDependency */, + D1284FEAC7253C13402A8CF21CF204C5 /* PBXTargetDependency */, + 64839844F7F9144AB562E741627FDB4A /* PBXTargetDependency */, + 7FA7E2E86A099C4611B1B339546B5546 /* PBXTargetDependency */, + 97D724F8216871FE8FAE9C18A91ED44F /* PBXTargetDependency */, + 1DC67D496D022949DE40E652ED525CF8 /* PBXTargetDependency */, + 890A3C84CF5370647FD5C3B68FC26A7B /* PBXTargetDependency */, + A4134FBA5F45D74098E2D7772588B336 /* PBXTargetDependency */, + F051F20681B32861212D3ACE032F4759 /* PBXTargetDependency */, + ADD945EAD878603A828321EC3C15B3EC /* PBXTargetDependency */, + 9B6B4CCE14E4A50F4951463C50EEB6FD /* PBXTargetDependency */, + EB20E68DDE3802D77BA84B4691E284A3 /* PBXTargetDependency */, + A5E141F3B9BB0391710120465E0FCBAF /* PBXTargetDependency */, + 0188111D440826B47C97A9229EBD1E87 /* PBXTargetDependency */, + 7AE594DF7B92721AA29D7D4A563188EE /* PBXTargetDependency */, + DED7C5C6D6A41179957459F0BF1D92F2 /* PBXTargetDependency */, + E0903B1728A8A6F8AF46172033B06268 /* PBXTargetDependency */, + 4EEF8C7352B78D9D6EB42A752B4273A5 /* PBXTargetDependency */, + 4EBE5BAC8585ED2542FAB80FBB71E860 /* PBXTargetDependency */, + F97D92C088391219F87559D96FCCEF2B /* PBXTargetDependency */, + DCB92E7F5D201DA4CE43A70C1CE0FA5D /* PBXTargetDependency */, + ); + name = "Pods-ShareRocketChatRN"; + productName = "Pods-ShareRocketChatRN"; + productReference = 36B928D7B4BF7A5F73102F22B8C28902 /* libPods-ShareRocketChatRN.a */; + productType = "com.apple.product-type.library.static"; + }; F1DE11E9221F196A8A9D3464F96A345A /* Protobuf */ = { isa = PBXNativeTarget; buildConfigurationList = 14DC05D6DD2DB32247F6236BA580DBBC /* Build configuration list for PBXNativeTarget "Protobuf" */; @@ -6578,7 +6634,7 @@ E3A3FB14CD4ACD21565913CF4A4B097C /* GTMSessionFetcher */, 2543734D0A332B2588202904B99CC151 /* nanopb */, B5A17B1DC1E701F1850BEBB7503ACDE9 /* Pods-RocketChatRN */, - CD6B9B056FC197A3115BE73F0EA6D140 /* Pods-ShareRocketChatRN */, + EA610EE1C2AF40ED6E78CB8DDC51836C /* Pods-ShareRocketChatRN */, F1DE11E9221F196A8A9D3464F96A345A /* Protobuf */, 7C859C22F7E4FA957EB383ABAA0D7B14 /* QBImagePickerController */, 7FA8E662AD6AD0FCA3E15B25A7E8AF45 /* QBImagePickerController-QBImagePicker */, @@ -6692,14 +6748,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 30BA86BA2F9174C37970E36E028F1606 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1C3C6F89AD9488770F3EC26780A2983F /* Pods-ShareRocketChatRN-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 332A9012E8FCD1A50BBA951526029AB9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -6922,6 +6970,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B3BC9C9930B91FDC324A68E00E0B7DC8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B7AC9EB3715FB6B9165A39D1A07D6F08 /* Pods-ShareRocketChatRN-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B4D80EE35347A014A9EA7DDEAD443E32 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -7052,6 +7108,12 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 0188111D440826B47C97A9229EBD1E87 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleUtilities; + target = 7969F0F17682790DCAF63BC9AF2176ED /* GoogleUtilities */; + targetProxy = E9F32AFB1232B80C26B9929877A1A702 /* PBXContainerItemProxy */; + }; 0266CF203AC4B81A645C23337045F351 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMImageLoaderInterface; @@ -7104,12 +7166,6 @@ target = 9700E82DC1DD9AEE8964696B9FDCD4D6 /* RSKImageCropper */; targetProxy = 2922361EADB2F93697937C80532271B9 /* PBXContainerItemProxy */; }; - 0DD30CD9E10C522A3DB86C04E3758CC6 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleIDFASupport; - target = 7C36E7C600F8DE2BE1819059C80F2182 /* GoogleIDFASupport */; - targetProxy = BFE6F4E08A9FE59977F6DE1309A47916 /* PBXContainerItemProxy */; - }; 0F0A8B73246A3F2340DC1E516950CCBF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCore; @@ -7128,12 +7184,6 @@ target = 7C36E7C600F8DE2BE1819059C80F2182 /* GoogleIDFASupport */; targetProxy = 09EA0ED9E8C921741D2D81B87D332C9E /* PBXContainerItemProxy */; }; - 152AD81BF7AC1ED31F0E5EC9FA61F342 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseCore; - target = 368FB7FBA34E3323BB42D13325551C95 /* FirebaseCore */; - targetProxy = 412D91C5D496EBD6B21CE12024AF94EF /* PBXContainerItemProxy */; - }; 15D5DC6D54EDFCCE801AF55317683059 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = GoogleAppMeasurement; @@ -7164,18 +7214,18 @@ target = 1ABBF6F89787BBEDF49B4636ADB45587 /* FirebaseAnalytics */; targetProxy = 87D02EAE1DD3CC8AB9B8D646D27548A4 /* PBXContainerItemProxy */; }; - 1D7A3F6F12A06A296A53EA05184C43B2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = nanopb; - target = 2543734D0A332B2588202904B99CC151 /* nanopb */; - targetProxy = F3FAE919AB8625BAAF1851A93EBD8B17 /* PBXContainerItemProxy */; - }; - 1DC357574FB69D9584990DAE6010C34C /* PBXTargetDependency */ = { + 1DC357574FB69D9584990DAE6010C34C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = QBImagePickerController; target = 7C859C22F7E4FA957EB383ABAA0D7B14 /* QBImagePickerController */; targetProxy = 068E4F97FC5DCE562E29D8E3C1D89EBD /* PBXContainerItemProxy */; }; + 1DC67D496D022949DE40E652ED525CF8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseInstanceID; + target = 586739D116442BA7FCD2EC0353EA0FA4 /* FirebaseInstanceID */; + targetProxy = 9F22BAB5E403097A503C5BACF37CA460 /* PBXContainerItemProxy */; + }; 1E3461624F1C1BD8EEF8D6DC57E01D26 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMSensorsInterface; @@ -7194,12 +7244,6 @@ target = 66BD78D808E807402FBF77225857065B /* RNImageCropPicker */; targetProxy = 77CED8C7FE52765F379C74A501DD7F00 /* PBXContainerItemProxy */; }; - 25DD171E7FF739D63382CBC766F90966 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Fabric; - target = D35E9EC86D36A4C8BC1704199FDB3552 /* Fabric */; - targetProxy = 0A435E29CDF21776238C3E1BA3AC665D /* PBXContainerItemProxy */; - }; 25FF94CB1F0E40824E1E6AF9F1F0421A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMCore; @@ -7212,12 +7256,6 @@ target = 1DBC3090C8BE77C9F4202B0421E0791E /* glog */; targetProxy = 213564F23047B277074FF21BECE2730B /* PBXContainerItemProxy */; }; - 29EA5E08B6FAA0A6A4ABCDB82B3066CF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Firebase; - target = 97C8CD7E4179727E4F374CABD338D2BB /* Firebase */; - targetProxy = 4399EC0C081230E95721D079EF0B39BC /* PBXContainerItemProxy */; - }; 2D9CDA0A43F5A025B9A74048A4414CAD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = QBImagePickerController; @@ -7272,18 +7310,6 @@ target = 1DBC3090C8BE77C9F4202B0421E0791E /* glog */; targetProxy = F0930095AC4715998CB9B7036E73B726 /* PBXContainerItemProxy */; }; - 38FC119249E71B4A0AF18CE97770A0EF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseAnalytics; - target = 1ABBF6F89787BBEDF49B4636ADB45587 /* FirebaseAnalytics */; - targetProxy = 75370CD2CE4413B5B85CA9B06C2A11D1 /* PBXContainerItemProxy */; - }; - 3A5AE5BA22E8600E8B81E3D4F175BD6D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FirebaseRemoteConfig; - target = 5AAD465FECAE9083F45E3DB9252A8302 /* FirebaseRemoteConfig */; - targetProxy = 98F68B056E821292CFE2E6BF8EB99106 /* PBXContainerItemProxy */; - }; 3FD0607DDBDC01E6CFDA9FFAD045CA25 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Protobuf; @@ -7308,12 +7334,6 @@ target = 7969F0F17682790DCAF63BC9AF2176ED /* GoogleUtilities */; targetProxy = 94ACBB797039D918B9290B94A50A3F36 /* PBXContainerItemProxy */; }; - 464F75AAA2C0DB7696715ADBD060DE32 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Crashlytics; - target = ABA9A411BB5A359862E5F1AA6238278E /* Crashlytics */; - targetProxy = 5F944F2C6075941E0C5EC713556F29C3 /* PBXContainerItemProxy */; - }; 48BC79B26DD14301F01ADB1CD8287828 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = UMFontInterface; @@ -7326,11 +7346,23 @@ target = 97DD9549F2442B64709902FC69B84881 /* RNScreens */; targetProxy = B4541328A082FF7C2F700D1957070D3B /* PBXContainerItemProxy */; }; - 4D85A47ED94479B0BD0148DD053CDD37 /* PBXTargetDependency */ = { + 4E95331704550F0683DC64C380B6EA02 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Protobuf; - target = F1DE11E9221F196A8A9D3464F96A345A /* Protobuf */; - targetProxy = 3AC3659215B426CC135312FAA756AE8F /* PBXContainerItemProxy */; + name = Fabric; + target = D35E9EC86D36A4C8BC1704199FDB3552 /* Fabric */; + targetProxy = EFAED55A3773814FB6F281AFA981BE4C /* PBXContainerItemProxy */; + }; + 4EBE5BAC8585ED2542FAB80FBB71E860 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = glog; + target = 1DBC3090C8BE77C9F4202B0421E0791E /* glog */; + targetProxy = B78A0A3FEDE380AA0B1E8B951872C2D2 /* PBXContainerItemProxy */; + }; + 4EEF8C7352B78D9D6EB42A752B4273A5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "boost-for-react-native"; + target = 66641B93FAF80FF325B2D7B4AD85056F /* boost-for-react-native */; + targetProxy = 73B55AA3A85FDB3671051D2287B32BFD /* PBXContainerItemProxy */; }; 4F7FBAA168FB752BC980C4CB37D4732D /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -7338,6 +7370,12 @@ target = 7825F222F53EF434DE74A6C6FAF290E9 /* UMFileSystemInterface */; targetProxy = 013C8C712E31279FB89EBADB1C1A4BC4 /* PBXContainerItemProxy */; }; + 52B6404986C8A6ED662B2E760350A9C9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DoubleConversion; + target = 645DEAED47D48A55A088EE2AD4BCABE9 /* DoubleConversion */; + targetProxy = 2FA2EBC0B04187DD94479196DEA013CB /* PBXContainerItemProxy */; + }; 5812642B3E4D28D81F938727D583EB38 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = EXPermissions; @@ -7397,6 +7435,18 @@ target = 368FB7FBA34E3323BB42D13325551C95 /* FirebaseCore */; targetProxy = CDF9E4862D1A69A546518D09BF29A96E /* PBXContainerItemProxy */; }; + 64839844F7F9144AB562E741627FDB4A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseABTesting; + target = 39E0403E3ACE39BC0D878D82FAB8F012 /* FirebaseABTesting */; + targetProxy = 4987EE2263296A6FAE6187E970EF66E4 /* PBXContainerItemProxy */; + }; + 65EFFCE753F50F6682C6F072A14FCB18 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Crashlytics; + target = ABA9A411BB5A359862E5F1AA6238278E /* Crashlytics */; + targetProxy = 96464AA1535CCBFA7B894CAFCA30F3A9 /* PBXContainerItemProxy */; + }; 67D8E107060139EAB29430B4C73FE111 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebasePerformance; @@ -7438,12 +7488,24 @@ target = 1485579238AB5B4C2D72FB35011307E7 /* react-native-orientation-locker */; targetProxy = E01C346F016DC30520B0D315957CA54E /* PBXContainerItemProxy */; }; + 7AE594DF7B92721AA29D7D4A563188EE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Protobuf; + target = F1DE11E9221F196A8A9D3464F96A345A /* Protobuf */; + targetProxy = F7645965D7AAE6A72378FDC8B615DE8E /* PBXContainerItemProxy */; + }; 7F07BE7158723650E86705D1DB27E40C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "react-native-webview"; target = 0B07B3DDDDEB20F974A537181B17B7A0 /* react-native-webview */; targetProxy = E8370994DFB9580E9A73D8148D2F6D2A /* PBXContainerItemProxy */; }; + 7FA7E2E86A099C4611B1B339546B5546 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseAnalytics; + target = 1ABBF6F89787BBEDF49B4636ADB45587 /* FirebaseAnalytics */; + targetProxy = F1268A4BF93A1703CE4F1E552418051D /* PBXContainerItemProxy */; + }; 815248D0F2DBD89170D5E591539DF287 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Protobuf; @@ -7474,17 +7536,11 @@ target = 2543734D0A332B2588202904B99CC151 /* nanopb */; targetProxy = 33B78007BAC95CB937CF2DFE82E76C79 /* PBXContainerItemProxy */; }; - 8A0737855B76D72CC55A3743D6AC9262 /* PBXTargetDependency */ = { + 890A3C84CF5370647FD5C3B68FC26A7B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseInstanceID; - target = 586739D116442BA7FCD2EC0353EA0FA4 /* FirebaseInstanceID */; - targetProxy = 59A324572B18684F66C07AF7F348D066 /* PBXContainerItemProxy */; - }; - 8E814F25F678CE8AF36174535EEF7017 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleToolboxForMac; - target = 32F8EA730FE2005197F54338D2C236AC /* GoogleToolboxForMac */; - targetProxy = C9282A673DE42C34A281DF501B99604D /* PBXContainerItemProxy */; + name = FirebasePerformance; + target = 42F7AF66FD1178857DC3A2834552BE76 /* FirebasePerformance */; + targetProxy = E3DA3FD815A299E4B44A37FFD83F36FC /* PBXContainerItemProxy */; }; 904DE3584EB00D12608E1233E5B029A8 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -7510,6 +7566,18 @@ target = 7969F0F17682790DCAF63BC9AF2176ED /* GoogleUtilities */; targetProxy = 94E9A5D5D73EADA398147912908A9311 /* PBXContainerItemProxy */; }; + 97D724F8216871FE8FAE9C18A91ED44F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseCore; + target = 368FB7FBA34E3323BB42D13325551C95 /* FirebaseCore */; + targetProxy = 1F3068894AD4D72E4C1BE3418381C291 /* PBXContainerItemProxy */; + }; + 9B6B4CCE14E4A50F4951463C50EEB6FD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleAppMeasurement; + target = AB021401ADE9E1431240BBA948E7965E /* GoogleAppMeasurement */; + targetProxy = 4D9664BCCF18C189C83C942A612FA44E /* PBXContainerItemProxy */; + }; 9C2399382C044FA6EC17CEEC1E03B179 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RNDeviceInfo; @@ -7528,6 +7596,12 @@ target = 39E0403E3ACE39BC0D878D82FAB8F012 /* FirebaseABTesting */; targetProxy = 73621D31DAF959CDF43EB72DCBDB2FE3 /* PBXContainerItemProxy */; }; + A4134FBA5F45D74098E2D7772588B336 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FirebaseRemoteConfig; + target = 5AAD465FECAE9083F45E3DB9252A8302 /* FirebaseRemoteConfig */; + targetProxy = E72F6B6AD9EE0E49C1305E1E1E1DB257 /* PBXContainerItemProxy */; + }; A5544C8F397EAF94A9618C8BDFE832B7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = nanopb; @@ -7540,17 +7614,23 @@ target = AB021401ADE9E1431240BBA948E7965E /* GoogleAppMeasurement */; targetProxy = 906A244BC48572217E922460F6029BDD /* PBXContainerItemProxy */; }; + A5E141F3B9BB0391710120465E0FCBAF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleToolboxForMac; + target = 32F8EA730FE2005197F54338D2C236AC /* GoogleToolboxForMac */; + targetProxy = 9850684ADF4536DB986C5EB64C8159DE /* PBXContainerItemProxy */; + }; A77F0B68567841AA6CC89B462D035C95 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebaseCore; target = 368FB7FBA34E3323BB42D13325551C95 /* FirebaseCore */; targetProxy = 05F88362B58CA661718541D4C8D84A46 /* PBXContainerItemProxy */; }; - AAF4543354531F4FDB586FAE3E3BA9F9 /* PBXTargetDependency */ = { + ADD945EAD878603A828321EC3C15B3EC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebaseABTesting; - target = 39E0403E3ACE39BC0D878D82FAB8F012 /* FirebaseABTesting */; - targetProxy = C012FCE966232551CAE2264510F53E2A /* PBXContainerItemProxy */; + name = GTMSessionFetcher; + target = E3A3FB14CD4ACD21565913CF4A4B097C /* GTMSessionFetcher */; + targetProxy = 2C0606232E0B42E43B9ADF9864EFBF13 /* PBXContainerItemProxy */; }; AE8B1B4B8B410C6EC1863BFFBA505405 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -7563,12 +7643,6 @@ target = 76CC3A2D036B8B64B5F70A7078274100 /* UMPermissionsInterface */; targetProxy = 17299B3B10FACA862736181ECC44D9A8 /* PBXContainerItemProxy */; }; - B2B55480124EF7F333A08111E8189188 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleUtilities; - target = 7969F0F17682790DCAF63BC9AF2176ED /* GoogleUtilities */; - targetProxy = 811FE9F28117CA3E4E2899FDB551F09B /* PBXContainerItemProxy */; - }; B331E9F3566E4055E17F40CD97963382 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; @@ -7633,17 +7707,34 @@ target = 66641B93FAF80FF325B2D7B4AD85056F /* boost-for-react-native */; targetProxy = 1E8E7D40F0D826826FB6A13A7E39FCDB /* PBXContainerItemProxy */; }; + D1284FEAC7253C13402A8CF21CF204C5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Firebase; + target = 97C8CD7E4179727E4F374CABD338D2BB /* Firebase */; + targetProxy = 3AB66399BABD2C2613795405724BE628 /* PBXContainerItemProxy */; + }; D325D4901E98174582895660679DCB06 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = nanopb; target = 2543734D0A332B2588202904B99CC151 /* nanopb */; targetProxy = F5230064930769D695E37609DCAA1CE0 /* PBXContainerItemProxy */; }; - D61AE925A4AA7518DC4B51442792E561 /* PBXTargetDependency */ = { + DCB92E7F5D201DA4CE43A70C1CE0FA5D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = GTMSessionFetcher; - target = E3A3FB14CD4ACD21565913CF4A4B097C /* GTMSessionFetcher */; - targetProxy = 5C507B2568C38B4E1A3D37956F4A4F30 /* PBXContainerItemProxy */; + name = yoga; + target = 81D51EABFACD0DA18145BA0F31509098 /* yoga */; + targetProxy = A315E65CE1E0E4CB091F9216B1BD2672 /* PBXContainerItemProxy */; + }; + DED7C5C6D6A41179957459F0BF1D92F2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = RNDeviceInfo; + target = 7DD31C1AC5FA3D0ABD1746EFF4D08FCA /* RNDeviceInfo */; + targetProxy = D2642A9CC30A873D9336660485F30077 /* PBXContainerItemProxy */; + }; + E0903B1728A8A6F8AF46172033B06268 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = React; + targetProxy = 5C6C5CC1DBD74AB4BD37F65A634BA510 /* PBXContainerItemProxy */; }; E0D8636F86173345152B31E309E4F94E /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -7669,11 +7760,11 @@ target = A143BFBC52A105BCF55D3ABDC341488B /* UMReactNativeAdapter */; targetProxy = 9FBCD59CD010FBBAF960346453E00460 /* PBXContainerItemProxy */; }; - E84A45BF16329BD1B3647C862103932B /* PBXTargetDependency */ = { + EB20E68DDE3802D77BA84B4691E284A3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FirebasePerformance; - target = 42F7AF66FD1178857DC3A2834552BE76 /* FirebasePerformance */; - targetProxy = D710CFA5948B177154C1ACE0599E0551 /* PBXContainerItemProxy */; + name = GoogleIDFASupport; + target = 7C36E7C600F8DE2BE1819059C80F2182 /* GoogleIDFASupport */; + targetProxy = 3B5F3BF03BB33127186914A4F8DB1094 /* PBXContainerItemProxy */; }; EECEC39CD1A9AF30CCFCB71B11A14B7D /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -7681,6 +7772,12 @@ target = 8601F7B19425496C5312C6F111D6E777 /* UMCore */; targetProxy = 5FDD7E408B08AF566972547CAF4A8B67 /* PBXContainerItemProxy */; }; + F051F20681B32861212D3ACE032F4759 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Folly; + target = 2204E533997A82F0D6F7AD16CE4C7106 /* Folly */; + targetProxy = 98482A628427821074589E341896F30A /* PBXContainerItemProxy */; + }; F157536F2D0D5F8AFE0A252A82AE1087 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = React; @@ -7704,18 +7801,18 @@ target = 1ABBF6F89787BBEDF49B4636ADB45587 /* FirebaseAnalytics */; targetProxy = 3E0AD77AF8D44672B4141DEFE1C2C54A /* PBXContainerItemProxy */; }; - F94A1CBF2D68C6C93F49DCF5B9961D4F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleAppMeasurement; - target = AB021401ADE9E1431240BBA948E7965E /* GoogleAppMeasurement */; - targetProxy = EE8291B13D953FA4E0760ABCB228ED24 /* PBXContainerItemProxy */; - }; F94EE8FCF0A7E10E945E95E5F6208A33 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = FirebasePerformance; target = 42F7AF66FD1178857DC3A2834552BE76 /* FirebasePerformance */; targetProxy = E460B2E3824221A946E41A5895D93B02 /* PBXContainerItemProxy */; }; + F97D92C088391219F87559D96FCCEF2B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = nanopb; + target = 2543734D0A332B2588202904B99CC151 /* nanopb */; + targetProxy = 25BE353C6D5F30F874A7C1694A209801 /* PBXContainerItemProxy */; + }; FA169CC3EBBAD581CE71E4040D92A137 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Crashlytics; @@ -7731,29 +7828,6 @@ /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0137D4BDA83BC9124DC4135E6D99CD6B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FCF67B474FD6C82910218CA6951D04E6 /* RNDeviceInfo.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/RNDeviceInfo/RNDeviceInfo-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = RNDeviceInfo; - PRODUCT_NAME = RNDeviceInfo; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 0800402AB053495B931286D57E707723 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = C7B63CE840909FCBB17155958D8928D5 /* UMReactNativeAdapter.xcconfig */; @@ -7817,10 +7891,11 @@ }; name = Debug; }; - 0B5052AB0CF3E91D959495D45C6892CD /* Debug */ = { + 101EAC39F4AED946B5AFE500569B6FF7 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = EBE07153C75AA5C1C38348F1B3A27364 /* DoubleConversion.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -7837,8 +7912,9 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; 1337CE1CAB8B4D60777B05DA574DEFC9 /* Release */ = { isa = XCBuildConfiguration; @@ -7914,9 +7990,9 @@ }; name = Release; }; - 18C5F4FCDB67F4F48FC5B02BFE08E872 /* Release */ = { + 17F925B91130B45ABACE5985A27C8FB3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 808D6DDACE2479D44956ECE70452EEDB /* FirebaseRemoteConfig.xcconfig */; + baseConfigurationReference = 5A601E6330B922C4911EB6709D982A87 /* boost-for-react-native.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; @@ -7929,25 +8005,16 @@ }; name = Release; }; - 18DA24ACBC60B6FE6782F76B97038E54 /* Release */ = { + 18C5F4FCDB67F4F48FC5B02BFE08E872 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D3697C3A80F55A1372F7514127AAE01A /* glog.xcconfig */; + baseConfigurationReference = 808D6DDACE2479D44956ECE70452EEDB /* FirebaseRemoteConfig.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/glog/glog-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = glog; - PRODUCT_NAME = glog; - PUBLIC_HEADERS_FOLDER_PATH = ""; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; @@ -8057,6 +8124,31 @@ }; name = Release; }; + 23BBE071C7589DE53A944FBB9A1985E1 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2B78865D53A81FB2F6E1D3C6A4E1FDE8 /* yoga.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/yoga/yoga-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = yoga; + PRODUCT_NAME = yoga; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 26B6098D9BC03933FC95FFDB269AC880 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4423B01053400EB5AA18B2C1AEB6124B /* react-native-splash-screen.xcconfig */; @@ -8212,30 +8304,6 @@ }; name = Debug; }; - 30FAA0CE493A4C291A9F66B23635E8F1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EBE07153C75AA5C1C38348F1B3A27364 /* DoubleConversion.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DoubleConversion/DoubleConversion-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DoubleConversion; - PRODUCT_NAME = DoubleConversion; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; 32EF76DEEE113FCFF0551B2288C997E6 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = D9154A2A59EE836C6B4C8ABE26903A93 /* FirebaseInstanceID.xcconfig */; @@ -8340,30 +8408,40 @@ }; name = Release; }; - 40E4B5C9E39D2A84C21FE63191BC69DD /* Release */ = { + 4299230F94D9CD47B09A68E027680B63 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5A601E6330B922C4911EB6709D982A87 /* boost-for-react-native.xcconfig */; + baseConfigurationReference = B2CCC1A2B854A5AE761220034F5EFBF7 /* FirebaseAnalytics.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 4299230F94D9CD47B09A68E027680B63 /* Debug */ = { + 4397C7A5A646FDE12D074056A5EB9448 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B2CCC1A2B854A5AE761220034F5EFBF7 /* FirebaseAnalytics.xcconfig */; + baseConfigurationReference = EBE07153C75AA5C1C38348F1B3A27364 /* DoubleConversion.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/DoubleConversion/DoubleConversion-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = DoubleConversion; + PRODUCT_NAME = DoubleConversion; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; @@ -8447,29 +8525,6 @@ }; name = Debug; }; - 4F7812F58D3811BA3214849B1731919E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2B78865D53A81FB2F6E1D3C6A4E1FDE8 /* yoga.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/yoga/yoga-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = yoga; - PRODUCT_NAME = yoga; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; 538B24EE8EFE09651ED6319047D660E5 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 63E8726393D906F3550C9EAF21B73214 /* react-native-orientation-locker.xcconfig */; @@ -8533,6 +8588,30 @@ }; name = Debug; }; + 5552D80F1A4AE73A5BE6BD0AE4470EA2 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D3697C3A80F55A1372F7514127AAE01A /* glog.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/glog/glog-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = glog; + PRODUCT_NAME = glog; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 5B6C63B2E8342A01F0BB54F3C776A2AD /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = EB054FF8A5D97A01475935D8C8EF580E /* QBImagePickerController.xcconfig */; @@ -8573,6 +8652,55 @@ }; name = Debug; }; + 5D07A722E7B5B395635307B740E13327 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6D4F1380084C5CF876DBC28B169C3B82 /* Folly.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/Folly/Folly-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = folly; + PRODUCT_NAME = Folly; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 5E27F6D3F5E75B9D61DA6DAC7917F1EC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FCF67B474FD6C82910218CA6951D04E6 /* RNDeviceInfo.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/RNDeviceInfo/RNDeviceInfo-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = RNDeviceInfo; + PRODUCT_NAME = RNDeviceInfo; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; 5E3C661EFA5CEE81DCDFDD288B9D9C3D /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 01EF4CD4ED20556FD7894D5A97740BEF /* UMBarCodeScannerInterface.xcconfig */; @@ -8672,7 +8800,30 @@ TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = Release; + }; + 67342C7533796A01B0E9080B817598F3 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4F6B964706F8ADC73280A6DB40F720EA /* Pods-ShareRocketChatRN.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; }; 673DC2FFAFEE132263DD7296D3DDEEDB /* Debug */ = { isa = XCBuildConfiguration; @@ -8786,30 +8937,6 @@ }; name = Debug; }; - 7660EE765031D331760CBEAEF0280FA7 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2B78865D53A81FB2F6E1D3C6A4E1FDE8 /* yoga.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/yoga/yoga-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = yoga; - PRODUCT_NAME = yoga; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; 78271FDE9E52DD291D46DDF4A7C01785 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 378AAB43F6447375572F48EAA16ACF04 /* FirebaseCore.xcconfig */; @@ -8886,30 +9013,6 @@ }; name = Debug; }; - 8F6D66DDB9DFEAF1A18B7E6CACABEF8C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FCF67B474FD6C82910218CA6951D04E6 /* RNDeviceInfo.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/RNDeviceInfo/RNDeviceInfo-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = RNDeviceInfo; - PRODUCT_NAME = RNDeviceInfo; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; 92A4EDF469DDF80DEE6AA4A492FABB0D /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 263A175F8122E3AEB637230C1BCB3C11 /* RNImageCropPicker.xcconfig */; @@ -8948,33 +9051,11 @@ }; name = Debug; }; - 98E642456B147C7D327C54DE942EA98F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4F6B964706F8ADC73280A6DB40F720EA /* Pods-ShareRocketChatRN.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 9CC53E42A134EB7B87475DB8762E06D9 /* Release */ = { + 99D60E8BC0BAE2AD9B9295BAA8B4BCBD /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 6D4F1380084C5CF876DBC28B169C3B82 /* Folly.xcconfig */; buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -8991,30 +9072,6 @@ SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 9ED523524C57E5A78D8E4AC989831AAC /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D3697C3A80F55A1372F7514127AAE01A /* glog.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/glog/glog-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = glog; - PRODUCT_NAME = glog; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; @@ -9247,6 +9304,20 @@ }; name = Release; }; + B16A03D0A5F6904FB27090924EDF2532 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5A601E6330B922C4911EB6709D982A87 /* boost-for-react-native.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; B6C7034271AD612C0CE2EE28606818D0 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = B14901E39FDB13489A437EEC07959233 /* EXAppLoaderProvider.xcconfig */; @@ -9271,18 +9342,30 @@ }; name = Debug; }; - BCED374361B9387A457B9F7B3685F9FE /* Debug */ = { + BA0DBB4548A9A42290B21BB21D18548C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5A601E6330B922C4911EB6709D982A87 /* boost-for-react-native.xcconfig */; + baseConfigurationReference = D3697C3A80F55A1372F7514127AAE01A /* glog.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + APPLICATION_EXTENSION_API_ONLY = YES; CODE_SIGN_IDENTITY = "iPhone Developer"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/glog/glog-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = glog; + PRODUCT_NAME = glog; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; BEA641D5851D41F1304AEEF1C7EFC4F4 /* Release */ = { isa = XCBuildConfiguration; @@ -9309,6 +9392,31 @@ }; name = Release; }; + C050DC289B076671046EE85FE7EEB0C5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FCF67B474FD6C82910218CA6951D04E6 /* RNDeviceInfo.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/RNDeviceInfo/RNDeviceInfo-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = RNDeviceInfo; + PRODUCT_NAME = RNDeviceInfo; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; C1D448485CC981F9F935838C540C8548 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 53563E1385145D00720C7953AD9E0E74 /* Crashlytics.xcconfig */; @@ -9324,6 +9432,30 @@ }; name = Release; }; + C1D64C7A2DF917B5176F348C956C4D24 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2B78865D53A81FB2F6E1D3C6A4E1FDE8 /* yoga.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/yoga/yoga-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = yoga; + PRODUCT_NAME = yoga; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; C2BA04EA30525F31D36AC35C8D3A239A /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 931E1E88664BF29C0559B61CDF1BD5BA /* RSKImageCropper.xcconfig */; @@ -9363,6 +9495,30 @@ }; name = Release; }; + CB814A218DFF608B275C7C4A7E12DB89 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 501D8262643E75ACB8B36147ADB61F0D /* Pods-ShareRocketChatRN.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; + MACH_O_TYPE = staticlib; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; D03B0A08E7D5699C45827F4005D4BEF3 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 8FC389D054A6997C92405D2AC6F438F0 /* RNScreens.xcconfig */; @@ -9636,30 +9792,6 @@ }; name = Debug; }; - DFE930F40141B4946DA37153D081AFDD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 501D8262643E75ACB8B36147ADB61F0D /* Pods-ShareRocketChatRN.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; - MACH_O_TYPE = staticlib; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; E70D54E9B4A409B22DA1A6C2D7EF01A7 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 32B24EADC92EA0C4E9D26F18D6C42B3A /* UMTaskManagerInterface.xcconfig */; @@ -9691,29 +9823,6 @@ }; name = Debug; }; - EB411A2FF24ED310FA10B4FAB99F7CA1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6D4F1380084C5CF876DBC28B169C3B82 /* Folly.xcconfig */; - buildSettings = { - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Folly/Folly-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = folly; - PRODUCT_NAME = Folly; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; ED8F518E1C694F9B9EDA2BC86DA45B83 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4CDD0F63AC79E800DC98A2459434B926 /* EXFileSystem.xcconfig */; @@ -9820,8 +9929,8 @@ 0569CCDF3B3B687CF01EE8D4001AA7CC /* Build configuration list for PBXNativeTarget "DoubleConversion" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0B5052AB0CF3E91D959495D45C6892CD /* Debug */, - 30FAA0CE493A4C291A9F66B23635E8F1 /* Release */, + 4397C7A5A646FDE12D074056A5EB9448 /* Debug */, + 101EAC39F4AED946B5AFE500569B6FF7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -9937,8 +10046,8 @@ 30E42B671739C46568E4210EC736D325 /* Build configuration list for PBXNativeTarget "glog" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9ED523524C57E5A78D8E4AC989831AAC /* Debug */, - 18DA24ACBC60B6FE6782F76B97038E54 /* Release */, + 5552D80F1A4AE73A5BE6BD0AE4470EA2 /* Debug */, + BA0DBB4548A9A42290B21BB21D18548C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -9952,6 +10061,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 3B3E3692FDC9994247F65BD145818848 /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 67342C7533796A01B0E9080B817598F3 /* Debug */, + CB814A218DFF608B275C7C4A7E12DB89 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 3D8810E196AB78ED3123A01E8F97036C /* Build configuration list for PBXAggregateTarget "GoogleAppMeasurement" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -10000,8 +10118,8 @@ 5AE3722DD39C3B2C37D89B1AC2A0A4C0 /* Build configuration list for PBXAggregateTarget "boost-for-react-native" */ = { isa = XCConfigurationList; buildConfigurations = ( - BCED374361B9387A457B9F7B3685F9FE /* Debug */, - 40E4B5C9E39D2A84C21FE63191BC69DD /* Release */, + B16A03D0A5F6904FB27090924EDF2532 /* Debug */, + 17F925B91130B45ABACE5985A27C8FB3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -10027,8 +10145,8 @@ 604FA7F2A4A3208129DBF616D03EBA35 /* Build configuration list for PBXNativeTarget "yoga" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4F7812F58D3811BA3214849B1731919E /* Debug */, - 7660EE765031D331760CBEAEF0280FA7 /* Release */, + C1D64C7A2DF917B5176F348C956C4D24 /* Debug */, + 23BBE071C7589DE53A944FBB9A1985E1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -10054,8 +10172,8 @@ 84FEF16D94D90C807BFA997D2939DB2F /* Build configuration list for PBXNativeTarget "RNDeviceInfo" */ = { isa = XCConfigurationList; buildConfigurations = ( - 0137D4BDA83BC9124DC4135E6D99CD6B /* Debug */, - 8F6D66DDB9DFEAF1A18B7E6CACABEF8C /* Release */, + 5E27F6D3F5E75B9D61DA6DAC7917F1EC /* Debug */, + C050DC289B076671046EE85FE7EEB0C5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -10105,15 +10223,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 91FAF02B3A41D5093EAC4B32162F594F /* Build configuration list for PBXNativeTarget "Pods-ShareRocketChatRN" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 98E642456B147C7D327C54DE942EA98F /* Debug */, - DFE930F40141B4946DA37153D081AFDD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 9361EC1C430E0211705D5DA88CAB3422 /* Build configuration list for PBXNativeTarget "QBImagePickerController-QBImagePicker" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -10153,8 +10262,8 @@ CF773BF3AB5B99203184D051A085CCDC /* Build configuration list for PBXNativeTarget "Folly" */ = { isa = XCConfigurationList; buildConfigurations = ( - EB411A2FF24ED310FA10B4FAB99F7CA1 /* Debug */, - 9CC53E42A134EB7B87475DB8762E06D9 /* Release */, + 99D60E8BC0BAE2AD9B9295BAA8B4BCBD /* Debug */, + 5D07A722E7B5B395635307B740E13327 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown index 2711ec4b75..7cdcff7c84 100644 --- a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.markdown @@ -5,6 +5,36 @@ This application makes use of the following third party libraries: Fabric: Copyright 2018 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2018 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt +## DoubleConversion + +Copyright 2006-2011, the V8 project authors. All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ## Fabric Fabric: Copyright 2018 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt @@ -441,6 +471,187 @@ Copyright 2019 Google Copyright 2018 Google +## Folly + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + ## GTMSessionFetcher @@ -1103,6 +1314,152 @@ standalone and requires a support library to be linked with it. This support library is itself covered by the above license. +## RNDeviceInfo + +The MIT License (MIT) + +Copyright (c) 2015 Rebecca Hughes + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +## React + +MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +## boost-for-react-native + +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + +## glog + +Copyright (c) 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +A function gettimeofday in utilities.cc is based on + +http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/COPYING&q=GetSystemTimeAsFileTime%20license:bsd + +The license of this code is: + +Copyright (c) 2003-2008, Jouni Malinen and contributors +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name(s) of the above-listed copyright holder(s) nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + ## nanopb Copyright (c) 2011 Petteri Aimonen diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist index d8b241bc5e..af937fdca4 100644 --- a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN-acknowledgements.plist @@ -22,6 +22,42 @@ Type PSGroupSpecifier + + FooterText + Copyright 2006-2011, the V8 project authors. All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + License + MIT + Title + DoubleConversion + Type + PSGroupSpecifier + FooterText Fabric: Copyright 2018 Google, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt @@ -685,6 +721,193 @@ of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS + + License + Apache License, Version 2.0 + Title + Folly + Type + PSGroupSpecifier + + + FooterText + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. @@ -1204,6 +1427,176 @@ support library is itself covered by the above license. Type PSGroupSpecifier + + FooterText + The MIT License (MIT) + +Copyright (c) 2015 Rebecca Hughes + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + RNDeviceInfo + Type + PSGroupSpecifier + + + FooterText + MIT License + +Copyright (c) Facebook, Inc. and its affiliates. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + React + Type + PSGroupSpecifier + + + FooterText + Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + + License + Boost Software License + Title + boost-for-react-native + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +A function gettimeofday in utilities.cc is based on + +http://www.google.com/codesearch/p?hl=en#dR3YEbitojA/COPYING&q=GetSystemTimeAsFileTime%20license:bsd + +The license of this code is: + +Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi> and contributors +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name(s) of the above-listed copyright holder(s) nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + License + Google + Title + glog + Type + PSGroupSpecifier + FooterText Copyright (c) 2011 Petteri Aimonen <jpa at nanopb.mail.kapsi.fi> diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig index 5d24b4106f..97a8d8dcb6 100644 --- a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.debug.xcconfig @@ -1,8 +1,8 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/FirebaseABTesting/Frameworks" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebasePerformance/Frameworks" "${PODS_ROOT}/FirebaseRemoteConfig/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/Protobuf" "${PODS_ROOT}/Headers/Public/QBImagePickerController" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-splash-screen" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/yoga" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/GoogleIDFASupport/Libraries" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"FirebaseCore" -l"FirebaseInstanceID" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"c++" -l"nanopb" -l"sqlite3" -l"z" -framework "AdSupport" -framework "CoreTelephony" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCoreDiagnostics" -framework "FirebasePerformance" -framework "FirebaseRemoteConfig" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/yoga" "${PODS_ROOT}/GoogleIDFASupport/Libraries" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"DoubleConversion" -l"FirebaseCore" -l"FirebaseInstanceID" -l"Folly" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"RNDeviceInfo" -l"React" -l"c++" -l"glog" -l"nanopb" -l"sqlite3" -l"stdc++" -l"yoga" -l"z" -framework "AdSupport" -framework "CoreTelephony" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCoreDiagnostics" -framework "FirebasePerformance" -framework "FirebaseRemoteConfig" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "JavaScriptCore" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig index 5d24b4106f..97a8d8dcb6 100644 --- a/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig +++ b/ios/Pods/Target Support Files/Pods-ShareRocketChatRN/Pods-ShareRocketChatRN.release.xcconfig @@ -1,8 +1,8 @@ FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/FirebaseABTesting/Frameworks" "${PODS_ROOT}/FirebaseAnalytics/Frameworks" "${PODS_ROOT}/FirebasePerformance/Frameworks" "${PODS_ROOT}/FirebaseRemoteConfig/Frameworks" "${PODS_ROOT}/GoogleAppMeasurement/Frameworks" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 $(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1 $(inherited) PB_FIELD_32BIT=1 PB_NO_PACKED_STRUCTS=1 PB_ENABLE_MALLOC=1 HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DoubleConversion" "${PODS_ROOT}/Headers/Public/EXAppLoaderProvider" "${PODS_ROOT}/Headers/Public/EXConstants" "${PODS_ROOT}/Headers/Public/EXFileSystem" "${PODS_ROOT}/Headers/Public/EXPermissions" "${PODS_ROOT}/Headers/Public/EXWebBrowser" "${PODS_ROOT}/Headers/Public/Firebase" "${PODS_ROOT}/Headers/Public/FirebaseCore" "${PODS_ROOT}/Headers/Public/FirebaseInstanceID" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/GoogleUtilities" "${PODS_ROOT}/Headers/Public/Protobuf" "${PODS_ROOT}/Headers/Public/QBImagePickerController" "${PODS_ROOT}/Headers/Public/RNDeviceInfo" "${PODS_ROOT}/Headers/Public/RNImageCropPicker" "${PODS_ROOT}/Headers/Public/RNScreens" "${PODS_ROOT}/Headers/Public/RSKImageCropper" "${PODS_ROOT}/Headers/Public/React" "${PODS_ROOT}/Headers/Public/UMBarCodeScannerInterface" "${PODS_ROOT}/Headers/Public/UMCameraInterface" "${PODS_ROOT}/Headers/Public/UMConstantsInterface" "${PODS_ROOT}/Headers/Public/UMCore" "${PODS_ROOT}/Headers/Public/UMFaceDetectorInterface" "${PODS_ROOT}/Headers/Public/UMFileSystemInterface" "${PODS_ROOT}/Headers/Public/UMFontInterface" "${PODS_ROOT}/Headers/Public/UMImageLoaderInterface" "${PODS_ROOT}/Headers/Public/UMPermissionsInterface" "${PODS_ROOT}/Headers/Public/UMReactNativeAdapter" "${PODS_ROOT}/Headers/Public/UMSensorsInterface" "${PODS_ROOT}/Headers/Public/UMTaskManagerInterface" "${PODS_ROOT}/Headers/Public/glog" "${PODS_ROOT}/Headers/Public/nanopb" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-splash-screen" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/yoga" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_ROOT}/GoogleIDFASupport/Libraries" -OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"FirebaseCore" -l"FirebaseInstanceID" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"c++" -l"nanopb" -l"sqlite3" -l"z" -framework "AdSupport" -framework "CoreTelephony" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCoreDiagnostics" -framework "FirebasePerformance" -framework "FirebaseRemoteConfig" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseCore" "${PODS_CONFIGURATION_BUILD_DIR}/FirebaseInstanceID" "${PODS_CONFIGURATION_BUILD_DIR}/Folly" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleUtilities" "${PODS_CONFIGURATION_BUILD_DIR}/Protobuf" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/yoga" "${PODS_ROOT}/GoogleIDFASupport/Libraries" +OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"DoubleConversion" -l"FirebaseCore" -l"FirebaseInstanceID" -l"Folly" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"RNDeviceInfo" -l"React" -l"c++" -l"glog" -l"nanopb" -l"sqlite3" -l"stdc++" -l"yoga" -l"z" -framework "AdSupport" -framework "CoreTelephony" -framework "Crashlytics" -framework "FIRAnalyticsConnector" -framework "Fabric" -framework "FirebaseABTesting" -framework "FirebaseAnalytics" -framework "FirebaseCoreDiagnostics" -framework "FirebasePerformance" -framework "FirebaseRemoteConfig" -framework "Foundation" -framework "GoogleAppMeasurement" -framework "JavaScriptCore" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 4f89ff35dd..e8cccb9f11 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -51,13 +51,13 @@ 1E39CA4D22A0AE2100D46C42 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */; }; 1E580BE422A144E700E4F123 /* libRealmReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 607D61161F325B7E00F639C4 /* libRealmReact.a */; }; 1E580C1B22A1450800E4F123 /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8C915320F39A8000C8F5EE /* libRNFetchBlob.a */; }; - 1E8173AF22C2DF3B0055BF1B /* libRNDeviceInfo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E8173AC22C2DF320055BF1B /* libRNDeviceInfo.a */; }; 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; 1E81DEBC22B85A9400072BF7 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */; }; 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; }; 1EFBE83522AECB30000175EE /* custom.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7A55F1C42236D541005109A0 /* custom.ttf */; }; 24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; }; 38CEA0ED468E49CFABCD82FD /* libRNFirebase.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A36F9982B71E4662AA8DEB77 /* libRNFirebase.a */; }; + 3B8E57EC4350B5C9A07A1F78 /* libPods-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E2C13B722C57BBB00CE0BD8 /* libPods-RocketChatRN.a */; }; 50046CB6BDA69B9232CF66D9 /* libPods-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C235DC7B31A4D1578EDEF219 /* libPods-RocketChatRN.a */; }; 5E9157361DD0AC6A00FF2AA8 /* libRCTAnimation.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */; }; 74815BBCB91147C08C8F7B3D /* libRNAudio.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1142E3442BA94B19BCF52814 /* libRNAudio.a */; }; @@ -165,20 +165,6 @@ remoteGlobalIDString = 41B5DE301D0B505800949BD5; remoteInfo = ReactNativeShareExtension; }; - 1E8173AB22C2DF320055BF1B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = DA5891D81BA9A9FC002B4DB2; - remoteInfo = RNDeviceInfo; - }; - 1E8173AD22C2DF320055BF1B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = E72EC1401F7ABB5A0001BC90; - remoteInfo = "RNDeviceInfo-tvOS"; - }; 1E81DEB522B85A8C00072BF7 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */; @@ -551,6 +537,7 @@ 1A34D902CC074FF1BCC7DB48 /* libimageCropPicker.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libimageCropPicker.a; sourceTree = ""; }; 1D3BB00B9ABF44EA9BD71318 /* libSafariViewManager.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libSafariViewManager.a; sourceTree = ""; }; 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SplashScreen.xcodeproj; path = "../node_modules/react-native-splash-screen/ios/SplashScreen.xcodeproj"; sourceTree = ""; }; + 1E2C13B722C57BBB00CE0BD8 /* libPods-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libPods-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNRealmPath.xcodeproj; path = "../node_modules/react-native-realm-path/ios/RNRealmPath.xcodeproj"; sourceTree = ""; }; 1E36336622B00BB600B67024 /* libPods-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libPods-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 1E36336922B00D3B00B67024 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; @@ -560,7 +547,6 @@ 1E39C9DC22A0AA2A00D46C42 /* ShareRocketChatRN.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ShareRocketChatRN.m; sourceTree = ""; }; 1E39C9F022A0AA8700D46C42 /* ReactNativeShareExtension.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReactNativeShareExtension.xcodeproj; path = "../node_modules/rn-extensions-share/ios/ReactNativeShareExtension.xcodeproj"; sourceTree = ""; }; 1E39CA4C22A0AE2100D46C42 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = SOURCE_ROOT; }; - 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNDeviceInfo.xcodeproj; path = "../node_modules/react-native-device-info/ios/RNDeviceInfo.xcodeproj"; sourceTree = ""; }; 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RNUserDefaults.xcodeproj; path = "../node_modules/rn-user-defaults/ios/RNUserDefaults.xcodeproj"; sourceTree = ""; }; 1EA14C3022A16D7B00070029 /* ShareRocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = ShareRocketChatRN.entitlements; sourceTree = ""; }; 20CE3E407E0D4D9E8C9885F2 /* libRCTVideo.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libRCTVideo.a; sourceTree = ""; }; @@ -637,6 +623,7 @@ 95E57ADEB9A0487791D2C50E /* libRNGestureHandler.a in Frameworks */, 38CEA0ED468E49CFABCD82FD /* libRNFirebase.a in Frameworks */, 7934BD0A11B8960B2D61259C /* libPods-RocketChatRN.a in Frameworks */, + 3B8E57EC4350B5C9A07A1F78 /* libPods-RocketChatRN.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -644,7 +631,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1E8173AF22C2DF3B0055BF1B /* libRNDeviceInfo.a in Frameworks */, 1E81DEBB22B85A9000072BF7 /* libRNUserDefaults.a in Frameworks */, 1EFBE7F922AEC7CE000175EE /* libRNVectorIcons.a in Frameworks */, 1E175AF022AC2313002E1A7B /* libSplashScreen.a in Frameworks */, @@ -816,15 +802,6 @@ name = Products; sourceTree = ""; }; - 1E8173A722C2DF320055BF1B /* Products */ = { - isa = PBXGroup; - children = ( - 1E8173AC22C2DF320055BF1B /* libRNDeviceInfo.a */, - 1E8173AE22C2DF320055BF1B /* libRNDeviceInfo-tvOS.a */, - ); - name = Products; - sourceTree = ""; - }; 1E81DE7922B85A8C00072BF7 /* Products */ = { isa = PBXGroup; children = ( @@ -940,7 +917,6 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */ = { isa = PBXGroup; children = ( - 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */, 1E81DE7822B85A8C00072BF7 /* RNUserDefaults.xcodeproj */, 1E175AAE22AC230A002E1A7B /* SplashScreen.xcodeproj */, 1E3621A022A202DD0042F8C5 /* RNRealmPath.xcodeproj */, @@ -1074,6 +1050,7 @@ BB4B591B5FC44CD9986DB2A6 /* Frameworks */ = { isa = PBXGroup; children = ( + 1E2C13B722C57BBB00CE0BD8 /* libPods-RocketChatRN.a */, 1E36336622B00BB600B67024 /* libPods-RocketChatRN.a */, 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */, B37C79D9BD0742CE936B6982 /* libc++.tbd */, @@ -1259,10 +1236,6 @@ ProductGroup = A9A6C941204DD556006B7D9D /* Products */; ProjectRef = C21010507E5B4B37BA0E4C9D /* RNAudio.xcodeproj */; }, - { - ProductGroup = 1E8173A722C2DF320055BF1B /* Products */; - ProjectRef = 1E8173A622C2DF320055BF1B /* RNDeviceInfo.xcodeproj */; - }, { ProductGroup = 7A8C912120F39A8000C8F5EE /* Products */; ProjectRef = 0B82BCC462E84F308C5B5CD1 /* RNFetchBlob.xcodeproj */; @@ -1386,20 +1359,6 @@ remoteRef = 1E39C9F422A0AA8700D46C42 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E8173AC22C2DF320055BF1B /* libRNDeviceInfo.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libRNDeviceInfo.a; - remoteRef = 1E8173AB22C2DF320055BF1B /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 1E8173AE22C2DF320055BF1B /* libRNDeviceInfo-tvOS.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libRNDeviceInfo-tvOS.a"; - remoteRef = 1E8173AD22C2DF320055BF1B /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 1E81DEB622B85A8C00072BF7 /* libRNUserDefaults.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; From 2230ef8b6ad24ce04b6d5c3ae5957a7cfc2d24c3 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 27 Jun 2019 20:41:58 -0300 Subject: [PATCH 45/88] :arrow_up: Upgrade rn-extensions-share --- app/views/ShareListView/index.js | 6 ++++-- app/views/ShareView/index.js | 16 ++++++++-------- package.json | 2 +- yarn.lock | 8 ++++---- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index b3ae65310e..332279b7ba 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -49,6 +49,7 @@ export default class ShareListView extends React.Component { this.data = []; this.state = { value: '', + isMedia: false, discussions: [], channels: [], privateGroup: [], @@ -60,7 +61,7 @@ export default class ShareListView extends React.Component { componentWillMount() { ShareExtension.data() - .then(({ value }) => this.setState({ value })); + .then(({ value, type }) => this.setState({ value, isMedia: (type === 'media') })); } componentDidMount() { @@ -124,12 +125,13 @@ export default class ShareListView extends React.Component { } shareMessage = (item) => { - const { value } = this.state; + const { value, isMedia } = this.state; const { navigation } = this.props; navigation.navigate('ShareView', { rid: item.rid, value, + isMedia, name: this.getRoomTitle(item) }); }; diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 1072ee5c0c..446c9a9a0e 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -46,9 +46,11 @@ export default class ShareView extends React.Component { const rid = navigation.getParam('rid', ''); const name = navigation.getParam('name', ''); const value = navigation.getParam('value', ''); + const isMedia = navigation.getParam('isMedia', false); this.state = { rid, value, + isMedia, name, fileInfo: null, loading: false, @@ -63,8 +65,8 @@ export default class ShareView extends React.Component { const { navigation } = this.props; navigation.setParams({ sendMessage: this._sendMessage }); - const { value } = this.state; - if (this.isMedia(value)) { + const { value, isMedia } = this.state; + if (isMedia) { const data = await RNFetchBlob.fs.stat(this.uriToPath(value)); const fileInfo = { name: data.filename, @@ -82,13 +84,11 @@ export default class ShareView extends React.Component { bytesToSize = bits => `${ ((bits / 8) / 1048576).toFixed(2) }MB`; - isMedia = uri => (uri || '').match(/^file:\/\//); - _sendMessage = async() => { - const { value } = this.state; + const { isMedia } = this.state; this.setState({ loading: true }); - if (this.isMedia(value)) { + if (isMedia) { await this.sendMediaMessage(); } else { await this.sendTextMessage(); @@ -184,8 +184,8 @@ export default class ShareView extends React.Component { } render() { - const { value, name, loading } = this.state; - const isMedia = this.isMedia(value); + const { name, loading, isMedia } = this.state; + return ( Date: Thu, 27 Jun 2019 21:35:22 -0300 Subject: [PATCH 46/88] :sparkles: Add canUpload to share extension --- app/constants/settings.js | 6 ++ app/views/ShareListView/index.js | 99 +++++++++++++++++++++++++++---- app/views/ShareListView/styles.js | 18 +++++- app/views/ShareView/index.js | 23 ++----- 4 files changed, 115 insertions(+), 31 deletions(-) diff --git a/app/constants/settings.js b/app/constants/settings.js index 1ae229a182..e8cc83dad0 100644 --- a/app/constants/settings.js +++ b/app/constants/settings.js @@ -68,6 +68,12 @@ export default { Threads_enabled: { type: null }, + FileUpload_MediaTypeWhiteList: { + type: 'valueAsString' + }, + FileUpload_MaxFileSize: { + type: 'valueAsNumber' + }, API_Gitlab_URL: { type: 'valueAsString' } diff --git a/app/views/ShareListView/index.js b/app/views/ShareListView/index.js index 332279b7ba..8faa1da0fe 100644 --- a/app/views/ShareListView/index.js +++ b/app/views/ShareListView/index.js @@ -6,6 +6,8 @@ import { import { SafeAreaView } from 'react-navigation'; import ShareExtension from 'rn-extensions-share'; import { connect } from 'react-redux'; +import RNFetchBlob from 'rn-fetch-blob'; +import * as mime from 'react-native-mime-types'; import Navigation from '../../lib/Navigation'; import database, { safeAddListener } from '../../lib/realm'; @@ -14,6 +16,8 @@ import { isIOS } from '../../utils/deviceInfo'; import I18n from '../../i18n'; import StatusBar from '../../containers/StatusBar'; import ShareItem, { ROW_HEIGHT } from '../../presentation/ShareItem'; +import { CustomIcon } from '../../lib/Icons'; +import log from '../../utils/log'; import styles from './styles'; import ServerItem from '../../presentation/ServerItem'; @@ -25,7 +29,9 @@ const keyExtractor = item => item.rid; userId: state.login.user && state.login.user.id, token: state.login.user && state.login.user.token, useRealName: state.settings.UI_Use_Real_Name, - server: state.server.server + server: state.server.server, + FileUpload_MediaTypeWhiteList: state.settings.FileUpload_MediaTypeWhiteList, + FileUpload_MaxFileSize: state.settings.FileUpload_MaxFileSize })) /** @extends React.Component */ export default class ShareListView extends React.Component { @@ -41,7 +47,9 @@ export default class ShareListView extends React.Component { static propTypes = { navigation: PropTypes.object, server: PropTypes.string, - useRealName: PropTypes.bool + useRealName: PropTypes.bool, + FileUpload_MediaTypeWhiteList: PropTypes.string, + FileUpload_MaxFileSize: PropTypes.number } constructor(props) { @@ -50,6 +58,8 @@ export default class ShareListView extends React.Component { this.state = { value: '', isMedia: false, + mediaLoading: false, + fileInfo: null, discussions: [], channels: [], privateGroup: [], @@ -59,13 +69,31 @@ export default class ShareListView extends React.Component { }; } - componentWillMount() { - ShareExtension.data() - .then(({ value, type }) => this.setState({ value, isMedia: (type === 'media') })); - } - - componentDidMount() { + async componentDidMount() { this.getSubscriptions(); + try { + const { value, type } = await ShareExtension.data(); + let fileInfo = null; + const isMedia = (type === 'media'); + if (isMedia) { + this.setState({ mediaLoading: true }); + const data = await RNFetchBlob.fs.stat(this.uriToPath(value)); + fileInfo = { + name: data.filename, + description: '', + size: data.size, + type: mime.lookup(data.path), + store: 'Uploads', + path: data.path + }; + } + this.setState({ + value, fileInfo, isMedia, mediaLoading: false + }); + } catch (e) { + log('err_process_media_share_extension', e); + this.setState({ mediaLoading: false }); + } } // eslint-disable-next-line react/sort-comp @@ -97,6 +125,8 @@ export default class ShareListView extends React.Component { } }, 300); + uriToPath = uri => decodeURIComponent(uri.replace(/^file:\/\//, '')); + // eslint-disable-next-line react/sort-comp updateState = debounce(() => { this.updateStateInteraction = InteractionManager.runAfterInteractions(() => { @@ -125,19 +155,46 @@ export default class ShareListView extends React.Component { } shareMessage = (item) => { - const { value, isMedia } = this.state; + const { value, isMedia, fileInfo } = this.state; const { navigation } = this.props; navigation.navigate('ShareView', { rid: item.rid, value, isMedia, + fileInfo, name: this.getRoomTitle(item) }); }; + canUploadFile = () => { + const { FileUpload_MediaTypeWhiteList, FileUpload_MaxFileSize } = this.props; + const { fileInfo: file } = this.state; + + if (!(file && file.path)) { + return true; + } + if (file.size > FileUpload_MaxFileSize) { + return false; + } + if (!FileUpload_MediaTypeWhiteList) { + return false; + } + const allowedMime = FileUpload_MediaTypeWhiteList.split(','); + if (allowedMime.includes(file.type)) { + return true; + } + const wildCardGlob = '/*'; + const wildCards = allowedMime.filter(item => item.indexOf(wildCardGlob) > 0); + if (wildCards.includes(file.type.replace(/(\/.*)$/, wildCardGlob))) { + return true; + } + return false; + } + renderScrollView = () => { - if (!(this.data && this.data.length > 0)) { + const { mediaLoading } = this.state; + if (!(this.data && this.data.length > 0) || mediaLoading) { return ; } @@ -236,14 +293,34 @@ export default class ShareListView extends React.Component { ) : null; }; + renderError = () => { + const { FileUpload_MaxFileSize } = this.props; + const { fileInfo: file } = this.state; + const errorMessage = (FileUpload_MaxFileSize < file.size) + ? 'error-file-too-large' + : 'error-invalid-file-type'; + return ( + + + {I18n.t(errorMessage)} + + + + + { file.type } + + ); + } + render() { + const showError = !this.canUploadFile(); return ( - {this.renderScrollView()} + { showError ? this.renderError() : this.renderScrollView() } ); } diff --git a/app/views/ShareListView/styles.js b/app/views/ShareListView/styles.js index adec0475b1..c8a26df705 100644 --- a/app/views/ShareListView/styles.js +++ b/app/views/ShareListView/styles.js @@ -3,7 +3,7 @@ import { isIOS } from '../../utils/deviceInfo'; import sharedStyles from '../Styles'; import { - COLOR_BACKGROUND_CONTAINER, COLOR_WHITE, COLOR_TEXT, HEADER_BACK, COLOR_SEPARATOR + COLOR_BACKGROUND_CONTAINER, COLOR_WHITE, COLOR_TEXT, HEADER_BACK, COLOR_SEPARATOR, COLOR_DANGER } from '../../constants/colors'; export default StyleSheet.create({ @@ -54,5 +54,21 @@ export default StyleSheet.create({ }, loading: { flex: 1 + }, + errorIcon: { + color: COLOR_DANGER + }, + fileMime: { + color: COLOR_TEXT, + ...sharedStyles.textColorTitle, + ...sharedStyles.textBold, + textAlign: 'center', + fontSize: 20, + marginBottom: 20 + }, + title: { + fontSize: 14, + ...sharedStyles.textColorTitle, + ...sharedStyles.textBold } }); diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 446c9a9a0e..46e8729a25 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -5,8 +5,6 @@ import { } from 'react-native'; import ShareExtension from 'rn-extensions-share'; import { HeaderBackButton } from 'react-navigation'; -import RNFetchBlob from 'rn-fetch-blob'; -import * as mime from 'react-native-mime-types'; import { COLOR_TEXT_DESCRIPTION, HEADER_BACK @@ -47,37 +45,24 @@ export default class ShareView extends React.Component { const name = navigation.getParam('name', ''); const value = navigation.getParam('value', ''); const isMedia = navigation.getParam('isMedia', false); + const fileInfo = navigation.getParam('fileInfo', {}); this.state = { rid, value, isMedia, name, - fileInfo: null, + fileInfo, loading: false, file: { - name: '', + name: fileInfo.name, description: '' } }; } - async componentWillMount() { + componentWillMount() { const { navigation } = this.props; navigation.setParams({ sendMessage: this._sendMessage }); - - const { value, isMedia } = this.state; - if (isMedia) { - const data = await RNFetchBlob.fs.stat(this.uriToPath(value)); - const fileInfo = { - name: data.filename, - description: '', - size: data.size, - type: mime.lookup(data.path), - store: 'Uploads', - path: data.path - }; - this.setState({ fileInfo, file: { name: data.filename } }); - } } uriToPath = uri => uri.replace(/^file:\/\//, '').replace('%20', ' '); From 0030d667a3aad7950bf22b1e0ca604cf0dc69e48 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Thu, 27 Jun 2019 22:00:53 -0300 Subject: [PATCH 47/88] :bug: Fix error on text types --- app/views/ShareView/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/ShareView/index.js b/app/views/ShareView/index.js index 46e8729a25..cf6a5bad22 100644 --- a/app/views/ShareView/index.js +++ b/app/views/ShareView/index.js @@ -54,7 +54,7 @@ export default class ShareView extends React.Component { fileInfo, loading: false, file: { - name: fileInfo.name, + name: fileInfo ? fileInfo.name : '', description: '' } }; From f2585d669392b8c4441fd87c5a43002d773dc3b6 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Fri, 28 Jun 2019 20:11:53 -0300 Subject: [PATCH 48/88] :arrow_up: Upgrade rn-extensions-share --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7e6e7b6dd6..433464f973 100644 --- a/package.json +++ b/package.json @@ -79,7 +79,7 @@ "redux-immutable-state-invariant": "^2.1.0", "redux-saga": "^0.16.2", "remove-markdown": "^0.3.0", - "rn-extensions-share": "^2.2.1", + "rn-extensions-share": "^2.2.2", "rn-fetch-blob": "^0.10.15", "rn-user-defaults": "^1.3.5", "semver": "6.0.0", diff --git a/yarn.lock b/yarn.lock index aa9acf397e..384dc65d5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12559,10 +12559,10 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rn-extensions-share@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/rn-extensions-share/-/rn-extensions-share-2.2.1.tgz#73e4eb3b9d2bd1b912c1c8b8cd1af48db91c5f1c" - integrity sha512-3NdyE8OP74Ou6SPiAp5ZL3kVHwnffpNYDFYrR0E3SlLtXeviQr5rhUgZB9gqLXxo9W1et3x6uqFvrmeYifMQqw== +rn-extensions-share@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/rn-extensions-share/-/rn-extensions-share-2.2.2.tgz#3fbed71add4cd6cc7a32da1afe60a45dc8bf1045" + integrity sha512-I72xchZ2wrC4/0kmfc5w6nYe3GyAHBEL/dWzYOHjvR/hFNkIi00X5g/f19xhNbJpHhH0f36fhpf2jDuxu10kUA== rn-fetch-blob@^0.10.15: version "0.10.15" From ee2644409ca2519aa9d09784813566c243b1eebc Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 2 Jul 2019 12:10:56 -0300 Subject: [PATCH 49/88] :twisted_rightwards_arrows: Merge develop --- __mocks__/react-native-gesture-handler.js | 1 + .../__snapshots__/Storyshots.test.js.snap | 16 +- app/constants/colors.js | 7 +- app/constants/settings.js | 3 + app/constants/userDefaults.js | 3 + app/containers/Check.js | 2 + app/containers/EmojiPicker/index.js | 22 +- app/containers/MessageActions.js | 35 +- app/containers/MessageBox/Recording.js | 11 +- app/containers/message/Markdown.js | 42 +- app/containers/message/index.js | 22 +- app/containers/message/styles.js | 9 + app/containers/message/utils.js | 12 + app/i18n/locales/en.js | 8 + app/i18n/locales/pt-BR.js | 3 +- app/i18n/locales/pt-PT.js | 1 - app/index.js | 2 + app/lib/methods/helpers/normalizeMessage.js | 3 + app/lib/methods/sendFileMessage.js | 186 +- app/lib/rocketchat.js | 34 + app/notifications/push/push.ios.js | 5 +- app/presentation/RoomItem/index.js | 328 +- app/presentation/RoomItem/styles.js | 42 +- app/sagas/init.js | 43 +- app/utils/vibration.js | 11 - app/views/AutoTranslateView/index.js | 156 + app/views/CreateChannelView.js | 6 +- app/views/DirectoryView/Options.js | 3 +- app/views/LanguageView/index.js | 1 - app/views/RegisterView.js | 118 +- app/views/RoomActionsView/index.js | 19 +- app/views/RoomInfoEditView/SwitchContainer.js | 2 + app/views/RoomMembersView/index.js | 4 +- app/views/RoomView/index.js | 21 +- app/views/RoomsListView/ServerDropdown.js | 43 +- app/views/RoomsListView/index.js | 43 +- app/views/RoomsListView/styles.js | 34 + app/views/SettingsView/index.js | 8 +- ios/Podfile.lock | 7 + .../Private/EXHaptics/EXHapticsModule.h | 1 + .../Public/EXHaptics/EXHapticsModule.h | 1 + .../Local Podspecs/EXHaptics.podspec.json | 23 + ios/Pods/Manifest.lock | 7 + ios/Pods/Pods.xcodeproj/project.pbxproj | 7895 +++++++++-------- .../EXHaptics/EXHaptics-dummy.m | 5 + .../EXHaptics/EXHaptics-prefix.pch | 12 + .../EXHaptics/EXHaptics.xcconfig | 9 + .../Pods-RocketChatRN.debug.xcconfig | 6 +- .../Pods-RocketChatRN.release.xcconfig | 6 +- .../Pods-ShareRocketChatRN.debug.xcconfig | 2 +- .../Pods-ShareRocketChatRN.release.xcconfig | 2 +- ios/RocketChatRN.xcodeproj/project.pbxproj | 491 +- .../xcschemes/ShareRocketChatRN.xcscheme | 108 - ios/RocketChatRN/Info.plist | 2 +- package.json | 7 +- yarn.lock | 154 +- 56 files changed, 5536 insertions(+), 4511 deletions(-) delete mode 100644 app/utils/vibration.js create mode 100644 app/views/AutoTranslateView/index.js create mode 120000 ios/Pods/Headers/Private/EXHaptics/EXHapticsModule.h create mode 120000 ios/Pods/Headers/Public/EXHaptics/EXHapticsModule.h create mode 100644 ios/Pods/Local Podspecs/EXHaptics.podspec.json create mode 100644 ios/Pods/Target Support Files/EXHaptics/EXHaptics-dummy.m create mode 100644 ios/Pods/Target Support Files/EXHaptics/EXHaptics-prefix.pch create mode 100644 ios/Pods/Target Support Files/EXHaptics/EXHaptics.xcconfig delete mode 100644 ios/RocketChatRN.xcodeproj/xcshareddata/xcschemes/ShareRocketChatRN.xcscheme diff --git a/__mocks__/react-native-gesture-handler.js b/__mocks__/react-native-gesture-handler.js index da7b586dd2..2f9960f4ab 100644 --- a/__mocks__/react-native-gesture-handler.js +++ b/__mocks__/react-native-gesture-handler.js @@ -2,3 +2,4 @@ export const RectButton = () => 'View'; export const State = () => 'View'; export const LongPressGestureHandler = () => 'View'; export const BorderlessButton = () => 'View'; +export const PanGestureHandler = () => 'View'; diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index 335bfb8b39..14b49705cf 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -2780,7 +2780,7 @@ exports[`Storyshots Message list 1`] = ` "backgroundColor": "transparent", "color": "#2F343D", "fontFamily": "System", - "fontSize": 16, + "fontSize": 46, "fontWeight": "400", } } @@ -2984,7 +2984,7 @@ exports[`Storyshots Message list 1`] = ` "backgroundColor": "transparent", "color": "#2F343D", "fontFamily": "System", - "fontSize": 16, + "fontSize": 46, "fontWeight": "400", } } @@ -2997,8 +2997,8 @@ exports[`Storyshots Message list 1`] = ` } style={ Object { - "height": 20, - "width": 20, + "height": 50, + "width": 50, } } /> @@ -3013,8 +3013,8 @@ exports[`Storyshots Message list 1`] = ` } style={ Object { - "height": 20, - "width": 20, + "height": 50, + "width": 50, } } /> @@ -3029,8 +3029,8 @@ exports[`Storyshots Message list 1`] = ` } style={ Object { - "height": 20, - "width": 20, + "height": 50, + "width": 50, } } /> diff --git a/app/constants/colors.js b/app/constants/colors.js index a1fa7cee7c..b65cbc22a6 100644 --- a/app/constants/colors.js +++ b/app/constants/colors.js @@ -1,4 +1,4 @@ -import { isIOS } from '../utils/deviceInfo'; +import { isIOS, isAndroid } from '../utils/deviceInfo'; export const COLOR_DANGER = '#f5455c'; export const COLOR_SUCCESS = '#2de0a5'; @@ -25,3 +25,8 @@ export const HEADER_BACKGROUND = isIOS ? '#f8f8f8' : '#2F343D'; export const HEADER_TITLE = isIOS ? COLOR_TITLE : COLOR_WHITE; export const HEADER_BACK = isIOS ? COLOR_PRIMARY : COLOR_WHITE; export const HEADER_TINT = isIOS ? COLOR_PRIMARY : COLOR_WHITE; + +export const SWITCH_TRACK_COLOR = { + false: isAndroid ? COLOR_DANGER : null, + true: COLOR_SUCCESS +}; diff --git a/app/constants/settings.js b/app/constants/settings.js index e8cc83dad0..cf28f63641 100644 --- a/app/constants/settings.js +++ b/app/constants/settings.js @@ -76,5 +76,8 @@ export default { }, API_Gitlab_URL: { type: 'valueAsString' + }, + AutoTranslate_Enabled: { + type: 'valueAsBoolean' } }; diff --git a/app/constants/userDefaults.js b/app/constants/userDefaults.js index 0d510b8f56..e21b7b852d 100644 --- a/app/constants/userDefaults.js +++ b/app/constants/userDefaults.js @@ -1,3 +1,6 @@ export const SERVERS = 'kServers'; export const TOKEN = 'kAuthToken'; +export const USER_ID = 'kUserId'; export const SERVER_URL = 'kAuthServerURL'; +export const SERVER_NAME = 'kServerName'; +export const SERVER_ICON = 'kServerIconURL'; diff --git a/app/containers/Check.js b/app/containers/Check.js index 8934bdd698..30c9cbd31c 100644 --- a/app/containers/Check.js +++ b/app/containers/Check.js @@ -6,6 +6,8 @@ import sharedStyles from '../views/Styles'; const styles = StyleSheet.create({ icon: { + width: 22, + height: 22, marginHorizontal: 15, ...sharedStyles.textColorDescription } diff --git a/app/containers/EmojiPicker/index.js b/app/containers/EmojiPicker/index.js index 3fe6f9371a..cfe5725598 100644 --- a/app/containers/EmojiPicker/index.js +++ b/app/containers/EmojiPicker/index.js @@ -141,7 +141,7 @@ export default class EmojiPicker extends Component { } render() { - const { show } = this.state; + const { show, frequentlyUsed } = this.state; const { tabEmojiStyle } = this.props; if (!show) { @@ -155,15 +155,17 @@ export default class EmojiPicker extends Component { > { categories.tabs.map((tab, i) => ( - - {this.renderCategory(tab.category, i)} - - )) + (i === 0 && frequentlyUsed.length === 0) ? null // when no frequentlyUsed don't show the tab + : ( + + {this.renderCategory(tab.category, i)} + + ))) } ); diff --git a/app/containers/MessageActions.js b/app/containers/MessageActions.js index bc798c7720..a3f7cbd144 100644 --- a/app/containers/MessageActions.js +++ b/app/containers/MessageActions.js @@ -4,6 +4,8 @@ import { Alert, Clipboard, Share } from 'react-native'; import { connect } from 'react-redux'; import ActionSheet from 'react-native-action-sheet'; import moment from 'moment'; +import * as Haptics from 'expo-haptics'; + import { actionsHide as actionsHideAction, deleteRequest as deleteRequestAction, @@ -13,11 +15,12 @@ import { toggleReactionPicker as toggleReactionPickerAction, toggleStarRequest as toggleStarRequestAction } from '../actions/messages'; -import { vibrate } from '../utils/vibration'; import RocketChat from '../lib/rocketchat'; +import database from '../lib/realm'; import I18n from '../i18n'; import log from '../utils/log'; import Navigation from '../lib/Navigation'; +import { getMessageTranslation } from './message/utils'; @connect( state => ({ @@ -46,7 +49,7 @@ export default class MessageActions extends React.Component { room: PropTypes.object.isRequired, actionMessage: PropTypes.object, toast: PropTypes.element, - // user: PropTypes.object.isRequired, + user: PropTypes.object, deleteRequest: PropTypes.func.isRequired, editInit: PropTypes.func.isRequired, toggleStarRequest: PropTypes.func.isRequired, @@ -127,6 +130,12 @@ export default class MessageActions extends React.Component { this.READ_RECEIPT_INDEX = this.options.length - 1; } + // Toggle Auto-translate + if (props.room.autoTranslate && props.actionMessage.u && props.actionMessage.u._id !== props.user.id) { + this.options.push(I18n.t(props.actionMessage.autoTranslate ? 'View_Original' : 'Translate')); + this.TOGGLE_TRANSLATION_INDEX = this.options.length - 1; + } + // Report this.options.push(I18n.t('Report')); this.REPORT_INDEX = this.options.length - 1; @@ -138,7 +147,7 @@ export default class MessageActions extends React.Component { } setTimeout(() => { this.showActionSheet(); - vibrate(); + Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); }); } @@ -326,6 +335,23 @@ export default class MessageActions extends React.Component { } } + handleToggleTranslation = async() => { + const { actionMessage, room } = this.props; + try { + const message = database.objectForPrimaryKey('messages', actionMessage._id); + database.write(() => { + message.autoTranslate = !message.autoTranslate; + message._updatedAt = new Date(); + }); + const translatedMessage = getMessageTranslation(message, room.autoTranslateLanguage); + if (!translatedMessage) { + await RocketChat.translateMessage(actionMessage, room.autoTranslateLanguage); + } + } catch (err) { + log('err_toggle_translation', err); + } + } + handleActionPress = (actionIndex) => { if (actionIndex) { switch (actionIndex) { @@ -365,6 +391,9 @@ export default class MessageActions extends React.Component { case this.READ_RECEIPT_INDEX: this.handleReadReceipt(); break; + case this.TOGGLE_TRANSLATION_INDEX: + this.handleToggleTranslation(); + break; default: break; } diff --git a/app/containers/MessageBox/Recording.js b/app/containers/MessageBox/Recording.js index d30a9cf193..96f45c9b72 100644 --- a/app/containers/MessageBox/Recording.js +++ b/app/containers/MessageBox/Recording.js @@ -44,13 +44,14 @@ export default class extends React.PureComponent { this.recordingCanceled = false; this.recording = true; + this.name = `${ Date.now() }.aac`; this.state = { currentTime: '00:00' }; } componentDidMount() { - const audioPath = `${ AudioUtils.CachesDirectoryPath }/${ Date.now() }.aac`; + const audioPath = `${ AudioUtils.CachesDirectoryPath }/${ this.name }`; AudioRecorder.prepareRecordingAtPath(audioPath, { SampleRate: 22050, @@ -84,12 +85,14 @@ export default class extends React.PureComponent { if (!didSucceed) { return onFinish && onFinish(didSucceed); } - - const path = filePath.startsWith('file://') ? filePath.split('file://')[1] : filePath; + if (isAndroid) { + filePath = filePath.startsWith('file://') ? filePath : `file://${ filePath }`; + } const fileInfo = { + name: this.name, type: 'audio/aac', store: 'Uploads', - path + path: filePath }; return onFinish && onFinish(fileInfo); } diff --git a/app/containers/message/Markdown.js b/app/containers/message/Markdown.js index ae8cc77aff..403af4872f 100644 --- a/app/containers/message/Markdown.js +++ b/app/containers/message/Markdown.js @@ -20,6 +20,33 @@ const formatText = text => text.replace( (match, url, title) => `[${ title }](${ url })` ); +const emojiRanges = [ + '\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff]', // unicode emoji from https://www.regextester.com/106421 + ':.{1,40}:', // custom emoji + ' |\n' // allow spaces and line breaks +].join('|'); + +const removeAllEmoji = str => str.replace(new RegExp(emojiRanges, 'g'), ''); + +const isOnlyEmoji = str => !removeAllEmoji(str).length; + +const removeOneEmoji = str => str.replace(new RegExp(emojiRanges), ''); + +const emojiCount = (str) => { + let oldLength = 0; + let counter = 0; + + while (oldLength !== str.length) { + oldLength = str.length; + str = removeOneEmoji(str); + if (oldLength !== str.length) { + counter += 1; + } + } + + return counter; +}; + const Markdown = React.memo(({ msg, style, rules, baseUrl, username, isEdited, numberOfLines, mentions, channels, getCustomEmoji, useMarkdown = true }) => { @@ -30,7 +57,7 @@ const Markdown = React.memo(({ if (m) { m = emojify(m, { output: 'unicode' }); } - m = m.replace(/^\[([^\]]*)\]\(([^)]*)\)/, '').trim(); + m = m.replace(/^\[([^\]]*)\]\(([^)]*)\)\s/, '').trim(); if (numberOfLines > 0) { m = m.replace(/[\n]+/g, '\n').trim(); } @@ -39,6 +66,8 @@ const Markdown = React.memo(({ return {m}; } + const isMessageContainsOnlyEmoji = isOnlyEmoji(m) && emojiCount(m) <= 3; + return ( ; + return ( + + ); } return :{content}:; } @@ -102,7 +138,7 @@ const Markdown = React.memo(({ }} style={{ paragraph: styles.paragraph, - text: styles.text, + text: isMessageContainsOnlyEmoji ? styles.textBig : styles.text, codeInline: styles.codeInline, codeBlock: styles.codeBlock, link: styles.link, diff --git a/app/containers/message/index.js b/app/containers/message/index.js index 478055ad09..de62fe758b 100644 --- a/app/containers/message/index.js +++ b/app/containers/message/index.js @@ -4,7 +4,7 @@ import { KeyboardUtils } from 'react-native-keyboard-input'; import Message from './Message'; import debounce from '../../utils/debounce'; -import { SYSTEM_MESSAGES, getCustomEmoji } from './utils'; +import { SYSTEM_MESSAGES, getCustomEmoji, getMessageTranslation } from './utils'; import messagesStatus from '../../constants/messagesStatus'; export default class MessageContainer extends React.Component { @@ -27,6 +27,8 @@ export default class MessageContainer extends React.Component { isReadReceiptEnabled: PropTypes.bool, useRealName: PropTypes.bool, useMarkdown: PropTypes.bool, + autoTranslateRoom: PropTypes.bool, + autoTranslateLanguage: PropTypes.string, status: PropTypes.number, onLongPress: PropTypes.func, onReactionPress: PropTypes.func, @@ -49,12 +51,15 @@ export default class MessageContainer extends React.Component { shouldComponentUpdate(nextProps) { const { - status, item, _updatedAt + status, item, _updatedAt, autoTranslateRoom } = this.props; if (status !== nextProps.status) { return true; } + if (autoTranslateRoom !== nextProps.autoTranslateRoom) { + return true; + } if (item.tmsg !== nextProps.item.tmsg) { return true; } @@ -191,16 +196,23 @@ export default class MessageContainer extends React.Component { render() { const { - item, user, style, archived, baseUrl, useRealName, broadcast, fetchThreadName, customThreadTimeFormat, onOpenFileModal, timeFormat, useMarkdown, isReadReceiptEnabled + item, user, style, archived, baseUrl, useRealName, broadcast, fetchThreadName, customThreadTimeFormat, onOpenFileModal, timeFormat, useMarkdown, isReadReceiptEnabled, autoTranslateRoom, autoTranslateLanguage } = this.props; const { - _id, msg, ts, attachments, urls, reactions, t, avatar, u, alias, editedBy, role, drid, dcount, dlm, tmid, tcount, tlm, tmsg, mentions, channels, unread + _id, msg, ts, attachments, urls, reactions, t, avatar, u, alias, editedBy, role, drid, dcount, dlm, tmid, tcount, tlm, tmsg, mentions, channels, unread, autoTranslate: autoTranslateMessage } = item; + let message = msg; + // "autoTranslateRoom" and "autoTranslateLanguage" are properties from the subscription + // "autoTranslateMessage" is a toggle between "View Original" and "Translate" state + if (autoTranslateRoom && autoTranslateMessage) { + message = getMessageTranslation(item, autoTranslateLanguage) || message; + } + return ( { }); return findByAlias; }; + +export const getMessageTranslation = (message, autoTranslateLanguage) => { + if (!autoTranslateLanguage) { + return null; + } + const { translations } = message; + if (translations) { + const translation = translations.find(trans => trans.language === autoTranslateLanguage); + return translation && translation.value; + } + return null; +}; diff --git a/app/i18n/locales/en.js b/app/i18n/locales/en.js index ee8c343657..809e1b8aa2 100644 --- a/app/i18n/locales/en.js +++ b/app/i18n/locales/en.js @@ -99,6 +99,7 @@ export default { Are_you_sure_question_mark: 'Are you sure?', Are_you_sure_you_want_to_leave_the_room: 'Are you sure you want to leave the room {{room}}?', Authenticating: 'Authenticating', + Auto_Translate: 'Auto-Translate', Avatar_changed_successfully: 'Avatar changed successfully!', Avatar_Url: 'Avatar URL', Away: 'Away', @@ -156,11 +157,13 @@ export default { Email_or_password_field_is_empty: 'Email or password field is empty', Email: 'Email', email: 'e-mail', + Enable_Auto_Translate: 'Enable Auto-Translate', Enable_markdown: 'Enable markdown', Enable_notifications: 'Enable notifications', Everyone_can_access_this_channel: 'Everyone can access this channel', erasing_room: 'erasing room', Error_uploading: 'Error uploading', + Favorite: 'Favorite', Favorites: 'Favorites', Files: 'Files', File_description: 'File description', @@ -174,6 +177,7 @@ export default { Forgot_Password: 'Forgot Password', Group_by_favorites: 'Group favorites', Group_by_type: 'Group by type', + Hide: 'Hide', Has_joined_the_channel: 'Has joined the channel', Has_joined_the_conversation: 'Has joined the conversation', Has_left_the_channel: 'Has left the channel', @@ -267,6 +271,7 @@ export default { Reactions_are_disabled: 'Reactions are disabled', Reactions_are_enabled: 'Reactions are enabled', Reactions: 'Reactions', + Read: 'Read', Read_Only_Channel: 'Read Only Channel', Read_Only: 'Read Only', Read_Receipt: 'Read Receipt', @@ -347,12 +352,14 @@ export default { To: 'To', topic: 'topic', Topic: 'Topic', + Translate: 'Translate', Try_again: 'Try again', Two_Factor_Authentication: 'Two-factor Authentication', Type_the_channel_name_here: 'Type the channel name here', unarchive: 'unarchive', UNARCHIVE: 'UNARCHIVE', Unblock_user: 'Unblock user', + Unfavorite: 'Unfavorite', Unfollowed_thread: 'Unfollowed thread', Unmute: 'Unmute', unmuted: 'unmuted', @@ -378,6 +385,7 @@ export default { Username_or_email: 'Username or email', Validating: 'Validating', Video_call: 'Video call', + View_Original: 'View Original', Voice_call: 'Voice call', Welcome: 'Welcome', Welcome_to_RocketChat: 'Welcome to Rocket.Chat', diff --git a/app/i18n/locales/pt-BR.js b/app/i18n/locales/pt-BR.js index b0d0a16748..22ce7cf872 100644 --- a/app/i18n/locales/pt-BR.js +++ b/app/i18n/locales/pt-BR.js @@ -380,6 +380,5 @@ export default { you_were_mentioned: 'você foi mencionado', you: 'você', You: 'Você', - You_will_not_be_able_to_recover_this_message: 'Você não será capaz de recuperar essa mensagem!', - You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Você precisa acessar pelo menos um servidor Rocket.Chat para compartilhar algo.' + You_will_not_be_able_to_recover_this_message: 'Você não será capaz de recuperar essa mensagem!' }; diff --git a/app/i18n/locales/pt-PT.js b/app/i18n/locales/pt-PT.js index fd61b0b1f5..c816756948 100644 --- a/app/i18n/locales/pt-PT.js +++ b/app/i18n/locales/pt-PT.js @@ -346,7 +346,6 @@ export default { Welcome: 'Bem vindo(a)', Welcome_to_RocketChat: 'Bem vindo(a) ao Rocket.Chat', Whats_your_2fa: 'Qual é o seu código 2FA?', - Without_Servers: 'Sem servidores!', Yes_action_it: 'Sim, {{action}}!', Yesterday: 'Ontem', You_are_in_preview_mode: 'Você está no modo de pré-visualização', diff --git a/app/index.js b/app/index.js index 04afb221a2..0eb58053f4 100644 --- a/app/index.js +++ b/app/index.js @@ -33,6 +33,7 @@ import SearchMessagesView from './views/SearchMessagesView'; import ReadReceiptsView from './views/ReadReceiptView'; import ThreadMessagesView from './views/ThreadMessagesView'; import MessagesView from './views/MessagesView'; +import AutoTranslateView from './views/AutoTranslateView'; import SelectedUsersView from './views/SelectedUsersView'; import CreateChannelView from './views/CreateChannelView'; import LegalView from './views/LegalView'; @@ -116,6 +117,7 @@ const ChatsStack = createStackNavigator({ SelectedUsersView, ThreadMessagesView, MessagesView, + AutoTranslateView, ReadReceiptsView, DirectoryView }, { diff --git a/app/lib/methods/helpers/normalizeMessage.js b/app/lib/methods/helpers/normalizeMessage.js index 39fa9dae05..f728f271e5 100644 --- a/app/lib/methods/helpers/normalizeMessage.js +++ b/app/lib/methods/helpers/normalizeMessage.js @@ -36,6 +36,9 @@ export default (msg) => { if (!Array.isArray(msg.reactions)) { msg.reactions = Object.keys(msg.reactions).map(key => ({ _id: `${ msg._id }${ key }`, emoji: key, usernames: msg.reactions[key].usernames })); } + if (msg.translations && Object.keys(msg.translations).length) { + msg.translations = Object.keys(msg.translations).map(key => ({ _id: `${ msg._id }${ key }`, language: key, value: msg.translations[key] })); + } msg.urls = msg.urls ? parseUrls(msg.urls) : []; msg._updatedAt = new Date(); // loadHistory returns msg.starred as object diff --git a/app/lib/methods/sendFileMessage.js b/app/lib/methods/sendFileMessage.js index 57d0f9a16e..08da0b3742 100644 --- a/app/lib/methods/sendFileMessage.js +++ b/app/lib/methods/sendFileMessage.js @@ -1,111 +1,129 @@ -import RNFetchBlob from 'rn-fetch-blob'; - import reduxStore from '../createStore'; import database from '../realm'; import log from '../../utils/log'; -const promises = {}; +const uploadQueue = {}; -function _ufsCreate(fileInfo) { - return this.sdk.methodCall('ufsCreate', fileInfo); +export function isUploadActive(path) { + return !!uploadQueue[path]; } -function _ufsComplete(fileId, store, token) { - return this.sdk.methodCall('ufsComplete', fileId, store, token); +export function cancelUpload(path) { + if (uploadQueue[path]) { + uploadQueue[path].abort(); + database.write(() => { + const upload = database.objects('uploads').filtered('path = $0', path); + try { + database.delete(upload); + } catch (e) { + log('err_send_file_message_delete_upload', e); + } + }); + delete uploadQueue[path]; + } } -function _sendFileMessage(rid, data, msg = {}) { - // RC 0.22.0 - return this.sdk.methodCall('sendFileMessage', rid, null, data, msg); -} +export function sendFileMessage(rid, fileInfo, tmid) { + return new Promise((resolve, reject) => { + try { + const { FileUpload_MaxFileSize, Site_Url } = reduxStore.getState().settings; + const { id, token } = reduxStore.getState().login.user; -export function isUploadActive(path) { - return !!promises[path]; -} + // -1 maxFileSize means there is no limit + if (FileUpload_MaxFileSize > -1 && fileInfo.size > FileUpload_MaxFileSize) { + return reject({ error: 'error-file-too-large' }); // eslint-disable-line + } -export async function cancelUpload(path) { - if (promises[path]) { - await promises[path].cancel(); - } -} + const uploadUrl = `${ Site_Url }/api/v1/rooms.upload/${ rid }`; -export async function sendFileMessage(rid, fileInfo, tmid) { - try { - const data = await RNFetchBlob.wrap(fileInfo.path); - if (!fileInfo.size) { - const fileStat = await RNFetchBlob.fs.stat(fileInfo.path); - fileInfo.size = fileStat.size; - fileInfo.name = fileStat.filename; - } + const xhr = new XMLHttpRequest(); + const formData = new FormData(); - const { FileUpload_MaxFileSize } = reduxStore.getState().settings; + fileInfo.rid = rid; - // -1 maxFileSize means there is no limit - if (FileUpload_MaxFileSize > -1 && fileInfo.size > FileUpload_MaxFileSize) { - return Promise.reject({ error: 'error-file-too-large' }); // eslint-disable-line - } + database.write(() => { + try { + database.create('uploads', fileInfo, true); + } catch (e) { + return log('err_send_file_message_create_upload_1', e); + } + }); - fileInfo.rid = rid; + uploadQueue[fileInfo.path] = xhr; + xhr.open('POST', uploadUrl); - database.write(() => { - try { - database.create('uploads', fileInfo, true); - } catch (e) { - return log('err_send_file_message_create_upload_1', e); + formData.append('file', { + uri: fileInfo.path, + type: fileInfo.type, + name: fileInfo.name || 'fileMessage' + }); + + if (fileInfo.description) { + formData.append('description', fileInfo.description); + } + + if (tmid) { + formData.append('tmid', tmid); } - }); - const result = await _ufsCreate.call(this, fileInfo); + xhr.setRequestHeader('X-Auth-Token', token); + xhr.setRequestHeader('X-User-Id', id); + + xhr.upload.onprogress = ({ total, loaded }) => { + database.write(() => { + fileInfo.progress = Math.floor((loaded / total) * 100); + try { + database.create('uploads', fileInfo, true); + } catch (e) { + return log('err_send_file_message_create_upload_2', e); + } + }); + }; - promises[fileInfo.path] = RNFetchBlob.fetch('POST', result.url, { - 'Content-Type': 'octet-stream' - }, data); - // Workaround for https://github.com/joltup/rn-fetch-blob/issues/96 - setTimeout(() => { - if (promises[fileInfo.path] && promises[fileInfo.path].uploadProgress) { - promises[fileInfo.path].uploadProgress((loaded, total) => { + xhr.onload = () => { + if (xhr.status >= 200 && xhr.status < 400) { // If response is all good... database.write(() => { - fileInfo.progress = Math.floor((loaded / total) * 100); + const upload = database.objects('uploads').filtered('path = $0', fileInfo.path); try { - database.create('uploads', fileInfo, true); + database.delete(upload); + const response = JSON.parse(xhr.response); + resolve(response); } catch (e) { - return log('err_send_file_message_create_upload_2', e); + reject(e); + log('err_send_file_message_delete_upload', e); + } + }); + } else { + database.write(() => { + fileInfo.error = true; + try { + database.create('uploads', fileInfo, true); + const response = JSON.parse(xhr.response); + reject(response); + } catch (err) { + reject(err); + log('err_send_file_message_create_upload_3', err); } }); + } + }; + + xhr.onerror = (e) => { + database.write(() => { + fileInfo.error = true; + try { + database.create('uploads', fileInfo, true); + reject(e); + } catch (err) { + reject(err); + log('err_send_file_message_create_upload_3', err); + } }); - } - }); - await promises[fileInfo.path]; - - const completeResult = await _ufsComplete.call(this, result.fileId, fileInfo.store, result.token); - - await _sendFileMessage.call(this, completeResult.rid, { - _id: completeResult._id, - type: completeResult.type, - size: completeResult.size, - name: completeResult.name, - description: completeResult.description, - url: completeResult.path - }, { - tmid - }); + }; - database.write(() => { - const upload = database.objects('uploads').filtered('path = $0', fileInfo.path); - try { - database.delete(upload); - } catch (e) { - log('err_send_file_message_delete_upload', e); - } - }); - } catch (e) { - database.write(() => { - fileInfo.error = true; - try { - database.create('uploads', fileInfo, true); - } catch (err) { - log('err_send_file_message_create_upload_3', err); - } - }); - } + xhr.send(formData); + } catch (err) { + log('err_send_file_message_create_upload_4', err); + } + }); } diff --git a/app/lib/rocketchat.js b/app/lib/rocketchat.js index 673c3358af..364a438161 100644 --- a/app/lib/rocketchat.js +++ b/app/lib/rocketchat.js @@ -582,6 +582,12 @@ const RocketChat = { // RC 0.64.0 return this.sdk.post('rooms.favorite', { roomId, favorite }); }, + toggleRead(read, roomId) { + if (read) { + return this.sdk.post('subscriptions.unread', { roomId }); + } + return this.sdk.post('subscriptions.read', { rid: roomId }); + }, getRoomMembers(rid, allUsers, skip = 0, limit = 10) { // RC 0.42.0 return this.sdk.methodCall('getUsersOfRoom', rid, allUsers, { skip, limit }); @@ -640,6 +646,9 @@ const RocketChat = { // RC 0.48.0 return this.sdk.post(`${ this.roomTypeToApiType(t) }.unarchive`, { roomId }); }, + hideRoom(roomId, t) { + return this.sdk.post(`${ this.roomTypeToApiType(t) }.close`, { roomId }); + }, saveRoomSettings(rid, params) { // RC 0.55.0 return this.sdk.methodCall('saveRoomSettings', rid, params); @@ -881,6 +890,31 @@ const RocketChat = { return this.sdk.get('directory', { query, count, offset, sort }); + }, + canAutoTranslate() { + try { + const AutoTranslate_Enabled = reduxStore.getState().settings && reduxStore.getState().settings.AutoTranslate_Enabled; + if (!AutoTranslate_Enabled) { + return false; + } + const autoTranslatePermission = database.objectForPrimaryKey('permissions', 'auto-translate'); + const userRoles = (reduxStore.getState().login.user && reduxStore.getState().login.user.roles) || []; + return autoTranslatePermission.roles.some(role => userRoles.includes(role)); + } catch (error) { + log('err_can_auto_translate', error); + return false; + } + }, + saveAutoTranslate({ + rid, field, value, options + }) { + return this.sdk.methodCall('autoTranslate.saveSettings', rid, field, value, options); + }, + getSupportedLanguagesAutoTranslate() { + return this.sdk.methodCall('autoTranslate.getSupportedLanguages', 'en'); + }, + translateMessage(message, targetLanguage) { + return this.sdk.methodCall('autoTranslate.translateMessage', message, targetLanguage); } }; diff --git a/app/notifications/push/push.ios.js b/app/notifications/push/push.ios.js index 56cfa3e9f9..fe307ee144 100644 --- a/app/notifications/push/push.ios.js +++ b/app/notifications/push/push.ios.js @@ -25,12 +25,13 @@ class PushNotification { NotificationsIOS.setBadgesCount(count); } - configure(params) { + async configure(params) { this.onRegister = params.onRegister; this.onNotification = params.onNotification; + const initial = await NotificationsIOS.getInitialNotification(); NotificationsIOS.consumeBackgroundQueue(); - return Promise.resolve(); + return Promise.resolve(initial); } } export default new PushNotification(); diff --git a/app/presentation/RoomItem/index.js b/app/presentation/RoomItem/index.js index 28a296dc7f..b93c9f1d5b 100644 --- a/app/presentation/RoomItem/index.js +++ b/app/presentation/RoomItem/index.js @@ -1,9 +1,11 @@ import React from 'react'; import moment from 'moment'; import PropTypes from 'prop-types'; -import { View, Text } from 'react-native'; +import { + View, Text, Dimensions, Animated +} from 'react-native'; import { connect } from 'react-redux'; -import { RectButton } from 'react-native-gesture-handler'; +import { RectButton, PanGestureHandler, State } from 'react-native-gesture-handler'; import Avatar from '../../containers/Avatar'; import I18n from '../../i18n'; @@ -11,9 +13,13 @@ import styles, { ROW_HEIGHT } from './styles'; import UnreadBadge from './UnreadBadge'; import TypeIcon from './TypeIcon'; import LastMessage from './LastMessage'; +import { CustomIcon } from '../../lib/Icons'; export { ROW_HEIGHT }; +const OPTION_WIDTH = 80; +const SMALL_SWIPE = 80; +const ACTION_OFFSET = 220; const attrs = ['name', 'unread', 'userMentions', 'showLastMessage', 'alert', 'type']; @connect(state => ({ userId: state.login.user && state.login.user.id, @@ -39,7 +45,13 @@ export default class RoomItem extends React.Component { token: PropTypes.string, avatarSize: PropTypes.number, testID: PropTypes.string, - height: PropTypes.number + height: PropTypes.number, + favorite: PropTypes.bool, + isRead: PropTypes.bool, + rid: PropTypes.string, + toggleFav: PropTypes.func, + toggleRead: PropTypes.func, + hideChannel: PropTypes.func } static defaultProps = { @@ -50,10 +62,28 @@ export default class RoomItem extends React.Component { // eslint-disable-next-line no-useless-constructor constructor(props) { super(props); + const dragX = new Animated.Value(0); + const rowOffSet = new Animated.Value(0); + this.rowTranslation = Animated.add( + rowOffSet, + dragX + ); + this.state = { + dragX, + rowOffSet, + rowState: 0, // 0: closed, 1: right opened, -1: left opened + leftWidth: undefined, + rightOffset: undefined + }; + this._onGestureEvent = Animated.event( + [{ nativeEvent: { translationX: dragX } }] + ); + this._value = 0; + this.rowTranslation.addListener(({ value }) => { this._value = value; }); } shouldComponentUpdate(nextProps) { - const { lastMessage, _updatedAt } = this.props; + const { lastMessage, _updatedAt, isRead } = this.props; const oldlastMessage = lastMessage; const newLastmessage = nextProps.lastMessage; @@ -63,10 +93,236 @@ export default class RoomItem extends React.Component { if (_updatedAt && nextProps._updatedAt && nextProps._updatedAt !== _updatedAt) { return true; } + if (isRead !== nextProps.isRead) { + return true; + } // eslint-disable-next-line react/destructuring-assignment return attrs.some(key => nextProps[key] !== this.props[key]); } + componentWillUnmount() { + this.rowTranslation.removeAllListeners(); + } + + close = () => { + this.swipeableRow.close(); + }; + + _onHandlerStateChange = ({ nativeEvent }) => { + if (nativeEvent.oldState === State.ACTIVE) { + this._handleRelease(nativeEvent); + } + }; + + _currentOffset = () => { + const { leftWidth = 0, rowState } = this.state; + const { rightOffset } = this.state; + if (rowState === 1) { + return leftWidth; + } else if (rowState === -1) { + return rightOffset; + } + return 0; + }; + + _handleRelease = (nativeEvent) => { + const { translationX } = nativeEvent; + const { rowState } = this.state; + let toValue = 0; + if (rowState === 0) { // if no option is opened + if (translationX > 0 && translationX < ACTION_OFFSET) { + toValue = OPTION_WIDTH; // open left option if he swipe right but not enough to trigger action + this.setState({ rowState: -1 }); + } else if (translationX > ACTION_OFFSET) { + toValue = 0; + this.toggleRead(); + } else if (translationX < 0 && translationX > -ACTION_OFFSET) { + toValue = -2 * OPTION_WIDTH; // open right option if he swipe left + this.setState({ rowState: 1 }); + } else if (translationX < -ACTION_OFFSET) { + toValue = 0; + this.hideChannel(); + } else { + toValue = 0; + } + } + + if (rowState === -1) { // if left option is opened + if (this._value < SMALL_SWIPE) { + toValue = 0; + this.setState({ rowState: 0 }); + } else if (this._value > ACTION_OFFSET) { + toValue = 0; + this.setState({ rowState: 0 }); + this.toggleRead(); + } else { + toValue = OPTION_WIDTH; + } + } + + if (rowState === 1) { // if right option is opened + if (this._value > -2 * SMALL_SWIPE) { + toValue = 0; + this.setState({ rowState: 0 }); + } else if (this._value < -ACTION_OFFSET) { + toValue = 0; + this.setState({ rowState: 0 }); + this.hideChannel(); + } else { + toValue = -2 * OPTION_WIDTH; + } + } + this._animateRow(toValue); + } + + _animateRow = (toValue) => { + const { dragX, rowOffSet } = this.state; + rowOffSet.setValue(this._value); + dragX.setValue(0); + Animated.spring(rowOffSet, { + toValue, + bounciness: 5 + }).start(); + } + + handleLeftButtonPress = () => { + this.toggleRead(); + this.close(); + } + + close = () => { + this._animateRow(0); + } + + toggleFav = () => { + const { toggleFav, rid, favorite } = this.props; + if (toggleFav) { + toggleFav(rid, favorite); + } + this.close(); + } + + toggleRead = () => { + const { toggleRead, rid, isRead } = this.props; + if (toggleRead) { + toggleRead(rid, isRead); + } + } + + handleHideButtonPress = () => { + this.hideChannel(); + this.close(); + } + + hideChannel = () => { + const { hideChannel, rid, type } = this.props; + if (hideChannel) { + hideChannel(rid, type); + } + } + + renderLeftActions = () => { + const { isRead } = this.props; + const { width } = Dimensions.get('window'); + const trans = this.rowTranslation.interpolate({ + inputRange: [0, OPTION_WIDTH], + outputRange: [-width, -width + OPTION_WIDTH] + }); + + const iconTrans = this.rowTranslation.interpolate({ + inputRange: [0, OPTION_WIDTH, ACTION_OFFSET - 20, ACTION_OFFSET, width], + outputRange: [0, 0, -(OPTION_WIDTH + 10), 0, 0] + }); + return ( + + + + {isRead ? ( + + + {I18n.t('Unread')} + + ) : ( + + + {I18n.t('Read')} + + )} + + + + ); + }; + + renderRightActions = () => { + const { favorite } = this.props; + const { width } = Dimensions.get('window'); + const trans = this.rowTranslation.interpolate({ + inputRange: [-OPTION_WIDTH, 0], + outputRange: [width - OPTION_WIDTH, width] + }); + const iconHideTrans = this.rowTranslation.interpolate({ + inputRange: [-(ACTION_OFFSET - 20), -2 * OPTION_WIDTH, 0], + outputRange: [0, 0, -OPTION_WIDTH] + }); + const iconFavWidth = this.rowTranslation.interpolate({ + inputRange: [-(ACTION_OFFSET + 1), -ACTION_OFFSET, -(ACTION_OFFSET - 20), -2 * OPTION_WIDTH, 0], + outputRange: [0, 0, OPTION_WIDTH + 20, OPTION_WIDTH, OPTION_WIDTH] + }); + const iconHideWidth = this.rowTranslation.interpolate({ + inputRange: [-(ACTION_OFFSET + 1), -ACTION_OFFSET, -(ACTION_OFFSET - 20), -2 * OPTION_WIDTH, 0], + outputRange: [(ACTION_OFFSET + 1), ACTION_OFFSET, OPTION_WIDTH + 20, OPTION_WIDTH, OPTION_WIDTH] + }); + return ( + + + + {favorite ? ( + + + {I18n.t('Unfavorite')} + + ) : ( + + + {I18n.t('Favorite')} + + )} + + + + + + + {I18n.t('Hide')} + + + + + ); + } + formatDate = date => moment(date).calendar(null, { lastDay: `[${ I18n.t('Yesterday') }]`, sameDay: 'h:mm A', @@ -97,30 +353,48 @@ export default class RoomItem extends React.Component { } return ( - - - - - - - { name } - {_updatedAt ? { date } : null} - - - - - - - - + + {this.renderLeftActions()} + {this.renderRightActions()} + + + + + + + + { name } + {_updatedAt ? { date } : null} + + + + + + + + + + + ); } } diff --git a/app/presentation/RoomItem/styles.js b/app/presentation/RoomItem/styles.js index 87fb92c944..fba962e7ea 100644 --- a/app/presentation/RoomItem/styles.js +++ b/app/presentation/RoomItem/styles.js @@ -9,9 +9,10 @@ export const ROW_HEIGHT = 75 * PixelRatio.getFontScale(); export default StyleSheet.create({ container: { + backgroundColor: COLOR_WHITE, flexDirection: 'row', alignItems: 'center', - marginLeft: 14, + paddingLeft: 14, height: ROW_HEIGHT }, centerContainer: { @@ -93,5 +94,44 @@ export default StyleSheet.create({ }, avatar: { marginRight: 10 + }, + actionText: { + color: 'white', + fontSize: 14, + backgroundColor: 'transparent', + justifyContent: 'center' + }, + actionButtonLeft: { + flex: 1, + backgroundColor: '#497AFC', + justifyContent: 'center', + alignItems: 'flex-end' + }, + actionButtonRightFav: { + flex: 1, + justifyContent: 'center', + alignItems: 'flex-start', + backgroundColor: '#F4BD3E' + }, + actionButtonRightHide: { + flex: 1, + justifyContent: 'center', + alignItems: 'flex-start', + backgroundColor: '#55585D' + }, + actionView: { + width: 80, + alignItems: 'center' + }, + leftAction: { + ...StyleSheet.absoluteFill, + flexDirection: 'row-reverse' + }, + rightAction: { + ...StyleSheet.absoluteFill, + flexDirection: 'row' + }, + upperContainer: { + overflow: 'hidden' } }); diff --git a/app/sagas/init.js b/app/sagas/init.js index c1f952f41c..5218de5f11 100644 --- a/app/sagas/init.js +++ b/app/sagas/init.js @@ -1,3 +1,4 @@ +import { AsyncStorage } from 'react-native'; import { put, takeLatest, all } from 'redux-saga/effects'; import SplashScreen from 'react-native-splash-screen'; import RNUserDefaults from 'rn-user-defaults'; @@ -11,16 +12,54 @@ import RocketChat from '../lib/rocketchat'; import log from '../utils/log'; import Navigation from '../lib/Navigation'; import database from '../lib/realm'; +import { + SERVERS, SERVER_ICON, SERVER_NAME, SERVER_URL, TOKEN, USER_ID +} from '../constants/userDefaults'; +import { isIOS } from '../utils/deviceInfo'; const restore = function* restore() { try { - yield RNUserDefaults.setName('group.ios.chat.rocket'); + let hasMigration; + if (isIOS) { + yield RNUserDefaults.setName('group.ios.chat.rocket'); + hasMigration = yield AsyncStorage.getItem('hasMigration'); + } - const { token, server } = yield all({ + let { token, server } = yield all({ token: RNUserDefaults.get(RocketChat.TOKEN_KEY), server: RNUserDefaults.get('currentServer') }); + // get native credentials + if (isIOS && !hasMigration) { + const { serversDB } = database.databases; + const servers = yield RNUserDefaults.objectForKey(SERVERS); + if (servers) { + serversDB.write(() => { + servers.forEach(async(serverItem) => { + const serverInfo = { + id: serverItem[SERVER_URL], + name: serverItem[SERVER_NAME], + iconURL: serverItem[SERVER_ICON] + }; + try { + serversDB.create('servers', serverInfo, true); + await RNUserDefaults.set(`${ RocketChat.TOKEN_KEY }-${ serverInfo.id }`, serverItem[USER_ID]); + } catch (e) { + log('err_create_servers', e); + } + }); + }); + yield AsyncStorage.setItem('hasMigration', true); + } + + // if not have current + if (servers && servers.length !== 0 && (!token || !server)) { + server = servers[0][SERVER_URL]; + token = servers[0][TOKEN]; + } + } + const sortPreferences = yield RocketChat.getSortPreferences(); yield put(setAllPreferences(sortPreferences)); diff --git a/app/utils/vibration.js b/app/utils/vibration.js deleted file mode 100644 index a91c3e13cc..0000000000 --- a/app/utils/vibration.js +++ /dev/null @@ -1,11 +0,0 @@ -import { Vibration } from 'react-native'; - -import { isAndroid } from './deviceInfo'; - -const vibrate = () => { - if (isAndroid) { - Vibration.vibrate(30); - } -}; - -export { vibrate }; diff --git a/app/views/AutoTranslateView/index.js b/app/views/AutoTranslateView/index.js new file mode 100644 index 0000000000..d2691632d3 --- /dev/null +++ b/app/views/AutoTranslateView/index.js @@ -0,0 +1,156 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { + FlatList, Switch, View, StyleSheet +} from 'react-native'; +import { SafeAreaView, ScrollView } from 'react-navigation'; + +import RocketChat from '../../lib/rocketchat'; +import I18n from '../../i18n'; +// import log from '../../utils/log'; +import StatusBar from '../../containers/StatusBar'; +import { CustomIcon } from '../../lib/Icons'; +import sharedStyles from '../Styles'; +import ListItem from '../../containers/ListItem'; +import Separator from '../../containers/Separator'; +import { + SWITCH_TRACK_COLOR, COLOR_BACKGROUND_CONTAINER, COLOR_WHITE, COLOR_SEPARATOR +} from '../../constants/colors'; +import scrollPersistTaps from '../../utils/scrollPersistTaps'; +import database from '../../lib/realm'; + +const styles = StyleSheet.create({ + contentContainerStyle: { + borderColor: COLOR_SEPARATOR, + borderTopWidth: StyleSheet.hairlineWidth, + borderBottomWidth: StyleSheet.hairlineWidth, + backgroundColor: COLOR_WHITE, + marginTop: 10, + paddingBottom: 30 + }, + sectionSeparator: { + ...sharedStyles.separatorVertical, + backgroundColor: COLOR_BACKGROUND_CONTAINER, + height: 10 + } +}); + +const SectionSeparator = React.memo(() => ); + +export default class AutoTranslateView extends React.Component { + static navigationOptions = () => ({ + title: I18n.t('Auto_Translate') + }) + + static propTypes = { + navigation: PropTypes.object + } + + constructor(props) { + super(props); + this.rid = props.navigation.getParam('rid'); + this.rooms = database.objects('subscriptions').filtered('rid = $0', this.rid); + this.state = { + languages: [], + selectedLanguage: this.rooms[0].autoTranslateLanguage, + enableAutoTranslate: this.rooms[0].autoTranslate + }; + } + + async componentDidMount() { + try { + const languages = await RocketChat.getSupportedLanguagesAutoTranslate(); + this.setState({ languages }); + } catch (error) { + console.log(error); + } + } + + toggleAutoTranslate = async() => { + const { enableAutoTranslate } = this.state; + try { + await RocketChat.saveAutoTranslate({ + rid: this.rid, + field: 'autoTranslate', + value: enableAutoTranslate ? '0' : '1', + options: { defaultLanguage: 'en' } + }); + this.setState({ enableAutoTranslate: !enableAutoTranslate }); + } catch (error) { + console.log(error); + } + } + + saveAutoTranslateLanguage = async(language) => { + try { + await RocketChat.saveAutoTranslate({ + rid: this.rid, + field: 'autoTranslateLanguage', + value: language + }); + this.setState({ selectedLanguage: language }); + } catch (error) { + console.log(error); + } + } + + renderSeparator = () => + + renderIcon = () => + + renderSwitch = () => { + const { enableAutoTranslate } = this.state; + return ( + + ); + } + + renderItem = ({ item }) => { + const { selectedLanguage } = this.state; + const { language, name } = item; + const isSelected = selectedLanguage === language; + + return ( + this.saveAutoTranslateLanguage(language)} + testID={`auto-translate-view-${ language }`} + right={isSelected ? this.renderIcon : null} + /> + ); + } + + render() { + const { languages } = this.state; + return ( + + + + this.renderSwitch()} + /> + + item.language} + renderItem={this.renderItem} + ItemSeparatorComponent={this.renderSeparator} + /> + + + ); + } +} + +console.disableYellowBox = true; diff --git a/app/views/CreateChannelView.js b/app/views/CreateChannelView.js index 2cf346fccb..b29cedbda5 100644 --- a/app/views/CreateChannelView.js +++ b/app/views/CreateChannelView.js @@ -16,10 +16,9 @@ import scrollPersistTaps from '../utils/scrollPersistTaps'; import I18n from '../i18n'; import UserItem from '../presentation/UserItem'; import { showErrorAlert } from '../utils/info'; -import { isAndroid } from '../utils/deviceInfo'; import { CustomHeaderButtons, Item } from '../containers/HeaderButton'; import StatusBar from '../containers/StatusBar'; -import { COLOR_TEXT_DESCRIPTION, COLOR_WHITE } from '../constants/colors'; +import { COLOR_TEXT_DESCRIPTION, COLOR_WHITE, SWITCH_TRACK_COLOR } from '../constants/colors'; const styles = StyleSheet.create({ container: { @@ -245,8 +244,7 @@ export default class CreateChannelView extends React.Component { value={value} onValueChange={onValueChange} testID={`create-channel-${ id }`} - onTintColor='#2de0a5' - tintColor={isAndroid ? '#f5455c' : null} + trackColor={SWITCH_TRACK_COLOR} disabled={disabled} /> diff --git a/app/views/DirectoryView/Options.js b/app/views/DirectoryView/Options.js index 841484152e..31725c118c 100644 --- a/app/views/DirectoryView/Options.js +++ b/app/views/DirectoryView/Options.js @@ -9,6 +9,7 @@ import styles from './styles'; import { CustomIcon } from '../../lib/Icons'; import Check from '../../containers/Check'; import I18n from '../../i18n'; +import { SWITCH_TRACK_COLOR } from '../../constants/colors'; const ANIMATION_DURATION = 200; const ANIMATION_PROPS = { @@ -109,7 +110,7 @@ export default class DirectoryOptions extends PureComponent { {I18n.t('Search_global_users')} {I18n.t('Search_global_users_description')} - + ) diff --git a/app/views/LanguageView/index.js b/app/views/LanguageView/index.js index 045d2e9c5a..5c7522fbb8 100644 --- a/app/views/LanguageView/index.js +++ b/app/views/LanguageView/index.js @@ -46,7 +46,6 @@ const LANGUAGES = [ }), dispatch => ({ setUser: params => dispatch(setUserAction(params)) })) -/** @extends React.Component */ export default class LanguageView extends React.Component { static navigationOptions = () => ({ title: I18n.t('Change_Language') diff --git a/app/views/RegisterView.js b/app/views/RegisterView.js index 6c199a3704..abb8f52b3b 100644 --- a/app/views/RegisterView.js +++ b/app/views/RegisterView.js @@ -5,6 +5,8 @@ import { } from 'react-native'; import { connect } from 'react-redux'; import { SafeAreaView } from 'react-navigation'; +import RNPickerSelect from 'react-native-picker-select'; +import equal from 'deep-equal'; import TextInput from '../containers/TextInput'; import Button from '../containers/Button'; @@ -17,10 +19,13 @@ import { loginRequest as loginRequestAction } from '../actions/login'; import isValidEmail from '../utils/isValidEmail'; import { LegalButton } from '../containers/HeaderButton'; import StatusBar from '../containers/StatusBar'; +import log from '../utils/log'; const shouldUpdateState = ['name', 'email', 'password', 'username', 'saving']; -@connect(null, dispatch => ({ +@connect(state => ({ + Accounts_CustomFields: state.settings.Accounts_CustomFields +}), dispatch => ({ loginRequest: params => dispatch(loginRequestAction(params)) })) export default class RegisterView extends React.Component { @@ -35,15 +40,34 @@ export default class RegisterView extends React.Component { static propTypes = { navigation: PropTypes.object, loginRequest: PropTypes.func, - Site_Name: PropTypes.string + Site_Name: PropTypes.string, + Accounts_CustomFields: PropTypes.string } - state = { - name: '', - email: '', - password: '', - username: '', - saving: false + constructor(props) { + super(props); + const customFields = {}; + this.parsedCustomFields = {}; + if (props.Accounts_CustomFields) { + try { + this.parsedCustomFields = JSON.parse(props.Accounts_CustomFields); + } catch (e) { + log('err_parsing_account_custom_fields', e); + } + } + Object.keys(this.parsedCustomFields).forEach((key) => { + if (this.parsedCustomFields[key].defaultValue) { + customFields[key] = this.parsedCustomFields[key].defaultValue; + } + }); + this.state = { + name: '', + email: '', + password: '', + username: '', + saving: false, + customFields + }; } componentDidMount() { @@ -53,6 +77,10 @@ export default class RegisterView extends React.Component { } shouldComponentUpdate(nextProps, nextState) { + const { customFields } = this.state; + if (!equal(nextState.customFields, customFields)) { + return true; + } // eslint-disable-next-line react/destructuring-assignment return shouldUpdateState.some(key => nextState[key] !== this.state[key]); } @@ -77,9 +105,15 @@ export default class RegisterView extends React.Component { valid = () => { const { - name, email, password, username + name, email, password, username, customFields } = this.state; - return name.trim() && email.trim() && password.trim() && username.trim() && isValidEmail(email); + let requiredCheck = true; + Object.keys(this.parsedCustomFields).forEach((key) => { + if (this.parsedCustomFields[key].required) { + requiredCheck = requiredCheck && customFields[key] && Boolean(customFields[key].trim()); + } + }); + return name.trim() && email.trim() && password.trim() && username.trim() && isValidEmail(email) && requiredCheck; } submit = async() => { @@ -90,13 +124,13 @@ export default class RegisterView extends React.Component { Keyboard.dismiss(); const { - name, email, password, username + name, email, password, username, customFields } = this.state; const { loginRequest } = this.props; try { await RocketChat.register({ - name, email, pass: password, username + name, email, pass: password, username, ...customFields }); await loginRequest({ user: email, password }); } catch (e) { @@ -105,6 +139,64 @@ export default class RegisterView extends React.Component { this.setState({ saving: false }); } + renderCustomFields = () => { + const { customFields } = this.state; + const { Accounts_CustomFields } = this.props; + if (!Accounts_CustomFields) { + return null; + } + try { + return Object.keys(this.parsedCustomFields).map((key, index, array) => { + if (this.parsedCustomFields[key].type === 'select') { + const options = this.parsedCustomFields[key].options.map(option => ({ label: option, value: option })); + return ( + { + const newValue = {}; + newValue[key] = value; + this.setState({ customFields: { ...customFields, ...newValue } }); + }} + value={customFields[key]} + > + { this[key] = e; }} + placeholder={key} + value={customFields[key]} + iconLeft='flag' + testID='register-view-custom-picker' + /> + + ); + } + + return ( + { this[key] = e; }} + key={key} + placeholder={key} + value={customFields[key]} + iconLeft='flag' + onChangeText={(value) => { + const newValue = {}; + newValue[key] = value; + this.setState({ customFields: { ...customFields, ...newValue } }); + }} + onSubmitEditing={() => { + if (array.length - 1 > index) { + return this[array[index + 1]].focus(); + } + this.avatarUrl.focus(); + }} + /> + ); + }); + } catch (error) { + return null; + } + } + render() { const { saving } = this.state; return ( @@ -153,6 +245,8 @@ export default class RegisterView extends React.Component { containerStyle={sharedStyles.inputLastChild} /> + {this.renderCustomFields()} +