Merge branch 'develop' into feat.new-audio-player
This commit is contained in:
commit
9094b73456
201
app/commands.ts
201
app/commands.ts
|
@ -1,201 +0,0 @@
|
||||||
/* eslint-disable no-bitwise */
|
|
||||||
import { NativeSyntheticEvent } from 'react-native';
|
|
||||||
import KeyCommands, { constants, KeyCommand } from 'react-native-keycommands';
|
|
||||||
|
|
||||||
import I18n from './i18n';
|
|
||||||
|
|
||||||
const KEY_TYPING = '\t';
|
|
||||||
const KEY_PREFERENCES = 'p';
|
|
||||||
const KEY_SEARCH = 'f';
|
|
||||||
const KEY_PREVIOUS_ROOM = '[';
|
|
||||||
const KEY_NEXT_ROOM = ']';
|
|
||||||
const KEY_NEW_ROOM = __DEV__ ? 'e' : 'n';
|
|
||||||
const KEY_ROOM_ACTIONS = __DEV__ ? 'b' : 'i';
|
|
||||||
const KEY_UPLOAD = 'u';
|
|
||||||
const KEY_REPLY = ';';
|
|
||||||
const KEY_SERVER_SELECTION = __DEV__ ? 'o' : '`';
|
|
||||||
const KEY_ADD_SERVER = __DEV__ ? 'l' : 'n';
|
|
||||||
const KEY_SEND_MESSAGE = '\r';
|
|
||||||
const KEY_SELECT = '123456789';
|
|
||||||
|
|
||||||
const keyCommands = [
|
|
||||||
{
|
|
||||||
// Focus messageBox
|
|
||||||
input: KEY_TYPING,
|
|
||||||
modifierFlags: 0,
|
|
||||||
discoverabilityTitle: I18n.t('Type_message')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Send message on textInput to current room
|
|
||||||
input: KEY_SEND_MESSAGE,
|
|
||||||
modifierFlags: 0,
|
|
||||||
discoverabilityTitle: I18n.t('Send')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Open Preferences Modal
|
|
||||||
input: KEY_PREFERENCES,
|
|
||||||
modifierFlags: constants.keyModifierCommand,
|
|
||||||
discoverabilityTitle: I18n.t('Preferences')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Focus Room Search
|
|
||||||
input: KEY_SEARCH,
|
|
||||||
modifierFlags: constants.keyModifierCommand | constants.keyModifierAlternate,
|
|
||||||
discoverabilityTitle: I18n.t('Room_search')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Select a room by order using 1-9
|
|
||||||
input: '1...9',
|
|
||||||
modifierFlags: constants.keyModifierCommand,
|
|
||||||
discoverabilityTitle: I18n.t('Room_selection')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Change room to next on Rooms List
|
|
||||||
input: KEY_NEXT_ROOM,
|
|
||||||
modifierFlags: constants.keyModifierCommand,
|
|
||||||
discoverabilityTitle: I18n.t('Next_room')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Change room to previous on Rooms List
|
|
||||||
input: KEY_PREVIOUS_ROOM,
|
|
||||||
modifierFlags: constants.keyModifierCommand,
|
|
||||||
discoverabilityTitle: I18n.t('Previous_room')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Open New Room Modal
|
|
||||||
input: KEY_NEW_ROOM,
|
|
||||||
modifierFlags: constants.keyModifierCommand,
|
|
||||||
discoverabilityTitle: I18n.t('New_room')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Open Room Actions
|
|
||||||
input: KEY_ROOM_ACTIONS,
|
|
||||||
modifierFlags: constants.keyModifierCommand,
|
|
||||||
discoverabilityTitle: I18n.t('Room_actions')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Upload a file to room
|
|
||||||
input: KEY_UPLOAD,
|
|
||||||
modifierFlags: constants.keyModifierCommand,
|
|
||||||
discoverabilityTitle: I18n.t('Upload_room')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Search Messages on current room
|
|
||||||
input: KEY_SEARCH,
|
|
||||||
modifierFlags: constants.keyModifierCommand,
|
|
||||||
discoverabilityTitle: I18n.t('Search_messages')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Scroll messages on current room
|
|
||||||
input: '↑ ↓',
|
|
||||||
modifierFlags: constants.keyModifierAlternate,
|
|
||||||
discoverabilityTitle: I18n.t('Scroll_messages')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Scroll up messages on current room
|
|
||||||
input: constants.keyInputUpArrow,
|
|
||||||
modifierFlags: constants.keyModifierAlternate
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Scroll down messages on current room
|
|
||||||
input: constants.keyInputDownArrow,
|
|
||||||
modifierFlags: constants.keyModifierAlternate
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Reply latest message with Quote
|
|
||||||
input: KEY_REPLY,
|
|
||||||
modifierFlags: constants.keyModifierCommand,
|
|
||||||
discoverabilityTitle: I18n.t('Reply_latest')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Open server dropdown
|
|
||||||
input: KEY_SERVER_SELECTION,
|
|
||||||
modifierFlags: constants.keyModifierCommand | constants.keyModifierAlternate,
|
|
||||||
discoverabilityTitle: I18n.t('Server_selection')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Select a server by order using 1-9
|
|
||||||
input: '1...9',
|
|
||||||
modifierFlags: constants.keyModifierCommand | constants.keyModifierAlternate,
|
|
||||||
discoverabilityTitle: I18n.t('Server_selection_numbers')
|
|
||||||
},
|
|
||||||
{
|
|
||||||
// Navigate to add new server
|
|
||||||
input: KEY_ADD_SERVER,
|
|
||||||
modifierFlags: constants.keyModifierCommand | constants.keyModifierAlternate,
|
|
||||||
discoverabilityTitle: I18n.t('Add_server')
|
|
||||||
},
|
|
||||||
// Refers to select rooms on list
|
|
||||||
...[1, 2, 3, 4, 5, 6, 7, 8, 9].map(value => ({
|
|
||||||
input: `${value}`,
|
|
||||||
modifierFlags: constants.keyModifierCommand
|
|
||||||
})),
|
|
||||||
// Refers to select servers on list
|
|
||||||
...[1, 2, 3, 4, 5, 6, 7, 8, 9].map(value => ({
|
|
||||||
input: `${value}`,
|
|
||||||
modifierFlags: constants.keyModifierCommand | constants.keyModifierAlternate
|
|
||||||
}))
|
|
||||||
];
|
|
||||||
|
|
||||||
export const setKeyCommands = (): void => KeyCommands.setKeyCommands(keyCommands);
|
|
||||||
|
|
||||||
export const deleteKeyCommands = (): void => KeyCommands.deleteKeyCommands(keyCommands);
|
|
||||||
|
|
||||||
export const KEY_COMMAND = 'KEY_COMMAND';
|
|
||||||
|
|
||||||
export interface IKeyCommandEvent extends NativeSyntheticEvent<typeof KeyCommand> {
|
|
||||||
input: number & string;
|
|
||||||
modifierFlags: string | number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const commandHandle = (event: IKeyCommandEvent, key: string | string[], flags: string[] = []): boolean => {
|
|
||||||
const { input, modifierFlags } = event;
|
|
||||||
let _flags = 0;
|
|
||||||
if (flags.includes('command') && flags.includes('alternate')) {
|
|
||||||
_flags = constants.keyModifierCommand | constants.keyModifierAlternate;
|
|
||||||
} else if (flags.includes('command')) {
|
|
||||||
_flags = constants.keyModifierCommand;
|
|
||||||
} else if (flags.includes('alternate')) {
|
|
||||||
_flags = constants.keyModifierAlternate;
|
|
||||||
}
|
|
||||||
return key.includes(input) && modifierFlags === _flags;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const handleCommandTyping = (event: IKeyCommandEvent): boolean => commandHandle(event, KEY_TYPING);
|
|
||||||
|
|
||||||
export const handleCommandSubmit = (event: IKeyCommandEvent): boolean => commandHandle(event, KEY_SEND_MESSAGE);
|
|
||||||
|
|
||||||
export const handleCommandShowUpload = (event: IKeyCommandEvent): boolean => commandHandle(event, KEY_UPLOAD, ['command']);
|
|
||||||
|
|
||||||
export const handleCommandScroll = (event: IKeyCommandEvent): boolean =>
|
|
||||||
commandHandle(event, [constants.keyInputUpArrow, constants.keyInputDownArrow], ['alternate']);
|
|
||||||
|
|
||||||
export const handleCommandRoomActions = (event: IKeyCommandEvent): boolean => commandHandle(event, KEY_ROOM_ACTIONS, ['command']);
|
|
||||||
|
|
||||||
export const handleCommandSearchMessages = (event: IKeyCommandEvent): boolean => commandHandle(event, KEY_SEARCH, ['command']);
|
|
||||||
|
|
||||||
export const handleCommandReplyLatest = (event: IKeyCommandEvent): boolean => commandHandle(event, KEY_REPLY, ['command']);
|
|
||||||
|
|
||||||
export const handleCommandSelectServer = (event: IKeyCommandEvent): boolean =>
|
|
||||||
commandHandle(event, KEY_SELECT, ['command', 'alternate']);
|
|
||||||
|
|
||||||
export const handleCommandShowPreferences = (event: IKeyCommandEvent): boolean =>
|
|
||||||
commandHandle(event, KEY_PREFERENCES, ['command']);
|
|
||||||
|
|
||||||
export const handleCommandSearching = (event: IKeyCommandEvent): boolean =>
|
|
||||||
commandHandle(event, KEY_SEARCH, ['command', 'alternate']);
|
|
||||||
|
|
||||||
export const handleCommandSelectRoom = (event: IKeyCommandEvent): boolean => commandHandle(event, KEY_SELECT, ['command']);
|
|
||||||
|
|
||||||
export const handleCommandPreviousRoom = (event: IKeyCommandEvent): boolean =>
|
|
||||||
commandHandle(event, KEY_PREVIOUS_ROOM, ['command']);
|
|
||||||
|
|
||||||
export const handleCommandNextRoom = (event: IKeyCommandEvent): boolean => commandHandle(event, KEY_NEXT_ROOM, ['command']);
|
|
||||||
|
|
||||||
export const handleCommandShowNewMessage = (event: IKeyCommandEvent): boolean => commandHandle(event, KEY_NEW_ROOM, ['command']);
|
|
||||||
|
|
||||||
export const handleCommandAddNewServer = (event: IKeyCommandEvent): boolean =>
|
|
||||||
commandHandle(event, KEY_ADD_SERVER, ['command', 'alternate']);
|
|
||||||
|
|
||||||
export const handleCommandOpenServerDropdown = (event: IKeyCommandEvent): boolean =>
|
|
||||||
commandHandle(event, KEY_SERVER_SELECTION, ['command', 'alternate']);
|
|
|
@ -1,5 +1,5 @@
|
||||||
import React, { Component } from 'react';
|
import React, { Component } from 'react';
|
||||||
import { Alert, Keyboard, NativeModules, Text, View, BackHandler } from 'react-native';
|
import { Alert, NativeModules, Text, View, BackHandler } from 'react-native';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { KeyboardAccessoryView } from 'react-native-ui-lib/keyboard';
|
import { KeyboardAccessoryView } from 'react-native-ui-lib/keyboard';
|
||||||
import ImagePicker, { Image, ImageOrVideo, Options } from 'react-native-image-crop-picker';
|
import ImagePicker, { Image, ImageOrVideo, Options } from 'react-native-image-crop-picker';
|
||||||
|
@ -21,8 +21,6 @@ import { themes, emojis } from '../../lib/constants';
|
||||||
import LeftButtons from './LeftButtons';
|
import LeftButtons from './LeftButtons';
|
||||||
import RightButtons from './RightButtons';
|
import RightButtons from './RightButtons';
|
||||||
import { canUploadFile } from '../../lib/methods/helpers/media';
|
import { canUploadFile } from '../../lib/methods/helpers/media';
|
||||||
import EventEmiter from '../../lib/methods/helpers/events';
|
|
||||||
import { KEY_COMMAND, handleCommandShowUpload, handleCommandSubmit, handleCommandTyping } from '../../commands';
|
|
||||||
import getMentionRegexp from './getMentionRegexp';
|
import getMentionRegexp from './getMentionRegexp';
|
||||||
import Mentions from './Mentions';
|
import Mentions from './Mentions';
|
||||||
import MessageboxContext from './Context';
|
import MessageboxContext from './Context';
|
||||||
|
@ -140,8 +138,6 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
|
|
||||||
private selection: { start: number; end: number };
|
private selection: { start: number; end: number };
|
||||||
|
|
||||||
private focused: boolean;
|
|
||||||
|
|
||||||
private imagePickerConfig: Options;
|
private imagePickerConfig: Options;
|
||||||
|
|
||||||
private libraryPickerConfig: Options;
|
private libraryPickerConfig: Options;
|
||||||
|
@ -192,7 +188,6 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
};
|
};
|
||||||
this.text = '';
|
this.text = '';
|
||||||
this.selection = { start: 0, end: 0 };
|
this.selection = { start: 0, end: 0 };
|
||||||
this.focused = false;
|
|
||||||
|
|
||||||
const libPickerLabels = {
|
const libPickerLabels = {
|
||||||
cropperChooseText: I18n.t('Choose'),
|
cropperChooseText: I18n.t('Choose'),
|
||||||
|
@ -268,10 +263,6 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
this.setShowSend(true);
|
this.setShowSend(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isTablet) {
|
|
||||||
EventEmiter.addEventListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (usedCannedResponse) {
|
if (usedCannedResponse) {
|
||||||
this.onChangeText(usedCannedResponse);
|
this.onChangeText(usedCannedResponse);
|
||||||
}
|
}
|
||||||
|
@ -446,9 +437,6 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
if (this.unsubscribeBlur) {
|
if (this.unsubscribeBlur) {
|
||||||
this.unsubscribeBlur();
|
this.unsubscribeBlur();
|
||||||
}
|
}
|
||||||
if (isTablet) {
|
|
||||||
EventEmiter.removeListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
BackHandler.removeEventListener('hardwareBackPress', this.handleBackPress);
|
BackHandler.removeEventListener('hardwareBackPress', this.handleBackPress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1113,21 +1101,6 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
handleCommands = ({ event }: { event: any }) => {
|
|
||||||
if (handleCommandTyping(event)) {
|
|
||||||
if (this.focused) {
|
|
||||||
Keyboard.dismiss();
|
|
||||||
} else {
|
|
||||||
this.component.focus();
|
|
||||||
}
|
|
||||||
this.focused = !this.focused;
|
|
||||||
} else if (handleCommandSubmit(event)) {
|
|
||||||
this.submit();
|
|
||||||
} else if (handleCommandShowUpload(event)) {
|
|
||||||
this.showMessageBoxActions();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
onPressSendToChannel = () => this.setState(({ tshow }) => ({ tshow: !tshow }));
|
onPressSendToChannel = () => this.setState(({ tshow }) => ({ tshow: !tshow }));
|
||||||
|
|
||||||
renderSendToChannel = () => {
|
renderSendToChannel = () => {
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
export interface ICommand {
|
|
||||||
event: {
|
|
||||||
input: string;
|
|
||||||
modifierFlags: number;
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -6,7 +6,6 @@ declare module 'react-native-image-progress';
|
||||||
declare module 'react-native-ui-lib/keyboard';
|
declare module 'react-native-ui-lib/keyboard';
|
||||||
declare module '@rocket.chat/sdk';
|
declare module '@rocket.chat/sdk';
|
||||||
declare module 'react-native-config-reader';
|
declare module 'react-native-config-reader';
|
||||||
declare module 'react-native-keycommands';
|
|
||||||
declare module 'react-native-mime-types';
|
declare module 'react-native-mime-types';
|
||||||
declare module 'react-native-restart';
|
declare module 'react-native-restart';
|
||||||
declare module 'rn-root-view';
|
declare module 'rn-root-view';
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Dimensions, Linking } from 'react-native';
|
import { Dimensions, Linking } from 'react-native';
|
||||||
import { KeyCommandsEmitter } from 'react-native-keycommands';
|
|
||||||
import { initialWindowMetrics, SafeAreaProvider } from 'react-native-safe-area-context';
|
import { initialWindowMetrics, SafeAreaProvider } from 'react-native-safe-area-context';
|
||||||
import RNScreens from 'react-native-screens';
|
import RNScreens from 'react-native-screens';
|
||||||
import { Provider } from 'react-redux';
|
import { Provider } from 'react-redux';
|
||||||
|
@ -10,13 +9,11 @@ import Orientation from 'react-native-orientation-locker';
|
||||||
import { appInit, appInitLocalSettings, setMasterDetail as setMasterDetailAction } from './actions/app';
|
import { appInit, appInitLocalSettings, setMasterDetail as setMasterDetailAction } from './actions/app';
|
||||||
import { deepLinkingOpen } from './actions/deepLinking';
|
import { deepLinkingOpen } from './actions/deepLinking';
|
||||||
import AppContainer from './AppContainer';
|
import AppContainer from './AppContainer';
|
||||||
import { KEY_COMMAND } from './commands';
|
|
||||||
import { ActionSheetProvider } from './containers/ActionSheet';
|
import { ActionSheetProvider } from './containers/ActionSheet';
|
||||||
import InAppNotification from './containers/InAppNotification';
|
import InAppNotification from './containers/InAppNotification';
|
||||||
import Toast from './containers/Toast';
|
import Toast from './containers/Toast';
|
||||||
import TwoFactor from './containers/TwoFactor';
|
import TwoFactor from './containers/TwoFactor';
|
||||||
import Loading from './containers/Loading';
|
import Loading from './containers/Loading';
|
||||||
import { ICommand } from './definitions/ICommand';
|
|
||||||
import { IThemePreference } from './definitions/ITheme';
|
import { IThemePreference } from './definitions/ITheme';
|
||||||
import { DimensionsContext } from './dimensions';
|
import { DimensionsContext } from './dimensions';
|
||||||
import { colors, isFDroidBuild, MIN_WIDTH_MASTER_DETAIL_LAYOUT, themes } from './lib/constants';
|
import { colors, isFDroidBuild, MIN_WIDTH_MASTER_DETAIL_LAYOUT, themes } from './lib/constants';
|
||||||
|
@ -27,7 +24,6 @@ import store from './lib/store';
|
||||||
import { initStore } from './lib/store/auxStore';
|
import { initStore } from './lib/store/auxStore';
|
||||||
import { ThemeContext, TSupportedThemes } from './theme';
|
import { ThemeContext, TSupportedThemes } from './theme';
|
||||||
import { debounce, isTablet } from './lib/methods/helpers';
|
import { debounce, isTablet } from './lib/methods/helpers';
|
||||||
import EventEmitter from './lib/methods/helpers/events';
|
|
||||||
import { toggleAnalyticsEventsReport, toggleCrashErrorsReport } from './lib/methods/helpers/log';
|
import { toggleAnalyticsEventsReport, toggleCrashErrorsReport } from './lib/methods/helpers/log';
|
||||||
import {
|
import {
|
||||||
getTheme,
|
getTheme,
|
||||||
|
@ -85,8 +81,6 @@ const parseDeepLinking = (url: string) => {
|
||||||
export default class Root extends React.Component<{}, IState> {
|
export default class Root extends React.Component<{}, IState> {
|
||||||
private listenerTimeout!: any;
|
private listenerTimeout!: any;
|
||||||
|
|
||||||
private onKeyCommands: any;
|
|
||||||
|
|
||||||
constructor(props: any) {
|
constructor(props: any) {
|
||||||
super(props);
|
super(props);
|
||||||
this.init();
|
this.init();
|
||||||
|
@ -129,10 +123,6 @@ export default class Root extends React.Component<{}, IState> {
|
||||||
Dimensions.removeEventListener('change', this.onDimensionsChange);
|
Dimensions.removeEventListener('change', this.onDimensionsChange);
|
||||||
|
|
||||||
unsubscribeTheme();
|
unsubscribeTheme();
|
||||||
|
|
||||||
if (this.onKeyCommands && this.onKeyCommands.remove) {
|
|
||||||
this.onKeyCommands.remove();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
init = async () => {
|
init = async () => {
|
||||||
|
@ -199,9 +189,6 @@ export default class Root extends React.Component<{}, IState> {
|
||||||
initTablet = () => {
|
initTablet = () => {
|
||||||
const { width } = this.state;
|
const { width } = this.state;
|
||||||
this.setMasterDetail(width);
|
this.setMasterDetail(width);
|
||||||
this.onKeyCommands = KeyCommandsEmitter.addListener('onKeyCommand', (command: ICommand) => {
|
|
||||||
EventEmitter.emit(KEY_COMMAND, { event: command });
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
initCrashReport = () => {
|
initCrashReport = () => {
|
||||||
|
|
|
@ -150,16 +150,32 @@ export async function getSettings(): Promise<void> {
|
||||||
const db = database.active;
|
const db = database.active;
|
||||||
const settingsParams = Object.keys(defaultSettings).filter(key => !loginSettings.includes(key));
|
const settingsParams = Object.keys(defaultSettings).filter(key => !loginSettings.includes(key));
|
||||||
// RC 0.60.0
|
// RC 0.60.0
|
||||||
const result = await fetch(
|
let offset = 0;
|
||||||
`${sdk.current.client.host}/api/v1/settings.public?query={"_id":{"$in":${JSON.stringify(settingsParams)}}}&count=${
|
let remaining;
|
||||||
settingsParams.length
|
let settings: IData[] = [];
|
||||||
}`
|
|
||||||
).then(response => response.json());
|
|
||||||
|
|
||||||
if (!result.success) {
|
// Iterate over paginated results to retrieve all settings
|
||||||
return;
|
do {
|
||||||
}
|
// TODO: why is no-await-in-loop enforced in the first place?
|
||||||
const data: IData[] = result.settings || [];
|
/* eslint-disable no-await-in-loop */
|
||||||
|
const response = await fetch(
|
||||||
|
`${sdk.current.client.host}/api/v1/settings.public?query={"_id":{"$in":${JSON.stringify(settingsParams)}}}
|
||||||
|
&offset=${offset}`
|
||||||
|
);
|
||||||
|
|
||||||
|
const result = await response.json();
|
||||||
|
|
||||||
|
if (!result.success) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
offset += result.settings.length;
|
||||||
|
settings = [...settings, ...result.settings];
|
||||||
|
remaining = result.total - settings.length;
|
||||||
|
/* eslint-enable no-await-in-loop */
|
||||||
|
} while (remaining > 0);
|
||||||
|
|
||||||
|
const data: IData[] = settings;
|
||||||
const filteredSettings: IPreparedSettings[] = _prepareSettings(data);
|
const filteredSettings: IPreparedSettings[] = _prepareSettings(data);
|
||||||
const filteredSettingsIds = filteredSettings.map(s => s._id);
|
const filteredSettingsIds = filteredSettings.map(s => s._id);
|
||||||
const parsedSettings = parseSettings(filteredSettings);
|
const parsedSettings = parseSettings(filteredSettings);
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { IEmitUserInteraction } from '../../../containers/UIKit/interfaces';
|
import { IEmitUserInteraction } from '../../../containers/UIKit/interfaces';
|
||||||
import { ICommand } from '../../../definitions/ICommand';
|
|
||||||
import log from './log';
|
import log from './log';
|
||||||
|
|
||||||
type TEventEmitterEmmitArgs =
|
type TEventEmitterEmmitArgs =
|
||||||
|
@ -11,7 +10,6 @@ type TEventEmitterEmmitArgs =
|
||||||
| { force: boolean }
|
| { force: boolean }
|
||||||
| { hasBiometry: boolean }
|
| { hasBiometry: boolean }
|
||||||
| { visible: boolean; onCancel?: null | Function }
|
| { visible: boolean; onCancel?: null | Function }
|
||||||
| { event: string | ICommand }
|
|
||||||
| { cancel: () => void }
|
| { cancel: () => void }
|
||||||
| { submit: (param: string) => void }
|
| { submit: (param: string) => void }
|
||||||
| IEmitUserInteraction;
|
| IEmitUserInteraction;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import React, { useEffect } from 'react';
|
import React from 'react';
|
||||||
import { useIsFocused } from '@react-navigation/native';
|
|
||||||
import { createStackNavigator, StackNavigationOptions, StackNavigationProp } from '@react-navigation/stack';
|
import { createStackNavigator, StackNavigationOptions, StackNavigationProp } from '@react-navigation/stack';
|
||||||
import { createDrawerNavigator } from '@react-navigation/drawer';
|
import { createDrawerNavigator } from '@react-navigation/drawer';
|
||||||
|
|
||||||
|
@ -62,7 +61,6 @@ import CreateDiscussionView from '../../views/CreateDiscussionView';
|
||||||
import E2ESaveYourPasswordView from '../../views/E2ESaveYourPasswordView';
|
import E2ESaveYourPasswordView from '../../views/E2ESaveYourPasswordView';
|
||||||
import E2EHowItWorksView from '../../views/E2EHowItWorksView';
|
import E2EHowItWorksView from '../../views/E2EHowItWorksView';
|
||||||
import E2EEnterYourPasswordView from '../../views/E2EEnterYourPasswordView';
|
import E2EEnterYourPasswordView from '../../views/E2EEnterYourPasswordView';
|
||||||
import { deleteKeyCommands, setKeyCommands } from '../../commands';
|
|
||||||
import ShareView from '../../views/ShareView';
|
import ShareView from '../../views/ShareView';
|
||||||
import QueueListView from '../../ee/omnichannel/views/QueueListView';
|
import QueueListView from '../../ee/omnichannel/views/QueueListView';
|
||||||
import AddChannelTeamView from '../../views/AddChannelTeamView';
|
import AddChannelTeamView from '../../views/AddChannelTeamView';
|
||||||
|
@ -84,18 +82,6 @@ const ChatsStack = createStackNavigator<MasterDetailChatsStackParamList>();
|
||||||
const ChatsStackNavigator = React.memo(() => {
|
const ChatsStackNavigator = React.memo(() => {
|
||||||
const { theme } = React.useContext(ThemeContext);
|
const { theme } = React.useContext(ThemeContext);
|
||||||
|
|
||||||
const isFocused = useIsFocused();
|
|
||||||
useEffect(() => {
|
|
||||||
if (isFocused) {
|
|
||||||
setKeyCommands();
|
|
||||||
} else {
|
|
||||||
deleteKeyCommands();
|
|
||||||
}
|
|
||||||
return () => {
|
|
||||||
deleteKeyCommands();
|
|
||||||
};
|
|
||||||
}, [isFocused]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ChatsStack.Navigator
|
<ChatsStack.Navigator
|
||||||
screenOptions={{ ...defaultHeader, ...themedHeader(theme), ...StackAnimation } as StackNavigationOptions}
|
screenOptions={{ ...defaultHeader, ...themedHeader(theme), ...StackAnimation } as StackNavigationOptions}
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
import React from 'react';
|
|
||||||
import { FlatListProps, StyleSheet } from 'react-native';
|
|
||||||
import { FlatList } from 'react-native-gesture-handler';
|
|
||||||
import Animated from 'react-native-reanimated';
|
|
||||||
|
|
||||||
import { isIOS } from '../../../lib/methods/helpers';
|
|
||||||
import scrollPersistTaps from '../../../lib/methods/helpers/scrollPersistTaps';
|
|
||||||
|
|
||||||
const AnimatedFlatList = Animated.createAnimatedComponent(FlatList);
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
list: {
|
|
||||||
flex: 1
|
|
||||||
},
|
|
||||||
contentContainer: {
|
|
||||||
paddingTop: 10
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
export type TListRef = React.RefObject<FlatList & { getNode: () => FlatList }>;
|
|
||||||
|
|
||||||
export interface IListProps extends FlatListProps<any> {
|
|
||||||
listRef: TListRef;
|
|
||||||
}
|
|
||||||
|
|
||||||
const List = ({ listRef, ...props }: IListProps) => (
|
|
||||||
<AnimatedFlatList
|
|
||||||
testID='room-view-messages'
|
|
||||||
ref={listRef}
|
|
||||||
keyExtractor={(item: any) => item.id}
|
|
||||||
contentContainerStyle={styles.contentContainer}
|
|
||||||
style={styles.list}
|
|
||||||
inverted={isIOS}
|
|
||||||
removeClippedSubviews={isIOS}
|
|
||||||
initialNumToRender={7}
|
|
||||||
onEndReachedThreshold={0.5}
|
|
||||||
maxToRenderPerBatch={5}
|
|
||||||
windowSize={10}
|
|
||||||
{...props}
|
|
||||||
{...scrollPersistTaps}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
|
|
||||||
List.propTypes = {
|
|
||||||
listRef: PropTypes.object
|
|
||||||
};
|
|
||||||
|
|
||||||
export default List;
|
|
|
@ -1,75 +0,0 @@
|
||||||
import React, { useState } from 'react';
|
|
||||||
import { StyleSheet, View } from 'react-native';
|
|
||||||
import Animated, { call, cond, greaterOrEq, useCode } from 'react-native-reanimated';
|
|
||||||
|
|
||||||
import { themes } from '../../../lib/constants';
|
|
||||||
import { CustomIcon } from '../../../containers/CustomIcon';
|
|
||||||
import { useTheme } from '../../../theme';
|
|
||||||
import Touch from '../../../containers/Touch';
|
|
||||||
import { hasNotch } from '../../../lib/methods/helpers';
|
|
||||||
|
|
||||||
const SCROLL_LIMIT = 200;
|
|
||||||
const SEND_TO_CHANNEL_HEIGHT = 40;
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
container: {
|
|
||||||
position: 'absolute',
|
|
||||||
right: 15
|
|
||||||
},
|
|
||||||
button: {
|
|
||||||
borderRadius: 25
|
|
||||||
},
|
|
||||||
content: {
|
|
||||||
width: 50,
|
|
||||||
height: 50,
|
|
||||||
borderRadius: 25,
|
|
||||||
borderWidth: 1,
|
|
||||||
alignItems: 'center',
|
|
||||||
justifyContent: 'center'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const NavBottomFAB = ({
|
|
||||||
y,
|
|
||||||
onPress,
|
|
||||||
isThread
|
|
||||||
}: {
|
|
||||||
y: Animated.Value<number>;
|
|
||||||
onPress: Function;
|
|
||||||
isThread: boolean;
|
|
||||||
}): React.ReactElement | null => {
|
|
||||||
const { theme } = useTheme();
|
|
||||||
const [show, setShow] = useState(false);
|
|
||||||
const handleOnPress = () => onPress();
|
|
||||||
const toggle = (v: boolean) => setShow(v);
|
|
||||||
|
|
||||||
useCode(
|
|
||||||
() =>
|
|
||||||
cond(
|
|
||||||
greaterOrEq(y, SCROLL_LIMIT),
|
|
||||||
call([y], () => toggle(true)),
|
|
||||||
call([y], () => toggle(false))
|
|
||||||
),
|
|
||||||
[y]
|
|
||||||
);
|
|
||||||
|
|
||||||
if (!show) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
let bottom = hasNotch ? 100 : 60;
|
|
||||||
if (isThread) {
|
|
||||||
bottom += SEND_TO_CHANNEL_HEIGHT;
|
|
||||||
}
|
|
||||||
return (
|
|
||||||
<Animated.View style={[styles.container, { bottom }]} testID='nav-jump-to-bottom'>
|
|
||||||
<Touch onPress={handleOnPress} style={[styles.button, { backgroundColor: themes[theme].backgroundColor }]}>
|
|
||||||
<View style={[styles.content, { borderColor: themes[theme].borderColor }]}>
|
|
||||||
<CustomIcon name='chevron-down' color={themes[theme].auxiliaryTintColor} size={36} />
|
|
||||||
</View>
|
|
||||||
</Touch>
|
|
||||||
</Animated.View>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default NavBottomFAB;
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { ImageBackground, StyleSheet } from 'react-native';
|
import { ImageBackground, StyleSheet } from 'react-native';
|
||||||
|
|
||||||
import { useTheme } from '../../theme';
|
import { useTheme } from '../../../../theme';
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
image: {
|
image: {
|
||||||
|
@ -11,12 +11,10 @@ const styles = StyleSheet.create({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const EmptyRoom = React.memo(({ length, mounted, rid }: { length: number; mounted: boolean; rid: string }) => {
|
export const EmptyRoom = React.memo(({ length, rid }: { length: number; rid: string }) => {
|
||||||
const { theme } = useTheme();
|
const { theme } = useTheme();
|
||||||
if ((length === 0 && mounted) || !rid) {
|
if (length === 0 || !rid) {
|
||||||
return <ImageBackground source={{ uri: `message_empty_${theme}` }} style={styles.image} />;
|
return <ImageBackground source={{ uri: `message_empty_${theme}` }} style={styles.image} />;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
});
|
});
|
||||||
|
|
||||||
export default EmptyRoom;
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
import React, { useState } from 'react';
|
||||||
|
import { FlatListProps, StyleSheet } from 'react-native';
|
||||||
|
import { FlatList } from 'react-native-gesture-handler';
|
||||||
|
import Animated, { runOnJS, useAnimatedScrollHandler } from 'react-native-reanimated';
|
||||||
|
|
||||||
|
import { isIOS } from '../../../../lib/methods/helpers';
|
||||||
|
import scrollPersistTaps from '../../../../lib/methods/helpers/scrollPersistTaps';
|
||||||
|
import NavBottomFAB from './NavBottomFAB';
|
||||||
|
import { IListProps } from '../definitions';
|
||||||
|
import { SCROLL_LIMIT } from '../constants';
|
||||||
|
import { TAnyMessageModel } from '../../../../definitions';
|
||||||
|
|
||||||
|
const AnimatedFlatList = Animated.createAnimatedComponent<FlatListProps<TAnyMessageModel>>(FlatList);
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
list: {
|
||||||
|
flex: 1
|
||||||
|
},
|
||||||
|
contentContainer: {
|
||||||
|
paddingTop: 10
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
export const List = ({ listRef, jumpToBottom, isThread, ...props }: IListProps) => {
|
||||||
|
const [visible, setVisible] = useState(false);
|
||||||
|
|
||||||
|
const scrollHandler = useAnimatedScrollHandler({
|
||||||
|
onScroll: event => {
|
||||||
|
if (event.contentOffset.y > SCROLL_LIMIT) {
|
||||||
|
runOnJS(setVisible)(true);
|
||||||
|
} else {
|
||||||
|
runOnJS(setVisible)(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<AnimatedFlatList
|
||||||
|
testID='room-view-messages'
|
||||||
|
// @ts-ignore createAnimatedComponent is making this fail
|
||||||
|
ref={listRef}
|
||||||
|
keyExtractor={item => item.id}
|
||||||
|
contentContainerStyle={styles.contentContainer}
|
||||||
|
style={styles.list}
|
||||||
|
inverted={isIOS}
|
||||||
|
removeClippedSubviews={isIOS}
|
||||||
|
initialNumToRender={7}
|
||||||
|
onEndReachedThreshold={0.5}
|
||||||
|
maxToRenderPerBatch={5}
|
||||||
|
windowSize={10}
|
||||||
|
scrollEventThrottle={16}
|
||||||
|
onScroll={scrollHandler}
|
||||||
|
{...props}
|
||||||
|
{...scrollPersistTaps}
|
||||||
|
/>
|
||||||
|
<NavBottomFAB visible={visible} onPress={jumpToBottom} isThread={isThread} />
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
|
@ -0,0 +1,68 @@
|
||||||
|
import React from 'react';
|
||||||
|
import { StyleSheet, View, Platform } from 'react-native';
|
||||||
|
|
||||||
|
import { CustomIcon } from '../../../../containers/CustomIcon';
|
||||||
|
import { useTheme } from '../../../../theme';
|
||||||
|
import Touch from '../../../../containers/Touch';
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
position: 'absolute',
|
||||||
|
right: 15
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
borderRadius: 25
|
||||||
|
},
|
||||||
|
content: {
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
borderRadius: 25,
|
||||||
|
borderWidth: 1,
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const NavBottomFAB = ({
|
||||||
|
visible,
|
||||||
|
onPress,
|
||||||
|
isThread
|
||||||
|
}: {
|
||||||
|
visible: boolean;
|
||||||
|
onPress: Function;
|
||||||
|
isThread: boolean;
|
||||||
|
}): React.ReactElement | null => {
|
||||||
|
const { colors } = useTheme();
|
||||||
|
|
||||||
|
if (!visible) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View
|
||||||
|
style={[
|
||||||
|
styles.container,
|
||||||
|
{
|
||||||
|
...Platform.select({
|
||||||
|
ios: {
|
||||||
|
bottom: 100 + (isThread ? 40 : 0)
|
||||||
|
},
|
||||||
|
android: {
|
||||||
|
top: 15,
|
||||||
|
scaleY: -1
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
]}
|
||||||
|
testID='nav-jump-to-bottom'
|
||||||
|
>
|
||||||
|
<Touch onPress={() => onPress()} style={[styles.button, { backgroundColor: colors.backgroundColor }]}>
|
||||||
|
<View style={[styles.content, { borderColor: colors.borderColor }]}>
|
||||||
|
<CustomIcon name='chevron-down' color={colors.auxiliaryTintColor} size={36} />
|
||||||
|
</View>
|
||||||
|
</Touch>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default NavBottomFAB;
|
|
@ -1,8 +1,8 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { RefreshControl as RNRefreshControl, RefreshControlProps, StyleSheet } from 'react-native';
|
import { RefreshControl as RNRefreshControl, RefreshControlProps, StyleSheet } from 'react-native';
|
||||||
|
|
||||||
import { useTheme } from '../../../theme';
|
import { useTheme } from '../../../../theme';
|
||||||
import { isAndroid } from '../../../lib/methods/helpers';
|
import { isAndroid } from '../../../../lib/methods/helpers';
|
||||||
|
|
||||||
const style = StyleSheet.create({
|
const style = StyleSheet.create({
|
||||||
container: {
|
container: {
|
||||||
|
@ -17,7 +17,7 @@ interface IRefreshControl extends RefreshControlProps {
|
||||||
children: React.ReactElement;
|
children: React.ReactElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
const RefreshControl = ({ children, onRefresh, refreshing }: IRefreshControl): React.ReactElement => {
|
export const RefreshControl = ({ children, onRefresh, refreshing }: IRefreshControl): React.ReactElement => {
|
||||||
const { colors } = useTheme();
|
const { colors } = useTheme();
|
||||||
if (isAndroid) {
|
if (isAndroid) {
|
||||||
return (
|
return (
|
||||||
|
@ -36,5 +36,3 @@ const RefreshControl = ({ children, onRefresh, refreshing }: IRefreshControl): R
|
||||||
|
|
||||||
return React.cloneElement(children, { refreshControl });
|
return React.cloneElement(children, { refreshControl });
|
||||||
};
|
};
|
||||||
|
|
||||||
export default RefreshControl;
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
export * from './NavBottomFAB';
|
||||||
|
export * from './RefreshControl';
|
||||||
|
export * from './EmptyRoom';
|
||||||
|
export * from './List';
|
|
@ -0,0 +1,7 @@
|
||||||
|
export const QUERY_SIZE = 50;
|
||||||
|
|
||||||
|
export const VIEWABILITY_CONFIG = {
|
||||||
|
itemVisiblePercentThreshold: 10
|
||||||
|
};
|
||||||
|
|
||||||
|
export const SCROLL_LIMIT = 200;
|
|
@ -0,0 +1,31 @@
|
||||||
|
import { RefObject } from 'react';
|
||||||
|
import { FlatListProps } from 'react-native';
|
||||||
|
import { FlatList } from 'react-native-gesture-handler';
|
||||||
|
|
||||||
|
import { TAnyMessageModel } from '../../../definitions';
|
||||||
|
|
||||||
|
export type TListRef = RefObject<FlatList<TAnyMessageModel>>;
|
||||||
|
|
||||||
|
export type TMessagesIdsRef = RefObject<string[]>;
|
||||||
|
|
||||||
|
export interface IListProps extends FlatListProps<TAnyMessageModel> {
|
||||||
|
listRef: TListRef;
|
||||||
|
jumpToBottom: () => void;
|
||||||
|
isThread: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IListContainerRef {
|
||||||
|
jumpToMessage: (messageId: string) => Promise<void>;
|
||||||
|
cancelJumpToMessage: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IListContainerProps {
|
||||||
|
renderRow: Function;
|
||||||
|
rid: string;
|
||||||
|
tmid?: string;
|
||||||
|
loading: boolean;
|
||||||
|
listRef: TListRef;
|
||||||
|
hideSystemMessages: string[];
|
||||||
|
showMessageInMainThread: boolean;
|
||||||
|
serverVersion: string | null;
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
export * from './useMessages';
|
||||||
|
export * from './useRefresh';
|
||||||
|
export * from './useScroll';
|
|
@ -0,0 +1,111 @@
|
||||||
|
import { useCallback, useLayoutEffect, useRef, useState } from 'react';
|
||||||
|
import { Q } from '@nozbe/watermelondb';
|
||||||
|
import { Subscription } from 'rxjs';
|
||||||
|
|
||||||
|
import { TAnyMessageModel, TThreadModel } from '../../../../definitions';
|
||||||
|
import database from '../../../../lib/database';
|
||||||
|
import { getThreadById } from '../../../../lib/database/services/Thread';
|
||||||
|
import { animateNextTransition, compareServerVersion, isIOS, useDebounce } from '../../../../lib/methods/helpers';
|
||||||
|
import { Services } from '../../../../lib/services';
|
||||||
|
import { QUERY_SIZE } from '../constants';
|
||||||
|
|
||||||
|
export const useMessages = ({
|
||||||
|
rid,
|
||||||
|
tmid,
|
||||||
|
showMessageInMainThread,
|
||||||
|
serverVersion,
|
||||||
|
hideSystemMessages
|
||||||
|
}: {
|
||||||
|
rid: string;
|
||||||
|
tmid?: string;
|
||||||
|
showMessageInMainThread: boolean;
|
||||||
|
serverVersion: string | null;
|
||||||
|
hideSystemMessages: string[];
|
||||||
|
}) => {
|
||||||
|
const [messages, setMessages] = useState<TAnyMessageModel[]>([]);
|
||||||
|
const thread = useRef<TThreadModel | null>(null);
|
||||||
|
const count = useRef(0);
|
||||||
|
const subscription = useRef<Subscription | null>(null);
|
||||||
|
const messagesIds = useRef<string[]>([]);
|
||||||
|
|
||||||
|
const fetchMessages = useCallback(async () => {
|
||||||
|
unsubscribe();
|
||||||
|
count.current += QUERY_SIZE;
|
||||||
|
|
||||||
|
if (!rid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const db = database.active;
|
||||||
|
let observable;
|
||||||
|
if (tmid) {
|
||||||
|
if (!thread.current) {
|
||||||
|
thread.current = await getThreadById(tmid);
|
||||||
|
}
|
||||||
|
observable = db
|
||||||
|
.get('thread_messages')
|
||||||
|
.query(Q.where('rid', tmid), Q.experimentalSortBy('ts', Q.desc), Q.experimentalSkip(0), Q.experimentalTake(count.current))
|
||||||
|
.observe();
|
||||||
|
} else {
|
||||||
|
const whereClause = [
|
||||||
|
Q.where('rid', rid),
|
||||||
|
Q.experimentalSortBy('ts', Q.desc),
|
||||||
|
Q.experimentalSkip(0),
|
||||||
|
Q.experimentalTake(count.current)
|
||||||
|
] as (Q.WhereDescription | Q.Or)[];
|
||||||
|
if (!showMessageInMainThread) {
|
||||||
|
whereClause.push(Q.or(Q.where('tmid', null), Q.where('tshow', Q.eq(true))));
|
||||||
|
}
|
||||||
|
observable = db
|
||||||
|
.get('messages')
|
||||||
|
.query(...whereClause)
|
||||||
|
.observe();
|
||||||
|
}
|
||||||
|
|
||||||
|
subscription.current = observable.subscribe(result => {
|
||||||
|
let newMessages: TAnyMessageModel[] = result;
|
||||||
|
if (tmid && thread.current) {
|
||||||
|
newMessages.push(thread.current);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Since 3.16.0 server version, the backend don't response with messages if
|
||||||
|
* hide system message is enabled
|
||||||
|
*/
|
||||||
|
if (compareServerVersion(serverVersion, 'lowerThan', '3.16.0') || hideSystemMessages.length) {
|
||||||
|
newMessages = newMessages.filter(m => !m.t || !hideSystemMessages?.includes(m.t));
|
||||||
|
}
|
||||||
|
|
||||||
|
readThread();
|
||||||
|
if (isIOS) {
|
||||||
|
animateNextTransition();
|
||||||
|
}
|
||||||
|
setMessages(newMessages);
|
||||||
|
messagesIds.current = newMessages.map(m => m.id);
|
||||||
|
});
|
||||||
|
}, [rid, tmid, showMessageInMainThread, serverVersion, hideSystemMessages]);
|
||||||
|
|
||||||
|
const readThread = useDebounce(async () => {
|
||||||
|
if (tmid) {
|
||||||
|
try {
|
||||||
|
await Services.readThreads(tmid);
|
||||||
|
} catch {
|
||||||
|
// Do nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
useLayoutEffect(() => {
|
||||||
|
fetchMessages();
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
unsubscribe();
|
||||||
|
};
|
||||||
|
}, [rid, tmid, showMessageInMainThread, serverVersion, hideSystemMessages, fetchMessages]);
|
||||||
|
|
||||||
|
const unsubscribe = () => {
|
||||||
|
subscription.current?.unsubscribe();
|
||||||
|
};
|
||||||
|
|
||||||
|
return [messages, messagesIds, fetchMessages] as const;
|
||||||
|
};
|
|
@ -0,0 +1,27 @@
|
||||||
|
import moment from 'moment';
|
||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
|
import log from '../../../../lib/methods/helpers/log';
|
||||||
|
import { loadMissedMessages, loadThreadMessages } from '../../../../lib/methods';
|
||||||
|
|
||||||
|
export const useRefresh = ({ rid, tmid, messagesLength }: { rid: string; tmid?: string; messagesLength: number }) => {
|
||||||
|
const [refreshing, setRefreshing] = useState(false);
|
||||||
|
|
||||||
|
const refresh = async () => {
|
||||||
|
if (messagesLength) {
|
||||||
|
setRefreshing(true);
|
||||||
|
try {
|
||||||
|
if (tmid) {
|
||||||
|
await loadThreadMessages({ tmid, rid });
|
||||||
|
} else {
|
||||||
|
await loadMissedMessages({ rid, lastOpen: moment().subtract(7, 'days').toDate() });
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
log(e);
|
||||||
|
}
|
||||||
|
setRefreshing(false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return [refreshing, refresh] as const;
|
||||||
|
};
|
|
@ -0,0 +1,102 @@
|
||||||
|
import { useEffect, useRef, useState } from 'react';
|
||||||
|
import { ViewToken, ViewabilityConfigCallbackPairs } from 'react-native';
|
||||||
|
|
||||||
|
import { IListContainerRef, IListProps, TListRef, TMessagesIdsRef } from '../definitions';
|
||||||
|
import { VIEWABILITY_CONFIG } from '../constants';
|
||||||
|
|
||||||
|
export const useScroll = ({ listRef, messagesIds }: { listRef: TListRef; messagesIds: TMessagesIdsRef }) => {
|
||||||
|
const [highlightedMessageId, setHighlightedMessageId] = useState<string | null>(null);
|
||||||
|
const cancelJump = useRef(false);
|
||||||
|
const jumping = useRef(false);
|
||||||
|
const viewableItems = useRef<ViewToken[] | null>(null);
|
||||||
|
const highlightTimeout = useRef<ReturnType<typeof setTimeout> | null>(null);
|
||||||
|
|
||||||
|
useEffect(() => () => {
|
||||||
|
if (highlightTimeout.current) {
|
||||||
|
clearTimeout(highlightTimeout.current);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const jumpToBottom = () => {
|
||||||
|
listRef.current?.scrollToOffset({ offset: -100 });
|
||||||
|
};
|
||||||
|
|
||||||
|
const onViewableItemsChanged: IListProps['onViewableItemsChanged'] = ({ viewableItems: vi }) => {
|
||||||
|
viewableItems.current = vi;
|
||||||
|
};
|
||||||
|
|
||||||
|
const viewabilityConfigCallbackPairs = useRef<ViewabilityConfigCallbackPairs>([
|
||||||
|
{ onViewableItemsChanged, viewabilityConfig: VIEWABILITY_CONFIG }
|
||||||
|
]);
|
||||||
|
|
||||||
|
const handleScrollToIndexFailed: IListProps['onScrollToIndexFailed'] = params => {
|
||||||
|
listRef.current?.scrollToIndex({ index: params.highestMeasuredFrameIndex, animated: false });
|
||||||
|
};
|
||||||
|
|
||||||
|
const setHighlightTimeout = () => {
|
||||||
|
if (highlightTimeout.current) {
|
||||||
|
clearTimeout(highlightTimeout.current);
|
||||||
|
}
|
||||||
|
highlightTimeout.current = setTimeout(() => {
|
||||||
|
setHighlightedMessageId(null);
|
||||||
|
}, 5000);
|
||||||
|
};
|
||||||
|
|
||||||
|
const jumpToMessage: IListContainerRef['jumpToMessage'] = messageId =>
|
||||||
|
new Promise<void>(async resolve => {
|
||||||
|
// if jump to message was cancelled, reset variables and stop
|
||||||
|
if (cancelJump.current) {
|
||||||
|
resetJumpToMessage();
|
||||||
|
return resolve();
|
||||||
|
}
|
||||||
|
jumping.current = true;
|
||||||
|
|
||||||
|
// look for the message on the state
|
||||||
|
const index = messagesIds.current?.findIndex(item => item === messageId);
|
||||||
|
|
||||||
|
// if found message, scroll to it
|
||||||
|
if (index && index > -1) {
|
||||||
|
listRef.current?.scrollToIndex({ index, viewPosition: 0.5, viewOffset: 100 });
|
||||||
|
|
||||||
|
// wait for scroll animation to finish
|
||||||
|
await new Promise(res => setTimeout(res, 300));
|
||||||
|
|
||||||
|
// if message is not visible
|
||||||
|
if (!viewableItems.current?.map(vi => vi.key).includes(messageId)) {
|
||||||
|
await setTimeout(() => resolve(jumpToMessage(messageId)), 300);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// if message is visible, highlight it
|
||||||
|
setHighlightedMessageId(messageId);
|
||||||
|
setHighlightTimeout();
|
||||||
|
resetJumpToMessage();
|
||||||
|
resolve();
|
||||||
|
} else {
|
||||||
|
// if message not on state yet, scroll to top, so it triggers onEndReached and try again
|
||||||
|
listRef.current?.scrollToEnd();
|
||||||
|
await setTimeout(() => resolve(jumpToMessage(messageId)), 600);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const resetJumpToMessage = () => {
|
||||||
|
cancelJump.current = false;
|
||||||
|
jumping.current = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
const cancelJumpToMessage: IListContainerRef['cancelJumpToMessage'] = () => {
|
||||||
|
if (jumping.current) {
|
||||||
|
cancelJump.current = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
resetJumpToMessage();
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
jumpToBottom,
|
||||||
|
jumpToMessage,
|
||||||
|
cancelJumpToMessage,
|
||||||
|
viewabilityConfigCallbackPairs,
|
||||||
|
handleScrollToIndexFailed,
|
||||||
|
highlightedMessageId
|
||||||
|
};
|
||||||
|
};
|
|
@ -1,25 +1,11 @@
|
||||||
import { Q } from '@nozbe/watermelondb';
|
import React, { forwardRef, useImperativeHandle } from 'react';
|
||||||
import { dequal } from 'dequal';
|
import { View, Platform, StyleSheet } from 'react-native';
|
||||||
import moment from 'moment';
|
|
||||||
import React from 'react';
|
|
||||||
import { FlatListProps, View, ViewToken, StyleSheet, Platform } from 'react-native';
|
|
||||||
import { event, Value } from 'react-native-reanimated';
|
|
||||||
import { Observable, Subscription } from 'rxjs';
|
|
||||||
|
|
||||||
import ActivityIndicator from '../../../containers/ActivityIndicator';
|
import ActivityIndicator from '../../../containers/ActivityIndicator';
|
||||||
import { TAnyMessageModel, TMessageModel, TThreadMessageModel, TThreadModel } from '../../../definitions';
|
import { useMessages, useRefresh, useScroll } from './hooks';
|
||||||
import database from '../../../lib/database';
|
import { useDebounce } from '../../../lib/methods/helpers';
|
||||||
import { compareServerVersion, debounce } from '../../../lib/methods/helpers';
|
import { RefreshControl, EmptyRoom, List } from './components';
|
||||||
import { animateNextTransition } from '../../../lib/methods/helpers/layoutAnimation';
|
import { IListContainerProps, IListContainerRef, IListProps } from './definitions';
|
||||||
import log from '../../../lib/methods/helpers/log';
|
|
||||||
import EmptyRoom from '../EmptyRoom';
|
|
||||||
import List, { IListProps, TListRef } from './List';
|
|
||||||
import NavBottomFAB from './NavBottomFAB';
|
|
||||||
import { loadMissedMessages, loadThreadMessages } from '../../../lib/methods';
|
|
||||||
import { Services } from '../../../lib/services';
|
|
||||||
import RefreshControl from './RefreshControl';
|
|
||||||
|
|
||||||
const QUERY_SIZE = 50;
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
const styles = StyleSheet.create({
|
||||||
inverted: {
|
inverted: {
|
||||||
|
@ -31,367 +17,64 @@ const styles = StyleSheet.create({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const onScroll = ({ y }: { y: Value<number> }) =>
|
const ListContainer = forwardRef<IListContainerRef, IListContainerProps>(
|
||||||
event(
|
({ rid, tmid, renderRow, showMessageInMainThread, serverVersion, hideSystemMessages, listRef, loading }, ref) => {
|
||||||
[
|
const [messages, messagesIds, fetchMessages] = useMessages({
|
||||||
{
|
rid,
|
||||||
nativeEvent: {
|
tmid,
|
||||||
contentOffset: { y }
|
showMessageInMainThread,
|
||||||
}
|
serverVersion,
|
||||||
|
hideSystemMessages
|
||||||
|
});
|
||||||
|
const [refreshing, refresh] = useRefresh({ rid, tmid, messagesLength: messages.length });
|
||||||
|
const {
|
||||||
|
jumpToBottom,
|
||||||
|
jumpToMessage,
|
||||||
|
cancelJumpToMessage,
|
||||||
|
viewabilityConfigCallbackPairs,
|
||||||
|
handleScrollToIndexFailed,
|
||||||
|
highlightedMessageId
|
||||||
|
} = useScroll({ listRef, messagesIds });
|
||||||
|
|
||||||
|
const onEndReached = useDebounce(() => {
|
||||||
|
fetchMessages();
|
||||||
|
}, 300);
|
||||||
|
|
||||||
|
useImperativeHandle(ref, () => ({
|
||||||
|
jumpToMessage,
|
||||||
|
cancelJumpToMessage
|
||||||
|
}));
|
||||||
|
|
||||||
|
const renderFooter = () => {
|
||||||
|
if (loading && rid) {
|
||||||
|
return <ActivityIndicator />;
|
||||||
}
|
}
|
||||||
],
|
return null;
|
||||||
{ useNativeDriver: true }
|
|
||||||
);
|
|
||||||
|
|
||||||
export { IListProps };
|
|
||||||
|
|
||||||
export interface IListContainerProps {
|
|
||||||
renderRow: Function;
|
|
||||||
rid: string;
|
|
||||||
tmid?: string;
|
|
||||||
loading: boolean;
|
|
||||||
listRef: TListRef;
|
|
||||||
hideSystemMessages?: string[];
|
|
||||||
tunread?: string[];
|
|
||||||
ignored?: string[];
|
|
||||||
navigation: any; // TODO: type me
|
|
||||||
showMessageInMainThread: boolean;
|
|
||||||
serverVersion: string | null;
|
|
||||||
autoTranslateRoom?: boolean;
|
|
||||||
autoTranslateLanguage?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface IListContainerState {
|
|
||||||
messages: TAnyMessageModel[];
|
|
||||||
refreshing: boolean;
|
|
||||||
highlightedMessage: string | null;
|
|
||||||
}
|
|
||||||
|
|
||||||
class ListContainer extends React.Component<IListContainerProps, IListContainerState> {
|
|
||||||
private count = 0;
|
|
||||||
private mounted = false;
|
|
||||||
private animated = false;
|
|
||||||
private jumping = false;
|
|
||||||
private cancelJump = false;
|
|
||||||
private y = new Value(0);
|
|
||||||
private onScroll = onScroll({ y: this.y });
|
|
||||||
private unsubscribeFocus: () => void;
|
|
||||||
private viewabilityConfig = {
|
|
||||||
itemVisiblePercentThreshold: 10
|
|
||||||
};
|
|
||||||
private highlightedMessageTimeout: ReturnType<typeof setTimeout> | undefined | false;
|
|
||||||
private thread?: TThreadModel;
|
|
||||||
private messagesObservable?: Observable<TMessageModel[] | TThreadMessageModel[]>;
|
|
||||||
private messagesSubscription?: Subscription;
|
|
||||||
private viewableItems?: ViewToken[];
|
|
||||||
|
|
||||||
constructor(props: IListContainerProps) {
|
|
||||||
super(props);
|
|
||||||
console.time(`${this.constructor.name} init`);
|
|
||||||
console.time(`${this.constructor.name} mount`);
|
|
||||||
this.state = {
|
|
||||||
messages: [],
|
|
||||||
refreshing: false,
|
|
||||||
highlightedMessage: null
|
|
||||||
};
|
};
|
||||||
this.query();
|
|
||||||
this.unsubscribeFocus = props.navigation.addListener('focus', () => {
|
|
||||||
this.animated = true;
|
|
||||||
});
|
|
||||||
console.timeEnd(`${this.constructor.name} init`);
|
|
||||||
}
|
|
||||||
|
|
||||||
componentDidMount() {
|
const renderItem: IListProps['renderItem'] = ({ item, index }) => (
|
||||||
this.mounted = true;
|
<View style={styles.inverted}>{renderRow(item, messages[index + 1], highlightedMessageId)}</View>
|
||||||
console.timeEnd(`${this.constructor.name} mount`);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
shouldComponentUpdate(nextProps: IListContainerProps, nextState: IListContainerState) {
|
|
||||||
const { refreshing, highlightedMessage } = this.state;
|
|
||||||
const { hideSystemMessages, tunread, ignored, loading, autoTranslateLanguage, autoTranslateRoom } = this.props;
|
|
||||||
if (loading !== nextProps.loading) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (highlightedMessage !== nextState.highlightedMessage) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (refreshing !== nextState.refreshing) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!dequal(hideSystemMessages, nextProps.hideSystemMessages)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!dequal(tunread, nextProps.tunread)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!dequal(ignored, nextProps.ignored)) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (autoTranslateLanguage !== nextProps.autoTranslateLanguage || autoTranslateRoom !== nextProps.autoTranslateRoom) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
componentDidUpdate(prevProps: IListContainerProps) {
|
|
||||||
const { hideSystemMessages } = this.props;
|
|
||||||
if (!dequal(hideSystemMessages, prevProps.hideSystemMessages)) {
|
|
||||||
this.reload();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
|
||||||
this.unsubscribeMessages();
|
|
||||||
if (this.unsubscribeFocus) {
|
|
||||||
this.unsubscribeFocus();
|
|
||||||
}
|
|
||||||
this.clearHighlightedMessageTimeout();
|
|
||||||
console.countReset(`${this.constructor.name}.render calls`);
|
|
||||||
}
|
|
||||||
|
|
||||||
// clears previous highlighted message timeout, if exists
|
|
||||||
clearHighlightedMessageTimeout = () => {
|
|
||||||
if (this.highlightedMessageTimeout) {
|
|
||||||
clearTimeout(this.highlightedMessageTimeout);
|
|
||||||
this.highlightedMessageTimeout = false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
query = async () => {
|
|
||||||
this.count += QUERY_SIZE;
|
|
||||||
const { rid, tmid, showMessageInMainThread, serverVersion } = this.props;
|
|
||||||
const db = database.active;
|
|
||||||
|
|
||||||
// handle servers with version < 3.0.0
|
|
||||||
let { hideSystemMessages = [] } = this.props;
|
|
||||||
if (!Array.isArray(hideSystemMessages)) {
|
|
||||||
hideSystemMessages = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tmid) {
|
|
||||||
try {
|
|
||||||
this.thread = await db.get('threads').find(tmid);
|
|
||||||
} catch (e) {
|
|
||||||
console.log(e);
|
|
||||||
}
|
|
||||||
this.messagesObservable = db
|
|
||||||
.get('thread_messages')
|
|
||||||
.query(Q.where('rid', tmid), Q.experimentalSortBy('ts', Q.desc), Q.experimentalSkip(0), Q.experimentalTake(this.count))
|
|
||||||
.observe();
|
|
||||||
} else if (rid) {
|
|
||||||
const whereClause = [
|
|
||||||
Q.where('rid', rid),
|
|
||||||
Q.experimentalSortBy('ts', Q.desc),
|
|
||||||
Q.experimentalSkip(0),
|
|
||||||
Q.experimentalTake(this.count)
|
|
||||||
] as (Q.WhereDescription | Q.Or)[];
|
|
||||||
if (!showMessageInMainThread) {
|
|
||||||
whereClause.push(Q.or(Q.where('tmid', null), Q.where('tshow', Q.eq(true))));
|
|
||||||
}
|
|
||||||
this.messagesObservable = db
|
|
||||||
.get('messages')
|
|
||||||
.query(...whereClause)
|
|
||||||
.observe();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rid) {
|
|
||||||
this.unsubscribeMessages();
|
|
||||||
this.messagesSubscription = this.messagesObservable?.subscribe(messages => {
|
|
||||||
if (tmid && this.thread) {
|
|
||||||
messages = [...messages, this.thread];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Since 3.16.0 server version, the backend don't response with messages if
|
|
||||||
* hide system message is enabled
|
|
||||||
*/
|
|
||||||
if (compareServerVersion(serverVersion, 'lowerThan', '3.16.0') || hideSystemMessages.length) {
|
|
||||||
messages = messages.filter(m => !m.t || !hideSystemMessages?.includes(m.t));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.mounted) {
|
|
||||||
this.setState({ messages }, () => this.update());
|
|
||||||
} else {
|
|
||||||
// @ts-ignore
|
|
||||||
this.state.messages = messages;
|
|
||||||
}
|
|
||||||
// TODO: move it away from here
|
|
||||||
this.readThreads();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
reload = () => {
|
|
||||||
this.count = 0;
|
|
||||||
this.query();
|
|
||||||
};
|
|
||||||
|
|
||||||
readThreads = debounce(async () => {
|
|
||||||
const { tmid } = this.props;
|
|
||||||
|
|
||||||
if (tmid) {
|
|
||||||
try {
|
|
||||||
await Services.readThreads(tmid);
|
|
||||||
} catch {
|
|
||||||
// Do nothing
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, 300);
|
|
||||||
|
|
||||||
onEndReached = () => this.query();
|
|
||||||
|
|
||||||
onRefresh = () =>
|
|
||||||
this.setState({ refreshing: true }, async () => {
|
|
||||||
const { messages } = this.state;
|
|
||||||
const { rid, tmid } = this.props;
|
|
||||||
|
|
||||||
if (messages.length) {
|
|
||||||
try {
|
|
||||||
if (tmid) {
|
|
||||||
await loadThreadMessages({ tmid, rid });
|
|
||||||
} else {
|
|
||||||
await loadMissedMessages({ rid, lastOpen: moment().subtract(7, 'days').toDate() });
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
log(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.setState({ refreshing: false });
|
|
||||||
});
|
|
||||||
|
|
||||||
update = () => {
|
|
||||||
if (this.animated) {
|
|
||||||
animateNextTransition();
|
|
||||||
}
|
|
||||||
this.forceUpdate();
|
|
||||||
};
|
|
||||||
|
|
||||||
unsubscribeMessages = () => {
|
|
||||||
if (this.messagesSubscription && this.messagesSubscription.unsubscribe) {
|
|
||||||
this.messagesSubscription.unsubscribe();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
getLastMessage = (): TMessageModel | TThreadMessageModel | null => {
|
|
||||||
const { messages } = this.state;
|
|
||||||
if (messages.length > 0) {
|
|
||||||
return messages[0];
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
};
|
|
||||||
|
|
||||||
handleScrollToIndexFailed: FlatListProps<any>['onScrollToIndexFailed'] = params => {
|
|
||||||
const { listRef } = this.props;
|
|
||||||
listRef.current?.scrollToIndex({ index: params.highestMeasuredFrameIndex, animated: false });
|
|
||||||
};
|
|
||||||
|
|
||||||
jumpToMessage = (messageId: string) =>
|
|
||||||
new Promise<void>(async resolve => {
|
|
||||||
const { messages } = this.state;
|
|
||||||
const { listRef } = this.props;
|
|
||||||
|
|
||||||
// if jump to message was cancelled, reset variables and stop
|
|
||||||
if (this.cancelJump) {
|
|
||||||
this.resetJumpToMessage();
|
|
||||||
return resolve();
|
|
||||||
}
|
|
||||||
this.jumping = true;
|
|
||||||
|
|
||||||
// look for the message on the state
|
|
||||||
const index = messages.findIndex(item => item.id === messageId);
|
|
||||||
|
|
||||||
// if found message, scroll to it
|
|
||||||
if (index > -1) {
|
|
||||||
listRef.current?.scrollToIndex({ index, viewPosition: 0.5, viewOffset: 100 });
|
|
||||||
|
|
||||||
// wait for scroll animation to finish
|
|
||||||
await new Promise(res => setTimeout(res, 300));
|
|
||||||
|
|
||||||
// if message is not visible
|
|
||||||
if (!this.viewableItems?.map(vi => vi.key).includes(messageId)) {
|
|
||||||
await setTimeout(() => resolve(this.jumpToMessage(messageId)), 300);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// if message is visible, highlight it
|
|
||||||
this.setState({ highlightedMessage: messageId });
|
|
||||||
this.clearHighlightedMessageTimeout();
|
|
||||||
// clears highlighted message after some time
|
|
||||||
this.highlightedMessageTimeout = setTimeout(() => {
|
|
||||||
this.setState({ highlightedMessage: null });
|
|
||||||
}, 5000);
|
|
||||||
this.resetJumpToMessage();
|
|
||||||
resolve();
|
|
||||||
} else {
|
|
||||||
// if message not found, wait for scroll to top and then jump to message
|
|
||||||
listRef.current?.scrollToIndex({ index: messages.length - 1, animated: true });
|
|
||||||
await setTimeout(() => resolve(this.jumpToMessage(messageId)), 300);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
resetJumpToMessage = () => {
|
|
||||||
this.cancelJump = false;
|
|
||||||
this.jumping = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
cancelJumpToMessage = () => {
|
|
||||||
if (this.jumping) {
|
|
||||||
this.cancelJump = true;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.resetJumpToMessage();
|
|
||||||
};
|
|
||||||
|
|
||||||
jumpToBottom = () => {
|
|
||||||
const { listRef } = this.props;
|
|
||||||
listRef.current?.scrollToOffset({ offset: -100 });
|
|
||||||
};
|
|
||||||
|
|
||||||
renderFooter = () => {
|
|
||||||
const { rid, loading } = this.props;
|
|
||||||
if (loading && rid) {
|
|
||||||
return <ActivityIndicator />;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
};
|
|
||||||
|
|
||||||
renderItem: FlatListProps<any>['renderItem'] = ({ item, index }) => {
|
|
||||||
const { messages, highlightedMessage } = this.state;
|
|
||||||
const { renderRow } = this.props;
|
|
||||||
return <View style={styles.inverted}>{renderRow(item, messages[index + 1], highlightedMessage)}</View>;
|
|
||||||
};
|
|
||||||
|
|
||||||
onViewableItemsChanged: FlatListProps<any>['onViewableItemsChanged'] = ({ viewableItems }) => {
|
|
||||||
this.viewableItems = viewableItems;
|
|
||||||
};
|
|
||||||
|
|
||||||
render() {
|
|
||||||
console.count(`${this.constructor.name}.render calls`);
|
|
||||||
const { rid, tmid, listRef } = this.props;
|
|
||||||
const { messages, refreshing } = this.state;
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<EmptyRoom rid={rid} length={messages.length} mounted={this.mounted} />
|
<EmptyRoom rid={rid} length={messages.length} />
|
||||||
<RefreshControl refreshing={refreshing} onRefresh={this.onRefresh}>
|
<RefreshControl refreshing={refreshing} onRefresh={refresh}>
|
||||||
<List
|
<List
|
||||||
onScroll={this.onScroll}
|
|
||||||
scrollEventThrottle={16}
|
|
||||||
listRef={listRef}
|
listRef={listRef}
|
||||||
data={messages}
|
data={messages}
|
||||||
renderItem={this.renderItem}
|
renderItem={renderItem}
|
||||||
onEndReached={this.onEndReached}
|
onEndReached={onEndReached}
|
||||||
ListFooterComponent={this.renderFooter}
|
ListFooterComponent={renderFooter}
|
||||||
onScrollToIndexFailed={this.handleScrollToIndexFailed}
|
onScrollToIndexFailed={handleScrollToIndexFailed}
|
||||||
onViewableItemsChanged={this.onViewableItemsChanged}
|
viewabilityConfigCallbackPairs={viewabilityConfigCallbackPairs.current}
|
||||||
viewabilityConfig={this.viewabilityConfig}
|
jumpToBottom={jumpToBottom}
|
||||||
|
isThread={!!tmid}
|
||||||
/>
|
/>
|
||||||
</RefreshControl>
|
</RefreshControl>
|
||||||
<NavBottomFAB y={this.y} onPress={this.jumpToBottom} isThread={!!tmid} />
|
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
);
|
||||||
|
|
||||||
export type ListContainerType = ListContainer;
|
|
||||||
|
|
||||||
export default ListContainer;
|
export default ListContainer;
|
||||||
|
|
|
@ -27,14 +27,6 @@ import { getBadgeColor, isBlocked, makeThreadName } from '../../lib/methods/help
|
||||||
import { isReadOnly } from '../../lib/methods/helpers/isReadOnly';
|
import { isReadOnly } from '../../lib/methods/helpers/isReadOnly';
|
||||||
import { showErrorAlert } from '../../lib/methods/helpers/info';
|
import { showErrorAlert } from '../../lib/methods/helpers/info';
|
||||||
import { withTheme } from '../../theme';
|
import { withTheme } from '../../theme';
|
||||||
import {
|
|
||||||
KEY_COMMAND,
|
|
||||||
handleCommandReplyLatest,
|
|
||||||
handleCommandRoomActions,
|
|
||||||
handleCommandScroll,
|
|
||||||
handleCommandSearchMessages,
|
|
||||||
IKeyCommandEvent
|
|
||||||
} from '../../commands';
|
|
||||||
import { Review } from '../../lib/methods/helpers/review';
|
import { Review } from '../../lib/methods/helpers/review';
|
||||||
import RoomClass from '../../lib/methods/subscriptions/room';
|
import RoomClass from '../../lib/methods/subscriptions/room';
|
||||||
import { getUserSelector } from '../../selectors/login';
|
import { getUserSelector } from '../../selectors/login';
|
||||||
|
@ -56,7 +48,7 @@ import styles from './styles';
|
||||||
import JoinCode, { IJoinCode } from './JoinCode';
|
import JoinCode, { IJoinCode } from './JoinCode';
|
||||||
import UploadProgress from './UploadProgress';
|
import UploadProgress from './UploadProgress';
|
||||||
import ReactionPicker from './ReactionPicker';
|
import ReactionPicker from './ReactionPicker';
|
||||||
import List, { ListContainerType } from './List';
|
import List from './List';
|
||||||
import { ChatsStackParamList } from '../../stacks/types';
|
import { ChatsStackParamList } from '../../stacks/types';
|
||||||
import {
|
import {
|
||||||
IApplicationState,
|
IApplicationState,
|
||||||
|
@ -79,7 +71,6 @@ import {
|
||||||
RoomType
|
RoomType
|
||||||
} from '../../definitions';
|
} from '../../definitions';
|
||||||
import { E2E_MESSAGE_TYPE, E2E_STATUS, MESSAGE_TYPE_ANY_LOAD, MessageTypeLoad, themes } from '../../lib/constants';
|
import { E2E_MESSAGE_TYPE, E2E_STATUS, MESSAGE_TYPE_ANY_LOAD, MessageTypeLoad, themes } from '../../lib/constants';
|
||||||
import { TListRef } from './List/List';
|
|
||||||
import { ModalStackParamList } from '../../stacks/MasterDetailStack/types';
|
import { ModalStackParamList } from '../../stacks/MasterDetailStack/types';
|
||||||
import {
|
import {
|
||||||
callJitsi,
|
callJitsi,
|
||||||
|
@ -96,13 +87,13 @@ import {
|
||||||
canAutoTranslate as canAutoTranslateMethod,
|
canAutoTranslate as canAutoTranslateMethod,
|
||||||
debounce,
|
debounce,
|
||||||
isIOS,
|
isIOS,
|
||||||
isTablet,
|
|
||||||
hasPermission
|
hasPermission
|
||||||
} from '../../lib/methods/helpers';
|
} from '../../lib/methods/helpers';
|
||||||
import { Services } from '../../lib/services';
|
import { Services } from '../../lib/services';
|
||||||
import { withActionSheet, IActionSheetProvider } from '../../containers/ActionSheet';
|
import { withActionSheet, IActionSheetProvider } from '../../containers/ActionSheet';
|
||||||
import { goRoom, TGoRoomItem } from '../../lib/methods/helpers/goRoom';
|
import { goRoom, TGoRoomItem } from '../../lib/methods/helpers/goRoom';
|
||||||
import audioPlayer from '../../lib/methods/audioPlayer';
|
import audioPlayer from '../../lib/methods/audioPlayer';
|
||||||
|
import { IListContainerRef, TListRef } from './List/definitions';
|
||||||
|
|
||||||
type TStateAttrsUpdate = keyof IRoomViewState;
|
type TStateAttrsUpdate = keyof IRoomViewState;
|
||||||
|
|
||||||
|
@ -155,7 +146,6 @@ const roomAttrsUpdate = [
|
||||||
|
|
||||||
interface IRoomViewProps extends IActionSheetProvider, IBaseScreen<ChatsStackParamList, 'RoomView'> {
|
interface IRoomViewProps extends IActionSheetProvider, IBaseScreen<ChatsStackParamList, 'RoomView'> {
|
||||||
user: Pick<ILoggedUser, 'id' | 'username' | 'token' | 'showMessageInMainThread'>;
|
user: Pick<ILoggedUser, 'id' | 'username' | 'token' | 'showMessageInMainThread'>;
|
||||||
appState: string;
|
|
||||||
useRealName?: boolean;
|
useRealName?: boolean;
|
||||||
isAuthenticated: boolean;
|
isAuthenticated: boolean;
|
||||||
Message_GroupingPeriod?: number;
|
Message_GroupingPeriod?: number;
|
||||||
|
@ -215,8 +205,10 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
private jumpToMessageId?: string;
|
private jumpToMessageId?: string;
|
||||||
private jumpToThreadId?: string;
|
private jumpToThreadId?: string;
|
||||||
private messagebox: React.RefObject<MessageBoxType>;
|
private messagebox: React.RefObject<MessageBoxType>;
|
||||||
private list: React.RefObject<ListContainerType>;
|
|
||||||
private joinCode: React.RefObject<IJoinCode>;
|
private joinCode: React.RefObject<IJoinCode>;
|
||||||
|
// ListContainer component
|
||||||
|
private list: React.RefObject<IListContainerRef>;
|
||||||
|
// FlatList inside ListContainer
|
||||||
private flatList: TListRef;
|
private flatList: TListRef;
|
||||||
private mounted: boolean;
|
private mounted: boolean;
|
||||||
private offset = 0;
|
private offset = 0;
|
||||||
|
@ -225,8 +217,6 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
private queryUnreads?: Subscription;
|
private queryUnreads?: Subscription;
|
||||||
private retryInit = 0;
|
private retryInit = 0;
|
||||||
private retryInitTimeout?: ReturnType<typeof setTimeout>;
|
private retryInitTimeout?: ReturnType<typeof setTimeout>;
|
||||||
private retryFindCount = 0;
|
|
||||||
private retryFindTimeout?: ReturnType<typeof setTimeout>;
|
|
||||||
private messageErrorActions?: IMessageErrorActions | null;
|
private messageErrorActions?: IMessageErrorActions | null;
|
||||||
private messageActions?: IMessageActions | null;
|
private messageActions?: IMessageActions | null;
|
||||||
private replyInDM?: TAnyMessageModel;
|
private replyInDM?: TAnyMessageModel;
|
||||||
|
@ -240,8 +230,6 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
|
|
||||||
constructor(props: IRoomViewProps) {
|
constructor(props: IRoomViewProps) {
|
||||||
super(props);
|
super(props);
|
||||||
console.time(`${this.constructor.name} init`);
|
|
||||||
console.time(`${this.constructor.name} mount`);
|
|
||||||
this.rid = props.route.params?.rid;
|
this.rid = props.route.params?.rid;
|
||||||
this.t = props.route.params?.t;
|
this.t = props.route.params?.t;
|
||||||
/**
|
/**
|
||||||
|
@ -301,8 +289,8 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
|
|
||||||
this.messagebox = React.createRef();
|
this.messagebox = React.createRef();
|
||||||
this.list = React.createRef();
|
this.list = React.createRef();
|
||||||
this.joinCode = React.createRef();
|
|
||||||
this.flatList = React.createRef();
|
this.flatList = React.createRef();
|
||||||
|
this.joinCode = React.createRef();
|
||||||
this.mounted = false;
|
this.mounted = false;
|
||||||
|
|
||||||
if (this.t === 'l') {
|
if (this.t === 'l') {
|
||||||
|
@ -313,7 +301,6 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
if (this.rid && !this.tmid) {
|
if (this.rid && !this.tmid) {
|
||||||
this.sub = new RoomClass(this.rid);
|
this.sub = new RoomClass(this.rid);
|
||||||
}
|
}
|
||||||
console.timeEnd(`${this.constructor.name} init`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
|
@ -342,23 +329,16 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
this.onReplyInit(this.replyInDM, false);
|
this.onReplyInit(this.replyInDM, false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
if (isTablet) {
|
|
||||||
EventEmitter.addEventListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
EventEmitter.addEventListener('ROOM_REMOVED', this.handleRoomRemoved);
|
EventEmitter.addEventListener('ROOM_REMOVED', this.handleRoomRemoved);
|
||||||
console.timeEnd(`${this.constructor.name} mount`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldComponentUpdate(nextProps: IRoomViewProps, nextState: IRoomViewState) {
|
shouldComponentUpdate(nextProps: IRoomViewProps, nextState: IRoomViewState) {
|
||||||
const { state } = this;
|
const { state } = this;
|
||||||
const { roomUpdate, member, isOnHold } = state;
|
const { roomUpdate, member, isOnHold } = state;
|
||||||
const { appState, theme, insets, route } = this.props;
|
const { theme, insets, route } = this.props;
|
||||||
if (theme !== nextProps.theme) {
|
if (theme !== nextProps.theme) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (appState !== nextProps.appState) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (member.statusText !== nextState.member.statusText) {
|
if (member.statusText !== nextState.member.statusText) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -380,7 +360,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
|
|
||||||
componentDidUpdate(prevProps: IRoomViewProps, prevState: IRoomViewState) {
|
componentDidUpdate(prevProps: IRoomViewProps, prevState: IRoomViewState) {
|
||||||
const { roomUpdate, joined } = this.state;
|
const { roomUpdate, joined } = this.state;
|
||||||
const { appState, insets, route } = this.props;
|
const { insets, route } = this.props;
|
||||||
|
|
||||||
if (route?.params?.jumpToMessageId && route?.params?.jumpToMessageId !== prevProps.route?.params?.jumpToMessageId) {
|
if (route?.params?.jumpToMessageId && route?.params?.jumpToMessageId !== prevProps.route?.params?.jumpToMessageId) {
|
||||||
this.jumpToMessage(route?.params?.jumpToMessageId);
|
this.jumpToMessage(route?.params?.jumpToMessageId);
|
||||||
|
@ -390,12 +370,6 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
this.navToThread({ tmid: route?.params?.jumpToThreadId });
|
this.navToThread({ tmid: route?.params?.jumpToThreadId });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (appState === 'foreground' && appState !== prevProps.appState && this.rid) {
|
|
||||||
// Fire List.query() just to keep observables working
|
|
||||||
if (this.list && this.list.current && !isIOS) {
|
|
||||||
this.list.current?.query();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// If it's a livechat room
|
// If it's a livechat room
|
||||||
if (this.t === 'l') {
|
if (this.t === 'l') {
|
||||||
if (
|
if (
|
||||||
|
@ -475,11 +449,7 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
clearTimeout(this.retryInitTimeout);
|
clearTimeout(this.retryInitTimeout);
|
||||||
}
|
}
|
||||||
EventEmitter.removeListener('connected', this.handleConnected);
|
EventEmitter.removeListener('connected', this.handleConnected);
|
||||||
if (isTablet) {
|
|
||||||
EventEmitter.removeListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
EventEmitter.removeListener('ROOM_REMOVED', this.handleRoomRemoved);
|
EventEmitter.removeListener('ROOM_REMOVED', this.handleRoomRemoved);
|
||||||
console.countReset(`${this.constructor.name}.render calls`);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
canForwardGuest = async () => {
|
canForwardGuest = async () => {
|
||||||
|
@ -535,6 +505,18 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
return room.t === 'l';
|
return room.t === 'l';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get hideSystemMessages() {
|
||||||
|
const { sysMes } = this.state.room;
|
||||||
|
const { Hide_System_Messages } = this.props;
|
||||||
|
|
||||||
|
// FIXME: handle servers with version < 3.0.0
|
||||||
|
let hideSystemMessages = Array.isArray(sysMes) ? sysMes : Hide_System_Messages;
|
||||||
|
if (!Array.isArray(hideSystemMessages)) {
|
||||||
|
hideSystemMessages = [];
|
||||||
|
}
|
||||||
|
return hideSystemMessages ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
setHeader = () => {
|
setHeader = () => {
|
||||||
const { room, unreadsCount, roomUserId, joined, canForwardGuest, canReturnQueue, canPlaceLivechatOnHold } = this.state;
|
const { room, unreadsCount, roomUserId, joined, canForwardGuest, canReturnQueue, canPlaceLivechatOnHold } = this.state;
|
||||||
const { navigation, isMasterDetail, theme, baseUrl, user, route } = this.props;
|
const { navigation, isMasterDetail, theme, baseUrl, user, route } = this.props;
|
||||||
|
@ -1067,9 +1049,6 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
const { rid } = this.state.room;
|
const { rid } = this.state.room;
|
||||||
const { user } = this.props;
|
const { user } = this.props;
|
||||||
sendMessage(rid, message, this.tmid || tmid, user, tshow).then(() => {
|
sendMessage(rid, message, this.tmid || tmid, user, tshow).then(() => {
|
||||||
if (this.list && this.list.current) {
|
|
||||||
this.list.current?.update();
|
|
||||||
}
|
|
||||||
this.setLastOpen(null);
|
this.setLastOpen(null);
|
||||||
Review.pushPositiveEvent();
|
Review.pushPositiveEvent();
|
||||||
});
|
});
|
||||||
|
@ -1255,28 +1234,6 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
handleCommands = ({ event }: { event: IKeyCommandEvent }) => {
|
|
||||||
if (this.rid) {
|
|
||||||
const { input } = event;
|
|
||||||
if (handleCommandScroll(event)) {
|
|
||||||
const offset = input === 'UIKeyInputUpArrow' ? 100 : -100;
|
|
||||||
this.offset += offset;
|
|
||||||
this.flatList?.current?.scrollToOffset({ offset: this.offset });
|
|
||||||
} else if (handleCommandRoomActions(event)) {
|
|
||||||
this.goRoomActionsView();
|
|
||||||
} else if (handleCommandSearchMessages(event)) {
|
|
||||||
this.goRoomActionsView('SearchMessagesView');
|
|
||||||
} else if (handleCommandReplyLatest(event)) {
|
|
||||||
if (this.list && this.list.current) {
|
|
||||||
const message = this.list.current.getLastMessage();
|
|
||||||
if (message) {
|
|
||||||
this.onReplyInit(message, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
blockAction = ({
|
blockAction = ({
|
||||||
actionId,
|
actionId,
|
||||||
appId,
|
appId,
|
||||||
|
@ -1537,17 +1494,13 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
console.count(`${this.constructor.name}.render calls`);
|
const { room, loading } = this.state;
|
||||||
const { room, loading, canAutoTranslate } = this.state;
|
const { user, baseUrl, theme, width, serverVersion } = this.props;
|
||||||
const { user, baseUrl, theme, navigation, Hide_System_Messages, width, serverVersion } = this.props;
|
|
||||||
const { rid, t } = room;
|
const { rid, t } = room;
|
||||||
let sysMes;
|
|
||||||
let bannerClosed;
|
let bannerClosed;
|
||||||
let announcement;
|
let announcement;
|
||||||
let tunread;
|
|
||||||
let ignored;
|
|
||||||
if ('id' in room) {
|
if ('id' in room) {
|
||||||
({ sysMes, bannerClosed, announcement, tunread, ignored } = room);
|
({ bannerClosed, announcement } = room);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -1559,16 +1512,11 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
listRef={this.flatList}
|
listRef={this.flatList}
|
||||||
rid={rid}
|
rid={rid}
|
||||||
tmid={this.tmid}
|
tmid={this.tmid}
|
||||||
tunread={tunread}
|
|
||||||
ignored={ignored}
|
|
||||||
renderRow={this.renderItem}
|
renderRow={this.renderItem}
|
||||||
loading={loading}
|
loading={loading}
|
||||||
navigation={navigation}
|
hideSystemMessages={this.hideSystemMessages}
|
||||||
hideSystemMessages={Array.isArray(sysMes) ? sysMes : Hide_System_Messages}
|
|
||||||
showMessageInMainThread={user.showMessageInMainThread ?? false}
|
showMessageInMainThread={user.showMessageInMainThread ?? false}
|
||||||
serverVersion={serverVersion}
|
serverVersion={serverVersion}
|
||||||
autoTranslateRoom={canAutoTranslate && 'id' in room && room.autoTranslate}
|
|
||||||
autoTranslateLanguage={'id' in room ? room.autoTranslateLanguage : undefined}
|
|
||||||
/>
|
/>
|
||||||
{this.renderFooter()}
|
{this.renderFooter()}
|
||||||
{this.renderActions()}
|
{this.renderActions()}
|
||||||
|
@ -1582,7 +1530,6 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
||||||
const mapStateToProps = (state: IApplicationState) => ({
|
const mapStateToProps = (state: IApplicationState) => ({
|
||||||
user: getUserSelector(state),
|
user: getUserSelector(state),
|
||||||
isMasterDetail: state.app.isMasterDetail,
|
isMasterDetail: state.app.isMasterDetail,
|
||||||
appState: state.app.ready && state.app.foreground ? 'foreground' : 'background',
|
|
||||||
useRealName: state.settings.UI_Use_Real_Name as boolean,
|
useRealName: state.settings.UI_Use_Real_Name as boolean,
|
||||||
isAuthenticated: state.login.isAuthenticated,
|
isAuthenticated: state.login.isAuthenticated,
|
||||||
Message_GroupingPeriod: state.settings.Message_GroupingPeriod as number,
|
Message_GroupingPeriod: state.settings.Message_GroupingPeriod as number,
|
||||||
|
|
|
@ -3,9 +3,6 @@ import { connect } from 'react-redux';
|
||||||
import { Dispatch } from 'redux';
|
import { Dispatch } from 'redux';
|
||||||
|
|
||||||
import { toggleServerDropdown, closeServerDropdown, setSearch } from '../../../actions/rooms';
|
import { toggleServerDropdown, closeServerDropdown, setSearch } from '../../../actions/rooms';
|
||||||
import EventEmitter from '../../../lib/methods/helpers/events';
|
|
||||||
import { KEY_COMMAND, handleCommandOpenServerDropdown, IKeyCommandEvent } from '../../../commands';
|
|
||||||
import { isTablet } from '../../../lib/methods/helpers';
|
|
||||||
import { events, logEvent } from '../../../lib/methods/helpers/log';
|
import { events, logEvent } from '../../../lib/methods/helpers/log';
|
||||||
import Header from './Header';
|
import Header from './Header';
|
||||||
import { IApplicationState } from '../../../definitions';
|
import { IApplicationState } from '../../../definitions';
|
||||||
|
@ -22,25 +19,6 @@ interface IRoomsListHeaderViewProps {
|
||||||
}
|
}
|
||||||
|
|
||||||
class RoomsListHeaderView extends PureComponent<IRoomsListHeaderViewProps, any> {
|
class RoomsListHeaderView extends PureComponent<IRoomsListHeaderViewProps, any> {
|
||||||
componentDidMount() {
|
|
||||||
if (isTablet) {
|
|
||||||
EventEmitter.addEventListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
componentWillUnmount() {
|
|
||||||
if (isTablet) {
|
|
||||||
EventEmitter.removeListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// eslint-disable-next-line react/sort-comp
|
|
||||||
handleCommands = ({ event }: { event: IKeyCommandEvent }) => {
|
|
||||||
if (handleCommandOpenServerDropdown(event)) {
|
|
||||||
this.onPress();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
onSearchChangeText = (text: string) => {
|
onSearchChangeText = (text: string) => {
|
||||||
const { dispatch } = this.props;
|
const { dispatch } = this.props;
|
||||||
dispatch(setSearch(text.trim()));
|
dispatch(setSearch(text.trim()));
|
||||||
|
|
|
@ -15,8 +15,6 @@ import ServerItem from '../../containers/ServerItem';
|
||||||
import database from '../../lib/database';
|
import database from '../../lib/database';
|
||||||
import { themes, TOKEN_KEY } from '../../lib/constants';
|
import { themes, TOKEN_KEY } from '../../lib/constants';
|
||||||
import { withTheme } from '../../theme';
|
import { withTheme } from '../../theme';
|
||||||
import { KEY_COMMAND, handleCommandSelectServer, IKeyCommandEvent } from '../../commands';
|
|
||||||
import { isTablet } from '../../lib/methods/helpers';
|
|
||||||
import { localAuthenticate } from '../../lib/methods/helpers/localAuthentication';
|
import { localAuthenticate } from '../../lib/methods/helpers/localAuthentication';
|
||||||
import { showConfirmationAlert } from '../../lib/methods/helpers/info';
|
import { showConfirmationAlert } from '../../lib/methods/helpers/info';
|
||||||
import log, { events, logEvent } from '../../lib/methods/helpers/log';
|
import log, { events, logEvent } from '../../lib/methods/helpers/log';
|
||||||
|
@ -69,9 +67,6 @@ class ServerDropdown extends Component<IServerDropdownProps, IServerDropdownStat
|
||||||
easing: Easing.inOut(Easing.quad),
|
easing: Easing.inOut(Easing.quad),
|
||||||
useNativeDriver: true
|
useNativeDriver: true
|
||||||
}).start();
|
}).start();
|
||||||
if (isTablet) {
|
|
||||||
EventEmitter.addEventListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidUpdate(prevProps: IServerDropdownProps) {
|
componentDidUpdate(prevProps: IServerDropdownProps) {
|
||||||
|
@ -89,9 +84,6 @@ class ServerDropdown extends Component<IServerDropdownProps, IServerDropdownStat
|
||||||
if (this.subscription && this.subscription.unsubscribe) {
|
if (this.subscription && this.subscription.unsubscribe) {
|
||||||
this.subscription.unsubscribe();
|
this.subscription.unsubscribe();
|
||||||
}
|
}
|
||||||
if (isTablet) {
|
|
||||||
EventEmitter.removeListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
close = () => {
|
close = () => {
|
||||||
|
@ -167,18 +159,6 @@ class ServerDropdown extends Component<IServerDropdownProps, IServerDropdownStat
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
handleCommands = ({ event }: { event: IKeyCommandEvent }) => {
|
|
||||||
const { servers } = this.state;
|
|
||||||
const { navigation } = this.props;
|
|
||||||
const { input } = event as unknown as { input: number };
|
|
||||||
if (handleCommandSelectServer(event)) {
|
|
||||||
if (servers[input - 1]) {
|
|
||||||
this.select(servers[input - 1].id);
|
|
||||||
navigation.navigate('RoomView');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
renderServer = ({ item }: { item: { id: string; iconURL: string; name: string; version: string } }) => {
|
renderServer = ({ item }: { item: { id: string; iconURL: string; name: string; version: string } }) => {
|
||||||
const { server } = this.props;
|
const { server } = this.props;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { BackHandler, FlatList, Keyboard, NativeEventSubscription, RefreshControl, Text, View } from 'react-native';
|
import { BackHandler, FlatList, Keyboard, NativeEventSubscription, RefreshControl, Text, View } from 'react-native';
|
||||||
import { batch, connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { dequal } from 'dequal';
|
import { dequal } from 'dequal';
|
||||||
import { Q } from '@nozbe/watermelondb';
|
import { Q } from '@nozbe/watermelondb';
|
||||||
import { withSafeAreaInsets } from 'react-native-safe-area-context';
|
import { withSafeAreaInsets } from 'react-native-safe-area-context';
|
||||||
|
@ -15,32 +15,18 @@ import RoomItem, { ROW_HEIGHT, ROW_HEIGHT_CONDENSED } from '../../containers/Roo
|
||||||
import log, { logEvent, events } from '../../lib/methods/helpers/log';
|
import log, { logEvent, events } from '../../lib/methods/helpers/log';
|
||||||
import I18n from '../../i18n';
|
import I18n from '../../i18n';
|
||||||
import { closeSearchHeader, closeServerDropdown, openSearchHeader, roomsRequest } from '../../actions/rooms';
|
import { closeSearchHeader, closeServerDropdown, openSearchHeader, roomsRequest } from '../../actions/rooms';
|
||||||
import { appStart } from '../../actions/app';
|
|
||||||
import * as HeaderButton from '../../containers/HeaderButton';
|
import * as HeaderButton from '../../containers/HeaderButton';
|
||||||
import StatusBar from '../../containers/StatusBar';
|
import StatusBar from '../../containers/StatusBar';
|
||||||
import ActivityIndicator from '../../containers/ActivityIndicator';
|
import ActivityIndicator from '../../containers/ActivityIndicator';
|
||||||
import { serverInitAdd } from '../../actions/server';
|
|
||||||
import { animateNextTransition } from '../../lib/methods/helpers/layoutAnimation';
|
import { animateNextTransition } from '../../lib/methods/helpers/layoutAnimation';
|
||||||
import { TSupportedThemes, withTheme } from '../../theme';
|
import { TSupportedThemes, withTheme } from '../../theme';
|
||||||
import EventEmitter from '../../lib/methods/helpers/events';
|
|
||||||
import { themedHeader } from '../../lib/methods/helpers/navigation';
|
import { themedHeader } from '../../lib/methods/helpers/navigation';
|
||||||
import {
|
|
||||||
KEY_COMMAND,
|
|
||||||
handleCommandAddNewServer,
|
|
||||||
handleCommandNextRoom,
|
|
||||||
handleCommandPreviousRoom,
|
|
||||||
handleCommandSearching,
|
|
||||||
handleCommandSelectRoom,
|
|
||||||
handleCommandShowNewMessage,
|
|
||||||
handleCommandShowPreferences,
|
|
||||||
IKeyCommandEvent
|
|
||||||
} from '../../commands';
|
|
||||||
import { getUserSelector } from '../../selectors/login';
|
import { getUserSelector } from '../../selectors/login';
|
||||||
import { goRoom } from '../../lib/methods/helpers/goRoom';
|
import { goRoom } from '../../lib/methods/helpers/goRoom';
|
||||||
import SafeAreaView from '../../containers/SafeAreaView';
|
import SafeAreaView from '../../containers/SafeAreaView';
|
||||||
import { withDimensions } from '../../dimensions';
|
import { withDimensions } from '../../dimensions';
|
||||||
import { getInquiryQueueSelector } from '../../ee/omnichannel/selectors/inquiry';
|
import { getInquiryQueueSelector } from '../../ee/omnichannel/selectors/inquiry';
|
||||||
import { IApplicationState, ISubscription, IUser, RootEnum, SubscriptionType, TSubscriptionModel } from '../../definitions';
|
import { IApplicationState, ISubscription, IUser, SubscriptionType, TSubscriptionModel } from '../../definitions';
|
||||||
import styles from './styles';
|
import styles from './styles';
|
||||||
import ServerDropdown from './ServerDropdown';
|
import ServerDropdown from './ServerDropdown';
|
||||||
import ListHeader, { TEncryptionBanner } from './ListHeader';
|
import ListHeader, { TEncryptionBanner } from './ListHeader';
|
||||||
|
@ -213,9 +199,6 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
|
||||||
this.handleHasPermission();
|
this.handleHasPermission();
|
||||||
this.mounted = true;
|
this.mounted = true;
|
||||||
|
|
||||||
if (isTablet) {
|
|
||||||
EventEmitter.addEventListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
this.unsubscribeFocus = navigation.addListener('focus', () => {
|
this.unsubscribeFocus = navigation.addListener('focus', () => {
|
||||||
this.animated = true;
|
this.animated = true;
|
||||||
// Check if there were changes with sort preference, then call getSubscription to remount the list
|
// Check if there were changes with sort preference, then call getSubscription to remount the list
|
||||||
|
@ -401,9 +384,6 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
|
||||||
if (this.backHandler && this.backHandler.remove) {
|
if (this.backHandler && this.backHandler.remove) {
|
||||||
this.backHandler.remove();
|
this.backHandler.remove();
|
||||||
}
|
}
|
||||||
if (isTablet) {
|
|
||||||
EventEmitter.removeListener(KEY_COMMAND, this.handleCommands);
|
|
||||||
}
|
|
||||||
console.countReset(`${this.constructor.name}.render calls`);
|
console.countReset(`${this.constructor.name}.render calls`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -797,57 +777,6 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
|
||||||
goRoom({ item, isMasterDetail });
|
goRoom({ item, isMasterDetail });
|
||||||
};
|
};
|
||||||
|
|
||||||
goRoomByIndex = (index: number) => {
|
|
||||||
const { chats } = this.state;
|
|
||||||
const { isMasterDetail } = this.props;
|
|
||||||
const filteredChats = chats ? chats.filter(c => !c.separator) : [];
|
|
||||||
const room = filteredChats[index - 1];
|
|
||||||
if (room) {
|
|
||||||
this.goRoom({ item: room, isMasterDetail });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
findOtherRoom = (index: number, sign: number): ISubscription | void => {
|
|
||||||
const { chats } = this.state;
|
|
||||||
const otherIndex = index + sign;
|
|
||||||
const otherRoom = chats?.length ? chats[otherIndex] : ({} as IRoomItem);
|
|
||||||
if (!otherRoom) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (otherRoom.separator) {
|
|
||||||
return this.findOtherRoom(otherIndex, sign);
|
|
||||||
}
|
|
||||||
return otherRoom;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Go to previous or next room based on sign (-1 or 1)
|
|
||||||
// It's used by iPad key commands
|
|
||||||
goOtherRoom = (sign: number) => {
|
|
||||||
const { item } = this.state;
|
|
||||||
if (!item) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Don't run during search
|
|
||||||
const { search } = this.state;
|
|
||||||
if (search && search?.length > 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const { chats } = this.state;
|
|
||||||
const { isMasterDetail } = this.props;
|
|
||||||
|
|
||||||
if (!chats?.length) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const index = chats.findIndex(c => c.rid === item.rid);
|
|
||||||
const otherRoom = this.findOtherRoom(index, sign);
|
|
||||||
if (otherRoom) {
|
|
||||||
this.goRoom({ item: otherRoom, isMasterDetail });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
goToNewMessage = () => {
|
goToNewMessage = () => {
|
||||||
logEvent(events.RL_GO_NEW_MSG);
|
logEvent(events.RL_GO_NEW_MSG);
|
||||||
const { navigation, isMasterDetail } = this.props;
|
const { navigation, isMasterDetail } = this.props;
|
||||||
|
@ -873,33 +802,6 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
handleCommands = ({ event }: { event: IKeyCommandEvent }) => {
|
|
||||||
const { navigation, server, isMasterDetail, dispatch } = this.props;
|
|
||||||
const { input } = event;
|
|
||||||
if (handleCommandShowPreferences(event)) {
|
|
||||||
navigation.navigate('SettingsView');
|
|
||||||
} else if (handleCommandSearching(event)) {
|
|
||||||
this.initSearching();
|
|
||||||
} else if (handleCommandSelectRoom(event)) {
|
|
||||||
this.goRoomByIndex(input);
|
|
||||||
} else if (handleCommandPreviousRoom(event)) {
|
|
||||||
this.goOtherRoom(-1);
|
|
||||||
} else if (handleCommandNextRoom(event)) {
|
|
||||||
this.goOtherRoom(1);
|
|
||||||
} else if (handleCommandShowNewMessage(event)) {
|
|
||||||
if (isMasterDetail) {
|
|
||||||
navigation.navigate('ModalStackNavigator', { screen: 'NewMessageView' });
|
|
||||||
} else {
|
|
||||||
navigation.navigate('NewMessageStack');
|
|
||||||
}
|
|
||||||
} else if (handleCommandAddNewServer(event)) {
|
|
||||||
batch(() => {
|
|
||||||
dispatch(appStart({ root: RootEnum.ROOT_OUTSIDE }));
|
|
||||||
dispatch(serverInitAdd(server));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
onRefresh = () => {
|
onRefresh = () => {
|
||||||
const { searching } = this.state;
|
const { searching } = this.state;
|
||||||
const { dispatch } = this.props;
|
const { dispatch } = this.props;
|
||||||
|
|
496
ios/Podfile.lock
496
ios/Podfile.lock
|
@ -30,14 +30,14 @@ PODS:
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- EXVideoThumbnails (6.3.0):
|
- EXVideoThumbnails (6.3.0):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- FBLazyVector (0.68.6)
|
- FBLazyVector (0.68.7)
|
||||||
- FBReactNativeSpec (0.68.6):
|
- FBReactNativeSpec (0.68.7):
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- RCTRequired (= 0.68.6)
|
- RCTRequired (= 0.68.7)
|
||||||
- RCTTypeSafety (= 0.68.6)
|
- RCTTypeSafety (= 0.68.7)
|
||||||
- React-Core (= 0.68.6)
|
- React-Core (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- Firebase/AnalyticsWithoutAdIdSupport (8.15.0):
|
- Firebase/AnalyticsWithoutAdIdSupport (8.15.0):
|
||||||
- Firebase/CoreOnly
|
- Firebase/CoreOnly
|
||||||
- FirebaseAnalytics/WithoutAdIdSupport (~> 8.15.0)
|
- FirebaseAnalytics/WithoutAdIdSupport (~> 8.15.0)
|
||||||
|
@ -109,8 +109,6 @@ PODS:
|
||||||
- GoogleUtilities/Logger
|
- GoogleUtilities/Logger
|
||||||
- hermes-engine (0.11.0)
|
- hermes-engine (0.11.0)
|
||||||
- iosMath (0.9.4)
|
- iosMath (0.9.4)
|
||||||
- KeyCommands (2.0.3):
|
|
||||||
- React
|
|
||||||
- libevent (2.1.12)
|
- libevent (2.1.12)
|
||||||
- libwebp (1.2.4):
|
- libwebp (1.2.4):
|
||||||
- libwebp/demux (= 1.2.4)
|
- libwebp/demux (= 1.2.4)
|
||||||
|
@ -148,212 +146,212 @@ PODS:
|
||||||
- fmt (~> 6.2.1)
|
- fmt (~> 6.2.1)
|
||||||
- glog
|
- glog
|
||||||
- libevent
|
- libevent
|
||||||
- RCTRequired (0.68.6)
|
- RCTRequired (0.68.7)
|
||||||
- RCTTypeSafety (0.68.6):
|
- RCTTypeSafety (0.68.7):
|
||||||
- FBLazyVector (= 0.68.6)
|
- FBLazyVector (= 0.68.7)
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- RCTRequired (= 0.68.6)
|
- RCTRequired (= 0.68.7)
|
||||||
- React-Core (= 0.68.6)
|
- React-Core (= 0.68.7)
|
||||||
- React (0.68.6):
|
- React (0.68.7):
|
||||||
- React-Core (= 0.68.6)
|
- React-Core (= 0.68.7)
|
||||||
- React-Core/DevSupport (= 0.68.6)
|
- React-Core/DevSupport (= 0.68.7)
|
||||||
- React-Core/RCTWebSocket (= 0.68.6)
|
- React-Core/RCTWebSocket (= 0.68.7)
|
||||||
- React-RCTActionSheet (= 0.68.6)
|
- React-RCTActionSheet (= 0.68.7)
|
||||||
- React-RCTAnimation (= 0.68.6)
|
- React-RCTAnimation (= 0.68.7)
|
||||||
- React-RCTBlob (= 0.68.6)
|
- React-RCTBlob (= 0.68.7)
|
||||||
- React-RCTImage (= 0.68.6)
|
- React-RCTImage (= 0.68.7)
|
||||||
- React-RCTLinking (= 0.68.6)
|
- React-RCTLinking (= 0.68.7)
|
||||||
- React-RCTNetwork (= 0.68.6)
|
- React-RCTNetwork (= 0.68.7)
|
||||||
- React-RCTSettings (= 0.68.6)
|
- React-RCTSettings (= 0.68.7)
|
||||||
- React-RCTText (= 0.68.6)
|
- React-RCTText (= 0.68.7)
|
||||||
- React-RCTVibration (= 0.68.6)
|
- React-RCTVibration (= 0.68.7)
|
||||||
- React-callinvoker (0.68.6)
|
- React-callinvoker (0.68.7)
|
||||||
- React-Codegen (0.68.6):
|
- React-Codegen (0.68.7):
|
||||||
- FBReactNativeSpec (= 0.68.6)
|
- FBReactNativeSpec (= 0.68.7)
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- RCTRequired (= 0.68.6)
|
- RCTRequired (= 0.68.7)
|
||||||
- RCTTypeSafety (= 0.68.6)
|
- RCTTypeSafety (= 0.68.7)
|
||||||
- React-Core (= 0.68.6)
|
- React-Core (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- React-Core (0.68.6):
|
- React-Core (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default (= 0.68.6)
|
- React-Core/Default (= 0.68.7)
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/CoreModulesHeaders (0.68.6):
|
- React-Core/CoreModulesHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/Default (0.68.6):
|
- React-Core/Default (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/DevSupport (0.68.6):
|
- React-Core/DevSupport (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default (= 0.68.6)
|
- React-Core/Default (= 0.68.7)
|
||||||
- React-Core/RCTWebSocket (= 0.68.6)
|
- React-Core/RCTWebSocket (= 0.68.7)
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-jsinspector (= 0.68.6)
|
- React-jsinspector (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTActionSheetHeaders (0.68.6):
|
- React-Core/RCTActionSheetHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTAnimationHeaders (0.68.6):
|
- React-Core/RCTAnimationHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTBlobHeaders (0.68.6):
|
- React-Core/RCTBlobHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTImageHeaders (0.68.6):
|
- React-Core/RCTImageHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTLinkingHeaders (0.68.6):
|
- React-Core/RCTLinkingHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTNetworkHeaders (0.68.6):
|
- React-Core/RCTNetworkHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTSettingsHeaders (0.68.6):
|
- React-Core/RCTSettingsHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTTextHeaders (0.68.6):
|
- React-Core/RCTTextHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTVibrationHeaders (0.68.6):
|
- React-Core/RCTVibrationHeaders (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default
|
- React-Core/Default
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-Core/RCTWebSocket (0.68.6):
|
- React-Core/RCTWebSocket (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Core/Default (= 0.68.6)
|
- React-Core/Default (= 0.68.7)
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- Yoga
|
- Yoga
|
||||||
- React-CoreModules (0.68.6):
|
- React-CoreModules (0.68.7):
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- RCTTypeSafety (= 0.68.6)
|
- RCTTypeSafety (= 0.68.7)
|
||||||
- React-Codegen (= 0.68.6)
|
- React-Codegen (= 0.68.7)
|
||||||
- React-Core/CoreModulesHeaders (= 0.68.6)
|
- React-Core/CoreModulesHeaders (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-RCTImage (= 0.68.6)
|
- React-RCTImage (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- React-cxxreact (0.68.6):
|
- React-cxxreact (0.68.7):
|
||||||
- boost (= 1.76.0)
|
- boost (= 1.76.0)
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-callinvoker (= 0.68.6)
|
- React-callinvoker (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsinspector (= 0.68.6)
|
- React-jsinspector (= 0.68.7)
|
||||||
- React-logger (= 0.68.6)
|
- React-logger (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- React-runtimeexecutor (= 0.68.6)
|
- React-runtimeexecutor (= 0.68.7)
|
||||||
- React-hermes (0.68.6):
|
- React-hermes (0.68.7):
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- glog
|
- glog
|
||||||
- hermes-engine
|
- hermes-engine
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- RCT-Folly/Futures (= 2021.06.28.00-v2)
|
- RCT-Folly/Futures (= 2021.06.28.00-v2)
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-jsiexecutor (= 0.68.6)
|
- React-jsiexecutor (= 0.68.7)
|
||||||
- React-jsinspector (= 0.68.6)
|
- React-jsinspector (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- React-jsi (0.68.6):
|
- React-jsi (0.68.7):
|
||||||
- boost (= 1.76.0)
|
- boost (= 1.76.0)
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-jsi/Default (= 0.68.6)
|
- React-jsi/Default (= 0.68.7)
|
||||||
- React-jsi/Default (0.68.6):
|
- React-jsi/Default (0.68.7):
|
||||||
- boost (= 1.76.0)
|
- boost (= 1.76.0)
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-jsiexecutor (0.68.6):
|
- React-jsiexecutor (0.68.7):
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- React-jsinspector (0.68.6)
|
- React-jsinspector (0.68.7)
|
||||||
- React-logger (0.68.6):
|
- React-logger (0.68.7):
|
||||||
- glog
|
- glog
|
||||||
- react-native-background-timer (2.4.1):
|
- react-native-background-timer (2.4.1):
|
||||||
- React-Core
|
- React-Core
|
||||||
|
@ -385,100 +383,100 @@ PODS:
|
||||||
- React-Core
|
- React-Core
|
||||||
- react-native-webview (11.26.1):
|
- react-native-webview (11.26.1):
|
||||||
- React-Core
|
- React-Core
|
||||||
- React-perflogger (0.68.6)
|
- React-perflogger (0.68.7)
|
||||||
- React-RCTActionSheet (0.68.6):
|
- React-RCTActionSheet (0.68.7):
|
||||||
- React-Core/RCTActionSheetHeaders (= 0.68.6)
|
- React-Core/RCTActionSheetHeaders (= 0.68.7)
|
||||||
- React-RCTAnimation (0.68.6):
|
- React-RCTAnimation (0.68.7):
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- RCTTypeSafety (= 0.68.6)
|
- RCTTypeSafety (= 0.68.7)
|
||||||
- React-Codegen (= 0.68.6)
|
- React-Codegen (= 0.68.7)
|
||||||
- React-Core/RCTAnimationHeaders (= 0.68.6)
|
- React-Core/RCTAnimationHeaders (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- React-RCTBlob (0.68.6):
|
- React-RCTBlob (0.68.7):
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Codegen (= 0.68.6)
|
- React-Codegen (= 0.68.7)
|
||||||
- React-Core/RCTBlobHeaders (= 0.68.6)
|
- React-Core/RCTBlobHeaders (= 0.68.7)
|
||||||
- React-Core/RCTWebSocket (= 0.68.6)
|
- React-Core/RCTWebSocket (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-RCTNetwork (= 0.68.6)
|
- React-RCTNetwork (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- React-RCTImage (0.68.6):
|
- React-RCTImage (0.68.7):
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- RCTTypeSafety (= 0.68.6)
|
- RCTTypeSafety (= 0.68.7)
|
||||||
- React-Codegen (= 0.68.6)
|
- React-Codegen (= 0.68.7)
|
||||||
- React-Core/RCTImageHeaders (= 0.68.6)
|
- React-Core/RCTImageHeaders (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-RCTNetwork (= 0.68.6)
|
- React-RCTNetwork (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- React-RCTLinking (0.68.6):
|
- React-RCTLinking (0.68.7):
|
||||||
- React-Codegen (= 0.68.6)
|
- React-Codegen (= 0.68.7)
|
||||||
- React-Core/RCTLinkingHeaders (= 0.68.6)
|
- React-Core/RCTLinkingHeaders (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- React-RCTNetwork (0.68.6):
|
- React-RCTNetwork (0.68.7):
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- RCTTypeSafety (= 0.68.6)
|
- RCTTypeSafety (= 0.68.7)
|
||||||
- React-Codegen (= 0.68.6)
|
- React-Codegen (= 0.68.7)
|
||||||
- React-Core/RCTNetworkHeaders (= 0.68.6)
|
- React-Core/RCTNetworkHeaders (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- React-RCTSettings (0.68.6):
|
- React-RCTSettings (0.68.7):
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- RCTTypeSafety (= 0.68.6)
|
- RCTTypeSafety (= 0.68.7)
|
||||||
- React-Codegen (= 0.68.6)
|
- React-Codegen (= 0.68.7)
|
||||||
- React-Core/RCTSettingsHeaders (= 0.68.6)
|
- React-Core/RCTSettingsHeaders (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- React-RCTText (0.68.6):
|
- React-RCTText (0.68.7):
|
||||||
- React-Core/RCTTextHeaders (= 0.68.6)
|
- React-Core/RCTTextHeaders (= 0.68.7)
|
||||||
- React-RCTVibration (0.68.6):
|
- React-RCTVibration (0.68.7):
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-Codegen (= 0.68.6)
|
- React-Codegen (= 0.68.7)
|
||||||
- React-Core/RCTVibrationHeaders (= 0.68.6)
|
- React-Core/RCTVibrationHeaders (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- React-runtimeexecutor (0.68.6):
|
- React-runtimeexecutor (0.68.7):
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- ReactCommon (0.68.6):
|
- ReactCommon (0.68.7):
|
||||||
- React-logger (= 0.68.6)
|
- React-logger (= 0.68.7)
|
||||||
- ReactCommon/react_debug_core (= 0.68.6)
|
- ReactCommon/react_debug_core (= 0.68.7)
|
||||||
- ReactCommon/turbomodule (= 0.68.6)
|
- ReactCommon/turbomodule (= 0.68.7)
|
||||||
- ReactCommon/react_debug_core (0.68.6):
|
- ReactCommon/react_debug_core (0.68.7):
|
||||||
- React-logger (= 0.68.6)
|
- React-logger (= 0.68.7)
|
||||||
- ReactCommon/turbomodule (0.68.6):
|
- ReactCommon/turbomodule (0.68.7):
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-callinvoker (= 0.68.6)
|
- React-callinvoker (= 0.68.7)
|
||||||
- React-Core (= 0.68.6)
|
- React-Core (= 0.68.7)
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-logger (= 0.68.6)
|
- React-logger (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/samples (= 0.68.6)
|
- ReactCommon/turbomodule/samples (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (0.68.6):
|
- ReactCommon/turbomodule/core (0.68.7):
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-callinvoker (= 0.68.6)
|
- React-callinvoker (= 0.68.7)
|
||||||
- React-Core (= 0.68.6)
|
- React-Core (= 0.68.7)
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-logger (= 0.68.6)
|
- React-logger (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/samples (0.68.6):
|
- ReactCommon/turbomodule/samples (0.68.7):
|
||||||
- DoubleConversion
|
- DoubleConversion
|
||||||
- glog
|
- glog
|
||||||
- RCT-Folly (= 2021.06.28.00-v2)
|
- RCT-Folly (= 2021.06.28.00-v2)
|
||||||
- React-callinvoker (= 0.68.6)
|
- React-callinvoker (= 0.68.7)
|
||||||
- React-Core (= 0.68.6)
|
- React-Core (= 0.68.7)
|
||||||
- React-cxxreact (= 0.68.6)
|
- React-cxxreact (= 0.68.7)
|
||||||
- React-jsi (= 0.68.6)
|
- React-jsi (= 0.68.7)
|
||||||
- React-logger (= 0.68.6)
|
- React-logger (= 0.68.7)
|
||||||
- React-perflogger (= 0.68.6)
|
- React-perflogger (= 0.68.7)
|
||||||
- ReactCommon/turbomodule/core (= 0.68.6)
|
- ReactCommon/turbomodule/core (= 0.68.7)
|
||||||
- ReactNativeART (1.2.0):
|
- ReactNativeART (1.2.0):
|
||||||
- React
|
- React
|
||||||
- ReactNativeUiLib (3.0.4):
|
- ReactNativeUiLib (3.0.4):
|
||||||
|
@ -604,7 +602,6 @@ DEPENDENCIES:
|
||||||
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
|
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
|
||||||
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
||||||
- hermes-engine (~> 0.11.0)
|
- hermes-engine (~> 0.11.0)
|
||||||
- KeyCommands (from `../node_modules/react-native-keycommands`)
|
|
||||||
- libevent (~> 2.1.12)
|
- libevent (~> 2.1.12)
|
||||||
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
|
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
|
||||||
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
|
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
|
||||||
|
@ -740,8 +737,6 @@ EXTERNAL SOURCES:
|
||||||
:path: "../node_modules/react-native/React/FBReactNativeSpec"
|
:path: "../node_modules/react-native/React/FBReactNativeSpec"
|
||||||
glog:
|
glog:
|
||||||
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
|
:podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
|
||||||
KeyCommands:
|
|
||||||
:path: "../node_modules/react-native-keycommands"
|
|
||||||
RCT-Folly:
|
RCT-Folly:
|
||||||
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
|
:podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
|
||||||
RCTRequired:
|
RCTRequired:
|
||||||
|
@ -897,8 +892,8 @@ SPEC CHECKSUMS:
|
||||||
ExpoModulesCore: e281bb7b78ea47e227dd5af94d04b24d8b2e1255
|
ExpoModulesCore: e281bb7b78ea47e227dd5af94d04b24d8b2e1255
|
||||||
ExpoWebBrowser: 4b5f9633e5f169dc948587cb6d26d2d1d1406187
|
ExpoWebBrowser: 4b5f9633e5f169dc948587cb6d26d2d1d1406187
|
||||||
EXVideoThumbnails: 19e055dc3245b53c536da9e0ef9c618fd2118297
|
EXVideoThumbnails: 19e055dc3245b53c536da9e0ef9c618fd2118297
|
||||||
FBLazyVector: 74b042924fe14da854ac4e87cefc417f583b22b1
|
FBLazyVector: 63b89dc85804d5817261f56dc4cfb43a9b6d57f5
|
||||||
FBReactNativeSpec: 847d588a676110304f9bd83ac255b00de80bd45c
|
FBReactNativeSpec: de66c1e28c6823a30a53b51dd933560edb24ed3f
|
||||||
Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d
|
Firebase: 5f8193dff4b5b7c5d5ef72ae54bb76c08e2b841d
|
||||||
FirebaseAnalytics: 7761cbadb00a717d8d0939363eb46041526474fa
|
FirebaseAnalytics: 7761cbadb00a717d8d0939363eb46041526474fa
|
||||||
FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1
|
FirebaseCore: 5743c5785c074a794d35f2fff7ecc254a91e08b1
|
||||||
|
@ -912,7 +907,6 @@ SPEC CHECKSUMS:
|
||||||
GoogleUtilities: c2bdc4cf2ce786c4d2e6b3bcfd599a25ca78f06f
|
GoogleUtilities: c2bdc4cf2ce786c4d2e6b3bcfd599a25ca78f06f
|
||||||
hermes-engine: 84e3af1ea01dd7351ac5d8689cbbea1f9903ffc3
|
hermes-engine: 84e3af1ea01dd7351ac5d8689cbbea1f9903ffc3
|
||||||
iosMath: f7a6cbadf9d836d2149c2a84c435b1effc244cba
|
iosMath: f7a6cbadf9d836d2149c2a84c435b1effc244cba
|
||||||
KeyCommands: f66c535f698ed14b3d3a4e58859d79a827ea907e
|
|
||||||
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||||
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
|
libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef
|
||||||
MMKV: aac95d817a100479445633f2b3ed8961b4ac5043
|
MMKV: aac95d817a100479445633f2b3ed8961b4ac5043
|
||||||
|
@ -921,19 +915,19 @@ SPEC CHECKSUMS:
|
||||||
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
|
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
|
||||||
PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb
|
PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb
|
||||||
RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8
|
RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8
|
||||||
RCTRequired: 92cbd71369a2de6add25fd2403ac39838f1b694f
|
RCTRequired: 530916cd48c5f7cf1fc16966ad5ea01638ca4799
|
||||||
RCTTypeSafety: 494e8af41d7410ed0b877210859ee3984f37e6b4
|
RCTTypeSafety: 5fb4cb3080efd582e5563c3e9a0e459fc51396c5
|
||||||
React: 59989499c0e8926a90d34a9ae0bdb2d1b5b53406
|
React: 097b19fbc7aecb3bd23de54b462d2051d7ca8a38
|
||||||
React-callinvoker: 8187db1c71cf2c1c66e8f7328a0cf77a2b255d94
|
React-callinvoker: 4f118545cf884f0d8fce5bcd6e1847147ea9cc05
|
||||||
React-Codegen: e806dc2f10ddae645d855cb58acf73ce41eb8ea5
|
React-Codegen: 24e59be16f8ed24b3e49e5ff0738dad91988c760
|
||||||
React-Core: fc7339b493e368ae079850a4721bdf716cf3dba2
|
React-Core: 0b464d0bec18dde90fa819c4be14dbcbdbf3077f
|
||||||
React-CoreModules: 2f54f6bbf2764044379332089fcbdaf79197021e
|
React-CoreModules: 9bb7d5d5530d474cf8514e2dc8274af82a0bcf2f
|
||||||
React-cxxreact: ee119270006794976e1ab271f0111a5a88b16bcf
|
React-cxxreact: 027e192b8008ba5c200163ab6ded55d134c839d5
|
||||||
React-hermes: da05900062e21a1ef4e14cddf3b562ae02a93a5a
|
React-hermes: 182741a40f11362a9bca11a65a96a7f0cbd74385
|
||||||
React-jsi: ec691b2a475d13b1fd39f697145a526eeeb6661c
|
React-jsi: 9019a0a0b42e9eac6c1e8c251a8dffe65055a2f1
|
||||||
React-jsiexecutor: b4ce4afc5dd9c8fdd2ac59049ccf420f288ecef7
|
React-jsiexecutor: 7c0bd030a84f2ec446fb104b7735af2f5ed11eea
|
||||||
React-jsinspector: e396d5e56af08fce39f50571726b68a40f1e302d
|
React-jsinspector: cab4d37ebde480f84c79ac89568abbf76b916c3e
|
||||||
React-logger: cec52b3f8fb0be0d47b2cb75dec69de60f2de3b6
|
React-logger: b75b80500ea80457b2cf169427d66de986cdcb29
|
||||||
react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe
|
react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe
|
||||||
react-native-blur: cfdad7b3c01d725ab62a8a729f42ea463998afa2
|
react-native-blur: cfdad7b3c01d725ab62a8a729f42ea463998afa2
|
||||||
react-native-cameraroll: 2f08db1ecc9b73dbc01f89335d6d5179fac2894c
|
react-native-cameraroll: 2f08db1ecc9b73dbc01f89335d6d5179fac2894c
|
||||||
|
@ -948,18 +942,18 @@ SPEC CHECKSUMS:
|
||||||
react-native-simple-crypto: a26121696064628b6cb92f52f653353114deb7f4
|
react-native-simple-crypto: a26121696064628b6cb92f52f653353114deb7f4
|
||||||
react-native-slider: 2f25c919f1dc309b90e2cc8346b8042ecec2102f
|
react-native-slider: 2f25c919f1dc309b90e2cc8346b8042ecec2102f
|
||||||
react-native-webview: 9f111dfbcfc826084d6c507f569e5e03342ee1c1
|
react-native-webview: 9f111dfbcfc826084d6c507f569e5e03342ee1c1
|
||||||
React-perflogger: 46620fc6d1c3157b60ed28434e08f7fd7f3f3353
|
React-perflogger: 44436b315d757100a53dfb1ab6b77c58cb646d7d
|
||||||
React-RCTActionSheet: b1f7e72a0ba760ec684df335c61f730b5179f5ff
|
React-RCTActionSheet: 1888a229684762c40cc96c7ff4716f809655dc09
|
||||||
React-RCTAnimation: d73b62d42867ab608dfb10e100d8b91106275b18
|
React-RCTAnimation: f05da175751867521d14b02ab4d3994a7b96f131
|
||||||
React-RCTBlob: b5f59693721d50967c35598158e6ca01b474c7de
|
React-RCTBlob: 792b966e48d599383d7a0753f75e8f2ff71be1ce
|
||||||
React-RCTImage: 37cf34d0c2fbef2e0278d42a7c5e8ea06a9fed6b
|
React-RCTImage: 065cf66546f625295efd36bce3a1806a9b93399c
|
||||||
React-RCTLinking: a11dced20019cf1c2ec7fd120f18b08f2851f79e
|
React-RCTLinking: 8246290c072bd2d1f336792038d7ec4b91f9847a
|
||||||
React-RCTNetwork: ba097188e5eac42e070029e7cedd9b978940833a
|
React-RCTNetwork: 6b2331c74684fae61b1ef38f4510fe5da3de3f3a
|
||||||
React-RCTSettings: 147073708a1c1bde521cf3af045a675682772726
|
React-RCTSettings: 2898e15b249b085f8b8c7401cfab71983a2d40da
|
||||||
React-RCTText: 23f76ebfb2717d181476432e5ecf1c6c4a104c5e
|
React-RCTText: bd1da1cd805e0765e3ba9089a9fd807d4860a901
|
||||||
React-RCTVibration: be5f18ffc644f96f904e0e673ab639ca5d673ee8
|
React-RCTVibration: 2a4bf853281d4981ab471509102300d3c9e6c693
|
||||||
React-runtimeexecutor: d5498cfb7059bf8397b6416db4777843f3f4c1e7
|
React-runtimeexecutor: 18932e685b4893be88d1efc18f5f8ca1c9cd39d8
|
||||||
ReactCommon: 1974dab5108c79b40199f12a4833d2499b9f6303
|
ReactCommon: 29bb6fad3242e30e9d049bc9d592736fa3da9e50
|
||||||
ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab
|
ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab
|
||||||
ReactNativeUiLib: 33521c0747ea376d292b62b6415e0f1d75bd3c10
|
ReactNativeUiLib: 33521c0747ea376d292b62b6415e0f1d75bd3c10
|
||||||
rn-extensions-share: 5fd84a80e6594706f0dfa1884f2d6d591b382cf5
|
rn-extensions-share: 5fd84a80e6594706f0dfa1884f2d6d591b382cf5
|
||||||
|
@ -991,7 +985,7 @@ SPEC CHECKSUMS:
|
||||||
simdjson: 85016870cd17207312b718ef6652eb6a1cd6a2b0
|
simdjson: 85016870cd17207312b718ef6652eb6a1cd6a2b0
|
||||||
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
|
TOCropViewController: edfd4f25713d56905ad1e0b9f5be3fbe0f59c863
|
||||||
WatermelonDB: 577c61fceff16e9f9103b59d14aee4850c0307b6
|
WatermelonDB: 577c61fceff16e9f9103b59d14aee4850c0307b6
|
||||||
Yoga: 7929b92b1828675c1bebeb114dae8cb8fa7ef6a3
|
Yoga: 0bc4b37c3b8a345336ff601e2cf7d9704bab7e93
|
||||||
|
|
||||||
PODFILE CHECKSUM: 0dc489a0c4bec783a132693070c2d02e2ca6b0db
|
PODFILE CHECKSUM: 0dc489a0c4bec783a132693070c2d02e2ca6b0db
|
||||||
|
|
||||||
|
|
|
@ -79,8 +79,8 @@
|
||||||
1EFEB5982493B6640072EDC0 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EFEB5972493B6640072EDC0 /* NotificationService.swift */; };
|
1EFEB5982493B6640072EDC0 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EFEB5972493B6640072EDC0 /* NotificationService.swift */; };
|
||||||
1EFEB59C2493B6640072EDC0 /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EFEB5952493B6640072EDC0 /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
1EFEB59C2493B6640072EDC0 /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EFEB5952493B6640072EDC0 /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||||
24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; };
|
24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; };
|
||||||
|
4183F9F3648AA5A8E451AD6F /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA38524D073B37D626BDE9B2 /* libPods-defaults-ShareRocketChatRN.a */; };
|
||||||
4C4C8603EF082F0A33A95522 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */; };
|
4C4C8603EF082F0A33A95522 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */; };
|
||||||
64882939D5C139FD23B18284 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 88D6D0EE04C6CEB9F0E81DED /* libPods-defaults-ShareRocketChatRN.a */; };
|
|
||||||
7A006F14229C83B600803143 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7A006F13229C83B600803143 /* GoogleService-Info.plist */; };
|
7A006F14229C83B600803143 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7A006F13229C83B600803143 /* GoogleService-Info.plist */; };
|
||||||
7A0D62D2242AB187006D5C06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */; };
|
7A0D62D2242AB187006D5C06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */; };
|
||||||
7A14FCED257FEB3A005BDCD4 /* Experimental.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */; };
|
7A14FCED257FEB3A005BDCD4 /* Experimental.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */; };
|
||||||
|
@ -140,13 +140,13 @@
|
||||||
7AE10C0628A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
7AE10C0628A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
||||||
7AE10C0728A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
7AE10C0728A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
||||||
7AE10C0828A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
7AE10C0828A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
||||||
|
830931BDC1F85C878AA6CCB8 /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE0803F389AA8D1AFA4C89DC /* libPods-defaults-Rocket.Chat.a */; };
|
||||||
85160EB6C143E0493FE5F014 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194D9A8897F4A486C2C6F89A /* ExpoModulesProvider.swift */; };
|
85160EB6C143E0493FE5F014 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194D9A8897F4A486C2C6F89A /* ExpoModulesProvider.swift */; };
|
||||||
BC404914E86821389EEB543D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */; };
|
BC404914E86821389EEB543D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */; };
|
||||||
BFD3F2D25E9E9048EA6DCF27 /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CF89A0D62171DA3CC5DF3FF5 /* libPods-defaults-Rocket.Chat.a */; };
|
C1ED5A5410EB6CF912D688B8 /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 111F5EB407906D059A1348AC /* libPods-defaults-NotificationService.a */; };
|
||||||
|
CE728835631624C36534C83A /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AB0FA32CE0788455453FBB0B /* libPods-defaults-RocketChatRN.a */; };
|
||||||
D94D81FB9E10756FAA03F203 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */; };
|
D94D81FB9E10756FAA03F203 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */; };
|
||||||
DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BA7E862283664608B3894E34 /* libWatermelonDB.a */; };
|
DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BA7E862283664608B3894E34 /* libWatermelonDB.a */; };
|
||||||
DF25C2EDAF5BC841C049ED31 /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 37473D898A400EACC1CDD08E /* libPods-defaults-RocketChatRN.a */; };
|
|
||||||
E0CFC32A560C58E71D22F363 /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BE1B976F8095972510410DC4 /* libPods-defaults-NotificationService.a */; };
|
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
/* Begin PBXContainerItemProxy section */
|
/* Begin PBXContainerItemProxy section */
|
||||||
|
@ -210,13 +210,14 @@
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
|
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
|
||||||
016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-ShareRocketChatRN/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-ShareRocketChatRN/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||||
|
05D159ED244184CFD689E5A7 /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
06BB44DD4855498082A744AD /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
06BB44DD4855498082A744AD /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
||||||
|
111F5EB407906D059A1348AC /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
13B07F961A680F5B00A75B9A /* Rocket.Chat Experimental.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Rocket.Chat Experimental.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
13B07F961A680F5B00A75B9A /* Rocket.Chat Experimental.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Rocket.Chat Experimental.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RocketChatRN/AppDelegate.h; sourceTree = "<group>"; };
|
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RocketChatRN/AppDelegate.h; sourceTree = "<group>"; };
|
||||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RocketChatRN/Images.xcassets; sourceTree = "<group>"; };
|
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RocketChatRN/Images.xcassets; sourceTree = "<group>"; };
|
||||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RocketChatRN/Info.plist; sourceTree = "<group>"; };
|
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RocketChatRN/Info.plist; sourceTree = "<group>"; };
|
||||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = RocketChatRN/main.m; sourceTree = "<group>"; };
|
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = RocketChatRN/main.m; sourceTree = "<group>"; };
|
||||||
164E074B4C99AB825A717C54 /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
194D9A8897F4A486C2C6F89A /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-NotificationService/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
194D9A8897F4A486C2C6F89A /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-NotificationService/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||||
1E01C81B2511208400FEF824 /* URL+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URL+Extensions.swift"; sourceTree = "<group>"; };
|
1E01C81B2511208400FEF824 /* URL+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URL+Extensions.swift"; sourceTree = "<group>"; };
|
||||||
1E01C8202511301400FEF824 /* PushResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushResponse.swift; sourceTree = "<group>"; };
|
1E01C8202511301400FEF824 /* PushResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushResponse.swift; sourceTree = "<group>"; };
|
||||||
|
@ -264,12 +265,10 @@
|
||||||
1EFEB5972493B6640072EDC0 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
|
1EFEB5972493B6640072EDC0 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
|
||||||
1EFEB5992493B6640072EDC0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
1EFEB5992493B6640072EDC0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
1EFEB5A12493B67D0072EDC0 /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = "<group>"; };
|
1EFEB5A12493B67D0072EDC0 /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = "<group>"; };
|
||||||
27E5BE6ABA6A2DB0A06F924E /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
2D1498938315CC290B97920B /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
3026446E76F8BD665385CA6D /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
37473D898A400EACC1CDD08E /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-Rocket.Chat/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-Rocket.Chat/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||||
45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-RocketChatRN/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-RocketChatRN/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||||
5031896928ACC63AA010A47D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
4F33E4DA6CCD312106101066 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
60B2A6A31FC4588700BD58E5 /* RocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = RocketChatRN.entitlements; path = RocketChatRN/RocketChatRN.entitlements; sourceTree = "<group>"; };
|
60B2A6A31FC4588700BD58E5 /* RocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = RocketChatRN.entitlements; path = RocketChatRN/RocketChatRN.entitlements; sourceTree = "<group>"; };
|
||||||
7A006F13229C83B600803143 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
7A006F13229C83B600803143 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||||
7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
|
7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
|
@ -281,15 +280,16 @@
|
||||||
7AAB3E52257E6A6E00707CF6 /* Rocket.Chat.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rocket.Chat.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
7AAB3E52257E6A6E00707CF6 /* Rocket.Chat.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rocket.Chat.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
7ACD4853222860DE00442C55 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
7ACD4853222860DE00442C55 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||||
7AE10C0528A59530003593CB /* Inter.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Inter.ttf; sourceTree = "<group>"; };
|
7AE10C0528A59530003593CB /* Inter.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Inter.ttf; sourceTree = "<group>"; };
|
||||||
88D6D0EE04C6CEB9F0E81DED /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
9AF8F9AFBBF71270CE75AF6D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
A7F988DF4B68700DD06E4FC3 /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = "<group>"; };
|
AA38524D073B37D626BDE9B2 /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
AE5F54395576888438D5F5D6 /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
AB0FA32CE0788455453FBB0B /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
B37C79D9BD0742CE936B6982 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
B37C79D9BD0742CE936B6982 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
||||||
B857001C31C6F6FC585D5972 /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
BA7E862283664608B3894E34 /* libWatermelonDB.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libWatermelonDB.a; sourceTree = "<group>"; };
|
BA7E862283664608B3894E34 /* libWatermelonDB.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libWatermelonDB.a; sourceTree = "<group>"; };
|
||||||
BE1B976F8095972510410DC4 /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
D04D04B2EA8D88C19F091B19 /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
CF89A0D62171DA3CC5DF3FF5 /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
D15DA76143AD7A4D6E8BA4D0 /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
E5BCD87511845392D3C6FEF0 /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = "<group>"; };
|
D6F1E6B6A6B836D26CEBE5B4 /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
EC65E9A63DAB7D0BDF669DFA /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = "<group>"; };
|
||||||
|
EE0803F389AA8D1AFA4C89DC /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
@ -310,7 +310,7 @@
|
||||||
7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */,
|
7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */,
|
||||||
24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */,
|
24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */,
|
||||||
DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */,
|
DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */,
|
||||||
DF25C2EDAF5BC841C049ED31 /* libPods-defaults-RocketChatRN.a in Frameworks */,
|
CE728835631624C36534C83A /* libPods-defaults-RocketChatRN.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -319,7 +319,7 @@
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */,
|
1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */,
|
||||||
64882939D5C139FD23B18284 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */,
|
4183F9F3648AA5A8E451AD6F /* libPods-defaults-ShareRocketChatRN.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -327,7 +327,7 @@
|
||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
E0CFC32A560C58E71D22F363 /* libPods-defaults-NotificationService.a in Frameworks */,
|
C1ED5A5410EB6CF912D688B8 /* libPods-defaults-NotificationService.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -348,7 +348,7 @@
|
||||||
7AAB3E3D257E6A6E00707CF6 /* JavaScriptCore.framework in Frameworks */,
|
7AAB3E3D257E6A6E00707CF6 /* JavaScriptCore.framework in Frameworks */,
|
||||||
7AAB3E3E257E6A6E00707CF6 /* libz.tbd in Frameworks */,
|
7AAB3E3E257E6A6E00707CF6 /* libz.tbd in Frameworks */,
|
||||||
7AAB3E3F257E6A6E00707CF6 /* libWatermelonDB.a in Frameworks */,
|
7AAB3E3F257E6A6E00707CF6 /* libWatermelonDB.a in Frameworks */,
|
||||||
BFD3F2D25E9E9048EA6DCF27 /* libPods-defaults-Rocket.Chat.a in Frameworks */,
|
830931BDC1F85C878AA6CCB8 /* libPods-defaults-Rocket.Chat.a in Frameworks */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
|
@ -499,14 +499,14 @@
|
||||||
7AC2B09613AA7C3FEBAC9F57 /* Pods */ = {
|
7AC2B09613AA7C3FEBAC9F57 /* Pods */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
A7F988DF4B68700DD06E4FC3 /* Pods-defaults-NotificationService.debug.xcconfig */,
|
EC65E9A63DAB7D0BDF669DFA /* Pods-defaults-NotificationService.debug.xcconfig */,
|
||||||
B857001C31C6F6FC585D5972 /* Pods-defaults-NotificationService.release.xcconfig */,
|
D6F1E6B6A6B836D26CEBE5B4 /* Pods-defaults-NotificationService.release.xcconfig */,
|
||||||
E5BCD87511845392D3C6FEF0 /* Pods-defaults-Rocket.Chat.debug.xcconfig */,
|
05D159ED244184CFD689E5A7 /* Pods-defaults-Rocket.Chat.debug.xcconfig */,
|
||||||
164E074B4C99AB825A717C54 /* Pods-defaults-Rocket.Chat.release.xcconfig */,
|
2D1498938315CC290B97920B /* Pods-defaults-Rocket.Chat.release.xcconfig */,
|
||||||
27E5BE6ABA6A2DB0A06F924E /* Pods-defaults-RocketChatRN.debug.xcconfig */,
|
D15DA76143AD7A4D6E8BA4D0 /* Pods-defaults-RocketChatRN.debug.xcconfig */,
|
||||||
AE5F54395576888438D5F5D6 /* Pods-defaults-RocketChatRN.release.xcconfig */,
|
D04D04B2EA8D88C19F091B19 /* Pods-defaults-RocketChatRN.release.xcconfig */,
|
||||||
3026446E76F8BD665385CA6D /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */,
|
4F33E4DA6CCD312106101066 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */,
|
||||||
5031896928ACC63AA010A47D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */,
|
9AF8F9AFBBF71270CE75AF6D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */,
|
||||||
);
|
);
|
||||||
path = Pods;
|
path = Pods;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -597,10 +597,10 @@
|
||||||
7ACD4853222860DE00442C55 /* JavaScriptCore.framework */,
|
7ACD4853222860DE00442C55 /* JavaScriptCore.framework */,
|
||||||
B37C79D9BD0742CE936B6982 /* libc++.tbd */,
|
B37C79D9BD0742CE936B6982 /* libc++.tbd */,
|
||||||
06BB44DD4855498082A744AD /* libz.tbd */,
|
06BB44DD4855498082A744AD /* libz.tbd */,
|
||||||
BE1B976F8095972510410DC4 /* libPods-defaults-NotificationService.a */,
|
111F5EB407906D059A1348AC /* libPods-defaults-NotificationService.a */,
|
||||||
CF89A0D62171DA3CC5DF3FF5 /* libPods-defaults-Rocket.Chat.a */,
|
EE0803F389AA8D1AFA4C89DC /* libPods-defaults-Rocket.Chat.a */,
|
||||||
37473D898A400EACC1CDD08E /* libPods-defaults-RocketChatRN.a */,
|
AB0FA32CE0788455453FBB0B /* libPods-defaults-RocketChatRN.a */,
|
||||||
88D6D0EE04C6CEB9F0E81DED /* libPods-defaults-ShareRocketChatRN.a */,
|
AA38524D073B37D626BDE9B2 /* libPods-defaults-ShareRocketChatRN.a */,
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
@ -620,7 +620,7 @@
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RocketChatRN" */;
|
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RocketChatRN" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
4E0541F228C7056D985CA6EB /* [CP] Check Pods Manifest.lock */,
|
360870C7BEEC4AB68A78E7B7 /* [CP] Check Pods Manifest.lock */,
|
||||||
7AA5C63E23E30D110005C4A7 /* Start Packager */,
|
7AA5C63E23E30D110005C4A7 /* Start Packager */,
|
||||||
13B07F871A680F5B00A75B9A /* Sources */,
|
13B07F871A680F5B00A75B9A /* Sources */,
|
||||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||||
|
@ -629,8 +629,8 @@
|
||||||
1EC6ACF422CB9FC300A41C61 /* Embed App Extensions */,
|
1EC6ACF422CB9FC300A41C61 /* Embed App Extensions */,
|
||||||
1E1EA8082326CCE300E22452 /* ShellScript */,
|
1E1EA8082326CCE300E22452 /* ShellScript */,
|
||||||
7AAE9EB32891A0D20024F559 /* Upload source maps to Bugsnag */,
|
7AAE9EB32891A0D20024F559 /* Upload source maps to Bugsnag */,
|
||||||
0EE48F1D466597E5EE0DEA34 /* [CP] Embed Pods Frameworks */,
|
78E38FA4D1825ED629BD2F91 /* [CP] Embed Pods Frameworks */,
|
||||||
99170C805A43561BF41AD0CC /* [CP] Copy Pods Resources */,
|
6AFD4AAAB19CC45C5450D183 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
|
@ -647,12 +647,12 @@
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 1EC6ACF322CB9FC300A41C61 /* Build configuration list for PBXNativeTarget "ShareRocketChatRN" */;
|
buildConfigurationList = 1EC6ACF322CB9FC300A41C61 /* Build configuration list for PBXNativeTarget "ShareRocketChatRN" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
EB34E6FD3AD9A61718D9ED66 /* [CP] Check Pods Manifest.lock */,
|
7F50400D836B1B9401EA0D46 /* [CP] Check Pods Manifest.lock */,
|
||||||
1EC6ACAC22CB9FC300A41C61 /* Sources */,
|
1EC6ACAC22CB9FC300A41C61 /* Sources */,
|
||||||
1EC6ACAD22CB9FC300A41C61 /* Frameworks */,
|
1EC6ACAD22CB9FC300A41C61 /* Frameworks */,
|
||||||
1EC6ACAE22CB9FC300A41C61 /* Resources */,
|
1EC6ACAE22CB9FC300A41C61 /* Resources */,
|
||||||
1EFE4DC322CBF36300B766B7 /* ShellScript */,
|
1EFE4DC322CBF36300B766B7 /* ShellScript */,
|
||||||
63A63B5E01476BADE4E06B88 /* [CP] Copy Pods Resources */,
|
BD67AF7A6313353EB149232C /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
|
@ -667,11 +667,11 @@
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 1EFEB5A02493B6640072EDC0 /* Build configuration list for PBXNativeTarget "NotificationService" */;
|
buildConfigurationList = 1EFEB5A02493B6640072EDC0 /* Build configuration list for PBXNativeTarget "NotificationService" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
4B61F523E7DFD4CCCDB2630B /* [CP] Check Pods Manifest.lock */,
|
C2A9EDE251DBF6D44DD0BDA4 /* [CP] Check Pods Manifest.lock */,
|
||||||
1EFEB5912493B6640072EDC0 /* Sources */,
|
1EFEB5912493B6640072EDC0 /* Sources */,
|
||||||
1EFEB5922493B6640072EDC0 /* Frameworks */,
|
1EFEB5922493B6640072EDC0 /* Frameworks */,
|
||||||
1EFEB5932493B6640072EDC0 /* Resources */,
|
1EFEB5932493B6640072EDC0 /* Resources */,
|
||||||
CB6F673666EADE583FD43410 /* [CP] Copy Pods Resources */,
|
1DAF05E36DCAB8D4595F6B85 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
|
@ -686,7 +686,7 @@
|
||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 7AAB3E4F257E6A6E00707CF6 /* Build configuration list for PBXNativeTarget "Rocket.Chat" */;
|
buildConfigurationList = 7AAB3E4F257E6A6E00707CF6 /* Build configuration list for PBXNativeTarget "Rocket.Chat" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
6DD37F59168B72BB6CDCEDF1 /* [CP] Check Pods Manifest.lock */,
|
1AD0E1505465EAF3048DBA31 /* [CP] Check Pods Manifest.lock */,
|
||||||
7AAB3E13257E6A6E00707CF6 /* Start Packager */,
|
7AAB3E13257E6A6E00707CF6 /* Start Packager */,
|
||||||
7AAB3E14257E6A6E00707CF6 /* Sources */,
|
7AAB3E14257E6A6E00707CF6 /* Sources */,
|
||||||
7AAB3E32257E6A6E00707CF6 /* Frameworks */,
|
7AAB3E32257E6A6E00707CF6 /* Frameworks */,
|
||||||
|
@ -695,8 +695,8 @@
|
||||||
7AAB3E48257E6A6E00707CF6 /* Embed App Extensions */,
|
7AAB3E48257E6A6E00707CF6 /* Embed App Extensions */,
|
||||||
7AAB3E4B257E6A6E00707CF6 /* ShellScript */,
|
7AAB3E4B257E6A6E00707CF6 /* ShellScript */,
|
||||||
7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */,
|
7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */,
|
||||||
E420D117DA1C33130AF78D4D /* [CP] Embed Pods Frameworks */,
|
68C166CF30687732759CE851 /* [CP] Embed Pods Frameworks */,
|
||||||
0ADA39A3D2C1E2C2E8B6B1FA /* [CP] Copy Pods Resources */,
|
654C29ACFC8C77B4A18EA8B0 /* [CP] Copy Pods Resources */,
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
|
@ -846,7 +846,141 @@
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||||
};
|
};
|
||||||
0ADA39A3D2C1E2C2E8B6B1FA /* [CP] Copy Pods Resources */ = {
|
1AD0E1505465EAF3048DBA31 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||||
|
"${PODS_ROOT}/Manifest.lock",
|
||||||
|
);
|
||||||
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
1DAF05E36DCAB8D4595F6B85 /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
1E1EA8082326CCE300E22452 /* ShellScript */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "echo \"Target architectures: $ARCHS\"\n\nAPP_PATH=\"${TARGET_BUILD_DIR}/${WRAPPER_NAME}\"\n\nfind \"$APP_PATH\" -name '*.framework' -type d | while read -r FRAMEWORK\ndo\nFRAMEWORK_EXECUTABLE_NAME=$(defaults read \"$FRAMEWORK/Info.plist\" CFBundleExecutable)\nFRAMEWORK_EXECUTABLE_PATH=\"$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME\"\necho \"Executable is $FRAMEWORK_EXECUTABLE_PATH\"\necho $(lipo -info \"$FRAMEWORK_EXECUTABLE_PATH\")\n\nFRAMEWORK_TMP_PATH=\"$FRAMEWORK_EXECUTABLE_PATH-tmp\"\n\n# remove simulator's archs if location is not simulator's directory\ncase \"${TARGET_BUILD_DIR}\" in\n*\"iphonesimulator\")\necho \"No need to remove archs\"\n;;\n*)\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"i386\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"i386\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"i386 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"x86_64\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"x86_64\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"x86_64 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\n;;\nesac\n\necho \"Completed for executable $FRAMEWORK_EXECUTABLE_PATH\"\necho $\n\ndone\n";
|
||||||
|
};
|
||||||
|
1EFE4DC322CBF36300B766B7 /* ShellScript */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
);
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||||
|
};
|
||||||
|
360870C7BEEC4AB68A78E7B7 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||||
|
"${PODS_ROOT}/Manifest.lock",
|
||||||
|
);
|
||||||
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
654C29ACFC8C77B4A18EA8B0 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
@ -902,13 +1036,13 @@
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
0EE48F1D466597E5EE0DEA34 /* [CP] Embed Pods Frameworks */ = {
|
68C166CF30687732759CE851 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh",
|
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh",
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
||||||
);
|
);
|
||||||
|
@ -919,94 +1053,16 @@
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
1E1EA8082326CCE300E22452 /* ShellScript */ = {
|
6AFD4AAAB19CC45C5450D183 /* [CP] Copy Pods Resources */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
outputFileListPaths = (
|
|
||||||
);
|
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "echo \"Target architectures: $ARCHS\"\n\nAPP_PATH=\"${TARGET_BUILD_DIR}/${WRAPPER_NAME}\"\n\nfind \"$APP_PATH\" -name '*.framework' -type d | while read -r FRAMEWORK\ndo\nFRAMEWORK_EXECUTABLE_NAME=$(defaults read \"$FRAMEWORK/Info.plist\" CFBundleExecutable)\nFRAMEWORK_EXECUTABLE_PATH=\"$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME\"\necho \"Executable is $FRAMEWORK_EXECUTABLE_PATH\"\necho $(lipo -info \"$FRAMEWORK_EXECUTABLE_PATH\")\n\nFRAMEWORK_TMP_PATH=\"$FRAMEWORK_EXECUTABLE_PATH-tmp\"\n\n# remove simulator's archs if location is not simulator's directory\ncase \"${TARGET_BUILD_DIR}\" in\n*\"iphonesimulator\")\necho \"No need to remove archs\"\n;;\n*)\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"i386\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"i386\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"i386 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"x86_64\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"x86_64\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"x86_64 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\n;;\nesac\n\necho \"Completed for executable $FRAMEWORK_EXECUTABLE_PATH\"\necho $\n\ndone\n";
|
|
||||||
};
|
|
||||||
1EFE4DC322CBF36300B766B7 /* ShellScript */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
);
|
|
||||||
outputFileListPaths = (
|
|
||||||
);
|
|
||||||
outputPaths = (
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
|
||||||
};
|
|
||||||
4B61F523E7DFD4CCCDB2630B /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
|
||||||
"${PODS_ROOT}/Manifest.lock",
|
|
||||||
);
|
|
||||||
name = "[CP] Check Pods Manifest.lock";
|
|
||||||
outputFileListPaths = (
|
|
||||||
);
|
|
||||||
outputPaths = (
|
|
||||||
"$(DERIVED_FILE_DIR)/Pods-defaults-NotificationService-checkManifestLockResult.txt",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
4E0541F228C7056D985CA6EB /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
|
||||||
"${PODS_ROOT}/Manifest.lock",
|
|
||||||
);
|
|
||||||
name = "[CP] Check Pods Manifest.lock";
|
|
||||||
outputFileListPaths = (
|
|
||||||
);
|
|
||||||
outputPaths = (
|
|
||||||
"$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
63A63B5E01476BADE4E06B88 /* [CP] Copy Pods Resources */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh",
|
"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh",
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||||
|
@ -1053,29 +1109,27 @@
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
6DD37F59168B72BB6CDCEDF1 /* [CP] Check Pods Manifest.lock */ = {
|
78E38FA4D1825ED629BD2F91 /* [CP] Embed Pods Frameworks */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
);
|
);
|
||||||
inputFileListPaths = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
inputPaths = (
|
||||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh",
|
||||||
"${PODS_ROOT}/Manifest.lock",
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
||||||
);
|
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
||||||
name = "[CP] Check Pods Manifest.lock";
|
|
||||||
outputFileListPaths = (
|
|
||||||
);
|
);
|
||||||
|
name = "[CP] Embed Pods Frameworks";
|
||||||
outputPaths = (
|
outputPaths = (
|
||||||
"$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt",
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
||||||
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */ = {
|
7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */ = {
|
||||||
|
@ -1181,139 +1235,7 @@
|
||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh\n";
|
shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh\n";
|
||||||
};
|
};
|
||||||
99170C805A43561BF41AD0CC /* [CP] Copy Pods Resources */ = {
|
7F50400D836B1B9401EA0D46 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
CB6F673666EADE583FD43410 /* [CP] Copy Pods Resources */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
E420D117DA1C33130AF78D4D /* [CP] Embed Pods Frameworks */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh",
|
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
|
||||||
);
|
|
||||||
name = "[CP] Embed Pods Frameworks";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
EB34E6FD3AD9A61718D9ED66 /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
|
@ -1335,6 +1257,84 @@
|
||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
showEnvVarsInLog = 0;
|
showEnvVarsInLog = 0;
|
||||||
};
|
};
|
||||||
|
BD67AF7A6313353EB149232C /* [CP] Copy Pods Resources */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||||
|
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||||
|
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||||
|
);
|
||||||
|
name = "[CP] Copy Pods Resources";
|
||||||
|
outputPaths = (
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||||
|
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
|
C2A9EDE251DBF6D44DD0BDA4 /* [CP] Check Pods Manifest.lock */ = {
|
||||||
|
isa = PBXShellScriptBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
);
|
||||||
|
inputFileListPaths = (
|
||||||
|
);
|
||||||
|
inputPaths = (
|
||||||
|
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||||
|
"${PODS_ROOT}/Manifest.lock",
|
||||||
|
);
|
||||||
|
name = "[CP] Check Pods Manifest.lock";
|
||||||
|
outputFileListPaths = (
|
||||||
|
);
|
||||||
|
outputPaths = (
|
||||||
|
"$(DERIVED_FILE_DIR)/Pods-defaults-NotificationService-checkManifestLockResult.txt",
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
shellPath = /bin/sh;
|
||||||
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||||
|
showEnvVarsInLog = 0;
|
||||||
|
};
|
||||||
/* End PBXShellScriptBuildPhase section */
|
/* End PBXShellScriptBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXSourcesBuildPhase section */
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
@ -1492,7 +1492,7 @@
|
||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 27E5BE6ABA6A2DB0A06F924E /* Pods-defaults-RocketChatRN.debug.xcconfig */;
|
baseConfigurationReference = D15DA76143AD7A4D6E8BA4D0 /* Pods-defaults-RocketChatRN.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
|
@ -1548,7 +1548,7 @@
|
||||||
};
|
};
|
||||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = AE5F54395576888438D5F5D6 /* Pods-defaults-RocketChatRN.release.xcconfig */;
|
baseConfigurationReference = D04D04B2EA8D88C19F091B19 /* Pods-defaults-RocketChatRN.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
|
@ -1604,7 +1604,7 @@
|
||||||
};
|
};
|
||||||
1EC6ACBC22CB9FC300A41C61 /* Debug */ = {
|
1EC6ACBC22CB9FC300A41C61 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 3026446E76F8BD665385CA6D /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */;
|
baseConfigurationReference = 4F33E4DA6CCD312106101066 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||||
|
@ -1672,7 +1672,7 @@
|
||||||
};
|
};
|
||||||
1EC6ACBD22CB9FC300A41C61 /* Release */ = {
|
1EC6ACBD22CB9FC300A41C61 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 5031896928ACC63AA010A47D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */;
|
baseConfigurationReference = 9AF8F9AFBBF71270CE75AF6D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
||||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||||
|
@ -1740,7 +1740,7 @@
|
||||||
};
|
};
|
||||||
1EFEB59D2493B6640072EDC0 /* Debug */ = {
|
1EFEB59D2493B6640072EDC0 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = A7F988DF4B68700DD06E4FC3 /* Pods-defaults-NotificationService.debug.xcconfig */;
|
baseConfigurationReference = EC65E9A63DAB7D0BDF669DFA /* Pods-defaults-NotificationService.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
@ -1777,7 +1777,7 @@
|
||||||
};
|
};
|
||||||
1EFEB59E2493B6640072EDC0 /* Release */ = {
|
1EFEB59E2493B6640072EDC0 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = B857001C31C6F6FC585D5972 /* Pods-defaults-NotificationService.release.xcconfig */;
|
baseConfigurationReference = D6F1E6B6A6B836D26CEBE5B4 /* Pods-defaults-NotificationService.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(EMBEDDED_CONTENT_CONTAINS_SWIFT)";
|
||||||
CLANG_ANALYZER_NONNULL = YES;
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
@ -1815,7 +1815,7 @@
|
||||||
};
|
};
|
||||||
7AAB3E50257E6A6E00707CF6 /* Debug */ = {
|
7AAB3E50257E6A6E00707CF6 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = E5BCD87511845392D3C6FEF0 /* Pods-defaults-Rocket.Chat.debug.xcconfig */;
|
baseConfigurationReference = 05D159ED244184CFD689E5A7 /* Pods-defaults-Rocket.Chat.debug.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
|
@ -1869,7 +1869,7 @@
|
||||||
};
|
};
|
||||||
7AAB3E51257E6A6E00707CF6 /* Release */ = {
|
7AAB3E51257E6A6E00707CF6 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = 164E074B4C99AB825A717C54 /* Pods-defaults-Rocket.Chat.release.xcconfig */;
|
baseConfigurationReference = 2D1498938315CC290B97920B /* Pods-defaults-Rocket.Chat.release.xcconfig */;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||||
|
|
|
@ -91,7 +91,7 @@
|
||||||
"prop-types": "15.7.2",
|
"prop-types": "15.7.2",
|
||||||
"react": "17.0.2",
|
"react": "17.0.2",
|
||||||
"react-hook-form": "^7.34.2",
|
"react-hook-form": "^7.34.2",
|
||||||
"react-native": "RocketChat/react-native#51266d5ab8b4c3f04c0e8f207ea5db6056647104",
|
"react-native": "RocketChat/react-native#6cf729c196f0f043ac6e7444e73f5a560d7a8a8a",
|
||||||
"react-native-animatable": "^1.3.3",
|
"react-native-animatable": "^1.3.3",
|
||||||
"react-native-background-timer": "2.4.1",
|
"react-native-background-timer": "2.4.1",
|
||||||
"react-native-bootsplash": "^4.3.3",
|
"react-native-bootsplash": "^4.3.3",
|
||||||
|
@ -107,7 +107,6 @@
|
||||||
"react-native-image-crop-picker": "RocketChat/react-native-image-crop-picker",
|
"react-native-image-crop-picker": "RocketChat/react-native-image-crop-picker",
|
||||||
"react-native-image-progress": "^1.1.1",
|
"react-native-image-progress": "^1.1.1",
|
||||||
"react-native-katex": "^0.5.1",
|
"react-native-katex": "^0.5.1",
|
||||||
"react-native-keycommands": "2.0.3",
|
|
||||||
"react-native-linear-gradient": "^2.6.2",
|
"react-native-linear-gradient": "^2.6.2",
|
||||||
"react-native-localize": "2.1.1",
|
"react-native-localize": "2.1.1",
|
||||||
"react-native-math-view": "^3.9.5",
|
"react-native-math-view": "^3.9.5",
|
||||||
|
|
Loading…
Reference in New Issue