Merge branch 'develop' into beta

This commit is contained in:
diegolmello 2019-06-26 09:43:19 -03:00
commit adaa977c65
240 changed files with 6981 additions and 3284 deletions

View File

@ -0,0 +1,3 @@
export default {
openBrowserAsync: () => ''
};

View File

@ -80,6 +80,7 @@ project.ext.react = [
] ]
apply from: "../../node_modules/react-native/react.gradle" apply from: "../../node_modules/react-native/react.gradle"
apply from: '../../node_modules/react-native-unimodules/gradle.groovy'
/** /**
* Set this to true to create two separate APKs instead of one: * Set this to true to create two separate APKs instead of one:
@ -99,7 +100,7 @@ def enableProguardInReleaseBuilds = false
android { android {
compileSdkVersion rootProject.ext.compileSdkVersion compileSdkVersion rootProject.ext.compileSdkVersion
compileOptions { compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8 sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8
} }
@ -109,7 +110,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode VERSIONCODE as Integer versionCode VERSIONCODE as Integer
versionName "1.15.0" versionName "1.15.1"
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true
} }
@ -171,6 +172,7 @@ android {
} }
dependencies { dependencies {
addUnimodulesDependencies()
implementation "org.webkit:android-jsc:r241213" implementation "org.webkit:android-jsc:r241213"
implementation project(':react-native-firebase') implementation project(':react-native-firebase')
implementation project(':react-native-webview') implementation project(':react-native-webview')
@ -178,7 +180,9 @@ dependencies {
implementation project(':react-native-splash-screen') implementation project(':react-native-splash-screen')
implementation project(':react-native-screens') implementation project(':react-native-screens')
implementation project(':react-native-action-sheet') implementation project(':react-native-action-sheet')
implementation project(':react-native-device-info') implementation(project(":react-native-device-info"), {
exclude group: "com.google.android.gms"
})
implementation project(':react-native-gesture-handler') implementation project(':react-native-gesture-handler')
implementation project(':react-native-image-crop-picker') implementation project(':react-native-image-crop-picker')
implementation project(':react-native-i18n') implementation project(':react-native-i18n')

View File

@ -1,56 +0,0 @@
package chat.rocket.reactnative;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.support.customtabs.CustomTabsIntent;
import android.widget.Toast;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import java.util.List;
import chat.rocket.reactnative.R;
/**
* Launches custom tabs.
*/
public class CustomTabsAndroid extends ReactContextBaseJavaModule {
public CustomTabsAndroid(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "CustomTabsAndroid";
}
@ReactMethod
public void openURL(String url) throws NullPointerException {
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
if (CustomTabsHelper.isChromeCustomTabsSupported(getReactApplicationContext())) {
customTabsIntent.launchUrl(getReactApplicationContext().getCurrentActivity(), Uri.parse(url));
} else {
//open in browser
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
//ensure browser is present
final List<ResolveInfo> customTabsApps = getReactApplicationContext()
.getCurrentActivity().getPackageManager().queryIntentActivities(i, 0);
if (customTabsApps.size() > 0) {
getReactApplicationContext().startActivity(i);
} else {
// no browser
Toast.makeText(getReactApplicationContext(), R.string.no_browser_found, Toast.LENGTH_SHORT).show();
}
}
}
}

View File

@ -1,24 +0,0 @@
package chat.rocket.reactnative;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import java.util.List;
/**
* Contains helper methods for custom tabs.
*/
public class CustomTabsHelper {
private static final String SERVICE_ACTION = "android.support.customtabs.action.CustomTabsService";
private static final String CHROME_PACKAGE = "com.android.chrome";
public static boolean isChromeCustomTabsSupported(final Context context) {
Intent serviceIntent = new Intent(SERVICE_ACTION);
serviceIntent.setPackage(CHROME_PACKAGE);
List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentServices(serviceIntent, 0);
return !(resolveInfos == null || resolveInfos.isEmpty());
}
}

View File

@ -35,6 +35,12 @@ import com.actionsheet.ActionSheetPackage;
import io.realm.react.RealmReactPackage; import io.realm.react.RealmReactPackage;
import com.swmansion.rnscreens.RNScreensPackage; import com.swmansion.rnscreens.RNScreensPackage;
import chat.rocket.reactnative.generated.BasePackageList;
import org.unimodules.adapters.react.ModuleRegistryAdapter;
import org.unimodules.adapters.react.ReactModuleRegistryProvider;
import org.unimodules.core.interfaces.SingletonModule;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
@ -43,6 +49,8 @@ import java.util.List;
public class MainApplication extends Application implements ReactApplication, INotificationsApplication { public class MainApplication extends Application implements ReactApplication, INotificationsApplication {
private final ReactModuleRegistryProvider mModuleRegistryProvider = new ReactModuleRegistryProvider(new BasePackageList().getPackageList(), Arrays.<SingletonModule>asList());
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) { private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override @Override
public boolean getUseDeveloperSupport() { public boolean getUseDeveloperSupport() {
@ -71,10 +79,10 @@ public class MainApplication extends Application implements ReactApplication, IN
new ReactVideoPackage(), new ReactVideoPackage(),
new ReactNativeAudioPackage(), new ReactNativeAudioPackage(),
new KeyboardInputPackage(MainApplication.this), new KeyboardInputPackage(MainApplication.this),
new RocketChatNativePackage(),
new FastImageViewPackage(), new FastImageViewPackage(),
new RNI18nPackage(), new RNI18nPackage(),
new RNNotificationsPackage(MainApplication.this) new RNNotificationsPackage(MainApplication.this),
new ModuleRegistryAdapter(mModuleRegistryProvider)
); );
} }

View File

@ -1,33 +0,0 @@
package chat.rocket.reactnative;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class RocketChatNativePackage implements ReactPackage {
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
List<ViewManager> managers = new ArrayList<>();
return managers;
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new CustomTabsAndroid(reactContext));
return modules;
}
}

View File

@ -0,0 +1,16 @@
package chat.rocket.reactnative.generated;
import java.util.Arrays;
import java.util.List;
import org.unimodules.core.interfaces.Package;
public class BasePackageList {
public List<Package> getPackageList() {
return Arrays.<Package>asList(
new expo.modules.constants.ConstantsPackage(),
new expo.modules.filesystem.FileSystemPackage(),
new expo.modules.permissions.PermissionsPackage(),
new expo.modules.webbrowser.WebBrowserPackage()
);
}
}

View File

@ -6,6 +6,7 @@ buildscript {
compileSdkVersion = 28 compileSdkVersion = 28
targetSdkVersion = 28 targetSdkVersion = 28
supportLibVersion = "28.0.0" supportLibVersion = "28.0.0"
glideVersion = "4.9.0"
} }
repositories { repositories {
mavenLocal() mavenLocal()

View File

@ -1,3 +1,6 @@
apply from: '../node_modules/react-native-unimodules/gradle.groovy'
includeUnimodulesProjects()
rootProject.name = 'RocketChatRN' rootProject.name = 'RocketChatRN'
include ':react-native-firebase' include ':react-native-firebase'
project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android') project(':react-native-firebase').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-firebase/android')

View File

@ -24,3 +24,4 @@ export const STATUS_COLORS = {
export const HEADER_BACKGROUND = isIOS ? '#f8f8f8' : '#2F343D'; export const HEADER_BACKGROUND = isIOS ? '#f8f8f8' : '#2F343D';
export const HEADER_TITLE = isIOS ? COLOR_TITLE : COLOR_WHITE; export const HEADER_TITLE = isIOS ? COLOR_TITLE : COLOR_WHITE;
export const HEADER_BACK = isIOS ? COLOR_PRIMARY : COLOR_WHITE; export const HEADER_BACK = isIOS ? COLOR_PRIMARY : COLOR_WHITE;
export const HEADER_TINT = isIOS ? COLOR_PRIMARY : COLOR_WHITE;

View File

@ -15,7 +15,7 @@ let disconnectedListener;
let streamListener; let streamListener;
let subServer; let subServer;
export default async function subscribeRooms() { export default function subscribeRooms() {
let timer = null; let timer = null;
const loop = () => { const loop = () => {
if (timer) { if (timer) {
@ -156,12 +156,13 @@ export default async function subscribeRooms() {
try { try {
// set the server that started this task // set the server that started this task
subServer = this.sdk.client.host; subServer = this.sdk.client.host;
await this.sdk.subscribeNotifyUser(); this.sdk.subscribeNotifyUser().catch(e => console.log(e));
return {
stop: () => stop()
};
} catch (e) { } catch (e) {
log('err_subscribe_rooms', e); log('err_subscribe_rooms', e);
return Promise.reject();
} }
return {
stop: () => stop()
};
} }

View File

@ -447,9 +447,12 @@ const RocketChat = {
// RC 0.59.0 // RC 0.59.0
return this.sdk.post('im.create', { username }); return this.sdk.post('im.create', { username });
}, },
joinRoom(roomId) { joinRoom(roomId, type) {
// TODO: join code // TODO: join code
// RC 0.48.0 // RC 0.48.0
if (type === 'p') {
return this.sdk.methodCall('joinRoom', roomId);
}
return this.sdk.post('channels.join', { roomId }); return this.sdk.post('channels.join', { roomId });
}, },
sendFileMessage, sendFileMessage,

View File

@ -1,9 +0,0 @@
/**
* This exposes the native CustomTabsAndroid module as a JS module. This has a
* function 'openURL' which takes the following parameters:
*
* 1. String url: A url to be opened in customTabs
*/
import { NativeModules } from 'react-native';
module.exports = NativeModules.CustomTabsAndroid;

View File

@ -25,12 +25,13 @@ class PushNotification {
NotificationsIOS.setBadgesCount(count); NotificationsIOS.setBadgesCount(count);
} }
configure(params) { async configure(params) {
this.onRegister = params.onRegister; this.onRegister = params.onRegister;
this.onNotification = params.onNotification; this.onNotification = params.onNotification;
const initial = await NotificationsIOS.getInitialNotification();
NotificationsIOS.consumeBackgroundQueue(); NotificationsIOS.consumeBackgroundQueue();
return Promise.resolve(); return Promise.resolve(initial);
} }
} }
export default new PushNotification(); export default new PushNotification();

View File

@ -1,7 +1,8 @@
import { delay } from 'redux-saga';
import { import {
put, select, race, take, fork, cancel, takeLatest put, select, race, take, fork, cancel, takeLatest
} from 'redux-saga/effects'; } from 'redux-saga/effects';
import { BACKGROUND } from 'redux-enhancer-react-native-appstate'; import { BACKGROUND, INACTIVE } from 'redux-enhancer-react-native-appstate';
import * as types from '../actions/actionsTypes'; import * as types from '../actions/actionsTypes';
import { roomsSuccess, roomsFailure } from '../actions/rooms'; import { roomsSuccess, roomsFailure } from '../actions/rooms';
@ -61,13 +62,20 @@ const root = function* root() {
yield takeLatest(types.LOGOUT, handleLogout); yield takeLatest(types.LOGOUT, handleLogout);
while (true) { while (true) {
const params = yield take(types.ROOMS.REQUEST); const params = yield take(types.ROOMS.REQUEST);
const roomsRequestTask = yield fork(handleRoomsRequest, params); const isAuthenticated = yield select(state => state.login.isAuthenticated);
yield race({ if (isAuthenticated) {
serverReq: take(types.SERVER.SELECT_REQUEST), const roomsRequestTask = yield fork(handleRoomsRequest, params);
background: take(BACKGROUND), yield race({
logout: take(types.LOGOUT) roomsSuccess: take(types.ROOMS.SUCCESS),
}); roomsFailure: take(types.ROOMS.FAILURE),
yield cancel(roomsRequestTask); serverReq: take(types.SERVER.SELECT_REQUEST),
background: take(BACKGROUND),
inactive: take(INACTIVE),
logout: take(types.LOGOUT),
timeout: delay(30000)
});
yield cancel(roomsRequestTask);
}
} }
}; };
export default root; export default root;

View File

@ -29,4 +29,4 @@ export const Toast = React.forwardRef((props, ref) => (
opacity={0.8} opacity={0.8}
/> />
)); ));
export const showErrorAlert = (message: string, title: string) => Alert.alert(title, message, [{ text: 'OK', onPress: () => {} }], { cancelable: true }); export const showErrorAlert = (message, title, onPress = () => {}) => Alert.alert(title, message, [{ text: 'OK', onPress }], { cancelable: true });

12
app/utils/openLink.js Normal file
View File

@ -0,0 +1,12 @@
import * as WebBrowser from 'expo-web-browser';
import { HEADER_TINT, HEADER_BACKGROUND } from '../constants/colors';
const openLink = url => WebBrowser.openBrowserAsync(url, {
toolbarColor: HEADER_BACKGROUND,
controlsColor: HEADER_TINT,
collapseToolbar: true,
showTitle: true
});
export default openLink;

View File

@ -1,5 +0,0 @@
import CustomTabsAndroid from '../../nativeModules/CustomTabsAndroid';
const openLink = url => CustomTabsAndroid.openURL(url);
export default openLink;

View File

@ -1,7 +0,0 @@
import SafariView from 'react-native-safari-view';
import { HEADER_BACK } from '../../constants/colors';
const openLink = url => SafariView.show({ url, fromBottom: false, tintColor: HEADER_BACK });
export default openLink;

View File

@ -2,7 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { WebView } from 'react-native-webview'; import { WebView } from 'react-native-webview';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { ActivityIndicator, StyleSheet } from 'react-native';
import RocketChat from '../lib/rocketchat'; import RocketChat from '../lib/rocketchat';
import { isIOS } from '../utils/deviceInfo'; import { isIOS } from '../utils/deviceInfo';
import { CloseModalButton } from '../containers/HeaderButton'; import { CloseModalButton } from '../containers/HeaderButton';
@ -12,6 +12,18 @@ const userAgent = isIOS
? 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1' ? 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
: 'Mozilla/5.0 (Linux; Android 6.0.1; SM-G920V Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36'; : 'Mozilla/5.0 (Linux; Android 6.0.1; SM-G920V Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36';
const styles = StyleSheet.create({
loading: {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0,
alignItems: 'center',
justifyContent: 'center'
}
});
@connect(state => ({ @connect(state => ({
server: state.server.server server: state.server.server
})) }))
@ -29,7 +41,8 @@ export default class OAuthView extends React.PureComponent {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
logging: false logging: false,
loading: false
}; };
this.redirectRegex = new RegExp(`(?=.*(${ props.server }))(?=.*(credentialToken))(?=.*(credentialSecret))`, 'g'); this.redirectRegex = new RegExp(`(?=.*(${ props.server }))(?=.*(credentialToken))(?=.*(credentialSecret))`, 'g');
} }
@ -58,6 +71,7 @@ export default class OAuthView extends React.PureComponent {
render() { render() {
const { navigation } = this.props; const { navigation } = this.props;
const { loading } = this.state;
const oAuthUrl = navigation.getParam('oAuthUrl'); const oAuthUrl = navigation.getParam('oAuthUrl');
return ( return (
<React.Fragment> <React.Fragment>
@ -74,7 +88,15 @@ export default class OAuthView extends React.PureComponent {
this.login({ oauth: { ...credentials } }); this.login({ oauth: { ...credentials } });
} }
}} }}
onLoadStart={() => {
this.setState({ loading: true });
}}
onLoadEnd={() => {
this.setState({ loading: false });
}}
/> />
{ loading ? <ActivityIndicator size='large' style={styles.loading} /> : null }
</React.Fragment> </React.Fragment>
); );
} }

View File

@ -151,8 +151,11 @@ export default class ProfileView extends React.Component {
if (e.data && e.data.errorType === 'error-too-many-requests') { if (e.data && e.data.errorType === 'error-too-many-requests') {
return showErrorAlert(e.data.error); return showErrorAlert(e.data.error);
} }
showErrorAlert(I18n.t('There_was_an_error_while_action', { action: I18n.t(action) })); showErrorAlert(
// log(func, e); I18n.t('There_was_an_error_while_action', { action: I18n.t(action) }),
'',
() => this.setState({ showPasswordAlert: false })
);
} }
submit = async() => { submit = async() => {
@ -162,7 +165,7 @@ export default class ProfileView extends React.Component {
return; return;
} }
this.setState({ saving: true, showPasswordAlert: false }); this.setState({ saving: true });
const { const {
name, username, email, newPassword, currentPassword, avatar, customFields name, username, email, newPassword, currentPassword, avatar, customFields
@ -218,7 +221,7 @@ export default class ProfileView extends React.Component {
} else { } else {
setUser({ ...params }); setUser({ ...params });
} }
this.setState({ saving: false }); this.setState({ saving: false, showPasswordAlert: false });
this.toast.show(I18n.t('Profile_saved_successfully')); this.toast.show(I18n.t('Profile_saved_successfully'));
this.init(); this.init();
} }

View File

@ -437,12 +437,10 @@ export default class RoomView extends React.Component {
joinRoom = async() => { joinRoom = async() => {
try { try {
const result = await RocketChat.joinRoom(this.rid); await RocketChat.joinRoom(this.rid, this.t);
if (result.success) { this.internalSetState({
this.internalSetState({ joined: true
joined: true });
});
}
} catch (e) { } catch (e) {
log('err_join_room', e); log('err_join_room', e);
} }
@ -450,7 +448,7 @@ export default class RoomView extends React.Component {
isOwner = () => { isOwner = () => {
const { room } = this.state; const { room } = this.state;
return room && room.roles && Array.from(Object.keys(room.roles), i => room.roles[i].value).includes('owner'); return room && room.roles && room.roles.length && !!room.roles.find(role => role === 'owner');
} }
isMuted = () => { isMuted = () => {
@ -461,7 +459,10 @@ export default class RoomView extends React.Component {
isReadOnly = () => { isReadOnly = () => {
const { room } = this.state; const { room } = this.state;
return (room.ro && !room.broadcast) || this.isMuted() || room.archived; if (this.isOwner()) {
return false;
}
return (room && room.ro) || this.isMuted();
} }
isBlocked = () => { isBlocked = () => {

View File

@ -1,5 +1,7 @@
# Uncomment the next line to define a global platform for your project platform :ios, '10.0'
platform :ios, '9.0'
require_relative '../node_modules/react-native-unimodules/cocoapods.rb'
target 'RocketChatRN' do target 'RocketChatRN' do
# Uncomment the next line if you're using Swift or would like to use dynamic frameworks # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
@ -44,6 +46,8 @@ target 'RocketChatRN' do
pod 'GoogleIDFASupport', '~> 3.14.0' pod 'GoogleIDFASupport', '~> 3.14.0'
pod 'Firebase/Performance', '~> 5.20.1' pod 'Firebase/Performance', '~> 5.20.1'
use_unimodules!
end end
post_install do |installer| post_install do |installer|

View File

@ -3,6 +3,18 @@ PODS:
- Crashlytics (3.12.0): - Crashlytics (3.12.0):
- Fabric (~> 1.9.0) - Fabric (~> 1.9.0)
- DoubleConversion (1.1.6) - DoubleConversion (1.1.6)
- EXAppLoaderProvider (5.0.1)
- EXConstants (5.0.1):
- UMConstantsInterface
- UMCore
- EXFileSystem (5.0.1):
- UMCore
- UMFileSystemInterface
- EXPermissions (5.0.1):
- UMCore
- UMPermissionsInterface
- EXWebBrowser (5.0.3):
- UMCore
- Fabric (1.9.0) - Fabric (1.9.0)
- Firebase/Core (5.20.2): - Firebase/Core (5.20.2):
- Firebase/CoreOnly - Firebase/CoreOnly
@ -136,11 +148,31 @@ PODS:
- RNScreens (1.0.0-alpha.22): - RNScreens (1.0.0-alpha.22):
- React - React
- RSKImageCropper (2.2.1) - RSKImageCropper (2.2.1)
- UMBarCodeScannerInterface (2.0.1)
- UMCameraInterface (2.0.1)
- UMConstantsInterface (2.0.1)
- UMCore (2.0.1)
- UMFaceDetectorInterface (2.0.1)
- UMFileSystemInterface (2.0.1)
- UMFontInterface (2.0.1)
- UMImageLoaderInterface (2.0.1)
- UMPermissionsInterface (2.0.1)
- UMReactNativeAdapter (2.0.1):
- React
- UMCore
- UMFontInterface
- UMSensorsInterface (2.0.1)
- UMTaskManagerInterface (2.0.1)
- yoga (0.59.8.React) - yoga (0.59.8.React)
DEPENDENCIES: DEPENDENCIES:
- Crashlytics (~> 3.12.0) - Crashlytics (~> 3.12.0)
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- EXAppLoaderProvider (from `../node_modules/expo-app-loader-provider/ios`)
- EXConstants (from `../node_modules/expo-constants/ios`)
- EXFileSystem (from `../node_modules/expo-file-system/ios`)
- EXPermissions (from `../node_modules/expo-permissions/ios`)
- EXWebBrowser (from `../node_modules/expo-web-browser/ios`)
- Fabric (~> 1.9.0) - Fabric (~> 1.9.0)
- Firebase/Core (~> 5.20.1) - Firebase/Core (~> 5.20.1)
- Firebase/Performance (~> 5.20.1) - Firebase/Performance (~> 5.20.1)
@ -163,6 +195,18 @@ DEPENDENCIES:
- RNDeviceInfo (from `../node_modules/react-native-device-info`) - RNDeviceInfo (from `../node_modules/react-native-device-info`)
- RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`) - RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`)
- RNScreens (from `../node_modules/react-native-screens`) - RNScreens (from `../node_modules/react-native-screens`)
- UMBarCodeScannerInterface (from `../node_modules/unimodules-barcode-scanner-interface/ios`)
- UMCameraInterface (from `../node_modules/unimodules-camera-interface/ios`)
- UMConstantsInterface (from `../node_modules/unimodules-constants-interface/ios`)
- "UMCore (from `../node_modules/@unimodules/core/ios`)"
- UMFaceDetectorInterface (from `../node_modules/unimodules-face-detector-interface/ios`)
- UMFileSystemInterface (from `../node_modules/unimodules-file-system-interface/ios`)
- UMFontInterface (from `../node_modules/unimodules-font-interface/ios`)
- UMImageLoaderInterface (from `../node_modules/unimodules-image-loader-interface/ios`)
- UMPermissionsInterface (from `../node_modules/unimodules-permissions-interface/ios`)
- "UMReactNativeAdapter (from `../node_modules/@unimodules/react-native-adapter/ios`)"
- UMSensorsInterface (from `../node_modules/unimodules-sensors-interface/ios`)
- UMTaskManagerInterface (from `../node_modules/unimodules-task-manager-interface/ios`)
- yoga (from `../node_modules/react-native/ReactCommon/yoga`) - yoga (from `../node_modules/react-native/ReactCommon/yoga`)
SPEC REPOS: SPEC REPOS:
@ -190,6 +234,21 @@ SPEC REPOS:
EXTERNAL SOURCES: EXTERNAL SOURCES:
DoubleConversion: DoubleConversion:
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
EXAppLoaderProvider:
:path: !ruby/object:Pathname
path: "../node_modules/expo-app-loader-provider/ios"
EXConstants:
:path: !ruby/object:Pathname
path: "../node_modules/expo-constants/ios"
EXFileSystem:
:path: !ruby/object:Pathname
path: "../node_modules/expo-file-system/ios"
EXPermissions:
:path: !ruby/object:Pathname
path: "../node_modules/expo-permissions/ios"
EXWebBrowser:
:path: !ruby/object:Pathname
path: "../node_modules/expo-web-browser/ios"
Folly: Folly:
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
glog: glog:
@ -208,6 +267,42 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-image-crop-picker" :path: "../node_modules/react-native-image-crop-picker"
RNScreens: RNScreens:
:path: "../node_modules/react-native-screens" :path: "../node_modules/react-native-screens"
UMBarCodeScannerInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-barcode-scanner-interface/ios"
UMCameraInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-camera-interface/ios"
UMConstantsInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-constants-interface/ios"
UMCore:
:path: !ruby/object:Pathname
path: "../node_modules/@unimodules/core/ios"
UMFaceDetectorInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-face-detector-interface/ios"
UMFileSystemInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-file-system-interface/ios"
UMFontInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-font-interface/ios"
UMImageLoaderInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-image-loader-interface/ios"
UMPermissionsInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-permissions-interface/ios"
UMReactNativeAdapter:
:path: !ruby/object:Pathname
path: "../node_modules/@unimodules/react-native-adapter/ios"
UMSensorsInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-sensors-interface/ios"
UMTaskManagerInterface:
:path: !ruby/object:Pathname
path: "../node_modules/unimodules-task-manager-interface/ios"
yoga: yoga:
:path: "../node_modules/react-native/ReactCommon/yoga" :path: "../node_modules/react-native/ReactCommon/yoga"
@ -215,6 +310,11 @@ SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
Crashlytics: 07fb167b1694128c1c9a5a5cc319b0e9c3ca0933 Crashlytics: 07fb167b1694128c1c9a5a5cc319b0e9c3ca0933
DoubleConversion: bb338842f62ab1d708ceb63ec3d999f0f3d98ecd DoubleConversion: bb338842f62ab1d708ceb63ec3d999f0f3d98ecd
EXAppLoaderProvider: 8f2c04a0a8d9be91f7c37c2b8824077ee5d4bc01
EXConstants: 9fe56eec8bf0a3ee9beb8f3381fa91340a5b1e57
EXFileSystem: 96624bd4b93a0684335c421a6567a92b25bd7ddb
EXPermissions: 8e05008ed4fc8c9be6c17ea95301fc3f3f005a7b
EXWebBrowser: e03894b4583bb726e5ea05d01b341ba00134c2b5
Fabric: f988e33c97f08930a413e08123064d2e5f68d655 Fabric: f988e33c97f08930a413e08123064d2e5f68d655
Firebase: 0c8cf33f266410c61ab3e2265cfa412200351d9c Firebase: 0c8cf33f266410c61ab3e2265cfa412200351d9c
FirebaseABTesting: 1f50b8d50f5e3469eea54e7463a7b7fe221d1f5e FirebaseABTesting: 1f50b8d50f5e3469eea54e7463a7b7fe221d1f5e
@ -241,8 +341,20 @@ SPEC CHECKSUMS:
RNImageCropPicker: e608efe182652dc8690268cb99cb5a201f2b5ea3 RNImageCropPicker: e608efe182652dc8690268cb99cb5a201f2b5ea3
RNScreens: 720a9e6968beb73e8196239801e887d8401f86ed RNScreens: 720a9e6968beb73e8196239801e887d8401f86ed
RSKImageCropper: 98296ad26b41753f796b6898d015509598f13d97 RSKImageCropper: 98296ad26b41753f796b6898d015509598f13d97
UMBarCodeScannerInterface: d5602e23de37f95bb4ee49ee3b2711e128058ae9
UMCameraInterface: dde8491778ed062348e569bad33a890e60c32c9d
UMConstantsInterface: de48a63a5af572fc4dcc0e68051b00503b83e301
UMCore: 047dc01ae4ccdd0c993f2c190f2489e5409c3ad0
UMFaceDetectorInterface: badd9e3d206f5ba254c85a26afa43da06638575f
UMFileSystemInterface: ff9a18c26ee6321dc21a3f9663efe3a55313d4db
UMFontInterface: 0575f33184974a38f3528a4750729c7f5256b848
UMImageLoaderInterface: ee8642347161d66272e841377a888957feb1f48e
UMPermissionsInterface: 2238fe9d7f99457a5cfe7f3140c2521c5bf453a6
UMReactNativeAdapter: 110be971ff044f8cfd37cbf565a264cd79858391
UMSensorsInterface: cda3ec177c7ff0a138e3135414b4a29013389358
UMTaskManagerInterface: 296793ab2a7e181fe5ebe2ba9b40ae208ab4b8fa
yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64 yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64
PODFILE CHECKSUM: f98adf896db83acfddda2f17bf015d55d15a89f2 PODFILE CHECKSUM: b5e15bac5f306ea636e16393a7a6eb42c017ea99
COCOAPODS: 1.6.2 COCOAPODS: 1.6.2

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-app-loader-provider/ios/EXAppLoaderProvider/Interfaces/EXAppLoaderInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-app-loader-provider/ios/EXAppLoaderProvider/EXAppLoaderProvider.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-app-loader-provider/ios/EXAppLoaderProvider/Interfaces/EXAppRecordInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-constants/ios/EXConstants/EXConstants.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-constants/ios/EXConstants/EXConstantsService.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-file-system/ios/EXFileSystem/EXDownloadDelegate.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-file-system/ios/EXFileSystem/EXFilePermissionModule.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-file-system/ios/EXFileSystem/EXFileSystem.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-file-system/ios/EXFileSystem/EXFileSystemAssetLibraryHandler.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-file-system/ios/EXFileSystem/EXFileSystemLocalFileHandler.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXAudioRecordingPermissionRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXCalendarRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXCameraPermissionRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXCameraRollRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXContactsRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXLocationRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXPermissions.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXReactNativeUserNotificationCenterProxy.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXRemindersRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXRemoteNotificationRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXSystemBrightnessRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-permissions/ios/EXPermissions/EXUserNotificationRequester.h

View File

@ -0,0 +1 @@
../../../../../node_modules/expo-web-browser/ios/EXWebBrowser/EXWebBrowser.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-barcode-scanner-interface/ios/UMBarCodeScannerInterface/UMBarCodeScannerInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-barcode-scanner-interface/ios/UMBarCodeScannerInterface/UMBarCodeScannerProviderInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-camera-interface/ios/UMCameraInterface/UMCameraInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-constants-interface/ios/UMConstantsInterface/UMConstantsInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/UMAppDelegateWrapper.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMAppLifecycleListener.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMAppLifecycleService.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/UMDefines.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMEventEmitter.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMEventEmitterService.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/UMExportedModule.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMInternalModule.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMJavaScriptContextProvider.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMKernelService.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMLogHandler.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Services/UMLogManager.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/UMModuleRegistry/UMModuleRegistry.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMModuleRegistryConsumer.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/UMModuleRegistry/UMModuleRegistryDelegate.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/UMModuleRegistryProvider/UMModuleRegistryProvider.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/UMSingletonModule.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMUIManager.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/UMUtilities.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/Protocols/UMUtilitiesInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/core/ios/UMCore/UMViewManager.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-face-detector-interface/ios/UMFaceDetectorInterface/UMFaceDetectorManager.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-face-detector-interface/ios/UMFaceDetectorInterface/UMFaceDetectorManagerProvider.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-file-system-interface/ios/UMFileSystemInterface/UMFilePermissionModuleInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-file-system-interface/ios/UMFileSystemInterface/UMFileSystemInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-font-interface/ios/UMFontInterface/UMFontManagerInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-font-interface/ios/UMFontInterface/UMFontProcessorInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-font-interface/ios/UMFontInterface/UMFontScalerInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-font-interface/ios/UMFontInterface/UMFontScalersManagerInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-image-loader-interface/ios/UMImageLoaderInterface/UMImageLoaderInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-permissions-interface/ios/UMPermissionsInterface/UMPermissionsInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-permissions-interface/ios/UMPermissionsInterface/UMUserNotificationCenterProxyInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/react-native-adapter/ios/UMReactNativeAdapter/UMBridgeModule.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/react-native-adapter/ios/UMReactNativeAdapter/UMModuleRegistryAdapter/UMModuleRegistryAdapter.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/react-native-adapter/ios/UMReactNativeAdapter/UMNativeModulesProxy/UMNativeModulesProxy.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/react-native-adapter/ios/UMReactNativeAdapter/Services/UMReactFontManager.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/react-native-adapter/ios/UMReactNativeAdapter/Services/UMReactLogHandler.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/react-native-adapter/ios/UMReactNativeAdapter/Services/UMReactNativeAdapter.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/react-native-adapter/ios/UMReactNativeAdapter/Services/UMReactNativeEventEmitter.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/react-native-adapter/ios/UMReactNativeAdapter/UMViewManagerAdapter/UMViewManagerAdapter.h

View File

@ -0,0 +1 @@
../../../../../node_modules/@unimodules/react-native-adapter/ios/UMReactNativeAdapter/UMModuleRegistryAdapter/UMViewManagerAdapterClassesRegistry.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-sensors-interface/ios/UMSensorsInterface/UMAccelerometerInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-sensors-interface/ios/UMSensorsInterface/UMBarometerInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-sensors-interface/ios/UMSensorsInterface/UMDeviceMotionInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-sensors-interface/ios/UMSensorsInterface/UMGyroscopeInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-sensors-interface/ios/UMSensorsInterface/UMMagnetometerInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-sensors-interface/ios/UMSensorsInterface/UMMagnetometerUncalibratedInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-task-manager-interface/ios/UMTaskManagerInterface/UMTaskConsumerInterface.h

View File

@ -0,0 +1 @@
../../../../../node_modules/unimodules-task-manager-interface/ios/UMTaskManagerInterface/UMTaskInterface.h

Some files were not shown because too many files have changed in this diff Show More