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-unimodules/gradle.groovy'
/**
* Set this to true to create two separate APKs instead of one:
@ -99,7 +100,7 @@ def enableProguardInReleaseBuilds = false
android {
compileSdkVersion rootProject.ext.compileSdkVersion
compileOptions {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
@ -109,7 +110,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode VERSIONCODE as Integer
versionName "1.15.0"
versionName "1.15.1"
vectorDrawables.useSupportLibrary = true
}
@ -171,6 +172,7 @@ android {
}
dependencies {
addUnimodulesDependencies()
implementation "org.webkit:android-jsc:r241213"
implementation project(':react-native-firebase')
implementation project(':react-native-webview')
@ -178,7 +180,9 @@ dependencies {
implementation project(':react-native-splash-screen')
implementation project(':react-native-screens')
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-image-crop-picker')
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 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.os.Bundle;
@ -43,6 +49,8 @@ import java.util.List;
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) {
@Override
public boolean getUseDeveloperSupport() {
@ -71,10 +79,10 @@ public class MainApplication extends Application implements ReactApplication, IN
new ReactVideoPackage(),
new ReactNativeAudioPackage(),
new KeyboardInputPackage(MainApplication.this),
new RocketChatNativePackage(),
new FastImageViewPackage(),
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
targetSdkVersion = 28
supportLibVersion = "28.0.0"
glideVersion = "4.9.0"
}
repositories {
mavenLocal()

View File

@ -1,3 +1,6 @@
apply from: '../node_modules/react-native-unimodules/gradle.groovy'
includeUnimodulesProjects()
rootProject.name = 'RocketChatRN'
include ':react-native-firebase'
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_TITLE = isIOS ? COLOR_TITLE : 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 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()
};
}

View File

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

View File

@ -1,7 +1,8 @@
import { delay } from 'redux-saga';
import {
put, select, race, take, fork, cancel, takeLatest
} 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 { roomsSuccess, roomsFailure } from '../actions/rooms';
@ -61,13 +62,20 @@ const root = function* root() {
yield takeLatest(types.LOGOUT, handleLogout);
while (true) {
const params = yield take(types.ROOMS.REQUEST);
const roomsRequestTask = yield fork(handleRoomsRequest, params);
yield race({
serverReq: take(types.SERVER.SELECT_REQUEST),
background: take(BACKGROUND),
logout: take(types.LOGOUT)
});
yield cancel(roomsRequestTask);
const isAuthenticated = yield select(state => state.login.isAuthenticated);
if (isAuthenticated) {
const roomsRequestTask = yield fork(handleRoomsRequest, params);
yield race({
roomsSuccess: take(types.ROOMS.SUCCESS),
roomsFailure: take(types.ROOMS.FAILURE),
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;

View File

@ -29,4 +29,4 @@ export const Toast = React.forwardRef((props, ref) => (
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 { WebView } from 'react-native-webview';
import { connect } from 'react-redux';
import { ActivityIndicator, StyleSheet } from 'react-native';
import RocketChat from '../lib/rocketchat';
import { isIOS } from '../utils/deviceInfo';
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 (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 => ({
server: state.server.server
}))
@ -29,7 +41,8 @@ export default class OAuthView extends React.PureComponent {
constructor(props) {
super(props);
this.state = {
logging: false
logging: false,
loading: false
};
this.redirectRegex = new RegExp(`(?=.*(${ props.server }))(?=.*(credentialToken))(?=.*(credentialSecret))`, 'g');
}
@ -58,6 +71,7 @@ export default class OAuthView extends React.PureComponent {
render() {
const { navigation } = this.props;
const { loading } = this.state;
const oAuthUrl = navigation.getParam('oAuthUrl');
return (
<React.Fragment>
@ -74,7 +88,15 @@ export default class OAuthView extends React.PureComponent {
this.login({ oauth: { ...credentials } });
}
}}
onLoadStart={() => {
this.setState({ loading: true });
}}
onLoadEnd={() => {
this.setState({ loading: false });
}}
/>
{ loading ? <ActivityIndicator size='large' style={styles.loading} /> : null }
</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') {
return showErrorAlert(e.data.error);
}
showErrorAlert(I18n.t('There_was_an_error_while_action', { action: I18n.t(action) }));
// log(func, e);
showErrorAlert(
I18n.t('There_was_an_error_while_action', { action: I18n.t(action) }),
'',
() => this.setState({ showPasswordAlert: false })
);
}
submit = async() => {
@ -162,7 +165,7 @@ export default class ProfileView extends React.Component {
return;
}
this.setState({ saving: true, showPasswordAlert: false });
this.setState({ saving: true });
const {
name, username, email, newPassword, currentPassword, avatar, customFields
@ -218,7 +221,7 @@ export default class ProfileView extends React.Component {
} else {
setUser({ ...params });
}
this.setState({ saving: false });
this.setState({ saving: false, showPasswordAlert: false });
this.toast.show(I18n.t('Profile_saved_successfully'));
this.init();
}

View File

@ -437,12 +437,10 @@ export default class RoomView extends React.Component {
joinRoom = async() => {
try {
const result = await RocketChat.joinRoom(this.rid);
if (result.success) {
this.internalSetState({
joined: true
});
}
await RocketChat.joinRoom(this.rid, this.t);
this.internalSetState({
joined: true
});
} catch (e) {
log('err_join_room', e);
}
@ -450,7 +448,7 @@ export default class RoomView extends React.Component {
isOwner = () => {
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 = () => {
@ -461,7 +459,10 @@ export default class RoomView extends React.Component {
isReadOnly = () => {
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 = () => {

View File

@ -1,5 +1,7 @@
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
platform :ios, '10.0'
require_relative '../node_modules/react-native-unimodules/cocoapods.rb'
target 'RocketChatRN' do
# 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 'Firebase/Performance', '~> 5.20.1'
use_unimodules!
end
post_install do |installer|

View File

@ -3,6 +3,18 @@ PODS:
- Crashlytics (3.12.0):
- Fabric (~> 1.9.0)
- 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)
- Firebase/Core (5.20.2):
- Firebase/CoreOnly
@ -136,11 +148,31 @@ PODS:
- RNScreens (1.0.0-alpha.22):
- React
- 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)
DEPENDENCIES:
- Crashlytics (~> 3.12.0)
- 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)
- Firebase/Core (~> 5.20.1)
- Firebase/Performance (~> 5.20.1)
@ -163,6 +195,18 @@ DEPENDENCIES:
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
- RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`)
- 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`)
SPEC REPOS:
@ -190,6 +234,21 @@ SPEC REPOS:
EXTERNAL SOURCES:
DoubleConversion:
: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:
:podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
glog:
@ -208,6 +267,42 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-image-crop-picker"
RNScreens:
: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:
:path: "../node_modules/react-native/ReactCommon/yoga"
@ -215,6 +310,11 @@ SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
Crashlytics: 07fb167b1694128c1c9a5a5cc319b0e9c3ca0933
DoubleConversion: bb338842f62ab1d708ceb63ec3d999f0f3d98ecd
EXAppLoaderProvider: 8f2c04a0a8d9be91f7c37c2b8824077ee5d4bc01
EXConstants: 9fe56eec8bf0a3ee9beb8f3381fa91340a5b1e57
EXFileSystem: 96624bd4b93a0684335c421a6567a92b25bd7ddb
EXPermissions: 8e05008ed4fc8c9be6c17ea95301fc3f3f005a7b
EXWebBrowser: e03894b4583bb726e5ea05d01b341ba00134c2b5
Fabric: f988e33c97f08930a413e08123064d2e5f68d655
Firebase: 0c8cf33f266410c61ab3e2265cfa412200351d9c
FirebaseABTesting: 1f50b8d50f5e3469eea54e7463a7b7fe221d1f5e
@ -241,8 +341,20 @@ SPEC CHECKSUMS:
RNImageCropPicker: e608efe182652dc8690268cb99cb5a201f2b5ea3
RNScreens: 720a9e6968beb73e8196239801e887d8401f86ed
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
PODFILE CHECKSUM: f98adf896db83acfddda2f17bf015d55d15a89f2
PODFILE CHECKSUM: b5e15bac5f306ea636e16393a7a6eb42c017ea99
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