[FIX] Share Extension issues (#1064)
This commit is contained in:
parent
805be06c4a
commit
d80dd0e2ce
|
@ -14,6 +14,11 @@ export const LOGIN = createRequestTypes('LOGIN', [
|
||||||
'SET_SERVICES',
|
'SET_SERVICES',
|
||||||
'SET_PREFERENCE'
|
'SET_PREFERENCE'
|
||||||
]);
|
]);
|
||||||
|
export const SHARE = createRequestTypes('SHARE', [
|
||||||
|
'SELECT_SERVER',
|
||||||
|
'SET_USER',
|
||||||
|
'SET_SERVER_INFO'
|
||||||
|
]);
|
||||||
export const USER = createRequestTypes('USER', ['SET']);
|
export const USER = createRequestTypes('USER', ['SET']);
|
||||||
export const ROOMS = createRequestTypes('ROOMS', [
|
export const ROOMS = createRequestTypes('ROOMS', [
|
||||||
...defaultTypes,
|
...defaultTypes,
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import { SHARE } from './actionsTypes';
|
||||||
|
|
||||||
|
export function shareSelectServer(server) {
|
||||||
|
return {
|
||||||
|
type: SHARE.SELECT_SERVER,
|
||||||
|
server
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export function shareSetUser(user) {
|
||||||
|
return {
|
||||||
|
type: SHARE.SET_USER,
|
||||||
|
user
|
||||||
|
};
|
||||||
|
}
|
|
@ -5,6 +5,7 @@ import HeaderButtons, { HeaderButton, Item } from 'react-navigation-header-butto
|
||||||
import { CustomIcon } from '../lib/Icons';
|
import { CustomIcon } from '../lib/Icons';
|
||||||
import { isIOS } from '../utils/deviceInfo';
|
import { isIOS } from '../utils/deviceInfo';
|
||||||
import { COLOR_PRIMARY, COLOR_WHITE } from '../constants/colors';
|
import { COLOR_PRIMARY, COLOR_WHITE } from '../constants/colors';
|
||||||
|
import I18n from '../i18n';
|
||||||
|
|
||||||
const color = isIOS ? COLOR_PRIMARY : COLOR_WHITE;
|
const color = isIOS ? COLOR_PRIMARY : COLOR_WHITE;
|
||||||
export const headerIconSize = 23;
|
export const headerIconSize = 23;
|
||||||
|
@ -35,7 +36,7 @@ export const CloseModalButton = React.memo(({ navigation, testID }) => (
|
||||||
export const CloseShareExtensionButton = React.memo(({ onPress, testID }) => (
|
export const CloseShareExtensionButton = React.memo(({ onPress, testID }) => (
|
||||||
<CustomHeaderButtons left>
|
<CustomHeaderButtons left>
|
||||||
{isIOS
|
{isIOS
|
||||||
? <Item title='cancel' onPress={onPress} testID={testID} />
|
? <Item title={I18n.t('Cancel')} onPress={onPress} testID={testID} />
|
||||||
: <Item title='close' iconName='cross' onPress={onPress} testID={testID} />
|
: <Item title='close' iconName='cross' onPress={onPress} testID={testID} />
|
||||||
}
|
}
|
||||||
</CustomHeaderButtons>
|
</CustomHeaderButtons>
|
||||||
|
|
|
@ -489,7 +489,9 @@ class MessageBox extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
sendMediaMessage = async(file) => {
|
sendMediaMessage = async(file) => {
|
||||||
const { rid, tmid } = this.props;
|
const {
|
||||||
|
rid, tmid, baseUrl: server, user
|
||||||
|
} = this.props;
|
||||||
this.setState({ file: { isVisible: false } });
|
this.setState({ file: { isVisible: false } });
|
||||||
const fileInfo = {
|
const fileInfo = {
|
||||||
name: file.name,
|
name: file.name,
|
||||||
|
@ -500,7 +502,7 @@ class MessageBox extends Component {
|
||||||
path: file.path
|
path: file.path
|
||||||
};
|
};
|
||||||
try {
|
try {
|
||||||
await RocketChat.sendFileMessage(rid, fileInfo, tmid);
|
await RocketChat.sendFileMessage(rid, fileInfo, tmid, server, user);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log('err_send_media_message', e);
|
log('err_send_media_message', e);
|
||||||
}
|
}
|
||||||
|
@ -602,14 +604,16 @@ class MessageBox extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
finishAudioMessage = async(fileInfo) => {
|
finishAudioMessage = async(fileInfo) => {
|
||||||
const { rid, tmid } = this.props;
|
const {
|
||||||
|
rid, tmid, baseUrl: server, user
|
||||||
|
} = this.props;
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
recording: false
|
recording: false
|
||||||
});
|
});
|
||||||
if (fileInfo) {
|
if (fileInfo) {
|
||||||
try {
|
try {
|
||||||
await RocketChat.sendFileMessage(rid, fileInfo, tmid);
|
await RocketChat.sendFileMessage(rid, fileInfo, tmid, server, user);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e && e.error === 'error-file-too-large') {
|
if (e && e.error === 'error-file-too-large') {
|
||||||
return Alert.alert(I18n.t(e.error));
|
return Alert.alert(I18n.t(e.error));
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { View, StyleSheet, TextInput } from 'react-native';
|
import {
|
||||||
|
View, StyleSheet, TextInput, Text
|
||||||
|
} from 'react-native';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
|
import Touchable from 'react-native-platform-touchable';
|
||||||
|
|
||||||
import I18n from '../i18n';
|
import I18n from '../i18n';
|
||||||
import { isIOS } from '../utils/deviceInfo';
|
import { isIOS } from '../utils/deviceInfo';
|
||||||
|
@ -9,7 +12,10 @@ import sharedStyles from '../views/Styles';
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
container: {
|
container: {
|
||||||
backgroundColor: isIOS ? '#F7F8FA' : '#54585E'
|
backgroundColor: isIOS ? '#F7F8FA' : '#54585E',
|
||||||
|
flexDirection: 'row',
|
||||||
|
alignItems: 'center',
|
||||||
|
flex: 1
|
||||||
},
|
},
|
||||||
searchBox: {
|
searchBox: {
|
||||||
alignItems: 'center',
|
alignItems: 'center',
|
||||||
|
@ -21,7 +27,8 @@ const styles = StyleSheet.create({
|
||||||
height: 36,
|
height: 36,
|
||||||
margin: 16,
|
margin: 16,
|
||||||
marginVertical: 10,
|
marginVertical: 10,
|
||||||
paddingHorizontal: 10
|
paddingHorizontal: 10,
|
||||||
|
flex: 1
|
||||||
},
|
},
|
||||||
input: {
|
input: {
|
||||||
color: '#8E8E93',
|
color: '#8E8E93',
|
||||||
|
@ -31,10 +38,26 @@ const styles = StyleSheet.create({
|
||||||
paddingTop: 0,
|
paddingTop: 0,
|
||||||
paddingBottom: 0,
|
paddingBottom: 0,
|
||||||
...sharedStyles.textRegular
|
...sharedStyles.textRegular
|
||||||
|
},
|
||||||
|
cancel: {
|
||||||
|
marginRight: 10
|
||||||
|
},
|
||||||
|
cancelText: {
|
||||||
|
...sharedStyles.textRegular,
|
||||||
|
...sharedStyles.textColorHeaderBack,
|
||||||
|
fontSize: 17
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const SearchBox = ({ onChangeText, onSubmitEditing, testID }) => (
|
const CancelButton = onCancelPress => (
|
||||||
|
<Touchable onPress={onCancelPress} style={styles.cancel}>
|
||||||
|
<Text style={styles.cancelText}>{I18n.t('Cancel')}</Text>
|
||||||
|
</Touchable>
|
||||||
|
);
|
||||||
|
|
||||||
|
const SearchBox = ({
|
||||||
|
onChangeText, onSubmitEditing, testID, hasCancel, onCancelPress, ...props
|
||||||
|
}) => (
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
<View style={styles.searchBox}>
|
<View style={styles.searchBox}>
|
||||||
<CustomIcon name='magnifier' size={14} color='#8E8E93' />
|
<CustomIcon name='magnifier' size={14} color='#8E8E93' />
|
||||||
|
@ -50,14 +73,18 @@ const SearchBox = ({ onChangeText, onSubmitEditing, testID }) => (
|
||||||
underlineColorAndroid='transparent'
|
underlineColorAndroid='transparent'
|
||||||
onChangeText={onChangeText}
|
onChangeText={onChangeText}
|
||||||
onSubmitEditing={onSubmitEditing}
|
onSubmitEditing={onSubmitEditing}
|
||||||
|
{...props}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
|
{ hasCancel ? CancelButton(onCancelPress) : null }
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
|
|
||||||
SearchBox.propTypes = {
|
SearchBox.propTypes = {
|
||||||
onChangeText: PropTypes.func.isRequired,
|
onChangeText: PropTypes.func.isRequired,
|
||||||
onSubmitEditing: PropTypes.func,
|
onSubmitEditing: PropTypes.func,
|
||||||
|
hasCancel: PropTypes.bool,
|
||||||
|
onCancelPress: PropTypes.func,
|
||||||
testID: PropTypes.string
|
testID: PropTypes.string
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -311,13 +311,13 @@ export default {
|
||||||
Search_global_users: 'Search for global users',
|
Search_global_users: 'Search for global users',
|
||||||
Search_global_users_description: 'If you turn-on, you can search for any user from others companies or servers.',
|
Search_global_users_description: 'If you turn-on, you can search for any user from others companies or servers.',
|
||||||
Select_Avatar: 'Select Avatar',
|
Select_Avatar: 'Select Avatar',
|
||||||
Select_Channels: 'Select Channels',
|
|
||||||
Select_Server: 'Select Server',
|
Select_Server: 'Select Server',
|
||||||
Select_Users: 'Select Users',
|
Select_Users: 'Select Users',
|
||||||
Send: 'Send',
|
Send: 'Send',
|
||||||
Send_audio_message: 'Send audio message',
|
Send_audio_message: 'Send audio message',
|
||||||
Send_crash_report: 'Send crash report',
|
Send_crash_report: 'Send crash report',
|
||||||
Send_message: 'Send message',
|
Send_message: 'Send message',
|
||||||
|
Send_to: 'Send to...',
|
||||||
Sent_an_attachment: 'Sent an attachment',
|
Sent_an_attachment: 'Sent an attachment',
|
||||||
Server: 'Server',
|
Server: 'Server',
|
||||||
Servers: 'Servers',
|
Servers: 'Servers',
|
||||||
|
|
|
@ -302,12 +302,12 @@ export default {
|
||||||
Search_global_users: 'Busca por usuários globais',
|
Search_global_users: 'Busca por usuários globais',
|
||||||
Search_global_users_description: 'Caso ativado, busca por usuários de outras empresas ou servidores.',
|
Search_global_users_description: 'Caso ativado, busca por usuários de outras empresas ou servidores.',
|
||||||
Select_Avatar: 'Selecionar Avatar',
|
Select_Avatar: 'Selecionar Avatar',
|
||||||
Select_Channels: 'Selecionar Canais',
|
|
||||||
Select_Server: 'Selecionar Servidor',
|
Select_Server: 'Selecionar Servidor',
|
||||||
Select_Users: 'Selecionar Usuários',
|
Select_Users: 'Selecionar Usuários',
|
||||||
Send: 'Enviar',
|
Send: 'Enviar',
|
||||||
Send_audio_message: 'Enviar mensagem de áudio',
|
Send_audio_message: 'Enviar mensagem de áudio',
|
||||||
Send_message: 'Enviar mensagem',
|
Send_message: 'Enviar mensagem',
|
||||||
|
Send_to: 'Enviar para...',
|
||||||
Sent_an_attachment: 'Enviou um anexo',
|
Sent_an_attachment: 'Enviou um anexo',
|
||||||
Server: 'Servidor',
|
Server: 'Servidor',
|
||||||
Set_username_subtitle: 'O usuário é utilizado para permitir que você seja mencionado em mensagens',
|
Set_username_subtitle: 'O usuário é utilizado para permitir que você seja mencionado em mensagens',
|
||||||
|
@ -383,5 +383,6 @@ export default {
|
||||||
you_were_mentioned: 'você foi mencionado',
|
you_were_mentioned: 'você foi mencionado',
|
||||||
you: 'você',
|
you: 'você',
|
||||||
You: 'Você',
|
You: 'Você',
|
||||||
|
You_need_to_access_at_least_one_RocketChat_server_to_share_something: 'Você precisa acessar ao menos um servidor Rocket.Chat para compartilhar.',
|
||||||
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!'
|
||||||
};
|
};
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
import { NavigationActions } from 'react-navigation';
|
||||||
|
|
||||||
|
let _shareNavigator;
|
||||||
|
|
||||||
|
function setTopLevelNavigator(navigatorRef) {
|
||||||
|
_shareNavigator = navigatorRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
function navigate(routeName, params) {
|
||||||
|
_shareNavigator.dispatch(
|
||||||
|
NavigationActions.navigate({
|
||||||
|
routeName,
|
||||||
|
params
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
navigate,
|
||||||
|
setTopLevelNavigator
|
||||||
|
};
|
|
@ -40,6 +40,15 @@ export default async function() {
|
||||||
if (setting._id === 'Site_Name') {
|
if (setting._id === 'Site_Name') {
|
||||||
updateServer.call(this, { name: setting.valueAsString });
|
updateServer.call(this, { name: setting.valueAsString });
|
||||||
}
|
}
|
||||||
|
if (setting._id === 'UI_Use_Real_Name') {
|
||||||
|
updateServer.call(this, { useRealName: setting.valueAsBoolean });
|
||||||
|
}
|
||||||
|
if (setting._id === 'FileUpload_MediaTypeWhiteList') {
|
||||||
|
updateServer.call(this, { FileUpload_MediaTypeWhiteList: setting.valueAsString });
|
||||||
|
}
|
||||||
|
if (setting._id === 'FileUpload_MaxFileSize') {
|
||||||
|
updateServer.call(this, { FileUpload_MaxFileSize: setting.valueAsNumber });
|
||||||
|
}
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import reduxStore from '../createStore';
|
|
||||||
import database from '../realm';
|
import database from '../realm';
|
||||||
import log from '../../utils/log';
|
import log from '../../utils/log';
|
||||||
|
|
||||||
|
@ -23,11 +22,12 @@ export function cancelUpload(path) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function sendFileMessage(rid, fileInfo, tmid) {
|
export function sendFileMessage(rid, fileInfo, tmid, server, user) {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
try {
|
try {
|
||||||
const { FileUpload_MaxFileSize, Site_Url } = reduxStore.getState().settings;
|
const { serversDB } = database.databases;
|
||||||
const { id, token } = reduxStore.getState().login.user;
|
const { FileUpload_MaxFileSize, id: Site_Url } = serversDB.objectForPrimaryKey('servers', server);
|
||||||
|
const { id, token } = user;
|
||||||
|
|
||||||
// -1 maxFileSize means there is no limit
|
// -1 maxFileSize means there is no limit
|
||||||
if (FileUpload_MaxFileSize > -1 && fileInfo.size > FileUpload_MaxFileSize) {
|
if (FileUpload_MaxFileSize > -1 && fileInfo.size > FileUpload_MaxFileSize) {
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import messagesStatus from '../../constants/messagesStatus';
|
import messagesStatus from '../../constants/messagesStatus';
|
||||||
import buildMessage from './helpers/buildMessage';
|
import buildMessage from './helpers/buildMessage';
|
||||||
import database from '../realm';
|
import database from '../realm';
|
||||||
import reduxStore from '../createStore';
|
|
||||||
import log from '../../utils/log';
|
import log from '../../utils/log';
|
||||||
import random from '../../utils/random';
|
import random from '../../utils/random';
|
||||||
|
|
||||||
export const getMessage = (rid, msg = '', tmid) => {
|
export const getMessage = (rid, msg = '', tmid, user) => {
|
||||||
const _id = random(17);
|
const _id = random(17);
|
||||||
|
const { id, username } = user;
|
||||||
const message = {
|
const message = {
|
||||||
_id,
|
_id,
|
||||||
rid,
|
rid,
|
||||||
|
@ -16,8 +16,8 @@ export const getMessage = (rid, msg = '', tmid) => {
|
||||||
_updatedAt: new Date(),
|
_updatedAt: new Date(),
|
||||||
status: messagesStatus.TEMP,
|
status: messagesStatus.TEMP,
|
||||||
u: {
|
u: {
|
||||||
_id: reduxStore.getState().login.user.id || '1',
|
_id: id || '1',
|
||||||
username: reduxStore.getState().login.user.username
|
username
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
try {
|
try {
|
||||||
|
@ -43,9 +43,9 @@ export async function sendMessageCall(message) {
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function(rid, msg, tmid) {
|
export default async function(rid, msg, tmid, user) {
|
||||||
try {
|
try {
|
||||||
const message = getMessage(rid, msg, tmid);
|
const message = getMessage(rid, msg, tmid, user);
|
||||||
const [room] = database.objects('subscriptions').filtered('rid == $0', rid);
|
const [room] = database.objects('subscriptions').filtered('rid == $0', rid);
|
||||||
|
|
||||||
if (room) {
|
if (room) {
|
||||||
|
|
|
@ -26,6 +26,9 @@ const serversSchema = {
|
||||||
id: 'string',
|
id: 'string',
|
||||||
name: { type: 'string', optional: true },
|
name: { type: 'string', optional: true },
|
||||||
iconURL: { type: 'string', optional: true },
|
iconURL: { type: 'string', optional: true },
|
||||||
|
useRealName: { type: 'bool', optional: true },
|
||||||
|
FileUpload_MediaTypeWhiteList: { type: 'string', optional: true },
|
||||||
|
FileUpload_MaxFileSize: { type: 'int', optional: true },
|
||||||
roomsUpdatedAt: { type: 'date', optional: true },
|
roomsUpdatedAt: { type: 'date', optional: true },
|
||||||
version: 'string?'
|
version: 'string?'
|
||||||
}
|
}
|
||||||
|
@ -414,7 +417,7 @@ class DB {
|
||||||
userSchema,
|
userSchema,
|
||||||
serversSchema
|
serversSchema
|
||||||
],
|
],
|
||||||
schemaVersion: 9,
|
schemaVersion: 10,
|
||||||
migration: (oldRealm, newRealm) => {
|
migration: (oldRealm, newRealm) => {
|
||||||
if (oldRealm.schemaVersion >= 1 && newRealm.schemaVersion <= 9) {
|
if (oldRealm.schemaVersion >= 1 && newRealm.schemaVersion <= 9) {
|
||||||
const newServers = newRealm.objects('servers');
|
const newServers = newRealm.objects('servers');
|
||||||
|
|
|
@ -14,6 +14,9 @@ import {
|
||||||
setUser, setLoginServices, loginRequest, loginFailure, logout
|
setUser, setLoginServices, loginRequest, loginFailure, logout
|
||||||
} from '../actions/login';
|
} from '../actions/login';
|
||||||
import { disconnect, connectSuccess, connectRequest } from '../actions/connect';
|
import { disconnect, connectSuccess, connectRequest } from '../actions/connect';
|
||||||
|
import {
|
||||||
|
shareSelectServer, shareSetUser
|
||||||
|
} from '../actions/share';
|
||||||
|
|
||||||
import subscribeRooms from './methods/subscriptions/rooms';
|
import subscribeRooms from './methods/subscriptions/rooms';
|
||||||
import subscribeRoom from './methods/subscriptions/room';
|
import subscribeRoom from './methods/subscriptions/room';
|
||||||
|
@ -217,6 +220,35 @@ const RocketChat = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
async shareExtensionInit(server) {
|
||||||
|
database.setActiveDB(server);
|
||||||
|
|
||||||
|
if (this.sdk) {
|
||||||
|
this.sdk.disconnect();
|
||||||
|
this.sdk = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Use useSsl: false only if server url starts with http://
|
||||||
|
const useSsl = !/http:\/\//.test(server);
|
||||||
|
|
||||||
|
this.sdk = new RocketchatClient({ host: server, protocol: 'ddp', useSsl });
|
||||||
|
|
||||||
|
// set Server
|
||||||
|
const { serversDB } = database.databases;
|
||||||
|
reduxStore.dispatch(shareSelectServer(server));
|
||||||
|
|
||||||
|
// set User info
|
||||||
|
const userId = await RNUserDefaults.get(`${ RocketChat.TOKEN_KEY }-${ server }`);
|
||||||
|
const user = userId && serversDB.objectForPrimaryKey('user', userId);
|
||||||
|
reduxStore.dispatch(shareSetUser({
|
||||||
|
id: user.id,
|
||||||
|
token: user.token,
|
||||||
|
username: user.username
|
||||||
|
}));
|
||||||
|
|
||||||
|
await RocketChat.login({ resume: user.token });
|
||||||
|
},
|
||||||
|
|
||||||
register(credentials) {
|
register(credentials) {
|
||||||
// RC 0.50.0
|
// RC 0.50.0
|
||||||
return this.sdk.post('users.register', credentials, false);
|
return this.sdk.post('users.register', credentials, false);
|
||||||
|
|
|
@ -35,7 +35,7 @@ const DirectoryItem = ({
|
||||||
<RoomTypeIcon type={type} />
|
<RoomTypeIcon type={type} />
|
||||||
<Text style={styles.directoryItemName} numberOfLines={1}>{title}</Text>
|
<Text style={styles.directoryItemName} numberOfLines={1}>{title}</Text>
|
||||||
</View>
|
</View>
|
||||||
<Text style={styles.directoryItemUsername} numberOfLines={1}>{description}</Text>
|
{ description ? <Text style={styles.directoryItemUsername} numberOfLines={1}>{description}</Text> : null }
|
||||||
</View>
|
</View>
|
||||||
<DirectoryItemLabel text={rightLabel} />
|
<DirectoryItemLabel text={rightLabel} />
|
||||||
</View>
|
</View>
|
||||||
|
|
|
@ -16,8 +16,8 @@ export default StyleSheet.create({
|
||||||
alignItems: 'center'
|
alignItems: 'center'
|
||||||
},
|
},
|
||||||
serverIcon: {
|
serverIcon: {
|
||||||
width: 38,
|
width: 44,
|
||||||
height: 38,
|
height: 44,
|
||||||
marginHorizontal: 15,
|
marginHorizontal: 15,
|
||||||
borderRadius: 4
|
borderRadius: 4
|
||||||
},
|
},
|
||||||
|
|
|
@ -11,6 +11,7 @@ import app from './app';
|
||||||
import sortPreferences from './sortPreferences';
|
import sortPreferences from './sortPreferences';
|
||||||
import notification from './notification';
|
import notification from './notification';
|
||||||
import markdown from './markdown';
|
import markdown from './markdown';
|
||||||
|
import share from './share';
|
||||||
|
|
||||||
export default combineReducers({
|
export default combineReducers({
|
||||||
settings,
|
settings,
|
||||||
|
@ -24,5 +25,6 @@ export default combineReducers({
|
||||||
rooms,
|
rooms,
|
||||||
sortPreferences,
|
sortPreferences,
|
||||||
notification,
|
notification,
|
||||||
markdown
|
markdown,
|
||||||
|
share
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
import { SHARE } from '../actions/actionsTypes';
|
||||||
|
|
||||||
|
const initialState = {
|
||||||
|
user: {},
|
||||||
|
server: ''
|
||||||
|
};
|
||||||
|
|
||||||
|
export default function share(state = initialState, action) {
|
||||||
|
switch (action.type) {
|
||||||
|
case SHARE.SELECT_SERVER:
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
server: action.server
|
||||||
|
};
|
||||||
|
case SHARE.SET_USER:
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
user: action.user
|
||||||
|
};
|
||||||
|
default:
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
}
|
50
app/share.js
50
app/share.js
|
@ -2,31 +2,34 @@ import React from 'react';
|
||||||
import { View } from 'react-native';
|
import { View } from 'react-native';
|
||||||
import { createAppContainer, createStackNavigator, createSwitchNavigator } from 'react-navigation';
|
import { createAppContainer, createStackNavigator, createSwitchNavigator } from 'react-navigation';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
|
import RNUserDefaults from 'rn-user-defaults';
|
||||||
|
|
||||||
import Navigation from './lib/Navigation';
|
import Navigation from './lib/ShareNavigation';
|
||||||
import store from './lib/createStore';
|
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';
|
|
||||||
import WithoutServersView from './views/WithoutServersView';
|
|
||||||
import sharedStyles from './views/Styles';
|
import sharedStyles from './views/Styles';
|
||||||
import { isNotch } from './utils/deviceInfo';
|
import { isNotch, isIOS } from './utils/deviceInfo';
|
||||||
import { defaultHeader, onNavigationStateChange } from './utils/navigation';
|
import { defaultHeader, onNavigationStateChange } from './utils/navigation';
|
||||||
|
import RocketChat from './lib/rocketchat';
|
||||||
|
|
||||||
const InsideNavigator = createStackNavigator({
|
const InsideNavigator = createStackNavigator({
|
||||||
ShareListView,
|
ShareListView: {
|
||||||
ShareView,
|
getScreen: () => require('./views/ShareListView').default
|
||||||
SelectServerView
|
},
|
||||||
|
ShareView: {
|
||||||
|
getScreen: () => require('./views/ShareView').default
|
||||||
|
},
|
||||||
|
SelectServerView: {
|
||||||
|
getScreen: () => require('./views/SelectServerView').default
|
||||||
|
}
|
||||||
}, {
|
}, {
|
||||||
initialRouteName: 'ShareListView',
|
initialRouteName: 'ShareListView',
|
||||||
defaultNavigationOptions: defaultHeader
|
defaultNavigationOptions: defaultHeader
|
||||||
});
|
});
|
||||||
|
|
||||||
const OutsideNavigator = createStackNavigator({
|
const OutsideNavigator = createStackNavigator({
|
||||||
WithoutServersView
|
WithoutServersView: {
|
||||||
|
getScreen: () => require('./views/WithoutServersView').default
|
||||||
|
}
|
||||||
}, {
|
}, {
|
||||||
initialRouteName: 'WithoutServersView',
|
initialRouteName: 'WithoutServersView',
|
||||||
defaultNavigationOptions: defaultHeader
|
defaultNavigationOptions: defaultHeader
|
||||||
|
@ -35,7 +38,9 @@ const OutsideNavigator = createStackNavigator({
|
||||||
const AppContainer = createAppContainer(createSwitchNavigator({
|
const AppContainer = createAppContainer(createSwitchNavigator({
|
||||||
OutsideStack: OutsideNavigator,
|
OutsideStack: OutsideNavigator,
|
||||||
InsideStack: InsideNavigator,
|
InsideStack: InsideNavigator,
|
||||||
AuthLoading: AuthLoadingView
|
AuthLoading: {
|
||||||
|
getScreen: () => require('./views/AuthLoadingView').default
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
initialRouteName: 'AuthLoading'
|
initialRouteName: 'AuthLoading'
|
||||||
|
@ -44,10 +49,25 @@ const AppContainer = createAppContainer(createSwitchNavigator({
|
||||||
class Root extends React.Component {
|
class Root extends React.Component {
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
store.dispatch(appInit());
|
|
||||||
this.state = {
|
this.state = {
|
||||||
isLandscape: false
|
isLandscape: false
|
||||||
};
|
};
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
|
||||||
|
init = async() => {
|
||||||
|
if (isIOS) {
|
||||||
|
await RNUserDefaults.setName('group.ios.chat.rocket');
|
||||||
|
}
|
||||||
|
const currentServer = await RNUserDefaults.get('currentServer');
|
||||||
|
const token = await RNUserDefaults.get(RocketChat.TOKEN_KEY);
|
||||||
|
|
||||||
|
if (currentServer && token) {
|
||||||
|
await Navigation.navigate('InsideStack');
|
||||||
|
await RocketChat.shareExtensionInit(currentServer);
|
||||||
|
} else {
|
||||||
|
await Navigation.navigate('OutsideStack');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
handleLayout = (event) => {
|
handleLayout = (event) => {
|
||||||
|
|
|
@ -64,7 +64,13 @@ const styles = StyleSheet.create({
|
||||||
export default class UploadProgress extends Component {
|
export default class UploadProgress extends Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
window: PropTypes.object,
|
window: PropTypes.object,
|
||||||
rid: PropTypes.string
|
rid: PropTypes.string,
|
||||||
|
user: PropTypes.shape({
|
||||||
|
id: PropTypes.string.isRequired,
|
||||||
|
username: PropTypes.string.isRequired,
|
||||||
|
token: PropTypes.string.isRequired
|
||||||
|
}),
|
||||||
|
baseUrl: PropTypes.string.isRequired
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
|
@ -124,13 +130,13 @@ export default class UploadProgress extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
tryAgain = async(item) => {
|
tryAgain = async(item) => {
|
||||||
const { rid } = this.props;
|
const { rid, baseUrl: server, user } = this.props;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
database.write(() => {
|
database.write(() => {
|
||||||
item.error = false;
|
item.error = false;
|
||||||
});
|
});
|
||||||
await RocketChat.sendFileMessage(rid, item);
|
await RocketChat.sendFileMessage(rid, item, undefined, server, user);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log('err_upload_progress_try_again', e);
|
log('err_upload_progress_try_again', e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -410,8 +410,9 @@ export default class RoomView extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
sendMessage = (message, tmid) => {
|
sendMessage = (message, tmid) => {
|
||||||
|
const { user } = this.props;
|
||||||
LayoutAnimation.easeInEaseOut();
|
LayoutAnimation.easeInEaseOut();
|
||||||
RocketChat.sendMessage(this.rid, message, this.tmid || tmid).then(() => {
|
RocketChat.sendMessage(this.rid, message, this.tmid || tmid, user).then(() => {
|
||||||
this.setLastOpen(null);
|
this.setLastOpen(null);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -623,7 +624,7 @@ export default class RoomView extends React.Component {
|
||||||
{this.renderFooter()}
|
{this.renderFooter()}
|
||||||
{this.renderActions()}
|
{this.renderActions()}
|
||||||
<ReactionPicker onEmojiSelected={this.onReactionPress} />
|
<ReactionPicker onEmojiSelected={this.onReactionPress} />
|
||||||
<UploadProgress rid={this.rid} />
|
<UploadProgress rid={this.rid} user={user} baseUrl={baseUrl} />
|
||||||
<FileModal
|
<FileModal
|
||||||
attachment={selectedAttachment}
|
attachment={selectedAttachment}
|
||||||
isVisible={photoModalVisible}
|
isVisible={photoModalVisible}
|
||||||
|
|
|
@ -9,14 +9,11 @@ import { SafeAreaView } from 'react-navigation';
|
||||||
import I18n from '../i18n';
|
import I18n from '../i18n';
|
||||||
import database from '../lib/realm';
|
import database from '../lib/realm';
|
||||||
import StatusBar from '../containers/StatusBar';
|
import StatusBar from '../containers/StatusBar';
|
||||||
import { selectServerRequest as selectServerRequestAction } from '../actions/server';
|
import { COLOR_BACKGROUND_CONTAINER } from '../constants/colors';
|
||||||
|
import Navigation from '../lib/ShareNavigation';
|
||||||
import {
|
|
||||||
COLOR_BACKGROUND_CONTAINER
|
|
||||||
} from '../constants/colors';
|
|
||||||
import Navigation from '../lib/Navigation';
|
|
||||||
import ServerItem, { ROW_HEIGHT } from '../presentation/ServerItem';
|
import ServerItem, { ROW_HEIGHT } from '../presentation/ServerItem';
|
||||||
import sharedStyles from './Styles';
|
import sharedStyles from './Styles';
|
||||||
|
import RocketChat from '../lib/rocketchat';
|
||||||
|
|
||||||
const getItemLayout = (data, index) => ({ length: ROW_HEIGHT, offset: ROW_HEIGHT * index, index });
|
const getItemLayout = (data, index) => ({ length: ROW_HEIGHT, offset: ROW_HEIGHT * index, index });
|
||||||
const keyExtractor = item => item.id;
|
const keyExtractor = item => item.id;
|
||||||
|
@ -36,10 +33,8 @@ const styles = StyleSheet.create({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@connect(state => ({
|
@connect(({ share }) => ({
|
||||||
server: state.server.server
|
server: share.server
|
||||||
}), dispatch => ({
|
|
||||||
selectServerRequest: server => dispatch(selectServerRequestAction(server))
|
|
||||||
}))
|
}))
|
||||||
export default class SelectServerView extends React.Component {
|
export default class SelectServerView extends React.Component {
|
||||||
static navigationOptions = () => ({
|
static navigationOptions = () => ({
|
||||||
|
@ -47,8 +42,7 @@ export default class SelectServerView extends React.Component {
|
||||||
})
|
})
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
server: PropTypes.string,
|
server: PropTypes.string
|
||||||
selectServerRequest: PropTypes.func
|
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
|
@ -61,15 +55,15 @@ export default class SelectServerView extends React.Component {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
select = (server) => {
|
select = async(server) => {
|
||||||
const {
|
const {
|
||||||
server: currentServer, selectServerRequest
|
server: currentServer
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
if (currentServer !== server) {
|
|
||||||
selectServerRequest(server);
|
|
||||||
}
|
|
||||||
Navigation.navigate('ShareListView');
|
Navigation.navigate('ShareListView');
|
||||||
|
if (currentServer !== server) {
|
||||||
|
await RocketChat.shareExtensionInit(server);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
renderItem = ({ item }) => {
|
renderItem = ({ item }) => {
|
||||||
|
|
|
@ -1,92 +0,0 @@
|
||||||
import React, { PureComponent } from 'react';
|
|
||||||
import {
|
|
||||||
View, StyleSheet, Text, Platform
|
|
||||||
} from 'react-native';
|
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import { connect } from 'react-redux';
|
|
||||||
import { TextInput } from 'react-native-gesture-handler';
|
|
||||||
|
|
||||||
import I18n from '../../i18n';
|
|
||||||
import { COLOR_WHITE, HEADER_TITLE } from '../../constants/colors';
|
|
||||||
import sharedStyles from '../Styles';
|
|
||||||
import { setSearch as setSearchAction } from '../../actions/rooms';
|
|
||||||
import { isAndroid } from '../../utils/deviceInfo';
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
container: {
|
|
||||||
flex: 1,
|
|
||||||
justifyContent: 'center'
|
|
||||||
},
|
|
||||||
search: {
|
|
||||||
fontSize: 20,
|
|
||||||
color: COLOR_WHITE,
|
|
||||||
...sharedStyles.textRegular
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
...Platform.select({
|
|
||||||
ios: {
|
|
||||||
fontSize: 17,
|
|
||||||
...sharedStyles.textSemibold,
|
|
||||||
color: HEADER_TITLE
|
|
||||||
},
|
|
||||||
android: {
|
|
||||||
fontSize: 20,
|
|
||||||
...sharedStyles.textRegular,
|
|
||||||
color: HEADER_TITLE
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
@connect(state => ({
|
|
||||||
showSearchHeader: state.rooms.showSearchHeader
|
|
||||||
}), dispatch => ({
|
|
||||||
setSearch: searchText => dispatch(setSearchAction(searchText))
|
|
||||||
}))
|
|
||||||
class ShareListHeader extends PureComponent {
|
|
||||||
static propTypes = {
|
|
||||||
showSearchHeader: PropTypes.bool,
|
|
||||||
setSearch: PropTypes.func
|
|
||||||
}
|
|
||||||
|
|
||||||
componentDidUpdate(prevProps) {
|
|
||||||
const { showSearchHeader } = this.props;
|
|
||||||
if (showSearchHeader && prevProps.showSearchHeader !== showSearchHeader) {
|
|
||||||
setTimeout(() => {
|
|
||||||
this.searchInputRef.focus();
|
|
||||||
}, 300);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
onSearchChangeText = (text) => {
|
|
||||||
const { setSearch } = this.props;
|
|
||||||
setSearch(text.trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
setSearchInputRef = (ref) => {
|
|
||||||
this.searchInputRef = ref;
|
|
||||||
}
|
|
||||||
|
|
||||||
render() {
|
|
||||||
const {
|
|
||||||
showSearchHeader
|
|
||||||
} = this.props;
|
|
||||||
|
|
||||||
if (showSearchHeader && isAndroid) {
|
|
||||||
return (
|
|
||||||
<View style={styles.container}>
|
|
||||||
<TextInput
|
|
||||||
ref={this.setSearchInputRef}
|
|
||||||
style={styles.search}
|
|
||||||
placeholder={I18n.t('Search')}
|
|
||||||
placeholderTextColor='rgba(255, 255, 255, 0.5)'
|
|
||||||
onChangeText={this.onSearchChangeText}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return <Text style={styles.title}>{I18n.t('Select_Channels')}</Text>;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default ShareListHeader;
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
import React from 'react';
|
||||||
|
import {
|
||||||
|
View, StyleSheet, Text, TextInput
|
||||||
|
} from 'react-native';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
|
import I18n from '../../../i18n';
|
||||||
|
import { COLOR_WHITE, HEADER_TITLE } from '../../../constants/colors';
|
||||||
|
import sharedStyles from '../../Styles';
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
flex: 1,
|
||||||
|
justifyContent: 'center'
|
||||||
|
},
|
||||||
|
search: {
|
||||||
|
fontSize: 20,
|
||||||
|
color: COLOR_WHITE,
|
||||||
|
...sharedStyles.textRegular,
|
||||||
|
marginHorizontal: 14
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
fontSize: 20,
|
||||||
|
...sharedStyles.textBold,
|
||||||
|
color: HEADER_TITLE,
|
||||||
|
marginHorizontal: 16
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const Header = React.memo(({ searching, onChangeSearchText }) => {
|
||||||
|
if (searching) {
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
<TextInput
|
||||||
|
style={styles.search}
|
||||||
|
placeholder={I18n.t('Search')}
|
||||||
|
placeholderTextColor='rgba(255, 255, 255, 0.5)'
|
||||||
|
onChangeText={onChangeSearchText}
|
||||||
|
autoFocus
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return <Text style={styles.title}>{I18n.t('Send_to')}</Text>;
|
||||||
|
});
|
||||||
|
|
||||||
|
Header.propTypes = {
|
||||||
|
searching: PropTypes.bool,
|
||||||
|
onChangeSearchText: PropTypes.func
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Header;
|
|
@ -0,0 +1,76 @@
|
||||||
|
import React, { useState } from 'react';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import {
|
||||||
|
Keyboard, LayoutAnimation, View, StyleSheet
|
||||||
|
} from 'react-native';
|
||||||
|
import ShareExtension from 'rn-extensions-share';
|
||||||
|
|
||||||
|
import SearchBox from '../../../containers/SearchBox';
|
||||||
|
import { CloseShareExtensionButton } from '../../../containers/HeaderButton';
|
||||||
|
import { HEADER_BACKGROUND } from '../../../constants/colors';
|
||||||
|
|
||||||
|
import sharedStyles from '../../Styles';
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
backgroundColor: HEADER_BACKGROUND,
|
||||||
|
flexDirection: 'row',
|
||||||
|
...sharedStyles.separatorBottom
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const Header = React.memo(({
|
||||||
|
searching, onChangeSearchText, initSearch, cancelSearch
|
||||||
|
}) => {
|
||||||
|
const [text, setText] = useState('');
|
||||||
|
|
||||||
|
const onChangeText = (searchText) => {
|
||||||
|
onChangeSearchText(searchText);
|
||||||
|
setText(searchText);
|
||||||
|
};
|
||||||
|
|
||||||
|
const onCancelPress = () => {
|
||||||
|
Keyboard.dismiss();
|
||||||
|
onChangeText('');
|
||||||
|
cancelSearch();
|
||||||
|
LayoutAnimation.easeInEaseOut();
|
||||||
|
};
|
||||||
|
|
||||||
|
const onFocus = () => {
|
||||||
|
initSearch();
|
||||||
|
LayoutAnimation.easeInEaseOut();
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
{
|
||||||
|
!searching
|
||||||
|
? (
|
||||||
|
<CloseShareExtensionButton
|
||||||
|
onPress={ShareExtension.close}
|
||||||
|
testID='share-extension-close'
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
<SearchBox
|
||||||
|
value={text}
|
||||||
|
hasCancel={searching}
|
||||||
|
onFocus={onFocus}
|
||||||
|
onCancelPress={onCancelPress}
|
||||||
|
onChangeText={onChangeText}
|
||||||
|
testID='rooms-list-view-search'
|
||||||
|
key='rooms-list-view-search'
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
Header.propTypes = {
|
||||||
|
searching: PropTypes.bool,
|
||||||
|
onChangeSearchText: PropTypes.func,
|
||||||
|
initSearch: PropTypes.func,
|
||||||
|
cancelSearch: PropTypes.func
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Header;
|
|
@ -0,0 +1,30 @@
|
||||||
|
import React from 'react';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
|
import Header from './Header';
|
||||||
|
|
||||||
|
const ShareListHeader = React.memo(({
|
||||||
|
searching, initSearch, cancelSearch, search
|
||||||
|
}) => {
|
||||||
|
const onSearchChangeText = (text) => {
|
||||||
|
search(text.trim());
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Header
|
||||||
|
searching={searching}
|
||||||
|
initSearch={initSearch}
|
||||||
|
cancelSearch={cancelSearch}
|
||||||
|
onChangeSearchText={onSearchChangeText}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
ShareListHeader.propTypes = {
|
||||||
|
searching: PropTypes.bool,
|
||||||
|
initSearch: PropTypes.func,
|
||||||
|
cancelSearch: PropTypes.func,
|
||||||
|
search: PropTypes.func
|
||||||
|
};
|
||||||
|
|
||||||
|
export default ShareListHeader;
|
|
@ -1,7 +1,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import PropTypes from 'prop-types';
|
import PropTypes from 'prop-types';
|
||||||
import {
|
import {
|
||||||
View, Text, LayoutAnimation, InteractionManager, FlatList, ScrollView, ActivityIndicator, Keyboard
|
View, Text, LayoutAnimation, FlatList, ActivityIndicator, Keyboard, BackHandler
|
||||||
} from 'react-native';
|
} from 'react-native';
|
||||||
import { SafeAreaView } from 'react-navigation';
|
import { SafeAreaView } from 'react-navigation';
|
||||||
import ShareExtension from 'rn-extensions-share';
|
import ShareExtension from 'rn-extensions-share';
|
||||||
|
@ -10,60 +10,57 @@ import RNFetchBlob from 'rn-fetch-blob';
|
||||||
import * as mime from 'react-native-mime-types';
|
import * as mime from 'react-native-mime-types';
|
||||||
import { isEqual } from 'lodash';
|
import { isEqual } from 'lodash';
|
||||||
|
|
||||||
import Navigation from '../../lib/Navigation';
|
import Navigation from '../../lib/ShareNavigation';
|
||||||
import database, { safeAddListener } from '../../lib/realm';
|
import database from '../../lib/realm';
|
||||||
import debounce from '../../utils/debounce';
|
|
||||||
import { isIOS, isAndroid } from '../../utils/deviceInfo';
|
import { isIOS, isAndroid } from '../../utils/deviceInfo';
|
||||||
import I18n from '../../i18n';
|
import I18n from '../../i18n';
|
||||||
import { CustomIcon } from '../../lib/Icons';
|
import { CustomIcon } from '../../lib/Icons';
|
||||||
import log from '../../utils/log';
|
import log from '../../utils/log';
|
||||||
import {
|
|
||||||
openSearchHeader as openSearchHeaderAction,
|
|
||||||
closeSearchHeader as closeSearchHeaderAction
|
|
||||||
} from '../../actions/rooms';
|
|
||||||
import DirectoryItem, { ROW_HEIGHT } from '../../presentation/DirectoryItem';
|
import DirectoryItem, { ROW_HEIGHT } from '../../presentation/DirectoryItem';
|
||||||
import ServerItem, { ROW_HEIGHT as ROW_HEIGHT_SERVER } from '../../presentation/ServerItem';
|
import ServerItem from '../../presentation/ServerItem';
|
||||||
import { CloseShareExtensionButton, CustomHeaderButtons, Item } from '../../containers/HeaderButton';
|
import { CloseShareExtensionButton, CustomHeaderButtons, Item } from '../../containers/HeaderButton';
|
||||||
import SearchBar from '../RoomsListView/ListHeader/SearchBar';
|
|
||||||
import ShareListHeader from './Header';
|
import ShareListHeader from './Header';
|
||||||
|
|
||||||
import styles from './styles';
|
import styles from './styles';
|
||||||
|
import StatusBar from '../../containers/StatusBar';
|
||||||
|
|
||||||
const SCROLL_OFFSET = 56;
|
const LIMIT = 50;
|
||||||
const getItemLayoutChannel = (data, index) => ({ length: ROW_HEIGHT, offset: ROW_HEIGHT * index, index });
|
const getItemLayout = (data, index) => ({ length: ROW_HEIGHT, offset: ROW_HEIGHT * index, index });
|
||||||
const getItemLayoutServer = (data, index) => ({ length: ROW_HEIGHT_SERVER, offset: ROW_HEIGHT_SERVER * index, index });
|
|
||||||
const keyExtractor = item => item.rid;
|
const keyExtractor = item => item.rid;
|
||||||
|
|
||||||
@connect(state => ({
|
@connect(({ share }) => ({
|
||||||
userId: state.login.user && state.login.user.id,
|
userId: share.user && share.user.id,
|
||||||
token: state.login.user && state.login.user.token,
|
token: share.user && share.user.token,
|
||||||
useRealName: state.settings.UI_Use_Real_Name,
|
server: share.server,
|
||||||
searchText: state.rooms.searchText,
|
baseUrl: share ? share.server : ''
|
||||||
server: state.server.server,
|
|
||||||
loading: state.server.loading,
|
|
||||||
FileUpload_MediaTypeWhiteList: state.settings.FileUpload_MediaTypeWhiteList,
|
|
||||||
FileUpload_MaxFileSize: state.settings.FileUpload_MaxFileSize,
|
|
||||||
baseUrl: state.settings.baseUrl || state.server ? state.server.server : '',
|
|
||||||
sortBy: state.sortPreferences.sortBy,
|
|
||||||
groupByType: state.sortPreferences.groupByType,
|
|
||||||
showFavorites: state.sortPreferences.showFavorites
|
|
||||||
}), dispatch => ({
|
|
||||||
openSearchHeader: () => dispatch(openSearchHeaderAction()),
|
|
||||||
closeSearchHeader: () => dispatch(closeSearchHeaderAction())
|
|
||||||
}))
|
}))
|
||||||
/** @extends React.Component */
|
/** @extends React.Component */
|
||||||
export default class ShareListView extends React.Component {
|
export default class ShareListView extends React.Component {
|
||||||
static navigationOptions = ({ navigation }) => {
|
static navigationOptions = ({ navigation }) => {
|
||||||
const searching = navigation.getParam('searching');
|
const searching = navigation.getParam('searching');
|
||||||
const cancelSearchingAndroid = navigation.getParam('cancelSearchingAndroid');
|
const initSearch = navigation.getParam('initSearch', () => {});
|
||||||
const initSearchingAndroid = navigation.getParam('initSearchingAndroid', () => {});
|
const cancelSearch = navigation.getParam('cancelSearch', () => {});
|
||||||
|
const search = navigation.getParam('search', () => {});
|
||||||
|
|
||||||
|
if (isIOS) {
|
||||||
|
return {
|
||||||
|
headerTitle: (
|
||||||
|
<ShareListHeader
|
||||||
|
searching={searching}
|
||||||
|
initSearch={initSearch}
|
||||||
|
cancelSearch={cancelSearch}
|
||||||
|
search={search}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
headerBackTitle: isIOS ? I18n.t('Back') : null,
|
headerBackTitle: null,
|
||||||
headerLeft: searching
|
headerLeft: searching
|
||||||
? (
|
? (
|
||||||
<CustomHeaderButtons left>
|
<CustomHeaderButtons left>
|
||||||
<Item title='cancel' iconName='cross' onPress={cancelSearchingAndroid} />
|
<Item title='cancel' iconName='cross' onPress={cancelSearch} />
|
||||||
</CustomHeaderButtons>
|
</CustomHeaderButtons>
|
||||||
)
|
)
|
||||||
: (
|
: (
|
||||||
|
@ -72,13 +69,13 @@ export default class ShareListView extends React.Component {
|
||||||
testID='share-extension-close'
|
testID='share-extension-close'
|
||||||
/>
|
/>
|
||||||
),
|
),
|
||||||
headerTitle: <ShareListHeader />,
|
headerTitle: <ShareListHeader searching={searching} search={search} />,
|
||||||
headerRight: (
|
headerRight: (
|
||||||
searching
|
searching
|
||||||
? null
|
? null
|
||||||
: (
|
: (
|
||||||
<CustomHeaderButtons>
|
<CustomHeaderButtons>
|
||||||
{isAndroid ? <Item title='search' iconName='magnifier' onPress={initSearchingAndroid} /> : null}
|
{isAndroid ? <Item title='search' iconName='magnifier' onPress={initSearch} /> : null}
|
||||||
</CustomHeaderButtons>
|
</CustomHeaderButtons>
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
@ -88,50 +85,38 @@ export default class ShareListView extends React.Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
navigation: PropTypes.object,
|
navigation: PropTypes.object,
|
||||||
server: PropTypes.string,
|
server: PropTypes.string,
|
||||||
useRealName: PropTypes.bool,
|
|
||||||
searchText: PropTypes.string,
|
|
||||||
FileUpload_MediaTypeWhiteList: PropTypes.string,
|
|
||||||
FileUpload_MaxFileSize: PropTypes.number,
|
|
||||||
openSearchHeader: PropTypes.func,
|
|
||||||
closeSearchHeader: PropTypes.func,
|
|
||||||
baseUrl: PropTypes.string,
|
baseUrl: PropTypes.string,
|
||||||
token: PropTypes.string,
|
token: PropTypes.string,
|
||||||
userId: PropTypes.string,
|
userId: PropTypes.string
|
||||||
sortBy: PropTypes.string,
|
|
||||||
groupByType: PropTypes.bool,
|
|
||||||
showFavorites: PropTypes.bool,
|
|
||||||
loading: PropTypes.bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.data = [];
|
this.data = [];
|
||||||
this.state = {
|
this.state = {
|
||||||
|
showError: false,
|
||||||
searching: false,
|
searching: false,
|
||||||
|
searchText: '',
|
||||||
value: '',
|
value: '',
|
||||||
isMedia: false,
|
isMedia: false,
|
||||||
mediaLoading: false,
|
mediaLoading: false,
|
||||||
loading: true,
|
|
||||||
fileInfo: null,
|
fileInfo: null,
|
||||||
search: [],
|
searchResults: [],
|
||||||
discussions: [],
|
|
||||||
channels: [],
|
|
||||||
favorites: [],
|
|
||||||
chats: [],
|
chats: [],
|
||||||
privateGroup: [],
|
servers: [],
|
||||||
direct: [],
|
loading: true,
|
||||||
livechat: [],
|
serverInfo: null
|
||||||
servers: []
|
|
||||||
};
|
};
|
||||||
|
this.didFocusListener = props.navigation.addListener('didFocus', () => BackHandler.addEventListener('hardwareBackPress', this.handleBackPress));
|
||||||
|
this.willBlurListener = props.navigation.addListener('willBlur', () => BackHandler.addEventListener('hardwareBackPress', this.handleBackPress));
|
||||||
}
|
}
|
||||||
|
|
||||||
async componentDidMount() {
|
async componentDidMount() {
|
||||||
this.getSubscriptions();
|
const { navigation, server } = this.props;
|
||||||
|
|
||||||
const { navigation } = this.props;
|
|
||||||
navigation.setParams({
|
navigation.setParams({
|
||||||
initSearchingAndroid: this.initSearchingAndroid,
|
initSearch: this.initSearch,
|
||||||
cancelSearchingAndroid: this.cancelSearchingAndroid
|
cancelSearch: this.cancelSearch,
|
||||||
|
search: this.search
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -157,33 +142,36 @@ export default class ShareListView extends React.Component {
|
||||||
log('err_process_media_share_extension', e);
|
log('err_process_media_share_extension', e);
|
||||||
this.setState({ mediaLoading: false });
|
this.setState({ mediaLoading: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.getSubscriptions(server);
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillReceiveProps(nextProps) {
|
componentWillReceiveProps(nextProps) {
|
||||||
const { searchText, loading } = this.props;
|
const { server } = this.props;
|
||||||
|
if (nextProps.server !== server) {
|
||||||
if (nextProps.server && loading !== nextProps.loading) {
|
this.getSubscriptions(nextProps.server);
|
||||||
if (nextProps.loading) {
|
|
||||||
this.internalSetState({ loading: true });
|
|
||||||
} else {
|
|
||||||
this.getSubscriptions();
|
|
||||||
}
|
|
||||||
} else if (searchText !== nextProps.searchText) {
|
|
||||||
this.search(nextProps.searchText);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldComponentUpdate(nextProps, nextState) {
|
shouldComponentUpdate(nextProps, nextState) {
|
||||||
const { loading, searching } = this.state;
|
const { searching } = this.state;
|
||||||
if (nextState.loading !== loading) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (nextState.searching !== searching) {
|
if (nextState.searching !== searching) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const { search } = this.state;
|
const { isMedia } = this.state;
|
||||||
if (!isEqual(nextState.search, search)) {
|
if (nextState.isMedia !== isMedia) {
|
||||||
|
this.getSubscriptions(nextProps.server, nextState.fileInfo);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { server } = this.props;
|
||||||
|
if (server !== nextProps.server) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { searchResults } = this.state;
|
||||||
|
if (!isEqual(nextState.searchResults, searchResults)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -198,69 +186,31 @@ export default class ShareListView extends React.Component {
|
||||||
this.setState(...args);
|
this.setState(...args);
|
||||||
}
|
}
|
||||||
|
|
||||||
getSubscriptions = debounce(() => {
|
getSubscriptions = (server, fileInfo) => {
|
||||||
if (this.data && this.data.removeAllListeners) {
|
|
||||||
this.data.removeAllListeners();
|
|
||||||
}
|
|
||||||
|
|
||||||
const {
|
|
||||||
server, sortBy, showFavorites, groupByType
|
|
||||||
} = this.props;
|
|
||||||
const { serversDB } = database.databases;
|
const { serversDB } = database.databases;
|
||||||
|
|
||||||
if (server) {
|
if (server) {
|
||||||
this.data = database.objects('subscriptions').filtered('archived != true && open == true');
|
this.data = database.objects('subscriptions').filtered('archived != true && open == true').sorted('roomUpdatedAt', true);
|
||||||
if (sortBy === 'alphabetical') {
|
|
||||||
this.data = this.data.sorted('name', false);
|
|
||||||
} else {
|
|
||||||
this.data = this.data.sorted('roomUpdatedAt', true);
|
|
||||||
}
|
|
||||||
// servers
|
|
||||||
this.servers = serversDB.objects('servers');
|
this.servers = serversDB.objects('servers');
|
||||||
|
this.chats = this.data.slice(0, LIMIT);
|
||||||
|
const serverInfo = serversDB.objectForPrimaryKey('servers', server);
|
||||||
|
|
||||||
// favorites
|
this.internalSetState({
|
||||||
if (showFavorites) {
|
chats: this.chats ? this.chats.slice() : [],
|
||||||
this.favorites = this.data.filtered('f == true');
|
servers: this.servers ? this.servers.slice() : [],
|
||||||
} else {
|
loading: false,
|
||||||
this.favorites = [];
|
showError: !this.canUploadFile(serverInfo, fileInfo),
|
||||||
}
|
serverInfo
|
||||||
|
});
|
||||||
// type
|
this.forceUpdate();
|
||||||
if (groupByType) {
|
|
||||||
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');
|
|
||||||
} else {
|
|
||||||
this.chats = this.data;
|
|
||||||
}
|
|
||||||
safeAddListener(this.data, this.updateState);
|
|
||||||
}
|
}
|
||||||
}, 300);
|
};
|
||||||
|
|
||||||
uriToPath = uri => decodeURIComponent(isIOS ? uri.replace(/^file:\/\//, '') : uri);
|
uriToPath = uri => decodeURIComponent(isIOS ? uri.replace(/^file:\/\//, '') : uri);
|
||||||
|
|
||||||
// eslint-disable-next-line react/sort-comp
|
|
||||||
updateState = debounce(() => {
|
|
||||||
this.updateStateInteraction = InteractionManager.runAfterInteractions(() => {
|
|
||||||
this.internalSetState({
|
|
||||||
chats: this.chats ? this.chats.slice() : [],
|
|
||||||
favorites: this.favorites ? this.favorites.slice() : [],
|
|
||||||
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() : [],
|
|
||||||
servers: this.servers ? this.servers.slice() : [],
|
|
||||||
loading: false
|
|
||||||
});
|
|
||||||
this.forceUpdate();
|
|
||||||
});
|
|
||||||
}, 300);
|
|
||||||
|
|
||||||
getRoomTitle = (item) => {
|
getRoomTitle = (item) => {
|
||||||
const { useRealName } = this.props;
|
const { serverInfo } = this.state;
|
||||||
|
const { useRealName } = serverInfo;
|
||||||
return ((item.prid || useRealName) && item.fname) || item.name;
|
return ((item.prid || useRealName) && item.fname) || item.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,13 +227,11 @@ export default class ShareListView extends React.Component {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
canUploadFile = () => {
|
canUploadFile = (serverInfo, fileInfo) => {
|
||||||
const { FileUpload_MediaTypeWhiteList, FileUpload_MaxFileSize } = this.props;
|
const { fileInfo: fileData } = this.state;
|
||||||
const { fileInfo: file, mediaLoading, loading } = this.state;
|
const file = fileInfo || fileData;
|
||||||
|
const { FileUpload_MediaTypeWhiteList, FileUpload_MaxFileSize } = serverInfo;
|
||||||
|
|
||||||
if (loading || mediaLoading) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!(file && file.path)) {
|
if (!(file && file.path)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -307,40 +255,49 @@ export default class ShareListView extends React.Component {
|
||||||
|
|
||||||
search = (text) => {
|
search = (text) => {
|
||||||
const result = database.objects('subscriptions').filtered('name CONTAINS[c] $0', text);
|
const result = database.objects('subscriptions').filtered('name CONTAINS[c] $0', text);
|
||||||
const subscriptions = database.objects('subscriptions');
|
|
||||||
const data = result.length !== subscriptions.length ? result : [];
|
|
||||||
this.internalSetState({
|
this.internalSetState({
|
||||||
search: data
|
searchResults: result.slice(0, LIMIT),
|
||||||
|
searchText: text
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
initSearchingAndroid = () => {
|
initSearch = () => {
|
||||||
const { openSearchHeader, navigation } = this.props;
|
const { chats } = this.state;
|
||||||
this.setState({ searching: true });
|
const { navigation } = this.props;
|
||||||
|
this.setState({ searching: true, searchResults: chats });
|
||||||
navigation.setParams({ searching: true });
|
navigation.setParams({ searching: true });
|
||||||
openSearchHeader();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cancelSearchingAndroid = () => {
|
cancelSearch = () => {
|
||||||
if (isAndroid) {
|
const { navigation } = this.props;
|
||||||
const { closeSearchHeader, navigation } = this.props;
|
this.internalSetState({ searching: false, searchResults: [], searchText: '' });
|
||||||
this.setState({ searching: false });
|
navigation.setParams({ searching: false });
|
||||||
navigation.setParams({ searching: false });
|
Keyboard.dismiss();
|
||||||
closeSearchHeader();
|
}
|
||||||
this.internalSetState({ search: [] });
|
|
||||||
Keyboard.dismiss();
|
handleBackPress = () => {
|
||||||
|
const { searching } = this.state;
|
||||||
|
if (searching) {
|
||||||
|
this.cancelSearch();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderListHeader = () => <SearchBar onChangeSearchText={this.search} />;
|
renderSectionHeader = (header) => {
|
||||||
|
const { searching } = this.state;
|
||||||
|
if (searching) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
renderSectionHeader = header => (
|
return (
|
||||||
<View style={styles.headerContainer}>
|
<View style={styles.headerContainer}>
|
||||||
<Text style={styles.headerText}>
|
<Text style={styles.headerText}>
|
||||||
{I18n.t(header)}
|
{I18n.t(header)}
|
||||||
</Text>
|
</Text>
|
||||||
</View>
|
</View>
|
||||||
)
|
);
|
||||||
|
}
|
||||||
|
|
||||||
renderItem = ({ item }) => {
|
renderItem = ({ item }) => {
|
||||||
const { userId, token, baseUrl } = this.props;
|
const { userId, token, baseUrl } = this.props;
|
||||||
|
@ -367,33 +324,9 @@ export default class ShareListView extends React.Component {
|
||||||
|
|
||||||
renderSeparator = () => <View style={styles.separator} />;
|
renderSeparator = () => <View style={styles.separator} />;
|
||||||
|
|
||||||
renderSection = (data, header) => {
|
renderBorderBottom = () => <View style={styles.borderBottom} />;
|
||||||
if (data && data.length > 0) {
|
|
||||||
return (
|
|
||||||
<React.Fragment>
|
|
||||||
{this.renderSectionHeader(header)}
|
|
||||||
<View style={styles.bordered}>
|
|
||||||
<FlatList
|
|
||||||
data={data}
|
|
||||||
keyExtractor={keyExtractor}
|
|
||||||
style={styles.flatlist}
|
|
||||||
renderItem={this.renderItem}
|
|
||||||
ItemSeparatorComponent={this.renderSeparator}
|
|
||||||
getItemLayout={getItemLayoutServer}
|
|
||||||
enableEmptySections
|
|
||||||
removeClippedSubviews
|
|
||||||
keyboardShouldPersistTaps='always'
|
|
||||||
initialNumToRender={12}
|
|
||||||
windowSize={20}
|
|
||||||
/>
|
|
||||||
</View>
|
|
||||||
</React.Fragment>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
renderServerSelector = () => {
|
renderSelectServer = () => {
|
||||||
const { servers } = this.state;
|
const { servers } = this.state;
|
||||||
const { server } = this.props;
|
const { server } = this.props;
|
||||||
const currentServer = servers.find(serverFiltered => serverFiltered.id === server);
|
const currentServer = servers.find(serverFiltered => serverFiltered.id === server);
|
||||||
|
@ -411,83 +344,97 @@ export default class ShareListView extends React.Component {
|
||||||
) : null;
|
) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
renderContent = () => {
|
renderEmptyComponent = () => (
|
||||||
const {
|
<View style={[styles.container, styles.emptyContainer]}>
|
||||||
discussions, channels, privateGroup, direct, livechat, search, chats, favorites
|
<Text style={styles.title}>{I18n.t('No_results_found')}</Text>
|
||||||
} = this.state;
|
</View>
|
||||||
|
);
|
||||||
if (search.length > 0) {
|
|
||||||
return (
|
|
||||||
<FlatList
|
|
||||||
data={search}
|
|
||||||
extraData={search}
|
|
||||||
keyExtractor={keyExtractor}
|
|
||||||
style={styles.flatlist}
|
|
||||||
renderItem={this.renderItem}
|
|
||||||
getItemLayout={getItemLayoutChannel}
|
|
||||||
ItemSeparatorComponent={this.renderSeparator}
|
|
||||||
enableEmptySections
|
|
||||||
removeClippedSubviews
|
|
||||||
keyboardShouldPersistTaps='always'
|
|
||||||
initialNumToRender={12}
|
|
||||||
windowSize={20}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
renderHeader = () => {
|
||||||
|
const { searching } = this.state;
|
||||||
return (
|
return (
|
||||||
<View style={styles.content}>
|
<React.Fragment>
|
||||||
{this.renderServerSelector()}
|
{ !searching
|
||||||
{this.renderSection(favorites, 'Favorites')}
|
? (
|
||||||
{this.renderSection(discussions, 'Discussions')}
|
<React.Fragment>
|
||||||
{this.renderSection(channels, 'Channels')}
|
{this.renderSelectServer()}
|
||||||
{this.renderSection(direct, 'Direct_Messages')}
|
{this.renderSectionHeader('Chats')}
|
||||||
{this.renderSection(privateGroup, 'Private_Groups')}
|
</React.Fragment>
|
||||||
{this.renderSection(livechat, 'Livechat')}
|
)
|
||||||
{this.renderSection(chats, 'Chats')}
|
: null
|
||||||
</View>
|
}
|
||||||
|
</React.Fragment>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderContent = () => {
|
||||||
|
const {
|
||||||
|
chats, mediaLoading, loading, searchResults, searching, searchText
|
||||||
|
} = this.state;
|
||||||
|
|
||||||
renderScrollView = () => {
|
|
||||||
const { mediaLoading, loading } = this.state;
|
|
||||||
if (mediaLoading || loading) {
|
if (mediaLoading || loading) {
|
||||||
return <ActivityIndicator style={styles.loading} />;
|
return <ActivityIndicator style={styles.loading} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ScrollView
|
<FlatList
|
||||||
style={styles.scroll}
|
data={searching ? searchResults : chats}
|
||||||
contentOffset={isIOS ? { x: 0, y: SCROLL_OFFSET } : {}}
|
keyExtractor={keyExtractor}
|
||||||
|
style={styles.flatlist}
|
||||||
|
renderItem={this.renderItem}
|
||||||
|
getItemLayout={getItemLayout}
|
||||||
|
ItemSeparatorComponent={this.renderSeparator}
|
||||||
|
ListHeaderComponent={this.renderHeader}
|
||||||
|
ListFooterComponent={!searching && this.renderBorderBottom}
|
||||||
|
ListHeaderComponentStyle={!searching ? styles.borderBottom : {}}
|
||||||
|
ListEmptyComponent={searching && searchText ? this.renderEmptyComponent : null}
|
||||||
|
enableEmptySections
|
||||||
|
removeClippedSubviews
|
||||||
keyboardShouldPersistTaps='always'
|
keyboardShouldPersistTaps='always'
|
||||||
>
|
initialNumToRender={12}
|
||||||
{this.renderListHeader()}
|
windowSize={20}
|
||||||
{this.renderContent()}
|
/>
|
||||||
</ScrollView>
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
renderError = () => {
|
renderError = () => {
|
||||||
const { fileInfo: file } = this.state;
|
const {
|
||||||
const { FileUpload_MaxFileSize } = this.props;
|
fileInfo: file, loading, searching, serverInfo
|
||||||
|
} = this.state;
|
||||||
|
const { FileUpload_MaxFileSize } = serverInfo;
|
||||||
const errorMessage = (FileUpload_MaxFileSize < file.size)
|
const errorMessage = (FileUpload_MaxFileSize < file.size)
|
||||||
? 'error-file-too-large'
|
? 'error-file-too-large'
|
||||||
: 'error-invalid-file-type';
|
: 'error-invalid-file-type';
|
||||||
|
|
||||||
|
if (loading) {
|
||||||
|
return <ActivityIndicator style={styles.loading} />;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
<Text style={styles.title}>{I18n.t(errorMessage)}</Text>
|
{ !searching
|
||||||
<CustomIcon name='circle-cross' size={120} style={styles.errorIcon} />
|
? (
|
||||||
<Text style={styles.fileMime}>{ file.type }</Text>
|
<React.Fragment>
|
||||||
|
{this.renderSelectServer()}
|
||||||
|
</React.Fragment>
|
||||||
|
)
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
<View style={[styles.container, styles.centered]}>
|
||||||
|
<Text style={styles.title}>{I18n.t(errorMessage)}</Text>
|
||||||
|
<CustomIcon name='circle-cross' size={120} style={styles.errorIcon} />
|
||||||
|
<Text style={styles.fileMime}>{ file.type }</Text>
|
||||||
|
</View>
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const showError = !this.canUploadFile();
|
const { showError } = this.state;
|
||||||
return (
|
return (
|
||||||
<SafeAreaView style={styles.container} forceInset={{ bottom: 'never' }}>
|
<SafeAreaView style={styles.container} forceInset={{ bottom: 'never' }}>
|
||||||
{ showError ? this.renderError() : this.renderScrollView() }
|
<StatusBar />
|
||||||
|
{ showError ? this.renderError() : this.renderContent() }
|
||||||
</SafeAreaView>
|
</SafeAreaView>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,24 +8,34 @@ import {
|
||||||
|
|
||||||
export default StyleSheet.create({
|
export default StyleSheet.create({
|
||||||
container: {
|
container: {
|
||||||
justifyContent: 'center',
|
|
||||||
alignItems: 'center',
|
|
||||||
flex: 1,
|
flex: 1,
|
||||||
backgroundColor: COLOR_BACKGROUND_CONTAINER
|
backgroundColor: COLOR_BACKGROUND_CONTAINER
|
||||||
},
|
},
|
||||||
|
emptyContainer: {
|
||||||
|
padding: 20,
|
||||||
|
justifyContent: 'center',
|
||||||
|
alignItems: 'center'
|
||||||
|
},
|
||||||
content: {
|
content: {
|
||||||
flex: 1,
|
flex: 1,
|
||||||
backgroundColor: isIOS ? COLOR_WHITE : '#E1E5E8'
|
backgroundColor: isIOS ? COLOR_WHITE : '#E1E5E8',
|
||||||
|
justifyContent: 'center',
|
||||||
|
alignItems: 'center'
|
||||||
|
},
|
||||||
|
centered: {
|
||||||
|
justifyContent: 'center',
|
||||||
|
alignItems: 'center'
|
||||||
},
|
},
|
||||||
flatlist: {
|
flatlist: {
|
||||||
|
marginTop: isIOS ? 6 : 0, // the height of the navigation bar with the searchbar is larger
|
||||||
width: '100%',
|
width: '100%',
|
||||||
backgroundColor: COLOR_WHITE
|
backgroundColor: COLOR_BACKGROUND_CONTAINER
|
||||||
},
|
},
|
||||||
bordered: {
|
bordered: {
|
||||||
...sharedStyles.separatorVertical
|
...sharedStyles.separatorVertical
|
||||||
},
|
},
|
||||||
scroll: {
|
borderBottom: {
|
||||||
width: '100%'
|
...sharedStyles.separatorBottom
|
||||||
},
|
},
|
||||||
headerContainer: {
|
headerContainer: {
|
||||||
paddingHorizontal: 15,
|
paddingHorizontal: 15,
|
||||||
|
@ -37,8 +47,7 @@ export default StyleSheet.create({
|
||||||
...sharedStyles.textColorNormal,
|
...sharedStyles.textColorNormal,
|
||||||
...sharedStyles.textRegular,
|
...sharedStyles.textRegular,
|
||||||
fontSize: 17,
|
fontSize: 17,
|
||||||
letterSpacing: 0.27,
|
letterSpacing: 0.27
|
||||||
flex: 1
|
|
||||||
},
|
},
|
||||||
separator: {
|
separator: {
|
||||||
...sharedStyles.separatorBottom,
|
...sharedStyles.separatorBottom,
|
||||||
|
|
|
@ -19,12 +19,17 @@ import database from '../../lib/realm';
|
||||||
import { CustomHeaderButtons, Item } from '../../containers/HeaderButton';
|
import { CustomHeaderButtons, Item } from '../../containers/HeaderButton';
|
||||||
import { isReadOnly, isBlocked } from '../../utils/room';
|
import { isReadOnly, isBlocked } from '../../utils/room';
|
||||||
|
|
||||||
@connect(state => ({
|
@connect(({ share }) => ({
|
||||||
username: state.login.user && state.login.user.username
|
user: {
|
||||||
|
id: share.user && share.user.id,
|
||||||
|
username: share.user && share.user.username,
|
||||||
|
token: share.user && share.user.token
|
||||||
|
},
|
||||||
|
baseUrl: share ? share.server : ''
|
||||||
}))
|
}))
|
||||||
export default class ShareView extends React.Component {
|
export default class ShareView extends React.Component {
|
||||||
static navigationOptions = ({ navigation }) => {
|
static navigationOptions = ({ navigation }) => {
|
||||||
const canSend = navigation.getParam('canSend', false);
|
const canSend = navigation.getParam('canSend', true);
|
||||||
|
|
||||||
return ({
|
return ({
|
||||||
title: I18n.t('Share'),
|
title: I18n.t('Share'),
|
||||||
|
@ -46,7 +51,12 @@ export default class ShareView extends React.Component {
|
||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
navigation: PropTypes.object,
|
navigation: PropTypes.object,
|
||||||
username: PropTypes.string.isRequired
|
user: PropTypes.shape({
|
||||||
|
id: PropTypes.string.isRequired,
|
||||||
|
username: PropTypes.string.isRequired,
|
||||||
|
token: PropTypes.string.isRequired
|
||||||
|
}),
|
||||||
|
baseUrl: PropTypes.string.isRequired
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
|
@ -77,11 +87,12 @@ export default class ShareView extends React.Component {
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { room } = this.state;
|
const { room } = this.state;
|
||||||
const { navigation, username } = this.props;
|
const { navigation, user } = this.props;
|
||||||
|
const { username } = user;
|
||||||
navigation.setParams({ sendMessage: this._sendMessage, canSend: !(isReadOnly(room, { username }) || isBlocked(room)) });
|
navigation.setParams({ sendMessage: this._sendMessage, canSend: !(isReadOnly(room, { username }) || isBlocked(room)) });
|
||||||
}
|
}
|
||||||
|
|
||||||
bytesToSize = bits => `${ ((bits / 8) / 1048576).toFixed(2) }MB`;
|
bytesToSize = bytes => `${ (bytes / 1048576).toFixed(2) }MB`;
|
||||||
|
|
||||||
_sendMessage = async() => {
|
_sendMessage = async() => {
|
||||||
const { isMedia } = this.state;
|
const { isMedia } = this.state;
|
||||||
|
@ -99,11 +110,12 @@ export default class ShareView extends React.Component {
|
||||||
|
|
||||||
sendMediaMessage = async() => {
|
sendMediaMessage = async() => {
|
||||||
const { rid, fileInfo, file } = this.state;
|
const { rid, fileInfo, file } = this.state;
|
||||||
|
const { baseUrl: server, user } = this.props;
|
||||||
const { name, description } = file;
|
const { name, description } = file;
|
||||||
const fileMessage = { ...fileInfo, name, description };
|
const fileMessage = { ...fileInfo, name, description };
|
||||||
if (fileInfo && rid !== '') {
|
if (fileInfo && rid !== '') {
|
||||||
try {
|
try {
|
||||||
await RocketChat.sendFileMessage(rid, fileMessage, undefined);
|
await RocketChat.sendFileMessage(rid, fileMessage, undefined, server, user);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
log('err_send_media_message', e);
|
log('err_send_media_message', e);
|
||||||
}
|
}
|
||||||
|
@ -112,9 +124,10 @@ export default class ShareView extends React.Component {
|
||||||
|
|
||||||
sendTextMessage = async() => {
|
sendTextMessage = async() => {
|
||||||
const { value, rid } = this.state;
|
const { value, rid } = this.state;
|
||||||
|
const { user } = this.props;
|
||||||
if (value !== '' && rid !== '') {
|
if (value !== '' && rid !== '') {
|
||||||
try {
|
try {
|
||||||
await RocketChat.sendMessage(rid, value, undefined);
|
await RocketChat.sendMessage(rid, value, undefined, user);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
log('err_share_extension_send_message', error);
|
log('err_share_extension_send_message', error);
|
||||||
}
|
}
|
||||||
|
@ -204,7 +217,8 @@ export default class ShareView extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { username } = this.props;
|
const { user } = this.props;
|
||||||
|
const { username } = user;
|
||||||
const {
|
const {
|
||||||
name, loading, isMedia, room
|
name, loading, isMedia, room
|
||||||
} = this.state;
|
} = this.state;
|
||||||
|
|
|
@ -200,7 +200,7 @@ export default StyleSheet.create({
|
||||||
marginVertical: 10
|
marginVertical: 10
|
||||||
},
|
},
|
||||||
notchLandscapeContainer: {
|
notchLandscapeContainer: {
|
||||||
marginTop: -44,
|
marginTop: -34,
|
||||||
paddingHorizontal: 30,
|
paddingHorizontal: 30,
|
||||||
backgroundColor: COLOR_BACKGROUND_CONTAINER
|
backgroundColor: COLOR_BACKGROUND_CONTAINER
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,8 @@ const styles = StyleSheet.create({
|
||||||
flex: 1,
|
flex: 1,
|
||||||
backgroundColor: COLOR_WHITE,
|
backgroundColor: COLOR_WHITE,
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
alignItems: 'center'
|
alignItems: 'center',
|
||||||
|
padding: 15
|
||||||
},
|
},
|
||||||
title: {
|
title: {
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
|
|
|
@ -34,6 +34,7 @@ target 'RocketChatRN' do
|
||||||
pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen'
|
pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen'
|
||||||
|
|
||||||
pod 'react-native-orientation-locker', :path => '../node_modules/react-native-orientation-locker'
|
pod 'react-native-orientation-locker', :path => '../node_modules/react-native-orientation-locker'
|
||||||
|
pod 'react-native-realm-path', :path => '../node_modules/react-native-realm-path'
|
||||||
|
|
||||||
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
|
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
|
||||||
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
|
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
|
||||||
|
@ -73,6 +74,9 @@ target 'ShareRocketChatRN' do
|
||||||
pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'
|
pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'
|
||||||
pod 'RNLocalize', :path => '../node_modules/react-native-localize'
|
pod 'RNLocalize', :path => '../node_modules/react-native-localize'
|
||||||
|
|
||||||
|
pod 'react-native-realm-path', :path => '../node_modules/react-native-realm-path'
|
||||||
|
pod 'rn-extensions-share', :path => '../node_modules/rn-extensions-share'
|
||||||
|
|
||||||
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
|
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
|
||||||
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
|
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 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
|
||||||
|
|
|
@ -113,6 +113,8 @@ PODS:
|
||||||
- React
|
- React
|
||||||
- react-native-orientation-locker (1.1.5):
|
- react-native-orientation-locker (1.1.5):
|
||||||
- React
|
- React
|
||||||
|
- react-native-realm-path (1.2.11):
|
||||||
|
- React
|
||||||
- react-native-splash-screen (3.2.0):
|
- react-native-splash-screen (3.2.0):
|
||||||
- React
|
- React
|
||||||
- react-native-webview (5.8.1):
|
- react-native-webview (5.8.1):
|
||||||
|
@ -143,6 +145,8 @@ PODS:
|
||||||
- React/Core
|
- React/Core
|
||||||
- React/fishhook
|
- React/fishhook
|
||||||
- React/RCTBlob
|
- React/RCTBlob
|
||||||
|
- rn-extensions-share (2.3.10):
|
||||||
|
- React
|
||||||
- RNDeviceInfo (1.6.1):
|
- RNDeviceInfo (1.6.1):
|
||||||
- React
|
- React
|
||||||
- RNImageCropPicker (0.24.1):
|
- RNImageCropPicker (0.24.1):
|
||||||
|
@ -188,6 +192,7 @@ DEPENDENCIES:
|
||||||
- GoogleIDFASupport (~> 3.14.0)
|
- GoogleIDFASupport (~> 3.14.0)
|
||||||
- react-native-document-picker (from `../node_modules/react-native-document-picker`)
|
- react-native-document-picker (from `../node_modules/react-native-document-picker`)
|
||||||
- react-native-orientation-locker (from `../node_modules/react-native-orientation-locker`)
|
- react-native-orientation-locker (from `../node_modules/react-native-orientation-locker`)
|
||||||
|
- react-native-realm-path (from `../node_modules/react-native-realm-path`)
|
||||||
- react-native-splash-screen (from `../node_modules/react-native-splash-screen`)
|
- react-native-splash-screen (from `../node_modules/react-native-splash-screen`)
|
||||||
- react-native-webview (from `../node_modules/react-native-webview`)
|
- react-native-webview (from `../node_modules/react-native-webview`)
|
||||||
- React/Core (from `../node_modules/react-native`)
|
- React/Core (from `../node_modules/react-native`)
|
||||||
|
@ -200,6 +205,7 @@ DEPENDENCIES:
|
||||||
- React/RCTText (from `../node_modules/react-native`)
|
- React/RCTText (from `../node_modules/react-native`)
|
||||||
- React/RCTVibration (from `../node_modules/react-native`)
|
- React/RCTVibration (from `../node_modules/react-native`)
|
||||||
- React/RCTWebSocket (from `../node_modules/react-native`)
|
- React/RCTWebSocket (from `../node_modules/react-native`)
|
||||||
|
- rn-extensions-share (from `../node_modules/rn-extensions-share`)
|
||||||
- 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`)
|
||||||
- RNLocalize (from `../node_modules/react-native-localize`)
|
- RNLocalize (from `../node_modules/react-native-localize`)
|
||||||
|
@ -271,10 +277,14 @@ EXTERNAL SOURCES:
|
||||||
:path: "../node_modules/react-native-document-picker"
|
:path: "../node_modules/react-native-document-picker"
|
||||||
react-native-orientation-locker:
|
react-native-orientation-locker:
|
||||||
:path: "../node_modules/react-native-orientation-locker"
|
:path: "../node_modules/react-native-orientation-locker"
|
||||||
|
react-native-realm-path:
|
||||||
|
:path: "../node_modules/react-native-realm-path"
|
||||||
react-native-splash-screen:
|
react-native-splash-screen:
|
||||||
:path: "../node_modules/react-native-splash-screen"
|
:path: "../node_modules/react-native-splash-screen"
|
||||||
react-native-webview:
|
react-native-webview:
|
||||||
:path: "../node_modules/react-native-webview"
|
:path: "../node_modules/react-native-webview"
|
||||||
|
rn-extensions-share:
|
||||||
|
:path: "../node_modules/rn-extensions-share"
|
||||||
RNDeviceInfo:
|
RNDeviceInfo:
|
||||||
:path: "../node_modules/react-native-device-info"
|
:path: "../node_modules/react-native-device-info"
|
||||||
RNImageCropPicker:
|
RNImageCropPicker:
|
||||||
|
@ -353,8 +363,10 @@ SPEC CHECKSUMS:
|
||||||
React: 76e6aa2b87d05eb6cccb6926d72685c9a07df152
|
React: 76e6aa2b87d05eb6cccb6926d72685c9a07df152
|
||||||
react-native-document-picker: 94a07ce0494c559e2ae9fa86621d6c624d810fec
|
react-native-document-picker: 94a07ce0494c559e2ae9fa86621d6c624d810fec
|
||||||
react-native-orientation-locker: 132a63bab4dddd2a5709f6f7935ad9676b0af7c5
|
react-native-orientation-locker: 132a63bab4dddd2a5709f6f7935ad9676b0af7c5
|
||||||
|
react-native-realm-path: 868473ea0bc4629850f1ec51a70d81055c06d091
|
||||||
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
|
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
|
||||||
react-native-webview: f3e28b48461c78db833f727feec08b13285e7b61
|
react-native-webview: f3e28b48461c78db833f727feec08b13285e7b61
|
||||||
|
rn-extensions-share: 4bfee75806ad54aadeff1dfa535697a6345a50b8
|
||||||
RNDeviceInfo: 958a1ed6f94e04557b865b8ef848cfc83db0ebba
|
RNDeviceInfo: 958a1ed6f94e04557b865b8ef848cfc83db0ebba
|
||||||
RNImageCropPicker: 6134b66a3d5bc13e2895a97c630a4254006902b4
|
RNImageCropPicker: 6134b66a3d5bc13e2895a97c630a4254006902b4
|
||||||
RNLocalize: 62a949d2ec5bee0eb8f39a80a48f01e2f4f67080
|
RNLocalize: 62a949d2ec5bee0eb8f39a80a48f01e2f4f67080
|
||||||
|
@ -374,6 +386,6 @@ SPEC CHECKSUMS:
|
||||||
UMTaskManagerInterface: 296793ab2a7e181fe5ebe2ba9b40ae208ab4b8fa
|
UMTaskManagerInterface: 296793ab2a7e181fe5ebe2ba9b40ae208ab4b8fa
|
||||||
yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64
|
yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64
|
||||||
|
|
||||||
PODFILE CHECKSUM: 7875ef440f1c2fb6583ee808c642c97d1410140d
|
PODFILE CHECKSUM: bfa056aa2707bd200eb8a39ada130c51b702380c
|
||||||
|
|
||||||
COCOAPODS: 1.6.2
|
COCOAPODS: 1.6.2
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
../../../../../node_modules/react-native-realm-path/ios/RNRealmPath.h
|
|
@ -0,0 +1 @@
|
||||||
|
../../../../../node_modules/rn-extensions-share/ios/ReactNativeShareExtension.h
|
|
@ -0,0 +1 @@
|
||||||
|
../../../../../node_modules/react-native-realm-path/ios/RNRealmPath.h
|
|
@ -0,0 +1 @@
|
||||||
|
../../../../../node_modules/rn-extensions-share/ios/ReactNativeShareExtension.h
|
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"name": "react-native-realm-path",
|
||||||
|
"version": "1.2.11",
|
||||||
|
"summary": "A helper to Realm Path on AppGroup iOS.",
|
||||||
|
"license": "MIT",
|
||||||
|
"authors": "Djorkaeff Alexandre",
|
||||||
|
"homepage": "https://github.com/rocketchat/react-native-realm-path",
|
||||||
|
"platforms": {
|
||||||
|
"ios": "10.0"
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"git": "https://github.com/RocketChat/react-native-realm-path.git",
|
||||||
|
"tag": "v1.2.11"
|
||||||
|
},
|
||||||
|
"source_files": "ios/**/*.{h,m}",
|
||||||
|
"dependencies": {
|
||||||
|
"React": [
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
"name": "rn-extensions-share",
|
||||||
|
"version": "2.3.10",
|
||||||
|
"summary": "Share-Extension using react-native for both ios and android",
|
||||||
|
"license": "MIT",
|
||||||
|
"authors": {
|
||||||
|
"name": "Djorkaeff Alexandre",
|
||||||
|
"email": "djorkaeffalexandre@gmail.com",
|
||||||
|
"url": "http://github.com/djorkaeffalexandre"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/RocketChat/rn-extensions-share",
|
||||||
|
"platforms": {
|
||||||
|
"ios": "8.0"
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"git": "https://github.com/RocketChat/rn-extensions-share.git",
|
||||||
|
"tag": "master"
|
||||||
|
},
|
||||||
|
"source_files": "ios/*.{h,m}",
|
||||||
|
"dependencies": {
|
||||||
|
"React": [
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -113,6 +113,8 @@ PODS:
|
||||||
- React
|
- React
|
||||||
- react-native-orientation-locker (1.1.5):
|
- react-native-orientation-locker (1.1.5):
|
||||||
- React
|
- React
|
||||||
|
- react-native-realm-path (1.2.11):
|
||||||
|
- React
|
||||||
- react-native-splash-screen (3.2.0):
|
- react-native-splash-screen (3.2.0):
|
||||||
- React
|
- React
|
||||||
- react-native-webview (5.8.1):
|
- react-native-webview (5.8.1):
|
||||||
|
@ -143,6 +145,8 @@ PODS:
|
||||||
- React/Core
|
- React/Core
|
||||||
- React/fishhook
|
- React/fishhook
|
||||||
- React/RCTBlob
|
- React/RCTBlob
|
||||||
|
- rn-extensions-share (2.3.10):
|
||||||
|
- React
|
||||||
- RNDeviceInfo (1.6.1):
|
- RNDeviceInfo (1.6.1):
|
||||||
- React
|
- React
|
||||||
- RNImageCropPicker (0.24.1):
|
- RNImageCropPicker (0.24.1):
|
||||||
|
@ -188,6 +192,7 @@ DEPENDENCIES:
|
||||||
- GoogleIDFASupport (~> 3.14.0)
|
- GoogleIDFASupport (~> 3.14.0)
|
||||||
- react-native-document-picker (from `../node_modules/react-native-document-picker`)
|
- react-native-document-picker (from `../node_modules/react-native-document-picker`)
|
||||||
- react-native-orientation-locker (from `../node_modules/react-native-orientation-locker`)
|
- react-native-orientation-locker (from `../node_modules/react-native-orientation-locker`)
|
||||||
|
- react-native-realm-path (from `../node_modules/react-native-realm-path`)
|
||||||
- react-native-splash-screen (from `../node_modules/react-native-splash-screen`)
|
- react-native-splash-screen (from `../node_modules/react-native-splash-screen`)
|
||||||
- react-native-webview (from `../node_modules/react-native-webview`)
|
- react-native-webview (from `../node_modules/react-native-webview`)
|
||||||
- React/Core (from `../node_modules/react-native`)
|
- React/Core (from `../node_modules/react-native`)
|
||||||
|
@ -200,6 +205,7 @@ DEPENDENCIES:
|
||||||
- React/RCTText (from `../node_modules/react-native`)
|
- React/RCTText (from `../node_modules/react-native`)
|
||||||
- React/RCTVibration (from `../node_modules/react-native`)
|
- React/RCTVibration (from `../node_modules/react-native`)
|
||||||
- React/RCTWebSocket (from `../node_modules/react-native`)
|
- React/RCTWebSocket (from `../node_modules/react-native`)
|
||||||
|
- rn-extensions-share (from `../node_modules/rn-extensions-share`)
|
||||||
- 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`)
|
||||||
- RNLocalize (from `../node_modules/react-native-localize`)
|
- RNLocalize (from `../node_modules/react-native-localize`)
|
||||||
|
@ -271,10 +277,14 @@ EXTERNAL SOURCES:
|
||||||
:path: "../node_modules/react-native-document-picker"
|
:path: "../node_modules/react-native-document-picker"
|
||||||
react-native-orientation-locker:
|
react-native-orientation-locker:
|
||||||
:path: "../node_modules/react-native-orientation-locker"
|
:path: "../node_modules/react-native-orientation-locker"
|
||||||
|
react-native-realm-path:
|
||||||
|
:path: "../node_modules/react-native-realm-path"
|
||||||
react-native-splash-screen:
|
react-native-splash-screen:
|
||||||
:path: "../node_modules/react-native-splash-screen"
|
:path: "../node_modules/react-native-splash-screen"
|
||||||
react-native-webview:
|
react-native-webview:
|
||||||
:path: "../node_modules/react-native-webview"
|
:path: "../node_modules/react-native-webview"
|
||||||
|
rn-extensions-share:
|
||||||
|
:path: "../node_modules/rn-extensions-share"
|
||||||
RNDeviceInfo:
|
RNDeviceInfo:
|
||||||
:path: "../node_modules/react-native-device-info"
|
:path: "../node_modules/react-native-device-info"
|
||||||
RNImageCropPicker:
|
RNImageCropPicker:
|
||||||
|
@ -353,8 +363,10 @@ SPEC CHECKSUMS:
|
||||||
React: 76e6aa2b87d05eb6cccb6926d72685c9a07df152
|
React: 76e6aa2b87d05eb6cccb6926d72685c9a07df152
|
||||||
react-native-document-picker: 94a07ce0494c559e2ae9fa86621d6c624d810fec
|
react-native-document-picker: 94a07ce0494c559e2ae9fa86621d6c624d810fec
|
||||||
react-native-orientation-locker: 132a63bab4dddd2a5709f6f7935ad9676b0af7c5
|
react-native-orientation-locker: 132a63bab4dddd2a5709f6f7935ad9676b0af7c5
|
||||||
|
react-native-realm-path: 868473ea0bc4629850f1ec51a70d81055c06d091
|
||||||
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
|
react-native-splash-screen: 200d11d188e2e78cea3ad319964f6142b6384865
|
||||||
react-native-webview: f3e28b48461c78db833f727feec08b13285e7b61
|
react-native-webview: f3e28b48461c78db833f727feec08b13285e7b61
|
||||||
|
rn-extensions-share: 4bfee75806ad54aadeff1dfa535697a6345a50b8
|
||||||
RNDeviceInfo: 958a1ed6f94e04557b865b8ef848cfc83db0ebba
|
RNDeviceInfo: 958a1ed6f94e04557b865b8ef848cfc83db0ebba
|
||||||
RNImageCropPicker: 6134b66a3d5bc13e2895a97c630a4254006902b4
|
RNImageCropPicker: 6134b66a3d5bc13e2895a97c630a4254006902b4
|
||||||
RNLocalize: 62a949d2ec5bee0eb8f39a80a48f01e2f4f67080
|
RNLocalize: 62a949d2ec5bee0eb8f39a80a48f01e2f4f67080
|
||||||
|
@ -374,6 +386,6 @@ SPEC CHECKSUMS:
|
||||||
UMTaskManagerInterface: 296793ab2a7e181fe5ebe2ba9b40ae208ab4b8fa
|
UMTaskManagerInterface: 296793ab2a7e181fe5ebe2ba9b40ae208ab4b8fa
|
||||||
yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64
|
yoga: 92b2102c3d373d1a790db4ab761d2b0ffc634f64
|
||||||
|
|
||||||
PODFILE CHECKSUM: 7875ef440f1c2fb6583ee808c642c97d1410140d
|
PODFILE CHECKSUM: bfa056aa2707bd200eb8a39ada130c51b702380c
|
||||||
|
|
||||||
COCOAPODS: 1.6.2
|
COCOAPODS: 1.6.2
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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"
|
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
|
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/EXHaptics" "${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/RNLocalize" "${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-document-picker" "${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
|
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/EXHaptics" "${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/RNLocalize" "${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-document-picker" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-realm-path" "${PODS_ROOT}/Headers/Public/react-native-splash-screen" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/yoga" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources
|
||||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/EXAppLoaderProvider" "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants" "${PODS_CONFIGURATION_BUILD_DIR}/EXFileSystem" "${PODS_CONFIGURATION_BUILD_DIR}/EXHaptics" "${PODS_CONFIGURATION_BUILD_DIR}/EXPermissions" "${PODS_CONFIGURATION_BUILD_DIR}/EXWebBrowser" "${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}/QBImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/UMCore" "${PODS_CONFIGURATION_BUILD_DIR}/UMReactNativeAdapter" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-splash-screen" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/yoga" "${PODS_ROOT}/GoogleIDFASupport/Libraries"
|
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/EXAppLoaderProvider" "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants" "${PODS_CONFIGURATION_BUILD_DIR}/EXFileSystem" "${PODS_CONFIGURATION_BUILD_DIR}/EXHaptics" "${PODS_CONFIGURATION_BUILD_DIR}/EXPermissions" "${PODS_CONFIGURATION_BUILD_DIR}/EXWebBrowser" "${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}/QBImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/UMCore" "${PODS_CONFIGURATION_BUILD_DIR}/UMReactNativeAdapter" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-realm-path" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-splash-screen" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/yoga" "${PODS_ROOT}/GoogleIDFASupport/Libraries"
|
||||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"DoubleConversion" -l"EXAppLoaderProvider" -l"EXConstants" -l"EXFileSystem" -l"EXHaptics" -l"EXPermissions" -l"EXWebBrowser" -l"FirebaseCore" -l"FirebaseInstanceID" -l"Folly" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"QBImagePickerController" -l"RNDeviceInfo" -l"RNImageCropPicker" -l"RNLocalize" -l"RNScreens" -l"RSKImageCropper" -l"React" -l"UMCore" -l"UMReactNativeAdapter" -l"c++" -l"glog" -l"nanopb" -l"react-native-document-picker" -l"react-native-orientation-locker" -l"react-native-splash-screen" -l"react-native-webview" -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 "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit"
|
OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"DoubleConversion" -l"EXAppLoaderProvider" -l"EXConstants" -l"EXFileSystem" -l"EXHaptics" -l"EXPermissions" -l"EXWebBrowser" -l"FirebaseCore" -l"FirebaseInstanceID" -l"Folly" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"QBImagePickerController" -l"RNDeviceInfo" -l"RNImageCropPicker" -l"RNLocalize" -l"RNScreens" -l"RSKImageCropper" -l"React" -l"UMCore" -l"UMReactNativeAdapter" -l"c++" -l"glog" -l"nanopb" -l"react-native-document-picker" -l"react-native-orientation-locker" -l"react-native-realm-path" -l"react-native-splash-screen" -l"react-native-webview" -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 "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit"
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||||
|
|
|
@ -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"
|
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
|
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/EXHaptics" "${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/RNLocalize" "${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-document-picker" "${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
|
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/EXHaptics" "${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/RNLocalize" "${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-document-picker" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-realm-path" "${PODS_ROOT}/Headers/Public/react-native-splash-screen" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/yoga" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources
|
||||||
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/EXAppLoaderProvider" "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants" "${PODS_CONFIGURATION_BUILD_DIR}/EXFileSystem" "${PODS_CONFIGURATION_BUILD_DIR}/EXHaptics" "${PODS_CONFIGURATION_BUILD_DIR}/EXPermissions" "${PODS_CONFIGURATION_BUILD_DIR}/EXWebBrowser" "${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}/QBImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/UMCore" "${PODS_CONFIGURATION_BUILD_DIR}/UMReactNativeAdapter" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-splash-screen" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/yoga" "${PODS_ROOT}/GoogleIDFASupport/Libraries"
|
LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DoubleConversion" "${PODS_CONFIGURATION_BUILD_DIR}/EXAppLoaderProvider" "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants" "${PODS_CONFIGURATION_BUILD_DIR}/EXFileSystem" "${PODS_CONFIGURATION_BUILD_DIR}/EXHaptics" "${PODS_CONFIGURATION_BUILD_DIR}/EXPermissions" "${PODS_CONFIGURATION_BUILD_DIR}/EXWebBrowser" "${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}/QBImagePickerController" "${PODS_CONFIGURATION_BUILD_DIR}/RNDeviceInfo" "${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker" "${PODS_CONFIGURATION_BUILD_DIR}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/RNScreens" "${PODS_CONFIGURATION_BUILD_DIR}/RSKImageCropper" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/UMCore" "${PODS_CONFIGURATION_BUILD_DIR}/UMReactNativeAdapter" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-document-picker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-orientation-locker" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-realm-path" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-splash-screen" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-webview" "${PODS_CONFIGURATION_BUILD_DIR}/yoga" "${PODS_ROOT}/GoogleIDFASupport/Libraries"
|
||||||
OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"DoubleConversion" -l"EXAppLoaderProvider" -l"EXConstants" -l"EXFileSystem" -l"EXHaptics" -l"EXPermissions" -l"EXWebBrowser" -l"FirebaseCore" -l"FirebaseInstanceID" -l"Folly" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"QBImagePickerController" -l"RNDeviceInfo" -l"RNImageCropPicker" -l"RNLocalize" -l"RNScreens" -l"RSKImageCropper" -l"React" -l"UMCore" -l"UMReactNativeAdapter" -l"c++" -l"glog" -l"nanopb" -l"react-native-document-picker" -l"react-native-orientation-locker" -l"react-native-splash-screen" -l"react-native-webview" -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 "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit"
|
OTHER_LDFLAGS = $(inherited) -ObjC -l"AdIdAccessLibrary" -l"DoubleConversion" -l"EXAppLoaderProvider" -l"EXConstants" -l"EXFileSystem" -l"EXHaptics" -l"EXPermissions" -l"EXWebBrowser" -l"FirebaseCore" -l"FirebaseInstanceID" -l"Folly" -l"GTMSessionFetcher" -l"GoogleToolboxForMac" -l"GoogleUtilities" -l"Protobuf" -l"QBImagePickerController" -l"RNDeviceInfo" -l"RNImageCropPicker" -l"RNLocalize" -l"RNScreens" -l"RSKImageCropper" -l"React" -l"UMCore" -l"UMReactNativeAdapter" -l"c++" -l"glog" -l"nanopb" -l"react-native-document-picker" -l"react-native-orientation-locker" -l"react-native-realm-path" -l"react-native-splash-screen" -l"react-native-webview" -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 "Photos" -framework "QuartzCore" -framework "Security" -framework "StoreKit" -framework "SystemConfiguration" -framework "UIKit"
|
||||||
PODS_BUILD_DIR = ${BUILD_DIR}
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||||
|
|
|
@ -1483,4 +1483,29 @@ redistribute it freely, subject to the following restrictions:
|
||||||
3. This notice may not be removed or altered from any source
|
3. This notice may not be removed or altered from any source
|
||||||
distribution.
|
distribution.
|
||||||
|
|
||||||
|
|
||||||
|
## rn-extensions-share
|
||||||
|
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Ali Najafizadeh
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
Generated by CocoaPods - https://cocoapods.org
|
Generated by CocoaPods - https://cocoapods.org
|
||||||
|
|
|
@ -1627,6 +1627,37 @@ redistribute it freely, subject to the following restrictions:
|
||||||
<key>Type</key>
|
<key>Type</key>
|
||||||
<string>PSGroupSpecifier</string>
|
<string>PSGroupSpecifier</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>FooterText</key>
|
||||||
|
<string>The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2016 Ali Najafizadeh
|
||||||
|
|
||||||
|
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.
|
||||||
|
</string>
|
||||||
|
<key>License</key>
|
||||||
|
<string>MIT</string>
|
||||||
|
<key>Title</key>
|
||||||
|
<string>rn-extensions-share</string>
|
||||||
|
<key>Type</key>
|
||||||
|
<string>PSGroupSpecifier</string>
|
||||||
|
</dict>
|
||||||
<dict>
|
<dict>
|
||||||
<key>FooterText</key>
|
<key>FooterText</key>
|
||||||
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
<string>Generated by CocoaPods - https://cocoapods.org</string>
|
||||||
|
|
|
@ -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"
|
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
|
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/EXHaptics" "${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/RNLocalize" "${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-document-picker" "${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
|
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/EXHaptics" "${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/RNLocalize" "${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-document-picker" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-realm-path" "${PODS_ROOT}/Headers/Public/react-native-splash-screen" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/yoga" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources
|
||||||
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}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/yoga" "${PODS_ROOT}/GoogleIDFASupport/Libraries"
|
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}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-realm-path" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${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"RNLocalize" -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"
|
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"RNLocalize" -l"React" -l"c++" -l"glog" -l"nanopb" -l"react-native-realm-path" -l"rn-extensions-share" -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_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||||
|
|
|
@ -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"
|
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
|
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/EXHaptics" "${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/RNLocalize" "${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-document-picker" "${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
|
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/EXHaptics" "${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/RNLocalize" "${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-document-picker" "${PODS_ROOT}/Headers/Public/react-native-orientation-locker" "${PODS_ROOT}/Headers/Public/react-native-realm-path" "${PODS_ROOT}/Headers/Public/react-native-splash-screen" "${PODS_ROOT}/Headers/Public/react-native-webview" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/yoga" $(inherited) ${PODS_ROOT}/Firebase/CoreOnly/Sources
|
||||||
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}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/yoga" "${PODS_ROOT}/GoogleIDFASupport/Libraries"
|
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}/RNLocalize" "${PODS_CONFIGURATION_BUILD_DIR}/React" "${PODS_CONFIGURATION_BUILD_DIR}/glog" "${PODS_CONFIGURATION_BUILD_DIR}/nanopb" "${PODS_CONFIGURATION_BUILD_DIR}/react-native-realm-path" "${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share" "${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"RNLocalize" -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"
|
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"RNLocalize" -l"React" -l"c++" -l"glog" -l"nanopb" -l"react-native-realm-path" -l"rn-extensions-share" -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_BUILD_DIR = ${BUILD_DIR}
|
||||||
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
|
||||||
|
|
5
ios/Pods/Target Support Files/react-native-realm-path/react-native-realm-path-dummy.m
generated
Normal file
5
ios/Pods/Target Support Files/react-native-realm-path/react-native-realm-path-dummy.m
generated
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
@interface PodsDummy_react_native_realm_path : NSObject
|
||||||
|
@end
|
||||||
|
@implementation PodsDummy_react_native_realm_path
|
||||||
|
@end
|
12
ios/Pods/Target Support Files/react-native-realm-path/react-native-realm-path-prefix.pch
generated
Normal file
12
ios/Pods/Target Support Files/react-native-realm-path/react-native-realm-path-prefix.pch
generated
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#ifdef __OBJC__
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#ifndef FOUNDATION_EXPORT
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
#define FOUNDATION_EXPORT extern "C"
|
||||||
|
#else
|
||||||
|
#define FOUNDATION_EXPORT extern
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
9
ios/Pods/Target Support Files/react-native-realm-path/react-native-realm-path.xcconfig
generated
Normal file
9
ios/Pods/Target Support Files/react-native-realm-path/react-native-realm-path.xcconfig
generated
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/react-native-realm-path
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/react-native-realm-path" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React" "${PODS_ROOT}/Headers/Public/react-native-realm-path" "${PODS_ROOT}/Headers/Public/yoga"
|
||||||
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
PODS_ROOT = ${SRCROOT}
|
||||||
|
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../node_modules/react-native-realm-path
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||||
|
SKIP_INSTALL = YES
|
5
ios/Pods/Target Support Files/rn-extensions-share/rn-extensions-share-dummy.m
generated
Normal file
5
ios/Pods/Target Support Files/rn-extensions-share/rn-extensions-share-dummy.m
generated
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
#import <Foundation/Foundation.h>
|
||||||
|
@interface PodsDummy_rn_extensions_share : NSObject
|
||||||
|
@end
|
||||||
|
@implementation PodsDummy_rn_extensions_share
|
||||||
|
@end
|
12
ios/Pods/Target Support Files/rn-extensions-share/rn-extensions-share-prefix.pch
generated
Normal file
12
ios/Pods/Target Support Files/rn-extensions-share/rn-extensions-share-prefix.pch
generated
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#ifdef __OBJC__
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
#else
|
||||||
|
#ifndef FOUNDATION_EXPORT
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
#define FOUNDATION_EXPORT extern "C"
|
||||||
|
#else
|
||||||
|
#define FOUNDATION_EXPORT extern
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
9
ios/Pods/Target Support Files/rn-extensions-share/rn-extensions-share.xcconfig
generated
Normal file
9
ios/Pods/Target Support Files/rn-extensions-share/rn-extensions-share.xcconfig
generated
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/rn-extensions-share
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
|
||||||
|
HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/rn-extensions-share" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/React" "${PODS_ROOT}/Headers/Public/rn-extensions-share" "${PODS_ROOT}/Headers/Public/yoga"
|
||||||
|
PODS_BUILD_DIR = ${BUILD_DIR}
|
||||||
|
PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
|
||||||
|
PODS_ROOT = ${SRCROOT}
|
||||||
|
PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../node_modules/rn-extensions-share
|
||||||
|
PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
|
||||||
|
SKIP_INSTALL = YES
|
|
@ -22,12 +22,9 @@
|
||||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||||
146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
|
146834051AC3E58100842450 /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
|
||||||
1E02221122B2F76B00001862 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E02220D22B2F76400001862 /* libRNUserDefaults.a */; };
|
1E02221122B2F76B00001862 /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E02220D22B2F76400001862 /* libRNUserDefaults.a */; };
|
||||||
1E25743122CBA2BE005A877F /* libReactNativeShareExtension.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E25741F22CBA263005A877F /* libReactNativeShareExtension.a */; };
|
|
||||||
1E25743222CBA2C2005A877F /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E25743022CBA2AD005A877F /* libRNRealmPath.a */; };
|
|
||||||
1E25743322CBA2C7005A877F /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E02220D22B2F76400001862 /* libRNUserDefaults.a */; };
|
1E25743322CBA2C7005A877F /* libRNUserDefaults.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E02220D22B2F76400001862 /* libRNUserDefaults.a */; };
|
||||||
1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */; };
|
1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7ACD4853222860DE00442C55 /* JavaScriptCore.framework */; };
|
||||||
1E25743B22CBA301005A877F /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E25743A22CBA2F9005A877F /* libRNFetchBlob.a */; };
|
1E25743B22CBA301005A877F /* libRNFetchBlob.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E25743A22CBA2F9005A877F /* libRNFetchBlob.a */; };
|
||||||
1E25743C22CBA313005A877F /* (null) in Frameworks */ = {isa = PBXBuildFile; };
|
|
||||||
1E25743D22CBA31B005A877F /* libRNNotifications.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8DEB5220ED0BDE00C5DCE4 /* libRNNotifications.a */; };
|
1E25743D22CBA31B005A877F /* libRNNotifications.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A8DEB5220ED0BDE00C5DCE4 /* libRNNotifications.a */; };
|
||||||
1E25743E22CBA322005A877F /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AD44CF521518C610099D147 /* libRNGestureHandler.a */; };
|
1E25743E22CBA322005A877F /* libRNGestureHandler.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7AD44CF521518C610099D147 /* libRNGestureHandler.a */; };
|
||||||
1E25743F22CBA32B005A877F /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
|
1E25743F22CBA32B005A877F /* libReact.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 146834041AC3E56700842450 /* libReact.a */; };
|
||||||
|
@ -48,7 +45,6 @@
|
||||||
1E25745022CBA39A005A877F /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A770EC220BECDC7001AD51A /* libFastImage.a */; };
|
1E25745022CBA39A005A877F /* libFastImage.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A770EC220BECDC7001AD51A /* libFastImage.a */; };
|
||||||
1E25745722CBA3E1005A877F /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E25745622CBA3DB005A877F /* libSplashScreen.a */; };
|
1E25745722CBA3E1005A877F /* libSplashScreen.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E25745622CBA3DB005A877F /* libSplashScreen.a */; };
|
||||||
1E25745822CBA3E6005A877F /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; };
|
1E25745822CBA3E6005A877F /* libRNVectorIcons.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B8E79A911F3CCC6D005B464F /* libRNVectorIcons.a */; };
|
||||||
1E25745922CBA3F1005A877F /* libRNRealmPath.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E25743022CBA2AD005A877F /* libRNRealmPath.a */; };
|
|
||||||
1EC6ACB722CB9FC300A41C61 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1EC6ACB522CB9FC300A41C61 /* MainInterface.storyboard */; };
|
1EC6ACB722CB9FC300A41C61 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 1EC6ACB522CB9FC300A41C61 /* MainInterface.storyboard */; };
|
||||||
1EC6ACBB22CB9FC300A41C61 /* ShareRocketChatRN.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EC6ACB022CB9FC300A41C61 /* ShareRocketChatRN.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
1EC6ACBB22CB9FC300A41C61 /* ShareRocketChatRN.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EC6ACB022CB9FC300A41C61 /* ShareRocketChatRN.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
1EC6ACF622CBA01500A41C61 /* ShareRocketChatRN.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC6ACF522CBA01500A41C61 /* ShareRocketChatRN.m */; };
|
1EC6ACF622CBA01500A41C61 /* ShareRocketChatRN.m in Sources */ = {isa = PBXBuildFile; fileRef = 1EC6ACF522CBA01500A41C61 /* ShareRocketChatRN.m */; };
|
||||||
|
@ -570,7 +566,6 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
1E25745922CBA3F1005A877F /* libRNRealmPath.a in Frameworks */,
|
|
||||||
1E02221122B2F76B00001862 /* libRNUserDefaults.a in Frameworks */,
|
1E02221122B2F76B00001862 /* libRNUserDefaults.a in Frameworks */,
|
||||||
7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */,
|
7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */,
|
||||||
7A8DEB5A20ED0BEC00C5DCE4 /* libRNNotifications.a in Frameworks */,
|
7A8DEB5A20ED0BEC00C5DCE4 /* libRNNotifications.a in Frameworks */,
|
||||||
|
@ -625,12 +620,9 @@
|
||||||
1E25743F22CBA32B005A877F /* libReact.a in Frameworks */,
|
1E25743F22CBA32B005A877F /* libReact.a in Frameworks */,
|
||||||
1E25743E22CBA322005A877F /* libRNGestureHandler.a in Frameworks */,
|
1E25743E22CBA322005A877F /* libRNGestureHandler.a in Frameworks */,
|
||||||
1E25743D22CBA31B005A877F /* libRNNotifications.a in Frameworks */,
|
1E25743D22CBA31B005A877F /* libRNNotifications.a in Frameworks */,
|
||||||
1E25743C22CBA313005A877F /* (null) in Frameworks */,
|
|
||||||
1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */,
|
1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */,
|
||||||
1E25743B22CBA301005A877F /* libRNFetchBlob.a in Frameworks */,
|
1E25743B22CBA301005A877F /* libRNFetchBlob.a in Frameworks */,
|
||||||
1E25743322CBA2C7005A877F /* libRNUserDefaults.a in Frameworks */,
|
1E25743322CBA2C7005A877F /* libRNUserDefaults.a in Frameworks */,
|
||||||
1E25743222CBA2C2005A877F /* libRNRealmPath.a in Frameworks */,
|
|
||||||
1E25743122CBA2BE005A877F /* libReactNativeShareExtension.a in Frameworks */,
|
|
||||||
0BFA93B8E2ED67D4832E0C76 /* libPods-ShareRocketChatRN.a in Frameworks */,
|
0BFA93B8E2ED67D4832E0C76 /* libPods-ShareRocketChatRN.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
@ -1930,7 +1922,7 @@
|
||||||
$PODS_CONFIGURATION_BUILD_DIR/Firebase,
|
$PODS_CONFIGURATION_BUILD_DIR/Firebase,
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = ShareRocketChatRN/Info.plist;
|
INFOPLIST_FILE = ShareRocketChatRN/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.2;
|
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
|
@ -1938,7 +1930,7 @@
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "Development chat.rocket.reactnative.ShareExtension";
|
PROVISIONING_PROFILE_SPECIFIER = "Development chat.rocket.reactnative.ShareExtension";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
|
@ -1978,14 +1970,14 @@
|
||||||
$PODS_CONFIGURATION_BUILD_DIR/Firebase,
|
$PODS_CONFIGURATION_BUILD_DIR/Firebase,
|
||||||
);
|
);
|
||||||
INFOPLIST_FILE = ShareRocketChatRN/Info.plist;
|
INFOPLIST_FILE = ShareRocketChatRN/Info.plist;
|
||||||
IPHONEOS_DEPLOYMENT_TARGET = 12.2;
|
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||||
MTL_FAST_MATH = YES;
|
MTL_FAST_MATH = YES;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.ShareExtension;
|
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.ShareExtension;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
PROVISIONING_PROFILE_SPECIFIER = "chat.rocket.reactnative.ShareExtension AppStore";
|
PROVISIONING_PROFILE_SPECIFIER = "chat.rocket.reactnative.ShareExtension AppStore";
|
||||||
SKIP_INSTALL = YES;
|
SKIP_INSTALL = YES;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>XPC!</string>
|
<string>XPC!</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>1.0</string>
|
<string>1.17.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>1</string>
|
<string>1</string>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
"react-native-orientation-locker": "^1.1.5",
|
"react-native-orientation-locker": "^1.1.5",
|
||||||
"react-native-picker-select": "^5.2.3",
|
"react-native-picker-select": "^5.2.3",
|
||||||
"react-native-platform-touchable": "^1.1.1",
|
"react-native-platform-touchable": "^1.1.1",
|
||||||
"react-native-realm-path": "^1.2.10",
|
"react-native-realm-path": "^1.2.11",
|
||||||
"react-native-responsive-ui": "^1.1.1",
|
"react-native-responsive-ui": "^1.1.1",
|
||||||
"react-native-screens": "^1.0.0-alpha.22",
|
"react-native-screens": "^1.0.0-alpha.22",
|
||||||
"react-native-scrollable-tab-view": "0.10.0",
|
"react-native-scrollable-tab-view": "0.10.0",
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
"redux-immutable-state-invariant": "^2.1.0",
|
"redux-immutable-state-invariant": "^2.1.0",
|
||||||
"redux-saga": "^0.16.2",
|
"redux-saga": "^0.16.2",
|
||||||
"remove-markdown": "^0.3.0",
|
"remove-markdown": "^0.3.0",
|
||||||
"rn-extensions-share": "^2.3.7",
|
"rn-extensions-share": "^2.3.10",
|
||||||
"rn-fetch-blob": "^0.10.15",
|
"rn-fetch-blob": "^0.10.15",
|
||||||
"rn-user-defaults": "^1.3.4",
|
"rn-user-defaults": "^1.3.4",
|
||||||
"semver": "6.0.0",
|
"semver": "6.0.0",
|
||||||
|
|
16
yarn.lock
16
yarn.lock
|
@ -11686,10 +11686,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"
|
resolved "https://registry.yarnpkg.com/react-native-platform-touchable/-/react-native-platform-touchable-1.1.1.tgz#fde4acc65eea585d28b164d0c3716a42129a68e4"
|
||||||
integrity sha1-/eSsxl7qWF0osWTQw3FqQhKaaOQ=
|
integrity sha1-/eSsxl7qWF0osWTQw3FqQhKaaOQ=
|
||||||
|
|
||||||
react-native-realm-path@^1.2.10:
|
react-native-realm-path@^1.2.11:
|
||||||
version "1.2.10"
|
version "1.2.11"
|
||||||
resolved "https://registry.yarnpkg.com/react-native-realm-path/-/react-native-realm-path-1.2.10.tgz#886493e334c62279bee631789172cfa7cfd6dc8d"
|
resolved "https://registry.yarnpkg.com/react-native-realm-path/-/react-native-realm-path-1.2.11.tgz#5380add5b0975d9ccc185a1f680825d8bf23bc78"
|
||||||
integrity sha512-+FFjA+8fH2ubmAOeF+++4t+QG9qUEg4u3nvVN21zIMpkqj8TIuA0NZ5cdW5YZOx3hjFrYSxyCkq24Zu5QHv2Jw==
|
integrity sha512-kK8tPW14KwsmZUVb+mKXjbaQ/qBlYLUO5knZrOOSt4Xx0VZk+julJbEVUh+tD3g4xllGhrMrrnmQl3Gm0B/+eA==
|
||||||
|
|
||||||
react-native-responsive-ui@^1.1.1:
|
react-native-responsive-ui@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
|
@ -12629,10 +12629,10 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
|
||||||
hash-base "^3.0.0"
|
hash-base "^3.0.0"
|
||||||
inherits "^2.0.1"
|
inherits "^2.0.1"
|
||||||
|
|
||||||
rn-extensions-share@^2.3.7:
|
rn-extensions-share@^2.3.10:
|
||||||
version "2.3.7"
|
version "2.3.10"
|
||||||
resolved "https://registry.yarnpkg.com/rn-extensions-share/-/rn-extensions-share-2.3.7.tgz#9f1387af25124c21e92854570cd088ed788b60ac"
|
resolved "https://registry.yarnpkg.com/rn-extensions-share/-/rn-extensions-share-2.3.10.tgz#17b9cf101b325cfe4c150f4c2585ca1e78f965a5"
|
||||||
integrity sha512-8SP3HTKf9g+/4hm/ER+IcbpImaqsTny7WUNOC18Vvq5Js+2O9MAKaQB+gHSP7IC6JYsbOzh+cc2jNRfc0zJpOA==
|
integrity sha512-gff32w15VXnuKdGG9QfrysI+Cga4beSWT8xdp1DvVJ1HezJ7XsDR1ELj3Wajij5OlW31VAunO8g91HgUfplmSQ==
|
||||||
|
|
||||||
rn-fetch-blob@^0.10.15:
|
rn-fetch-blob@^0.10.15:
|
||||||
version "0.10.15"
|
version "0.10.15"
|
||||||
|
|
Loading…
Reference in New Issue