Upgrade Dependencies (#4034)
* Upgrade Navigation library * Fix background color on Select Server * Upgrade Navigation library * Apply patch to nav lib * Upgrade RNN to 6.1.1 * Update Dependencies * Feedback review * Call clearNavigationComponents when reset to channel
This commit is contained in:
parent
ec4dfb65b2
commit
8fbc988c90
31 changed files with 9030 additions and 2456 deletions
|
|
@ -19,6 +19,8 @@ function getThemeFromState() {
|
|||
export function resetToChannel(passProps = {}) {
|
||||
const theme = getThemeFromState();
|
||||
|
||||
EphemeralStore.clearNavigationComponents();
|
||||
|
||||
const stack = {
|
||||
children: [{
|
||||
component: {
|
||||
|
|
@ -92,6 +94,7 @@ export function resetToSelectServer(allowOtherServers) {
|
|||
},
|
||||
options: {
|
||||
layout: {
|
||||
backgroundColor: theme.centerChannelBg,
|
||||
componentBackgroundColor: theme.centerChannelBg,
|
||||
},
|
||||
statusBar: {
|
||||
|
|
@ -265,6 +268,7 @@ export function showModalOverCurrentContext(name, passProps = {}, options = {})
|
|||
const defaultOptions = {
|
||||
modalPresentationStyle: 'overCurrentContext',
|
||||
layout: {
|
||||
backgroundColor: 'transparent',
|
||||
componentBackgroundColor: 'transparent',
|
||||
},
|
||||
topBar: {
|
||||
|
|
@ -346,6 +350,10 @@ export function mergeNavigationOptions(componentId, options) {
|
|||
|
||||
export function showOverlay(name, passProps, options = {}) {
|
||||
const defaultOptions = {
|
||||
layout: {
|
||||
backgroundColor: 'transparent',
|
||||
componentBackgroundColor: 'transparent',
|
||||
},
|
||||
overlay: {
|
||||
interceptTouchOutside: false,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ import * as NavigationActions from 'app/actions/navigation';
|
|||
jest.unmock('app/actions/navigation');
|
||||
jest.mock('app/store/ephemeral_store', () => ({
|
||||
getNavigationTopComponentId: jest.fn(),
|
||||
clearNavigationComponents: jest.fn(),
|
||||
}));
|
||||
|
||||
describe('app/actions/navigation', () => {
|
||||
|
|
@ -84,6 +85,7 @@ describe('app/actions/navigation', () => {
|
|||
},
|
||||
options: {
|
||||
layout: {
|
||||
backgroundColor: theme.centerChannelBg,
|
||||
componentBackgroundColor: theme.centerChannelBg,
|
||||
},
|
||||
statusBar: {
|
||||
|
|
@ -271,6 +273,7 @@ describe('app/actions/navigation', () => {
|
|||
const showModalOverCurrentContextOptions = {
|
||||
modalPresentationStyle: 'overCurrentContext',
|
||||
layout: {
|
||||
backgroundColor: 'transparent',
|
||||
componentBackgroundColor: 'transparent',
|
||||
},
|
||||
topBar: {
|
||||
|
|
@ -441,6 +444,10 @@ describe('app/actions/navigation', () => {
|
|||
const showOverlay = jest.spyOn(Navigation, 'showOverlay');
|
||||
|
||||
const defaultOptions = {
|
||||
layout: {
|
||||
backgroundColor: 'transparent',
|
||||
componentBackgroundColor: 'transparent',
|
||||
},
|
||||
overlay: {
|
||||
interceptTouchOutside: false,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -33,18 +33,15 @@ export default class AtMention extends React.PureComponent {
|
|||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
const user = this.getUserDetailsFromMentionName(props);
|
||||
const user = this.getUserDetailsFromMentionName();
|
||||
this.state = {
|
||||
user,
|
||||
};
|
||||
}
|
||||
|
||||
componentWillReceiveProps(nextProps) {
|
||||
if (nextProps.mentionName !== this.props.mentionName || nextProps.usersByUsername !== this.props.usersByUsername) {
|
||||
const user = this.getUserDetailsFromMentionName(nextProps);
|
||||
this.setState({
|
||||
user,
|
||||
});
|
||||
componentDidUpdate(prevProps) {
|
||||
if (this.props.mentionName !== prevProps.mentionName || this.props.usersByUsername !== prevProps.usersByUsername) {
|
||||
this.updateUsername();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -59,12 +56,13 @@ export default class AtMention extends React.PureComponent {
|
|||
goToScreen(screen, title, passProps);
|
||||
};
|
||||
|
||||
getUserDetailsFromMentionName(props) {
|
||||
let mentionName = props.mentionName.toLowerCase();
|
||||
getUserDetailsFromMentionName() {
|
||||
const {usersByUsername} = this.props;
|
||||
let mentionName = this.props.mentionName.toLowerCase();
|
||||
|
||||
while (mentionName.length > 0) {
|
||||
if (props.usersByUsername.hasOwnProperty(mentionName)) {
|
||||
return props.usersByUsername[mentionName];
|
||||
if (usersByUsername.hasOwnProperty(mentionName)) {
|
||||
return usersByUsername[mentionName];
|
||||
}
|
||||
|
||||
// Repeatedly trim off trailing punctuation in case this is at the end of a sentence
|
||||
|
|
@ -111,6 +109,13 @@ export default class AtMention extends React.PureComponent {
|
|||
Clipboard.setString(`@${username}`);
|
||||
};
|
||||
|
||||
updateUsername = () => {
|
||||
const user = this.getUserDetailsFromMentionName();
|
||||
this.setState({
|
||||
user,
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
const {isSearchResult, mentionName, mentionStyle, onPostPress, teammateNameDisplay, textStyle, mentionKeys} = this.props;
|
||||
const {user} = this.state;
|
||||
|
|
|
|||
|
|
@ -45,21 +45,15 @@ export default class DateSuggestion extends PureComponent {
|
|||
this.setCalendarLocale();
|
||||
}
|
||||
|
||||
componentWillReceiveProps(nextProps) {
|
||||
const {matchTerm} = nextProps;
|
||||
componentDidUpdate(prevProps) {
|
||||
const {locale, matchTerm} = this.props;
|
||||
|
||||
if ((matchTerm !== this.props.matchTerm && matchTerm === null) || this.state.mentionComplete) {
|
||||
// if the term changes but is null or the mention has been completed we render this component as null
|
||||
this.setState({
|
||||
mentionComplete: false,
|
||||
sections: [],
|
||||
});
|
||||
|
||||
this.props.onResultCountChange(0);
|
||||
if ((matchTerm !== prevProps.matchTerm && matchTerm === null) || this.state.mentionComplete) {
|
||||
this.resetComponent();
|
||||
}
|
||||
|
||||
if (this.props.locale !== nextProps.locale) {
|
||||
this.setCalendarLocale(nextProps);
|
||||
if (locale !== prevProps.locale) {
|
||||
this.setCalendarLocale();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -80,10 +74,20 @@ export default class DateSuggestion extends PureComponent {
|
|||
this.setState({mentionComplete: true});
|
||||
};
|
||||
|
||||
setCalendarLocale = (props = this.props) => {
|
||||
resetComponent() {
|
||||
this.setState({
|
||||
mentionComplete: false,
|
||||
sections: [],
|
||||
});
|
||||
|
||||
this.props.onResultCountChange(0);
|
||||
}
|
||||
|
||||
setCalendarLocale = () => {
|
||||
const {locale} = this.props;
|
||||
const {formatMessage} = this.context.intl;
|
||||
|
||||
LocaleConfig.locales[props.locale] = {
|
||||
LocaleConfig.locales[locale] = {
|
||||
monthNames: formatMessage({
|
||||
id: 'mobile.calendar.monthNames',
|
||||
defaultMessage: 'January,February,March,April,May,June,July,August,September,October,November,December',
|
||||
|
|
@ -102,7 +106,7 @@ export default class DateSuggestion extends PureComponent {
|
|||
}).split(','),
|
||||
};
|
||||
|
||||
LocaleConfig.defaultLocale = props.locale;
|
||||
LocaleConfig.defaultLocale = locale;
|
||||
};
|
||||
|
||||
render() {
|
||||
|
|
@ -122,6 +126,7 @@ export default class DateSuggestion extends PureComponent {
|
|||
<CalendarList
|
||||
style={styles.calList}
|
||||
current={currentDate}
|
||||
maxDate={currentDate}
|
||||
pastScrollRange={24}
|
||||
futureScrollRange={0}
|
||||
scrollingEnabled={true}
|
||||
|
|
|
|||
|
|
@ -283,7 +283,7 @@ exports[`EditChannelInfo should match snapshot 1`] = `
|
|||
value="header"
|
||||
/>
|
||||
</View>
|
||||
<ForwardRef(forwardConnectRef)
|
||||
<Connect(Autocomplete)
|
||||
cursorPosition={6}
|
||||
expandDown={true}
|
||||
maxHeight={200}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ exports[`PostAttachmentImage should match snapshot 1`] = `
|
|||
type="none"
|
||||
>
|
||||
<View>
|
||||
<ForwardRef(forwardConnectRef)
|
||||
<Connect(ProgressiveImage)
|
||||
imageUri="uri"
|
||||
onError={[MockFunction]}
|
||||
resizeMode="contain"
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@ export default class PostTextBoxIOS extends PostTextBoxBase {
|
|||
}
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<>
|
||||
<Typing/>
|
||||
{this.renderTextBox()}
|
||||
</React.Fragment>
|
||||
</>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// See LICENSE.txt for license information.
|
||||
|
||||
import React from 'react';
|
||||
import {StyleSheet, View} from 'react-native';
|
||||
import {View} from 'react-native';
|
||||
import {KeyboardTrackingView} from 'react-native-keyboard-tracking-view';
|
||||
|
||||
import Autocomplete, {AUTOCOMPLETE_MAX_HEIGHT} from 'app/components/autocomplete';
|
||||
|
|
@ -13,6 +13,7 @@ import PostTextbox from 'app/components/post_textbox';
|
|||
import SafeAreaView from 'app/components/safe_area_view';
|
||||
import SettingsSidebar from 'app/components/sidebars/settings';
|
||||
import StatusBar from 'app/components/status_bar';
|
||||
import {makeStyleSheetFromTheme} from 'app/utils/theme';
|
||||
|
||||
import LocalConfig from 'assets/config';
|
||||
|
||||
|
|
@ -57,6 +58,7 @@ export default class ChannelIOS extends ChannelBase {
|
|||
return channelLoadingOrFailed;
|
||||
}
|
||||
|
||||
const style = getStyle(theme);
|
||||
const drawerContent = (
|
||||
<>
|
||||
<SafeAreaView>
|
||||
|
|
@ -98,7 +100,7 @@ export default class ChannelIOS extends ChannelBase {
|
|||
return (
|
||||
<MainSidebar ref={this.mainSidebarRef}>
|
||||
<SettingsSidebar ref={this.settingsSidebarRef}>
|
||||
<View style={style.flex}>
|
||||
<View style={style.backdrop}>
|
||||
{drawerContent}
|
||||
</View>
|
||||
</SettingsSidebar>
|
||||
|
|
@ -110,8 +112,9 @@ export default class ChannelIOS extends ChannelBase {
|
|||
}
|
||||
}
|
||||
|
||||
export const style = StyleSheet.create({
|
||||
flex: {
|
||||
const getStyle = makeStyleSheetFromTheme((theme) => ({
|
||||
backdrop: {
|
||||
flex: 1,
|
||||
backgroundColor: theme.centerChannelBg,
|
||||
},
|
||||
});
|
||||
}));
|
||||
|
|
@ -106,8 +106,11 @@ export default class ChannelBase extends PureComponent {
|
|||
}
|
||||
|
||||
if (this.props.theme !== prevProps.theme) {
|
||||
setNavigatorStyles(this.props.componentId, this.props.theme);
|
||||
EphemeralStore.allNavigationComponentIds.forEach((componentId) => {
|
||||
setNavigatorStyles(componentId, this.props.theme);
|
||||
if (this.props.componentId !== componentId) {
|
||||
setNavigatorStyles(componentId, this.props.theme);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -71,10 +71,10 @@ describe('ChannelBase', () => {
|
|||
|
||||
const newThemeOptions = optionsForTheme(Preferences.THEMES.mattermostDark);
|
||||
expect(mergeNavigationOptions.mock.calls).toEqual([
|
||||
[baseProps.componentId, newThemeOptions],
|
||||
[componentIds[2], newThemeOptions],
|
||||
[componentIds[1], newThemeOptions],
|
||||
[componentIds[0], newThemeOptions],
|
||||
[baseProps.componentId, newThemeOptions],
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`ChannelMembers should match snapshot 1`] = `
|
||||
<ForwardRef(forwardConnectRef)>
|
||||
<Connect(KeyboardLayout)>
|
||||
<Connect(StatusBar) />
|
||||
<View
|
||||
style={
|
||||
|
|
@ -88,5 +88,5 @@ exports[`ChannelMembers should match snapshot 1`] = `
|
|||
}
|
||||
}
|
||||
/>
|
||||
</ForwardRef(forwardConnectRef)>
|
||||
</Connect(KeyboardLayout)>
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`MoreChannels should match snapshot 1`] = `
|
||||
<ForwardRef(forwardConnectRef)>
|
||||
<Connect(KeyboardLayout)>
|
||||
<Connect(StatusBar) />
|
||||
<React.Fragment>
|
||||
<View
|
||||
|
|
@ -146,5 +146,5 @@ exports[`MoreChannels should match snapshot 1`] = `
|
|||
}
|
||||
/>
|
||||
</React.Fragment>
|
||||
</ForwardRef(forwardConnectRef)>
|
||||
</Connect(KeyboardLayout)>
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ export default class Notification extends PureComponent {
|
|||
};
|
||||
|
||||
render() {
|
||||
const {deviceWidth, notification} = this.props;
|
||||
const {notification} = this.props;
|
||||
const {data, message} = notification;
|
||||
|
||||
if (message) {
|
||||
|
|
@ -301,13 +301,15 @@ export default class Notification extends PureComponent {
|
|||
>
|
||||
<Animatable.View
|
||||
duration={250}
|
||||
style={style.container}
|
||||
useNativeDriver={true}
|
||||
animation={this.state.keyFrames}
|
||||
>
|
||||
<View style={[style.container, {width: deviceWidth}]}>
|
||||
<View style={{flex: 1}}>
|
||||
<TouchableOpacity
|
||||
style={{flex: 1, flexDirection: 'row'}}
|
||||
onPress={this.notificationTapped}
|
||||
activeOpacity={1}
|
||||
>
|
||||
<View style={style.iconContainer}>
|
||||
{icon}
|
||||
|
|
@ -338,10 +340,11 @@ export default class Notification extends PureComponent {
|
|||
const style = StyleSheet.create({
|
||||
container: {
|
||||
alignItems: 'flex-start',
|
||||
backgroundColor: changeOpacity('#000', 0.9),
|
||||
backgroundColor: changeOpacity('#000', 1),
|
||||
flexDirection: 'row',
|
||||
justifyContent: 'flex-start',
|
||||
paddingHorizontal: 10,
|
||||
width: '100%',
|
||||
...Platform.select({
|
||||
android: {
|
||||
height: 68,
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ exports[`PostOptions should match snapshot, no option for system message to user
|
|||
}
|
||||
}
|
||||
>
|
||||
<ForwardRef(forwardConnectRef)
|
||||
<Connect(SlideUpPanel)
|
||||
allowStayMiddle={false}
|
||||
initialPosition={300}
|
||||
marginFromTop={300}
|
||||
|
|
@ -222,7 +222,7 @@ exports[`PostOptions should match snapshot, no option for system message to user
|
|||
}
|
||||
}
|
||||
/>
|
||||
</ForwardRef(forwardConnectRef)>
|
||||
</Connect(SlideUpPanel)>
|
||||
</View>
|
||||
`;
|
||||
|
||||
|
|
@ -234,7 +234,7 @@ exports[`PostOptions should match snapshot, showing Delete option only for syste
|
|||
}
|
||||
}
|
||||
>
|
||||
<ForwardRef(forwardConnectRef)
|
||||
<Connect(SlideUpPanel)
|
||||
allowStayMiddle={false}
|
||||
initialPosition={350}
|
||||
marginFromTop={250}
|
||||
|
|
@ -484,7 +484,7 @@ exports[`PostOptions should match snapshot, showing Delete option only for syste
|
|||
}
|
||||
}
|
||||
/>
|
||||
</ForwardRef(forwardConnectRef)>
|
||||
</Connect(SlideUpPanel)>
|
||||
</View>
|
||||
`;
|
||||
|
||||
|
|
@ -496,7 +496,7 @@ exports[`PostOptions should match snapshot, showing all possible options 1`] = `
|
|||
}
|
||||
}
|
||||
>
|
||||
<ForwardRef(forwardConnectRef)
|
||||
<Connect(SlideUpPanel)
|
||||
allowStayMiddle={false}
|
||||
initialPosition={350}
|
||||
marginFromTop={250}
|
||||
|
|
@ -746,6 +746,6 @@ exports[`PostOptions should match snapshot, showing all possible options 1`] = `
|
|||
}
|
||||
}
|
||||
/>
|
||||
</ForwardRef(forwardConnectRef)>
|
||||
</Connect(SlideUpPanel)>
|
||||
</View>
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ exports[`ReactionList should match snapshot 1`] = `
|
|||
}
|
||||
}
|
||||
>
|
||||
<ForwardRef(forwardConnectRef)
|
||||
<Connect(SlideUpPanel)
|
||||
header={[Function]}
|
||||
headerHeight={37.5}
|
||||
initialPosition={0.55}
|
||||
|
|
@ -155,7 +155,7 @@ exports[`ReactionList should match snapshot 1`] = `
|
|||
}
|
||||
/>
|
||||
</View>
|
||||
</ForwardRef(forwardConnectRef)>
|
||||
</Connect(SlideUpPanel)>
|
||||
</View>
|
||||
`;
|
||||
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ exports[`thread should match snapshot, has root post 1`] = `
|
|||
<View
|
||||
nativeID="threadAccessoriesContainer"
|
||||
>
|
||||
<ForwardRef(forwardConnectRef)
|
||||
<Connect(Autocomplete)
|
||||
cursorPositionEvent="onThreadTextBoxCursorChange"
|
||||
maxHeight={200}
|
||||
onChangeText={[Function]}
|
||||
|
|
@ -56,7 +56,7 @@ exports[`thread should match snapshot, has root post 1`] = `
|
|||
accessoriesContainerID="threadAccessoriesContainer"
|
||||
scrollViewNativeID="threadPostList"
|
||||
>
|
||||
<ForwardRef(forwardConnectRef)
|
||||
<Connect(PostTextBoxIOS)
|
||||
channelId="channel_id"
|
||||
channelIsArchived={false}
|
||||
cursorPositionEvent="onThreadTextBoxCursorChange"
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ import {
|
|||
goToScreen,
|
||||
popToRoot,
|
||||
dismissModal,
|
||||
dismissAllModals,
|
||||
setButtons,
|
||||
} from 'app/actions/navigation';
|
||||
|
||||
|
|
@ -110,7 +109,6 @@ export default class UserProfile extends PureComponent {
|
|||
return;
|
||||
}
|
||||
|
||||
await dismissAllModals();
|
||||
await popToRoot();
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -168,7 +168,6 @@ describe('user_profile', () => {
|
|||
|
||||
test('close should dismiss all modals and pop to root when fromSettings is false', async () => {
|
||||
const dismissModal = jest.spyOn(NavigationActions, 'dismissModal');
|
||||
const dismissAllModals = jest.spyOn(NavigationActions, 'dismissAllModals');
|
||||
const popToRoot = jest.spyOn(NavigationActions, 'popToRoot');
|
||||
|
||||
const props = {...baseProps, fromSettings: false};
|
||||
|
|
@ -183,7 +182,6 @@ describe('user_profile', () => {
|
|||
|
||||
await wrapper.instance().close();
|
||||
expect(dismissModal).toHaveBeenCalledTimes(0);
|
||||
expect(dismissAllModals).toHaveBeenCalledTimes(1);
|
||||
expect(popToRoot).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,11 @@ class EphemeralStore {
|
|||
|
||||
getNavigationTopComponentId = () => this.navigationComponentIdStack[0];
|
||||
|
||||
clearNavigationComponents = () => {
|
||||
this.navigationComponentIdStack = [];
|
||||
this.allNavigationComponentIds = [];
|
||||
};
|
||||
|
||||
addNavigationComponentId = (componentId) => {
|
||||
this.addToNavigationComponentIdStack(componentId);
|
||||
this.addToAllNavigationComponentIds(componentId);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
gem "fastlane"
|
||||
gem "fastlane", "2.141.0"
|
||||
gem "nokogiri"
|
||||
gem "aws-sdk-s3"
|
||||
|
||||
|
|
|
|||
|
|
@ -6,20 +6,20 @@ GEM
|
|||
public_suffix (>= 2.0.2, < 5.0)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.0.3)
|
||||
aws-partitions (1.276.0)
|
||||
aws-sdk-core (3.90.1)
|
||||
aws-partitions (1.281.0)
|
||||
aws-sdk-core (3.91.0)
|
||||
aws-eventstream (~> 1.0, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.239.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.29.0)
|
||||
aws-sdk-kms (1.30.0)
|
||||
aws-sdk-core (~> 3, >= 3.71.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.60.2)
|
||||
aws-sdk-s3 (1.61.0)
|
||||
aws-sdk-core (~> 3, >= 3.83.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sigv4 (1.1.0)
|
||||
aws-sigv4 (1.1.1)
|
||||
aws-eventstream (~> 1.0, >= 1.0.2)
|
||||
babosa (1.0.3)
|
||||
claide (1.0.3)
|
||||
|
|
@ -29,7 +29,7 @@ GEM
|
|||
highline (~> 1.7.2)
|
||||
declarative (0.0.10)
|
||||
declarative-option (0.1.0)
|
||||
digest-crc (0.4.1)
|
||||
digest-crc (0.5.1)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.7.5)
|
||||
|
|
@ -43,7 +43,7 @@ GEM
|
|||
faraday_middleware (0.13.1)
|
||||
faraday (>= 0.7.4, < 1.0)
|
||||
fastimage (2.1.7)
|
||||
fastlane (2.142.0)
|
||||
fastlane (2.141.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.3, < 3.0.0)
|
||||
babosa (>= 1.0.2, < 2.0.0)
|
||||
|
|
@ -97,8 +97,8 @@ GEM
|
|||
google-cloud-core (1.5.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
google-cloud-errors (~> 1.0)
|
||||
google-cloud-env (1.3.0)
|
||||
faraday (~> 0.11)
|
||||
google-cloud-env (1.3.1)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
google-cloud-errors (1.0.0)
|
||||
google-cloud-storage (1.25.1)
|
||||
addressable (~> 2.5)
|
||||
|
|
@ -130,7 +130,7 @@ GEM
|
|||
multipart-post (2.0.0)
|
||||
nanaimo (0.2.6)
|
||||
naturally (2.2.0)
|
||||
nokogiri (1.10.8)
|
||||
nokogiri (1.10.9)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
os (1.0.1)
|
||||
plist (3.5.0)
|
||||
|
|
@ -163,7 +163,7 @@ GEM
|
|||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.7.6)
|
||||
unicode-display_width (1.6.1)
|
||||
unicode-display_width (1.7.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.15.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
|
|
@ -181,7 +181,7 @@ PLATFORMS
|
|||
|
||||
DEPENDENCIES
|
||||
aws-sdk-s3
|
||||
fastlane
|
||||
fastlane (= 2.141.0)
|
||||
fastlane-plugin-android_change_package_identifier
|
||||
fastlane-plugin-android_change_string_app_name
|
||||
fastlane-plugin-find_replace_string
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ PODS:
|
|||
- DoubleConversion
|
||||
- glog
|
||||
- glog (0.3.5)
|
||||
- jail-monkey (2.3.1):
|
||||
- jail-monkey (2.3.2):
|
||||
- React
|
||||
- libwebp (1.1.0):
|
||||
- libwebp/demux (= 1.1.0)
|
||||
|
|
@ -202,17 +202,15 @@ PODS:
|
|||
- React-cxxreact (= 0.61.5)
|
||||
- React-jsi (= 0.61.5)
|
||||
- React-jsinspector (0.61.5)
|
||||
- react-native-cameraroll (1.3.0):
|
||||
- react-native-cameraroll (1.4.1):
|
||||
- React
|
||||
- react-native-cookies (3.2.0):
|
||||
- React
|
||||
- react-native-document-picker (3.2.4):
|
||||
- react-native-document-picker (3.3.0):
|
||||
- React
|
||||
- react-native-hw-keyboard-event (0.0.4):
|
||||
- React
|
||||
- react-native-image-picker (2.0.0):
|
||||
- React
|
||||
- react-native-local-auth (1.5.0):
|
||||
- react-native-image-picker (2.3.1):
|
||||
- React
|
||||
- react-native-netinfo (4.4.0):
|
||||
- React
|
||||
|
|
@ -268,21 +266,21 @@ PODS:
|
|||
- React
|
||||
- ReactNativeKeyboardTrackingView (5.6.1):
|
||||
- React
|
||||
- ReactNativeNavigation (6.1.1):
|
||||
- ReactNativeNavigation (6.2.0):
|
||||
- React
|
||||
- React-RCTImage
|
||||
- React-RCTText
|
||||
- rn-fetch-blob (0.12.0):
|
||||
- React-Core
|
||||
- RNCAsyncStorage (1.7.1):
|
||||
- RNCAsyncStorage (1.8.1):
|
||||
- React
|
||||
- RNDeviceInfo (2.1.2):
|
||||
- React
|
||||
- RNFastImage (7.0.2):
|
||||
- RNFastImage (8.1.5):
|
||||
- React
|
||||
- SDWebImage (~> 5.0)
|
||||
- SDWebImageWebPCoder (~> 0.2.3)
|
||||
- RNGestureHandler (1.5.3):
|
||||
- SDWebImageWebPCoder (~> 0.4.1)
|
||||
- RNGestureHandler (1.6.0):
|
||||
- React
|
||||
- RNKeychain (4.0.5):
|
||||
- React
|
||||
|
|
@ -290,21 +288,21 @@ PODS:
|
|||
- React
|
||||
- RNReactNativeDocViewer (1.0.0):
|
||||
- React
|
||||
- RNReactNativeHapticFeedback (1.8.2):
|
||||
- RNReactNativeHapticFeedback (1.9.0):
|
||||
- React
|
||||
- RNSentry (1.2.1):
|
||||
- RNSentry (1.3.3):
|
||||
- React
|
||||
- Sentry (~> 4.4.0)
|
||||
- RNSVG (10.1.0):
|
||||
- RNSVG (12.0.3):
|
||||
- React
|
||||
- RNVectorIcons (6.6.0):
|
||||
- React
|
||||
- SDWebImage (5.4.2):
|
||||
- SDWebImage/Core (= 5.4.2)
|
||||
- SDWebImage/Core (5.4.2)
|
||||
- SDWebImageWebPCoder (0.2.5):
|
||||
- SDWebImage (5.6.1):
|
||||
- SDWebImage/Core (= 5.6.1)
|
||||
- SDWebImage/Core (5.6.1)
|
||||
- SDWebImageWebPCoder (0.4.1):
|
||||
- libwebp (~> 1.0)
|
||||
- SDWebImage/Core (~> 5.0)
|
||||
- SDWebImage/Core (~> 5.5)
|
||||
- Sentry (4.4.3):
|
||||
- Sentry/Core (= 4.4.3)
|
||||
- Sentry/Core (4.4.3)
|
||||
|
|
@ -340,7 +338,6 @@ DEPENDENCIES:
|
|||
- react-native-document-picker (from `../node_modules/react-native-document-picker`)
|
||||
- react-native-hw-keyboard-event (from `../node_modules/react-native-hw-keyboard-event`)
|
||||
- react-native-image-picker (from `../node_modules/react-native-image-picker`)
|
||||
- react-native-local-auth (from `../node_modules/react-native-local-auth`)
|
||||
- "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
|
||||
- react-native-notifications (from `../node_modules/react-native-notifications`)
|
||||
- react-native-passcode-status (from `../node_modules/react-native-passcode-status`)
|
||||
|
|
@ -437,8 +434,6 @@ EXTERNAL SOURCES:
|
|||
:path: "../node_modules/react-native-hw-keyboard-event"
|
||||
react-native-image-picker:
|
||||
:path: "../node_modules/react-native-image-picker"
|
||||
react-native-local-auth:
|
||||
:path: "../node_modules/react-native-local-auth"
|
||||
react-native-netinfo:
|
||||
:path: "../node_modules/@react-native-community/netinfo"
|
||||
react-native-notifications:
|
||||
|
|
@ -512,7 +507,7 @@ SPEC CHECKSUMS:
|
|||
FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75
|
||||
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
|
||||
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
|
||||
jail-monkey: 8eb1b5d4ab5f2a55937dd123e6450cbbff0c8032
|
||||
jail-monkey: d7c5048b2336f22ee9c9e0efa145f1f917338ea9
|
||||
libwebp: 946cb3063cea9236285f7e9a8505d806d30e07f3
|
||||
Permission-Camera: b0fec577b27488314a885f9c74433e02f3585b9b
|
||||
Permission-PhotoLibrary: 51718ddf8c0baf1cebf323c68cedcb2ff0cf304a
|
||||
|
|
@ -526,12 +521,11 @@ SPEC CHECKSUMS:
|
|||
React-jsi: cb2cd74d7ccf4cffb071a46833613edc79cdf8f7
|
||||
React-jsiexecutor: d5525f9ed5f782fdbacb64b9b01a43a9323d2386
|
||||
React-jsinspector: fa0ecc501688c3c4c34f28834a76302233e29dc0
|
||||
react-native-cameraroll: ad20f5a93c25cb83a76455df57a2c62fbb63aaed
|
||||
react-native-cameraroll: 035c425c733acd3333e6c673db5ab66a559ca2e0
|
||||
react-native-cookies: 854d59c4135c70b92a02ca4930e68e4e2eb58150
|
||||
react-native-document-picker: c36bf5f067a581657ecaf7124dcd921a8be19061
|
||||
react-native-document-picker: 0573c02d742d4bef38a5d16b5f039754cfa69888
|
||||
react-native-hw-keyboard-event: b517cefb8d5c659a38049c582de85ff43337dc53
|
||||
react-native-image-picker: ba7fe85b3373ff33d4827210d989dfcbbd68f7f9
|
||||
react-native-local-auth: 5081a70211643de74bb207e007401a0c81b37a20
|
||||
react-native-image-picker: 668e72d0277dc8c12ae90e835507c1eddd2e4f85
|
||||
react-native-netinfo: 892a5130be97ff8bb69c523739c424a2ffc296d1
|
||||
react-native-notifications: d5cb54ef8bf3004dcb56c887650dea08ecbddee7
|
||||
react-native-passcode-status: 88c4f6e074328bc278bd127646b6c694ad5a530a
|
||||
|
|
@ -550,21 +544,21 @@ SPEC CHECKSUMS:
|
|||
ReactCommon: 198c7c8d3591f975e5431bec1b0b3b581aa1c5dd
|
||||
ReactNativeExceptionHandler: 8025d98049c25f186835a3af732dd7c9974d6dce
|
||||
ReactNativeKeyboardTrackingView: a240a6a0dba852bb107109a7ec7e98b884055977
|
||||
ReactNativeNavigation: 8f781c932c53011889d4952c90589e22d982dbb3
|
||||
ReactNativeNavigation: 14cf9ef91075a86404c3c6336bc65105a34b946b
|
||||
rn-fetch-blob: 17961aec08caae68bb8fc0e5b40f93b3acfa6932
|
||||
RNCAsyncStorage: 8539fc80a0075fcc9c8e2dff84cd22dc5bf1dacf
|
||||
RNCAsyncStorage: 00bdf63f7f1e0f11d3323533dba4f222e58bf092
|
||||
RNDeviceInfo: fd8296de6fca8b743cdc499b896f48e8a9f1faf5
|
||||
RNFastImage: 9b0c22643872bb7494c8d87bbbb66cc4c0d9e7a2
|
||||
RNGestureHandler: 02905abe54e1f6e59c081a10b4bd689721e17aa6
|
||||
RNFastImage: 35ae972d6727c84ee3f5c6897e07f84d0a3445e9
|
||||
RNGestureHandler: dde546180bf24af0b5f737c8ad04b6f3fa51609a
|
||||
RNKeychain: 840f8e6f13be0576202aefcdffd26a4f54bfe7b5
|
||||
RNPermissions: 6db7e0a4d94c9c02390d11020b1d3d187aaf77e5
|
||||
RNReactNativeDocViewer: 571c6ac38483531b8fb521d02a6ba54652ed10a7
|
||||
RNReactNativeHapticFeedback: e11a4da0ce174e9f88b03cbaf5d76d94633cdee2
|
||||
RNSentry: 9b1d983b2d5d1c215ba6490348fd2a4cc23a8a9d
|
||||
RNSVG: 069864be08c9fe065a2cf7e63656a34c78653c99
|
||||
RNReactNativeHapticFeedback: 2566b468cc8d0e7bb2f84b23adc0f4614594d071
|
||||
RNSentry: 86baf0c87120cd5eb491d073989f8cbc1a2174c6
|
||||
RNSVG: 7e16ddfc6e00d5aa69c9eb83e699bcce5dcb85d4
|
||||
RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4
|
||||
SDWebImage: 4ca2dc4eefae4224bea8f504251cda485a363745
|
||||
SDWebImageWebPCoder: 947093edd1349d820c40afbd9f42acb6cdecd987
|
||||
SDWebImage: 7edb9c3ea661e77a66661f7f044de8c1b55d1120
|
||||
SDWebImageWebPCoder: 36f8f47bd9879a8aea6044765c1351120fd8e3a8
|
||||
Sentry: 14bdd673870e8cf64932b149fad5bbbf39a9b390
|
||||
Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b
|
||||
XCDYouTubeKit: 79baadb0560673a67c771eba45f83e353fd12c1f
|
||||
|
|
|
|||
10457
package-lock.json
generated
10457
package-lock.json
generated
File diff suppressed because it is too large
Load diff
83
package.json
83
package.json
|
|
@ -7,68 +7,67 @@
|
|||
"license": "Apache 2.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "7.8.3",
|
||||
"@react-native-community/async-storage": "1.7.1",
|
||||
"@react-native-community/cameraroll": "1.3.0",
|
||||
"@babel/runtime": "7.8.7",
|
||||
"@react-native-community/async-storage": "1.8.1",
|
||||
"@react-native-community/cameraroll": "1.4.1",
|
||||
"@react-native-community/netinfo": "4.4.0",
|
||||
"@sentry/react-native": "1.2.1",
|
||||
"@sentry/react-native": "1.3.3",
|
||||
"analytics-react-native": "1.2.0",
|
||||
"commonmark": "github:mattermost/commonmark.js#f6ab98dede6ce4b4e7adea140ac77249bfb2d6ce",
|
||||
"commonmark-react-renderer": "github:mattermost/commonmark-react-renderer#3a2ac19cab725ad28b170fdc1d397dddedcf87eb",
|
||||
"core-js": "3.6.3",
|
||||
"core-js": "3.6.4",
|
||||
"deep-equal": "2.0.1",
|
||||
"deepmerge": "4.2.2",
|
||||
"emoji-regex": "8.0.0",
|
||||
"form-data": "3.0.0",
|
||||
"fuse.js": "3.4.6",
|
||||
"fuse.js": "3.6.1",
|
||||
"intl": "1.2.5",
|
||||
"jail-monkey": "2.3.1",
|
||||
"jsc-android": "241213.2.0",
|
||||
"mattermost-redux": "github:mattermost/mattermost-redux#7c598c50a9d53e68503c8bc48ac258b09a15d1fb",
|
||||
"jail-monkey": "2.3.2",
|
||||
"mattermost-redux": "github:mattermost/mattermost-redux#21d68fc617f44cad43adc2f1d79169bf7245e3c0",
|
||||
"mime-db": "1.43.0",
|
||||
"moment-timezone": "0.5.27",
|
||||
"moment-timezone": "0.5.28",
|
||||
"prop-types": "15.7.2",
|
||||
"react": "16.12.0",
|
||||
"react": "16.13.0",
|
||||
"react-intl": "2.8.0",
|
||||
"react-native": "0.61.5",
|
||||
"react-native-android-open-settings": "1.3.0",
|
||||
"react-native-animatable": "1.3.3",
|
||||
"react-native-button": "2.4.0",
|
||||
"react-native-calendars": "github:mattermost/react-native-calendars#4937ec5a3bf7e86f9f35fcd85eb4aa6133f45b58",
|
||||
"react-native-circular-progress": "1.3.4",
|
||||
"react-native-calendars": "1.264.0",
|
||||
"react-native-circular-progress": "1.3.6",
|
||||
"react-native-cookies": "github:mattermost/react-native-cookies#b35bafc388ae09c83bd875e887daf6a0755e0b40",
|
||||
"react-native-device-info": "github:mattermost/react-native-device-info#f7175f10822d8f66b9806206e3313eaf2f4aabc6",
|
||||
"react-native-doc-viewer": "github:mattermost/react-native-doc-viewer#c913e54ec8e4a60753bc7dd39256fa4be8229d19",
|
||||
"react-native-document-picker": "3.2.4",
|
||||
"react-native-document-picker": "3.3.0",
|
||||
"react-native-exception-handler": "2.10.8",
|
||||
"react-native-fast-image": "7.0.2",
|
||||
"react-native-gesture-handler": "1.5.3",
|
||||
"react-native-haptic-feedback": "1.8.2",
|
||||
"react-native-fast-image": "8.1.5",
|
||||
"react-native-gesture-handler": "1.6.0",
|
||||
"react-native-haptic-feedback": "1.9.0",
|
||||
"react-native-hw-keyboard-event": "0.0.4",
|
||||
"react-native-image-gallery": "github:mattermost/react-native-image-gallery#c1a9f7118e90cc87d47620bc0584c9cac4b0cf38",
|
||||
"react-native-image-picker": "2.0.0",
|
||||
"react-native-image-picker": "2.3.1",
|
||||
"react-native-keyboard-aware-scroll-view": "0.9.1",
|
||||
"react-native-keyboard-tracking-view": "5.6.1",
|
||||
"react-native-keychain": "4.0.5",
|
||||
"react-native-linear-gradient": "2.5.6",
|
||||
"react-native-local-auth": "github:mattermost/react-native-local-auth#cc9ce2f468fbf7b431dfad3191a31aaa9227a6ab",
|
||||
"react-native-navigation": "6.1.1",
|
||||
"react-native-local-auth": "1.6.0",
|
||||
"react-native-navigation": "6.3.0",
|
||||
"react-native-notifications": "2.0.6",
|
||||
"react-native-passcode-status": "1.1.2",
|
||||
"react-native-permissions": "2.0.9",
|
||||
"react-native-permissions": "2.0.10",
|
||||
"react-native-safe-area": "0.5.1",
|
||||
"react-native-section-list-get-item-layout": "2.2.3",
|
||||
"react-native-slider": "0.11.0",
|
||||
"react-native-status-bar-size": "0.3.3",
|
||||
"react-native-svg": "10.1.0",
|
||||
"react-native-v8": "0.61.5-patch.0",
|
||||
"react-native-svg": "12.0.3",
|
||||
"react-native-v8": "0.61.5-patch.3",
|
||||
"react-native-vector-icons": "6.6.0",
|
||||
"react-native-video": "5.0.2",
|
||||
"react-native-webview": "github:mattermost/react-native-webview#b5e22940a613869d3999feac9451ee65352f4fbe",
|
||||
"react-native-youtube": "2.0.0",
|
||||
"react-navigation": "4.0.10",
|
||||
"react-navigation-stack": "1.9.4",
|
||||
"react-redux": "7.1.3",
|
||||
"react-redux": "7.2.0",
|
||||
"redux": "4.0.5",
|
||||
"redux-batched-actions": "0.4.1",
|
||||
"redux-offline": "github:mattermost/redux-offline#885024de96b6ec73650c340c8928066585c413df",
|
||||
|
|
@ -78,49 +77,49 @@
|
|||
"reselect": "4.0.0",
|
||||
"rn-fetch-blob": "0.12.0",
|
||||
"rn-placeholder": "github:mattermost/rn-placeholder#02c629c65d0123a2eee623ada0fd17186415d3c3",
|
||||
"semver": "7.1.1",
|
||||
"semver": "7.1.3",
|
||||
"shallow-equals": "1.0.0",
|
||||
"tinycolor2": "1.4.1",
|
||||
"url-parse": "1.4.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "7.8.3",
|
||||
"@babel/core": "7.8.3",
|
||||
"@babel/cli": "7.8.4",
|
||||
"@babel/core": "7.8.7",
|
||||
"@babel/plugin-transform-runtime": "7.8.3",
|
||||
"@babel/preset-env": "7.8.3",
|
||||
"@babel/register": "7.8.3",
|
||||
"@babel/preset-env": "7.8.7",
|
||||
"@babel/register": "7.8.6",
|
||||
"@testing-library/react-native": "5.0.3",
|
||||
"babel-eslint": "10.0.3",
|
||||
"babel-jest": "24.9.0",
|
||||
"babel-eslint": "10.1.0",
|
||||
"babel-jest": "25.1.0",
|
||||
"babel-plugin-module-resolver": "4.0.0",
|
||||
"babel-plugin-transform-remove-console": "6.9.4",
|
||||
"deep-freeze": "0.0.1",
|
||||
"enzyme": "3.11.0",
|
||||
"enzyme-adapter-react-16": "1.15.2",
|
||||
"enzyme-to-json": "3.4.3",
|
||||
"enzyme-to-json": "3.4.4",
|
||||
"eslint": "6.8.0",
|
||||
"eslint-plugin-header": "3.0.0",
|
||||
"eslint-plugin-jest": "23.6.0",
|
||||
"eslint-plugin-jest": "23.8.2",
|
||||
"eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#070ce792d105482ffb2b27cfc0b7e78b3d20acee",
|
||||
"eslint-plugin-react": "7.17.0",
|
||||
"eslint-plugin-react": "7.19.0",
|
||||
"harmony-reflect": "1.6.1",
|
||||
"jest": "24.9.0",
|
||||
"jest-cli": "24.9.0",
|
||||
"jest": "25.1.0",
|
||||
"jest-cli": "25.1.0",
|
||||
"jest-enzyme": "7.1.2",
|
||||
"jetifier": "1.6.5",
|
||||
"jsdom-global": "3.0.2",
|
||||
"metro-react-native-babel-preset": "0.56.4",
|
||||
"metro-react-native-babel-preset": "0.58.0",
|
||||
"mmjstool": "github:mattermost/mattermost-utilities#086f4ffdca4e31a0be22f6bcdfa093ed83fb29e",
|
||||
"mock-async-storage": "2.2.0",
|
||||
"nyc": "15.0.0",
|
||||
"patch-package": "6.2.0",
|
||||
"react-dom": "16.12.0",
|
||||
"react-test-renderer": "16.12.0",
|
||||
"patch-package": "6.2.1",
|
||||
"react-dom": "16.13.0",
|
||||
"react-test-renderer": "16.13.0",
|
||||
"redux-mock-store": "1.5.4",
|
||||
"remote-redux-devtools": "0.5.16",
|
||||
"socketcluster": "14.4.2",
|
||||
"socketcluster": "16.0.1",
|
||||
"underscore": "1.9.2",
|
||||
"util": "0.12.1"
|
||||
"util": "0.12.2"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "node ./node_modules/react-native/local-cli/cli.js start",
|
||||
|
|
|
|||
|
|
@ -203,6 +203,7 @@ module.exports = [
|
|||
'node_modules/lodash/_Uint8Array.js',
|
||||
'node_modules/lodash/_WeakMap.js',
|
||||
'node_modules/lodash/_apply.js',
|
||||
'node_modules/lodash/_arrayEach.js',
|
||||
'node_modules/lodash/_arrayFilter.js',
|
||||
'node_modules/lodash/_arrayIncludes.js',
|
||||
'node_modules/lodash/_arrayIncludesWith.js',
|
||||
|
|
@ -210,9 +211,17 @@ module.exports = [
|
|||
'node_modules/lodash/_arrayMap.js',
|
||||
'node_modules/lodash/_arrayPush.js',
|
||||
'node_modules/lodash/_arraySome.js',
|
||||
'node_modules/lodash/_assignMergeValue.js',
|
||||
'node_modules/lodash/_assignValue.js',
|
||||
'node_modules/lodash/_assocIndexOf.js',
|
||||
'node_modules/lodash/_baseAssign.js',
|
||||
'node_modules/lodash/_baseAssignIn.js',
|
||||
'node_modules/lodash/_baseAssignValue.js',
|
||||
'node_modules/lodash/_baseClamp.js',
|
||||
'node_modules/lodash/_baseClone.js',
|
||||
'node_modules/lodash/_baseCreate.js',
|
||||
'node_modules/lodash/_baseDifference.js',
|
||||
'node_modules/lodash/_baseEach.js',
|
||||
'node_modules/lodash/_baseFindIndex.js',
|
||||
'node_modules/lodash/_baseFlatten.js',
|
||||
'node_modules/lodash/_baseFor.js',
|
||||
|
|
@ -225,25 +234,46 @@ module.exports = [
|
|||
'node_modules/lodash/_baseIsArguments.js',
|
||||
'node_modules/lodash/_baseIsEqual.js',
|
||||
'node_modules/lodash/_baseIsEqualDeep.js',
|
||||
'node_modules/lodash/_baseIsMap.js',
|
||||
'node_modules/lodash/_baseIsMatch.js',
|
||||
'node_modules/lodash/_baseIsNaN.js',
|
||||
'node_modules/lodash/_baseIsNative.js',
|
||||
'node_modules/lodash/_baseIsSet.js',
|
||||
'node_modules/lodash/_baseIsTypedArray.js',
|
||||
'node_modules/lodash/_baseIteratee.js',
|
||||
'node_modules/lodash/_baseKeys.js',
|
||||
'node_modules/lodash/_baseKeysIn.js',
|
||||
'node_modules/lodash/_baseMap.js',
|
||||
'node_modules/lodash/_baseMatches.js',
|
||||
'node_modules/lodash/_baseMatchesProperty.js',
|
||||
'node_modules/lodash/_baseMerge.js',
|
||||
'node_modules/lodash/_baseMergeDeep.js',
|
||||
'node_modules/lodash/_baseProperty.js',
|
||||
'node_modules/lodash/_basePropertyDeep.js',
|
||||
'node_modules/lodash/_baseRest.js',
|
||||
'node_modules/lodash/_baseSetToString.js',
|
||||
'node_modules/lodash/_baseSlice.js',
|
||||
'node_modules/lodash/_baseTimes.js',
|
||||
'node_modules/lodash/_baseToString.js',
|
||||
'node_modules/lodash/_baseUnary.js',
|
||||
'node_modules/lodash/_baseUniq.js',
|
||||
'node_modules/lodash/_baseUnset.js',
|
||||
'node_modules/lodash/_cacheHas.js',
|
||||
'node_modules/lodash/_castFunction.js',
|
||||
'node_modules/lodash/_castPath.js',
|
||||
'node_modules/lodash/_cloneArrayBuffer.js',
|
||||
'node_modules/lodash/_cloneBuffer.js',
|
||||
'node_modules/lodash/_cloneDataView.js',
|
||||
'node_modules/lodash/_cloneRegExp.js',
|
||||
'node_modules/lodash/_cloneSymbol.js',
|
||||
'node_modules/lodash/_cloneTypedArray.js',
|
||||
'node_modules/lodash/_copyArray.js',
|
||||
'node_modules/lodash/_copyObject.js',
|
||||
'node_modules/lodash/_copySymbols.js',
|
||||
'node_modules/lodash/_copySymbolsIn.js',
|
||||
'node_modules/lodash/_coreJsData.js',
|
||||
'node_modules/lodash/_createAssigner.js',
|
||||
'node_modules/lodash/_createBaseEach.js',
|
||||
'node_modules/lodash/_createBaseFor.js',
|
||||
'node_modules/lodash/_createSet.js',
|
||||
'node_modules/lodash/_defineProperty.js',
|
||||
|
|
@ -252,12 +282,14 @@ module.exports = [
|
|||
'node_modules/lodash/_equalObjects.js',
|
||||
'node_modules/lodash/_freeGlobal.js',
|
||||
'node_modules/lodash/_getAllKeys.js',
|
||||
'node_modules/lodash/_getAllKeysIn.js',
|
||||
'node_modules/lodash/_getMapData.js',
|
||||
'node_modules/lodash/_getMatchData.js',
|
||||
'node_modules/lodash/_getNative.js',
|
||||
'node_modules/lodash/_getPrototype.js',
|
||||
'node_modules/lodash/_getRawTag.js',
|
||||
'node_modules/lodash/_getSymbols.js',
|
||||
'node_modules/lodash/_getSymbolsIn.js',
|
||||
'node_modules/lodash/_getTag.js',
|
||||
'node_modules/lodash/_getValue.js',
|
||||
'node_modules/lodash/_hasPath.js',
|
||||
|
|
@ -266,8 +298,12 @@ module.exports = [
|
|||
'node_modules/lodash/_hashGet.js',
|
||||
'node_modules/lodash/_hashHas.js',
|
||||
'node_modules/lodash/_hashSet.js',
|
||||
'node_modules/lodash/_initCloneArray.js',
|
||||
'node_modules/lodash/_initCloneByTag.js',
|
||||
'node_modules/lodash/_initCloneObject.js',
|
||||
'node_modules/lodash/_isFlattenable.js',
|
||||
'node_modules/lodash/_isIndex.js',
|
||||
'node_modules/lodash/_isIterateeCall.js',
|
||||
'node_modules/lodash/_isKey.js',
|
||||
'node_modules/lodash/_isKeyable.js',
|
||||
'node_modules/lodash/_isMasked.js',
|
||||
|
|
@ -288,11 +324,14 @@ module.exports = [
|
|||
'node_modules/lodash/_memoizeCapped.js',
|
||||
'node_modules/lodash/_nativeCreate.js',
|
||||
'node_modules/lodash/_nativeKeys.js',
|
||||
'node_modules/lodash/_nativeKeysIn.js',
|
||||
'node_modules/lodash/_nodeUtil.js',
|
||||
'node_modules/lodash/_objectToString.js',
|
||||
'node_modules/lodash/_overArg.js',
|
||||
'node_modules/lodash/_overRest.js',
|
||||
'node_modules/lodash/_parent.js',
|
||||
'node_modules/lodash/_root.js',
|
||||
'node_modules/lodash/_safeGet.js',
|
||||
'node_modules/lodash/_setCacheAdd.js',
|
||||
'node_modules/lodash/_setCacheHas.js',
|
||||
'node_modules/lodash/_setToArray.js',
|
||||
|
|
@ -307,9 +346,13 @@ module.exports = [
|
|||
'node_modules/lodash/_stringToPath.js',
|
||||
'node_modules/lodash/_toKey.js',
|
||||
'node_modules/lodash/_toSource.js',
|
||||
'node_modules/lodash/clone.js',
|
||||
'node_modules/lodash/cloneDeep.js',
|
||||
'node_modules/lodash/constant.js',
|
||||
'node_modules/lodash/difference.js',
|
||||
'node_modules/lodash/endsWith.js',
|
||||
'node_modules/lodash/eq.js',
|
||||
'node_modules/lodash/forEach.js',
|
||||
'node_modules/lodash/get.js',
|
||||
'node_modules/lodash/hasIn.js',
|
||||
'node_modules/lodash/identity.js',
|
||||
|
|
@ -318,23 +361,38 @@ module.exports = [
|
|||
'node_modules/lodash/isArrayLike.js',
|
||||
'node_modules/lodash/isArrayLikeObject.js',
|
||||
'node_modules/lodash/isBuffer.js',
|
||||
'node_modules/lodash/isEqual.js',
|
||||
'node_modules/lodash/isFunction.js',
|
||||
'node_modules/lodash/isLength.js',
|
||||
'node_modules/lodash/isMap.js',
|
||||
'node_modules/lodash/isNil.js',
|
||||
'node_modules/lodash/isObject.js',
|
||||
'node_modules/lodash/isObjectLike.js',
|
||||
'node_modules/lodash/isPlainObject.js',
|
||||
'node_modules/lodash/isSet.js',
|
||||
'node_modules/lodash/isString.js',
|
||||
'node_modules/lodash/isSymbol.js',
|
||||
'node_modules/lodash/isTypedArray.js',
|
||||
'node_modules/lodash/keys.js',
|
||||
'node_modules/lodash/keysIn.js',
|
||||
'node_modules/lodash/last.js',
|
||||
'node_modules/lodash/lodash.js',
|
||||
'node_modules/lodash/map.js',
|
||||
'node_modules/lodash/mapValues.js',
|
||||
'node_modules/lodash/memoize.js',
|
||||
'node_modules/lodash/merge.js',
|
||||
'node_modules/lodash/noop.js',
|
||||
'node_modules/lodash/property.js',
|
||||
'node_modules/lodash/stubArray.js',
|
||||
'node_modules/lodash/stubFalse.js',
|
||||
'node_modules/lodash/toFinite.js',
|
||||
'node_modules/lodash/toInteger.js',
|
||||
'node_modules/lodash/toNumber.js',
|
||||
'node_modules/lodash/toPlainObject.js',
|
||||
'node_modules/lodash/toString.js',
|
||||
'node_modules/lodash/union.js',
|
||||
'node_modules/lodash/uniqueId.js',
|
||||
'node_modules/lodash/unset.js',
|
||||
'node_modules/mattermost-redux/action_types/admin.js',
|
||||
'node_modules/mattermost-redux/action_types/alerts.js',
|
||||
'node_modules/mattermost-redux/action_types/bots.js',
|
||||
|
|
@ -492,6 +550,7 @@ module.exports = [
|
|||
'node_modules/react-native-gesture-handler/GestureHandler.js',
|
||||
'node_modules/react-native-gesture-handler/GestureHandlerButton.js',
|
||||
'node_modules/react-native-gesture-handler/GestureHandlerPropTypes.js',
|
||||
'node_modules/react-native-gesture-handler/GestureHandlerRootView.android.js',
|
||||
'node_modules/react-native-gesture-handler/Gestures.js',
|
||||
'node_modules/react-native-gesture-handler/NativeViewGestureHandler.js',
|
||||
'node_modules/react-native-gesture-handler/PlatformConstants.js',
|
||||
|
|
@ -500,7 +559,7 @@ module.exports = [
|
|||
'node_modules/react-native-gesture-handler/Swipeable.js',
|
||||
'node_modules/react-native-gesture-handler/createHandler.js',
|
||||
'node_modules/react-native-gesture-handler/createNativeWrapper.js',
|
||||
'node_modules/react-native-gesture-handler/gestureHandlerRootHOC.android.js',
|
||||
'node_modules/react-native-gesture-handler/gestureHandlerRootHOC.js',
|
||||
'node_modules/react-native-gesture-handler/index.js',
|
||||
'node_modules/react-native-gesture-handler/touchables/GenericTouchable.js',
|
||||
'node_modules/react-native-gesture-handler/touchables/TouchableHighlight.js',
|
||||
|
|
@ -517,10 +576,10 @@ module.exports = [
|
|||
'node_modules/react-native-navigation/lib/dist/adapters/Constants.js',
|
||||
'node_modules/react-native-navigation/lib/dist/adapters/NativeCommandsSender.js',
|
||||
'node_modules/react-native-navigation/lib/dist/adapters/NativeEventsReceiver.js',
|
||||
'node_modules/react-native-navigation/lib/dist/adapters/SharedElement.js',
|
||||
'node_modules/react-native-navigation/lib/dist/adapters/TouchablePreview.js',
|
||||
'node_modules/react-native-navigation/lib/dist/adapters/UniqueIdProvider.js',
|
||||
'node_modules/react-native-navigation/lib/dist/commands/Commands.js',
|
||||
'node_modules/react-native-navigation/lib/dist/commands/Deprecations.js',
|
||||
'node_modules/react-native-navigation/lib/dist/commands/LayoutTreeCrawler.js',
|
||||
'node_modules/react-native-navigation/lib/dist/commands/LayoutTreeParser.js',
|
||||
'node_modules/react-native-navigation/lib/dist/commands/LayoutType.js',
|
||||
|
|
@ -851,6 +910,7 @@ module.exports = [
|
|||
'node_modules/semver/functions/satisfies.js',
|
||||
'node_modules/semver/functions/sort.js',
|
||||
'node_modules/semver/functions/valid.js',
|
||||
'node_modules/semver/index.js',
|
||||
'node_modules/semver/internal/constants.js',
|
||||
'node_modules/semver/internal/debug.js',
|
||||
'node_modules/semver/internal/identifiers.js',
|
||||
|
|
|
|||
|
|
@ -192,6 +192,7 @@ module.exports = [
|
|||
'./node_modules/node_modules/lodash/_Uint8Array.js',
|
||||
'./node_modules/node_modules/lodash/_WeakMap.js',
|
||||
'./node_modules/node_modules/lodash/_apply.js',
|
||||
'./node_modules/node_modules/lodash/_arrayEach.js',
|
||||
'./node_modules/node_modules/lodash/_arrayFilter.js',
|
||||
'./node_modules/node_modules/lodash/_arrayIncludes.js',
|
||||
'./node_modules/node_modules/lodash/_arrayIncludesWith.js',
|
||||
|
|
@ -199,9 +200,17 @@ module.exports = [
|
|||
'./node_modules/node_modules/lodash/_arrayMap.js',
|
||||
'./node_modules/node_modules/lodash/_arrayPush.js',
|
||||
'./node_modules/node_modules/lodash/_arraySome.js',
|
||||
'./node_modules/node_modules/lodash/_assignMergeValue.js',
|
||||
'./node_modules/node_modules/lodash/_assignValue.js',
|
||||
'./node_modules/node_modules/lodash/_assocIndexOf.js',
|
||||
'./node_modules/node_modules/lodash/_baseAssign.js',
|
||||
'./node_modules/node_modules/lodash/_baseAssignIn.js',
|
||||
'./node_modules/node_modules/lodash/_baseAssignValue.js',
|
||||
'./node_modules/node_modules/lodash/_baseClamp.js',
|
||||
'./node_modules/node_modules/lodash/_baseClone.js',
|
||||
'./node_modules/node_modules/lodash/_baseCreate.js',
|
||||
'./node_modules/node_modules/lodash/_baseDifference.js',
|
||||
'./node_modules/node_modules/lodash/_baseEach.js',
|
||||
'./node_modules/node_modules/lodash/_baseFindIndex.js',
|
||||
'./node_modules/node_modules/lodash/_baseFlatten.js',
|
||||
'./node_modules/node_modules/lodash/_baseFor.js',
|
||||
|
|
@ -214,25 +223,46 @@ module.exports = [
|
|||
'./node_modules/node_modules/lodash/_baseIsArguments.js',
|
||||
'./node_modules/node_modules/lodash/_baseIsEqual.js',
|
||||
'./node_modules/node_modules/lodash/_baseIsEqualDeep.js',
|
||||
'./node_modules/node_modules/lodash/_baseIsMap.js',
|
||||
'./node_modules/node_modules/lodash/_baseIsMatch.js',
|
||||
'./node_modules/node_modules/lodash/_baseIsNaN.js',
|
||||
'./node_modules/node_modules/lodash/_baseIsNative.js',
|
||||
'./node_modules/node_modules/lodash/_baseIsSet.js',
|
||||
'./node_modules/node_modules/lodash/_baseIsTypedArray.js',
|
||||
'./node_modules/node_modules/lodash/_baseIteratee.js',
|
||||
'./node_modules/node_modules/lodash/_baseKeys.js',
|
||||
'./node_modules/node_modules/lodash/_baseKeysIn.js',
|
||||
'./node_modules/node_modules/lodash/_baseMap.js',
|
||||
'./node_modules/node_modules/lodash/_baseMatches.js',
|
||||
'./node_modules/node_modules/lodash/_baseMatchesProperty.js',
|
||||
'./node_modules/node_modules/lodash/_baseMerge.js',
|
||||
'./node_modules/node_modules/lodash/_baseMergeDeep.js',
|
||||
'./node_modules/node_modules/lodash/_baseProperty.js',
|
||||
'./node_modules/node_modules/lodash/_basePropertyDeep.js',
|
||||
'./node_modules/node_modules/lodash/_baseRest.js',
|
||||
'./node_modules/node_modules/lodash/_baseSetToString.js',
|
||||
'./node_modules/node_modules/lodash/_baseSlice.js',
|
||||
'./node_modules/node_modules/lodash/_baseTimes.js',
|
||||
'./node_modules/node_modules/lodash/_baseToString.js',
|
||||
'./node_modules/node_modules/lodash/_baseUnary.js',
|
||||
'./node_modules/node_modules/lodash/_baseUniq.js',
|
||||
'./node_modules/node_modules/lodash/_baseUnset.js',
|
||||
'./node_modules/node_modules/lodash/_cacheHas.js',
|
||||
'./node_modules/node_modules/lodash/_castFunction.js',
|
||||
'./node_modules/node_modules/lodash/_castPath.js',
|
||||
'./node_modules/node_modules/lodash/_cloneArrayBuffer.js',
|
||||
'./node_modules/node_modules/lodash/_cloneBuffer.js',
|
||||
'./node_modules/node_modules/lodash/_cloneDataView.js',
|
||||
'./node_modules/node_modules/lodash/_cloneRegExp.js',
|
||||
'./node_modules/node_modules/lodash/_cloneSymbol.js',
|
||||
'./node_modules/node_modules/lodash/_cloneTypedArray.js',
|
||||
'./node_modules/node_modules/lodash/_copyArray.js',
|
||||
'./node_modules/node_modules/lodash/_copyObject.js',
|
||||
'./node_modules/node_modules/lodash/_copySymbols.js',
|
||||
'./node_modules/node_modules/lodash/_copySymbolsIn.js',
|
||||
'./node_modules/node_modules/lodash/_coreJsData.js',
|
||||
'./node_modules/node_modules/lodash/_createAssigner.js',
|
||||
'./node_modules/node_modules/lodash/_createBaseEach.js',
|
||||
'./node_modules/node_modules/lodash/_createBaseFor.js',
|
||||
'./node_modules/node_modules/lodash/_createSet.js',
|
||||
'./node_modules/node_modules/lodash/_defineProperty.js',
|
||||
|
|
@ -241,12 +271,14 @@ module.exports = [
|
|||
'./node_modules/node_modules/lodash/_equalObjects.js',
|
||||
'./node_modules/node_modules/lodash/_freeGlobal.js',
|
||||
'./node_modules/node_modules/lodash/_getAllKeys.js',
|
||||
'./node_modules/node_modules/lodash/_getAllKeysIn.js',
|
||||
'./node_modules/node_modules/lodash/_getMapData.js',
|
||||
'./node_modules/node_modules/lodash/_getMatchData.js',
|
||||
'./node_modules/node_modules/lodash/_getNative.js',
|
||||
'./node_modules/node_modules/lodash/_getPrototype.js',
|
||||
'./node_modules/node_modules/lodash/_getRawTag.js',
|
||||
'./node_modules/node_modules/lodash/_getSymbols.js',
|
||||
'./node_modules/node_modules/lodash/_getSymbolsIn.js',
|
||||
'./node_modules/node_modules/lodash/_getTag.js',
|
||||
'./node_modules/node_modules/lodash/_getValue.js',
|
||||
'./node_modules/node_modules/lodash/_hasPath.js',
|
||||
|
|
@ -255,8 +287,12 @@ module.exports = [
|
|||
'./node_modules/node_modules/lodash/_hashGet.js',
|
||||
'./node_modules/node_modules/lodash/_hashHas.js',
|
||||
'./node_modules/node_modules/lodash/_hashSet.js',
|
||||
'./node_modules/node_modules/lodash/_initCloneArray.js',
|
||||
'./node_modules/node_modules/lodash/_initCloneByTag.js',
|
||||
'./node_modules/node_modules/lodash/_initCloneObject.js',
|
||||
'./node_modules/node_modules/lodash/_isFlattenable.js',
|
||||
'./node_modules/node_modules/lodash/_isIndex.js',
|
||||
'./node_modules/node_modules/lodash/_isIterateeCall.js',
|
||||
'./node_modules/node_modules/lodash/_isKey.js',
|
||||
'./node_modules/node_modules/lodash/_isKeyable.js',
|
||||
'./node_modules/node_modules/lodash/_isMasked.js',
|
||||
|
|
@ -277,11 +313,14 @@ module.exports = [
|
|||
'./node_modules/node_modules/lodash/_memoizeCapped.js',
|
||||
'./node_modules/node_modules/lodash/_nativeCreate.js',
|
||||
'./node_modules/node_modules/lodash/_nativeKeys.js',
|
||||
'./node_modules/node_modules/lodash/_nativeKeysIn.js',
|
||||
'./node_modules/node_modules/lodash/_nodeUtil.js',
|
||||
'./node_modules/node_modules/lodash/_objectToString.js',
|
||||
'./node_modules/node_modules/lodash/_overArg.js',
|
||||
'./node_modules/node_modules/lodash/_overRest.js',
|
||||
'./node_modules/node_modules/lodash/_parent.js',
|
||||
'./node_modules/node_modules/lodash/_root.js',
|
||||
'./node_modules/node_modules/lodash/_safeGet.js',
|
||||
'./node_modules/node_modules/lodash/_setCacheAdd.js',
|
||||
'./node_modules/node_modules/lodash/_setCacheHas.js',
|
||||
'./node_modules/node_modules/lodash/_setToArray.js',
|
||||
|
|
@ -296,9 +335,13 @@ module.exports = [
|
|||
'./node_modules/node_modules/lodash/_stringToPath.js',
|
||||
'./node_modules/node_modules/lodash/_toKey.js',
|
||||
'./node_modules/node_modules/lodash/_toSource.js',
|
||||
'./node_modules/node_modules/lodash/clone.js',
|
||||
'./node_modules/node_modules/lodash/cloneDeep.js',
|
||||
'./node_modules/node_modules/lodash/constant.js',
|
||||
'./node_modules/node_modules/lodash/difference.js',
|
||||
'./node_modules/node_modules/lodash/endsWith.js',
|
||||
'./node_modules/node_modules/lodash/eq.js',
|
||||
'./node_modules/node_modules/lodash/forEach.js',
|
||||
'./node_modules/node_modules/lodash/get.js',
|
||||
'./node_modules/node_modules/lodash/hasIn.js',
|
||||
'./node_modules/node_modules/lodash/identity.js',
|
||||
|
|
@ -307,23 +350,38 @@ module.exports = [
|
|||
'./node_modules/node_modules/lodash/isArrayLike.js',
|
||||
'./node_modules/node_modules/lodash/isArrayLikeObject.js',
|
||||
'./node_modules/node_modules/lodash/isBuffer.js',
|
||||
'./node_modules/node_modules/lodash/isEqual.js',
|
||||
'./node_modules/node_modules/lodash/isFunction.js',
|
||||
'./node_modules/node_modules/lodash/isLength.js',
|
||||
'./node_modules/node_modules/lodash/isMap.js',
|
||||
'./node_modules/node_modules/lodash/isNil.js',
|
||||
'./node_modules/node_modules/lodash/isObject.js',
|
||||
'./node_modules/node_modules/lodash/isObjectLike.js',
|
||||
'./node_modules/node_modules/lodash/isPlainObject.js',
|
||||
'./node_modules/node_modules/lodash/isSet.js',
|
||||
'./node_modules/node_modules/lodash/isString.js',
|
||||
'./node_modules/node_modules/lodash/isSymbol.js',
|
||||
'./node_modules/node_modules/lodash/isTypedArray.js',
|
||||
'./node_modules/node_modules/lodash/keys.js',
|
||||
'./node_modules/node_modules/lodash/keysIn.js',
|
||||
'./node_modules/node_modules/lodash/last.js',
|
||||
'./node_modules/node_modules/lodash/lodash.js',
|
||||
'./node_modules/node_modules/lodash/map.js',
|
||||
'./node_modules/node_modules/lodash/mapValues.js',
|
||||
'./node_modules/node_modules/lodash/memoize.js',
|
||||
'./node_modules/node_modules/lodash/merge.js',
|
||||
'./node_modules/node_modules/lodash/noop.js',
|
||||
'./node_modules/node_modules/lodash/property.js',
|
||||
'./node_modules/node_modules/lodash/stubArray.js',
|
||||
'./node_modules/node_modules/lodash/stubFalse.js',
|
||||
'./node_modules/node_modules/lodash/toFinite.js',
|
||||
'./node_modules/node_modules/lodash/toInteger.js',
|
||||
'./node_modules/node_modules/lodash/toNumber.js',
|
||||
'./node_modules/node_modules/lodash/toPlainObject.js',
|
||||
'./node_modules/node_modules/lodash/toString.js',
|
||||
'./node_modules/node_modules/lodash/union.js',
|
||||
'./node_modules/node_modules/lodash/uniqueId.js',
|
||||
'./node_modules/node_modules/lodash/unset.js',
|
||||
'./node_modules/node_modules/mattermost-redux/action_types/admin.js',
|
||||
'./node_modules/node_modules/mattermost-redux/action_types/alerts.js',
|
||||
'./node_modules/node_modules/mattermost-redux/action_types/bots.js',
|
||||
|
|
@ -480,6 +538,7 @@ module.exports = [
|
|||
'./node_modules/node_modules/react-native-gesture-handler/GestureHandler.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/GestureHandlerButton.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/GestureHandlerPropTypes.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/GestureHandlerRootView.android.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/Gestures.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/NativeViewGestureHandler.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/PlatformConstants.js',
|
||||
|
|
@ -488,7 +547,7 @@ module.exports = [
|
|||
'./node_modules/node_modules/react-native-gesture-handler/Swipeable.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/createHandler.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/createNativeWrapper.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/gestureHandlerRootHOC.android.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/gestureHandlerRootHOC.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/index.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/touchables/GenericTouchable.js',
|
||||
'./node_modules/node_modules/react-native-gesture-handler/touchables/TouchableHighlight.js',
|
||||
|
|
@ -505,10 +564,10 @@ module.exports = [
|
|||
'./node_modules/node_modules/react-native-navigation/lib/dist/adapters/Constants.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/adapters/NativeCommandsSender.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/adapters/NativeEventsReceiver.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/adapters/SharedElement.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/adapters/TouchablePreview.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/adapters/UniqueIdProvider.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/commands/Commands.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/commands/Deprecations.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/commands/LayoutTreeCrawler.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/commands/LayoutTreeParser.js',
|
||||
'./node_modules/node_modules/react-native-navigation/lib/dist/commands/LayoutType.js',
|
||||
|
|
@ -839,6 +898,7 @@ module.exports = [
|
|||
'./node_modules/node_modules/semver/functions/satisfies.js',
|
||||
'./node_modules/node_modules/semver/functions/sort.js',
|
||||
'./node_modules/node_modules/semver/functions/valid.js',
|
||||
'./node_modules/node_modules/semver/index.js',
|
||||
'./node_modules/node_modules/semver/internal/constants.js',
|
||||
'./node_modules/node_modules/semver/internal/debug.js',
|
||||
'./node_modules/node_modules/semver/internal/identifiers.js',
|
||||
|
|
@ -864,4 +924,5 @@ module.exports = [
|
|||
'./node_modules/node_modules/util/support/types.js',
|
||||
'./node_modules/node_modules/util/util.js',
|
||||
'./node_modules/share_extension/android/actions/index.js',
|
||||
'./node_modules/share_extension/android/index.js'];
|
||||
'./node_modules/share_extension/android/index.js',
|
||||
];
|
||||
|
|
@ -1,198 +1,168 @@
|
|||
diff --git a/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModule.java b/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModule.java
|
||||
index ef62bed..7a363af 100644
|
||||
index 48fb5c1..5085663 100644
|
||||
--- a/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModule.java
|
||||
+++ b/node_modules/react-native-image-picker/android/src/main/java/com/imagepicker/ImagePickerModule.java
|
||||
@@ -49,6 +49,7 @@ import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.List;
|
||||
+import java.util.ArrayList;
|
||||
|
||||
import com.facebook.react.modules.core.PermissionListener;
|
||||
import com.facebook.react.modules.core.PermissionAwareActivity;
|
||||
import java.io.OutputStream;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.List;
|
||||
+import java.util.ArrayList;
|
||||
|
||||
import com.facebook.react.modules.core.PermissionListener;
|
||||
import com.facebook.react.modules.core.PermissionAwareActivity;
|
||||
@@ -69,6 +70,7 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
public static final int REQUEST_LAUNCH_IMAGE_LIBRARY = 13002;
|
||||
public static final int REQUEST_LAUNCH_VIDEO_LIBRARY = 13003;
|
||||
public static final int REQUEST_LAUNCH_VIDEO_CAPTURE = 13004;
|
||||
+ public static final int REQUEST_LAUNCH_MIXED_CAPTURE = 13005;
|
||||
public static final int REQUEST_PERMISSIONS_FOR_CAMERA = 14001;
|
||||
public static final int REQUEST_PERMISSIONS_FOR_LIBRARY = 14002;
|
||||
|
||||
@@ -266,26 +268,23 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
cameraIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, videoDurationLimit);
|
||||
}
|
||||
}
|
||||
+ else if (pickBoth) {
|
||||
+ Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
+ this.setImageCaptureUri(takePictureIntent);
|
||||
+ Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
|
||||
+ cameraIntent = new Intent(Intent.ACTION_CHOOSER);
|
||||
+ Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
|
||||
+ Intent[] intentArray = new Intent[]{takePictureIntent,takeVideoIntent};
|
||||
+ cameraIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
|
||||
+ cameraIntent.putExtra(Intent.EXTRA_TITLE, "Choose an action");
|
||||
+ cameraIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
|
||||
+ requestCode = REQUEST_LAUNCH_MIXED_CAPTURE;
|
||||
+ }
|
||||
else
|
||||
{
|
||||
requestCode = REQUEST_LAUNCH_IMAGE_CAPTURE;
|
||||
cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
-
|
||||
- final File original = createNewFile(reactContext, this.options, false);
|
||||
- imageConfig = imageConfig.withOriginalFile(original);
|
||||
-
|
||||
- if (imageConfig.original != null) {
|
||||
- cameraCaptureURI = RealPathUtil.compatUriFromFile(reactContext, imageConfig.original);
|
||||
- }else {
|
||||
- responseHelper.invokeError(callback, "Couldn't get file path for photo");
|
||||
- return;
|
||||
- }
|
||||
- if (cameraCaptureURI == null)
|
||||
- {
|
||||
- responseHelper.invokeError(callback, "Couldn't get file path for photo");
|
||||
- return;
|
||||
- }
|
||||
- cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, cameraCaptureURI);
|
||||
+ this.setImageCaptureUri(cameraIntent);
|
||||
}
|
||||
|
||||
if (cameraIntent.resolveActivity(reactContext.getPackageManager()) == null)
|
||||
@@ -444,14 +443,20 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
callback = null;
|
||||
return;
|
||||
|
||||
+ case REQUEST_LAUNCH_MIXED_CAPTURE:
|
||||
case REQUEST_LAUNCH_VIDEO_CAPTURE:
|
||||
- final String path = getRealPathFromURI(data.getData());
|
||||
- responseHelper.putString("uri", data.getData().toString());
|
||||
- responseHelper.putString("path", path);
|
||||
- fileScan(reactContext, path);
|
||||
- responseHelper.invokeResponse(callback);
|
||||
- callback = null;
|
||||
- return;
|
||||
+ if (data == null || data.getData() == null) {
|
||||
+ uri = cameraCaptureURI;
|
||||
+ break;
|
||||
+ } else {
|
||||
+ final String path = getRealPathFromURI(data.getData());
|
||||
+ responseHelper.putString("uri", data.getData().toString());
|
||||
+ responseHelper.putString("path", path);
|
||||
+ fileScan(reactContext, path);
|
||||
+ responseHelper.invokeResponse(callback);
|
||||
+ callback = null;
|
||||
+ return;
|
||||
+ }
|
||||
}
|
||||
|
||||
final ReadExifResult result = readExifInterface(responseHelper, imageConfig);
|
||||
@@ -481,6 +486,13 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
else
|
||||
{
|
||||
imageConfig = getResizedImage(reactContext, this.options, imageConfig, initialWidth, initialHeight, requestCode);
|
||||
+ if (imageConfig == null)
|
||||
+ {
|
||||
+ responseHelper.invokeError(callback, "Could not read image");
|
||||
+ callback = null;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (imageConfig.resized == null)
|
||||
{
|
||||
removeUselessFiles(requestCode, imageConfig);
|
||||
@@ -551,7 +563,8 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
{
|
||||
return callback == null || (cameraCaptureURI == null && requestCode == REQUEST_LAUNCH_IMAGE_CAPTURE)
|
||||
|| (requestCode != REQUEST_LAUNCH_IMAGE_CAPTURE && requestCode != REQUEST_LAUNCH_IMAGE_LIBRARY
|
||||
- && requestCode != REQUEST_LAUNCH_VIDEO_LIBRARY && requestCode != REQUEST_LAUNCH_VIDEO_CAPTURE);
|
||||
+ && requestCode != REQUEST_LAUNCH_VIDEO_LIBRARY && requestCode != REQUEST_LAUNCH_VIDEO_CAPTURE
|
||||
+ && requestCode != REQUEST_LAUNCH_MIXED_CAPTURE);
|
||||
}
|
||||
|
||||
private void updatedResultResponse(@Nullable final Uri uri,
|
||||
@@ -571,22 +584,23 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
@NonNull final Callback callback,
|
||||
@NonNull final int requestCode)
|
||||
{
|
||||
- final int writePermission = ActivityCompat
|
||||
- .checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
- final int cameraPermission = ActivityCompat
|
||||
- .checkSelfPermission(activity, Manifest.permission.CAMERA);
|
||||
-
|
||||
- boolean permissionsGranted = false;
|
||||
-
|
||||
+ int selfCheckResult = 0;
|
||||
switch (requestCode) {
|
||||
case REQUEST_PERMISSIONS_FOR_LIBRARY:
|
||||
- permissionsGranted = writePermission == PackageManager.PERMISSION_GRANTED;
|
||||
- break;
|
||||
+ selfCheckResult = ActivityCompat
|
||||
+ .checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
+ break;
|
||||
case REQUEST_PERMISSIONS_FOR_CAMERA:
|
||||
- permissionsGranted = cameraPermission == PackageManager.PERMISSION_GRANTED;
|
||||
+ selfCheckResult = ActivityCompat
|
||||
+ .checkSelfPermission(activity, Manifest.permission.CAMERA);
|
||||
+ if (selfCheckResult == PackageManager.PERMISSION_GRANTED) {
|
||||
+ selfCheckResult = ActivityCompat
|
||||
+ .checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
|
||||
+ final boolean permissionsGranted = selfCheckResult == PackageManager.PERMISSION_GRANTED;
|
||||
if (!permissionsGranted)
|
||||
{
|
||||
final Boolean dontAskAgain = ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) && ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.CAMERA);
|
||||
@@ -641,7 +655,7 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
|
||||
break;
|
||||
case REQUEST_PERMISSIONS_FOR_CAMERA:
|
||||
- PERMISSIONS = new String[]{Manifest.permission.CAMERA};
|
||||
+ PERMISSIONS = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
|
||||
break;
|
||||
default:
|
||||
PERMISSIONS = new String[]{};
|
||||
@@ -781,4 +795,22 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
videoDurationLimit = options.getInt("durationLimit");
|
||||
}
|
||||
}
|
||||
+
|
||||
+ private void setImageCaptureUri(Intent cameraIntent) {
|
||||
+ final File original = createNewFile(reactContext, this.options, false);
|
||||
+ imageConfig = imageConfig.withOriginalFile(original);
|
||||
+
|
||||
+ if (imageConfig.original != null) {
|
||||
+ cameraCaptureURI = RealPathUtil.compatUriFromFile(reactContext, imageConfig.original);
|
||||
+ }else {
|
||||
+ responseHelper.invokeError(callback, "Couldn't get file path for photo");
|
||||
+ return;
|
||||
+ }
|
||||
+ if (cameraCaptureURI == null)
|
||||
+ {
|
||||
+ responseHelper.invokeError(callback, "Couldn't get file path for photo");
|
||||
+ return;
|
||||
+ }
|
||||
+ cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, cameraCaptureURI);
|
||||
+ }
|
||||
}
|
||||
diff --git a/node_modules/react-native-image-picker/ios/ImagePickerManager.m b/node_modules/react-native-image-picker/ios/ImagePickerManager.m
|
||||
index 46b2c11..70bb8a5 100644
|
||||
--- a/node_modules/react-native-image-picker/ios/ImagePickerManager.m
|
||||
+++ b/node_modules/react-native-image-picker/ios/ImagePickerManager.m
|
||||
@@ -460,7 +460,14 @@ - (void)imagePickerController:(UIImagePickerController *)picker didFinishPicking
|
||||
|
||||
if (videoURL) { // Protect against reported crash
|
||||
NSError *error = nil;
|
||||
- [fileManager moveItemAtURL:videoURL toURL:videoDestinationURL error:&error];
|
||||
+
|
||||
+ // If we have write access to the source file, move it. Otherwise use copy.
|
||||
+ if ([fileManager isWritableFileAtPath:[videoURL path]]) {
|
||||
+ [fileManager moveItemAtURL:videoURL toURL:videoDestinationURL error:&error];
|
||||
+ } else {
|
||||
+ [fileManager copyItemAtURL:videoURL toURL:videoDestinationURL error:&error];
|
||||
+ }
|
||||
+
|
||||
if (error) {
|
||||
self.callback(@[@{@"error": error.localizedFailureReason}]);
|
||||
return;
|
||||
public static final int REQUEST_LAUNCH_IMAGE_LIBRARY = 13002;
|
||||
public static final int REQUEST_LAUNCH_VIDEO_LIBRARY = 13003;
|
||||
public static final int REQUEST_LAUNCH_VIDEO_CAPTURE = 13004;
|
||||
+ public static final int REQUEST_LAUNCH_MIXED_CAPTURE = 13005;
|
||||
public static final int REQUEST_PERMISSIONS_FOR_CAMERA = 14001;
|
||||
public static final int REQUEST_PERMISSIONS_FOR_LIBRARY = 14002;
|
||||
|
||||
@@ -266,26 +268,24 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
cameraIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, videoDurationLimit);
|
||||
}
|
||||
}
|
||||
+ else if (pickBoth) {
|
||||
+ Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
+ this.setImageCaptureUri(takePictureIntent);
|
||||
+ Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
|
||||
+ cameraIntent = new Intent(Intent.ACTION_CHOOSER);
|
||||
+ Intent contentSelectionIntent = new Intent(Intent.ACTION_GET_CONTENT);
|
||||
+ Intent[] intentArray = new Intent[]{takePictureIntent,takeVideoIntent};
|
||||
+ cameraIntent.putExtra(Intent.EXTRA_INTENT, contentSelectionIntent);
|
||||
+ cameraIntent.putExtra(Intent.EXTRA_TITLE, "Choose an action");
|
||||
+ cameraIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intentArray);
|
||||
+ requestCode = REQUEST_LAUNCH_MIXED_CAPTURE;
|
||||
+ }
|
||||
else
|
||||
{
|
||||
requestCode = REQUEST_LAUNCH_IMAGE_CAPTURE;
|
||||
cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
|
||||
|
||||
- final File original = createNewFile(reactContext, this.options, false);
|
||||
- imageConfig = imageConfig.withOriginalFile(original);
|
||||
-
|
||||
- if (imageConfig.original != null) {
|
||||
- cameraCaptureURI = RealPathUtil.compatUriFromFile(reactContext, imageConfig.original);
|
||||
- }else {
|
||||
- responseHelper.invokeError(callback, "Couldn't get file path for photo");
|
||||
- return;
|
||||
- }
|
||||
- if (cameraCaptureURI == null)
|
||||
- {
|
||||
- responseHelper.invokeError(callback, "Couldn't get file path for photo");
|
||||
- return;
|
||||
- }
|
||||
- cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, cameraCaptureURI);
|
||||
+ this.setImageCaptureUri(cameraIntent);
|
||||
}
|
||||
|
||||
if (cameraIntent.resolveActivity(reactContext.getPackageManager()) == null)
|
||||
@@ -444,14 +444,20 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
callback = null;
|
||||
return;
|
||||
|
||||
+ case REQUEST_LAUNCH_MIXED_CAPTURE:
|
||||
case REQUEST_LAUNCH_VIDEO_CAPTURE:
|
||||
- final String path = getRealPathFromURI(data.getData());
|
||||
- responseHelper.putString("uri", data.getData().toString());
|
||||
- responseHelper.putString("path", path);
|
||||
- fileScan(reactContext, path);
|
||||
- responseHelper.invokeResponse(callback);
|
||||
- callback = null;
|
||||
- return;
|
||||
+ if (data == null || data.getData() == null) {
|
||||
+ uri = cameraCaptureURI;
|
||||
+ break;
|
||||
+ } else {
|
||||
+ final String path = getRealPathFromURI(data.getData());
|
||||
+ responseHelper.putString("uri", data.getData().toString());
|
||||
+ responseHelper.putString("path", path);
|
||||
+ fileScan(reactContext, path);
|
||||
+ responseHelper.invokeResponse(callback);
|
||||
+ callback = null;
|
||||
+ return;
|
||||
+ }
|
||||
}
|
||||
|
||||
final ReadExifResult result = readExifInterface(responseHelper, imageConfig);
|
||||
@@ -481,6 +487,13 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
else
|
||||
{
|
||||
imageConfig = getResizedImage(reactContext, this.options, imageConfig, initialWidth, initialHeight, requestCode);
|
||||
+ if (imageConfig == null)
|
||||
+ {
|
||||
+ responseHelper.invokeError(callback, "Could not read image");
|
||||
+ callback = null;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (imageConfig.resized == null)
|
||||
{
|
||||
removeUselessFiles(requestCode, imageConfig);
|
||||
@@ -551,7 +564,8 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
{
|
||||
return callback == null || (cameraCaptureURI == null && requestCode == REQUEST_LAUNCH_IMAGE_CAPTURE)
|
||||
|| (requestCode != REQUEST_LAUNCH_IMAGE_CAPTURE && requestCode != REQUEST_LAUNCH_IMAGE_LIBRARY
|
||||
- && requestCode != REQUEST_LAUNCH_VIDEO_LIBRARY && requestCode != REQUEST_LAUNCH_VIDEO_CAPTURE);
|
||||
+ && requestCode != REQUEST_LAUNCH_VIDEO_LIBRARY && requestCode != REQUEST_LAUNCH_VIDEO_CAPTURE
|
||||
+ && requestCode != REQUEST_LAUNCH_MIXED_CAPTURE);
|
||||
}
|
||||
|
||||
private void updatedResultResponse(@Nullable final Uri uri,
|
||||
@@ -571,22 +585,23 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
@NonNull final Callback callback,
|
||||
@NonNull final int requestCode)
|
||||
{
|
||||
- final int writePermission = ActivityCompat
|
||||
- .checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
- final int cameraPermission = ActivityCompat
|
||||
- .checkSelfPermission(activity, Manifest.permission.CAMERA);
|
||||
-
|
||||
- boolean permissionsGranted = false;
|
||||
-
|
||||
+ int selfCheckResult = 0;
|
||||
switch (requestCode) {
|
||||
case REQUEST_PERMISSIONS_FOR_LIBRARY:
|
||||
- permissionsGranted = writePermission == PackageManager.PERMISSION_GRANTED;
|
||||
+ selfCheckResult = ActivityCompat
|
||||
+ .checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
break;
|
||||
case REQUEST_PERMISSIONS_FOR_CAMERA:
|
||||
- permissionsGranted = cameraPermission == PackageManager.PERMISSION_GRANTED && writePermission == PackageManager.PERMISSION_GRANTED;
|
||||
+ selfCheckResult = ActivityCompat
|
||||
+ .checkSelfPermission(activity, Manifest.permission.CAMERA);
|
||||
+ if (selfCheckResult == PackageManager.PERMISSION_GRANTED) {
|
||||
+ selfCheckResult = ActivityCompat
|
||||
+ .checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
+ }
|
||||
break;
|
||||
}
|
||||
|
||||
+ final boolean permissionsGranted = selfCheckResult == PackageManager.PERMISSION_GRANTED;
|
||||
if (!permissionsGranted)
|
||||
{
|
||||
final Boolean dontAskAgain = ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE) && ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.CAMERA);
|
||||
@@ -787,4 +802,22 @@ public class ImagePickerModule extends ReactContextBaseJavaModule
|
||||
videoDurationLimit = options.getInt("durationLimit");
|
||||
}
|
||||
}
|
||||
+
|
||||
+ private void setImageCaptureUri(Intent cameraIntent) {
|
||||
+ final File original = createNewFile(reactContext, this.options, false);
|
||||
+ imageConfig = imageConfig.withOriginalFile(original);
|
||||
+
|
||||
+ if (imageConfig.original != null) {
|
||||
+ cameraCaptureURI = RealPathUtil.compatUriFromFile(reactContext, imageConfig.original);
|
||||
+ }else {
|
||||
+ responseHelper.invokeError(callback, "Couldn't get file path for photo");
|
||||
+ return;
|
||||
+ }
|
||||
+ if (cameraCaptureURI == null)
|
||||
+ {
|
||||
+ responseHelper.invokeError(callback, "Couldn't get file path for photo");
|
||||
+ return;
|
||||
+ }
|
||||
+ cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, cameraCaptureURI);
|
||||
+ }
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
diff --git a/node_modules/react-native-local-auth/react-native-local-auth.podspec b/node_modules/react-native-local-auth/react-native-local-auth.podspec
|
||||
new file mode 100644
|
||||
index 0000000..9cec893
|
||||
--- /dev/null
|
||||
+++ b/node_modules/react-native-local-auth/react-native-local-auth.podspec
|
||||
@@ -0,0 +1,20 @@
|
||||
+require "json"
|
||||
+package = JSON.parse(File.read(File.join(__dir__, '/package.json')))
|
||||
+
|
||||
+Pod::Spec.new do |s|
|
||||
+ s.name = package['name']
|
||||
+ s.version = package['version']
|
||||
+ s.summary = package['description']
|
||||
+ s.description = package['description']
|
||||
+ s.homepage = package['homepage']
|
||||
+ s.license = package['license']
|
||||
+ s.author = package['author']
|
||||
+ s.source = { :git => 'https://github.com/mattermost/react-native-local-auth.git' }
|
||||
+
|
||||
+ s.platform = :ios, '7.0'
|
||||
+ s.ios.deployment_target = '7.0'
|
||||
+
|
||||
+ s.source_files = "*.{h,m}"
|
||||
+
|
||||
+ s.dependency 'React'
|
||||
+end
|
||||
172
patches/react-native-local-auth+1.6.0.patch
Normal file
172
patches/react-native-local-auth+1.6.0.patch
Normal file
|
|
@ -0,0 +1,172 @@
|
|||
diff --git a/node_modules/react-native-local-auth/LocalAuth.android.js b/node_modules/react-native-local-auth/LocalAuth.android.js
|
||||
index 49242b4..8deada5 100644
|
||||
--- a/node_modules/react-native-local-auth/LocalAuth.android.js
|
||||
+++ b/node_modules/react-native-local-auth/LocalAuth.android.js
|
||||
@@ -3,28 +3,63 @@
|
||||
* @providesModule LocalAuth
|
||||
* @flow
|
||||
*/
|
||||
-'use strict'
|
||||
+'use strict';
|
||||
|
||||
-import { createError } from './error'
|
||||
-import Errors from './data/errors'
|
||||
-import { NativeModules } from 'react-native'
|
||||
+import { createError } from './error';
|
||||
+import { NativeModules } from 'react-native';
|
||||
|
||||
-const { RNLocalAuth } = NativeModules
|
||||
+const { RNLocalAuth } = NativeModules;
|
||||
|
||||
-module.exports = {
|
||||
- hasTouchID() {
|
||||
- return Promise.reject(createError('RCTTouchIDNotSupported'))
|
||||
- },
|
||||
-
|
||||
- isDeviceSecure() {
|
||||
- return RNLocalAuth.isDeviceSecure()
|
||||
- },
|
||||
-
|
||||
- authenticate(opts) {
|
||||
- return RNLocalAuth.authenticate(opts)
|
||||
- .catch(err => {
|
||||
- err.name = err.code
|
||||
- throw err
|
||||
- })
|
||||
- }
|
||||
+function performAuth(opts) {
|
||||
+ return new Promise(async (resolve, reject) => {
|
||||
+ try {
|
||||
+ if (await RNLocalAuth.isInitialized()) {
|
||||
+ RNLocalAuth.authenticate(opts).
|
||||
+ then(() => resolve()).
|
||||
+ catch((e) => {
|
||||
+ e.name = e.code;
|
||||
+ reject(e);
|
||||
+ });
|
||||
+ } else {
|
||||
+ setTimeout(() => {
|
||||
+ resolve(performAuth(opts));
|
||||
+ }, 1000);
|
||||
+ }
|
||||
+ } catch (err) {
|
||||
+ reject(err);
|
||||
+ }
|
||||
+ });
|
||||
+}
|
||||
+
|
||||
+function performAuthSkipInit(opts) {
|
||||
+ return new Promise(async (resolve, reject) => {
|
||||
+ try {
|
||||
+ RNLocalAuth.authenticate(opts).
|
||||
+ then(() => resolve()).
|
||||
+ catch((e) => {
|
||||
+ e.name = e.code;
|
||||
+ reject(e);
|
||||
+ });
|
||||
+ } catch (err) {
|
||||
+ reject(err);
|
||||
+ }
|
||||
+ });
|
||||
}
|
||||
+
|
||||
+module.exports = {
|
||||
+ hasTouchID() {
|
||||
+ return Promise.reject(createError('RCTTouchIDNotSupported'))
|
||||
+ },
|
||||
+
|
||||
+ isDeviceSecure() {
|
||||
+ return RNLocalAuth.isDeviceSecure()
|
||||
+ },
|
||||
+
|
||||
+ authenticate(opts) {
|
||||
+ return performAuth(opts)
|
||||
+ },
|
||||
+
|
||||
+ auth(opts) {
|
||||
+ return performAuthSkipInit(opts);
|
||||
+ }
|
||||
+};
|
||||
\ No newline at end of file
|
||||
diff --git a/node_modules/react-native-local-auth/android/src/main/java/io/tradle/reactlocalauth/LocalAuthModule.java b/node_modules/react-native-local-auth/android/src/main/java/io/tradle/reactlocalauth/LocalAuthModule.java
|
||||
index 38b78f1..a47afea 100644
|
||||
--- a/node_modules/react-native-local-auth/android/src/main/java/io/tradle/reactlocalauth/LocalAuthModule.java
|
||||
+++ b/node_modules/react-native-local-auth/android/src/main/java/io/tradle/reactlocalauth/LocalAuthModule.java
|
||||
@@ -6,6 +6,7 @@ import android.app.KeyguardManager;
|
||||
import android.content.Intent;
|
||||
import android.content.Context;
|
||||
|
||||
+import android.os.Bundle;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
||||
import com.facebook.react.bridge.ReactMethod;
|
||||
@@ -14,6 +15,8 @@ import com.facebook.react.bridge.ActivityEventListener;
|
||||
import com.facebook.react.bridge.BaseActivityEventListener;
|
||||
import com.facebook.react.bridge.ReadableMap;
|
||||
|
||||
+import java.util.Set;
|
||||
+//import java.util.concurrent.CountDownLatch;
|
||||
// source for main part from:
|
||||
// https://github.com/googlesamples/android-ConfirmCredential/blob/master/Application/src/main/java/com/example/android/confirmcredential/MainActivity.java
|
||||
|
||||
@@ -28,8 +31,24 @@ public class LocalAuthModule extends ReactContextBaseJavaModule {
|
||||
private final ReactApplicationContext reactContext;
|
||||
private KeyguardManager mKeyguardManager;
|
||||
private Promise authPromise;
|
||||
+ private boolean initialized = false;
|
||||
|
||||
private final ActivityEventListener mActivityEventListener = new BaseActivityEventListener() {
|
||||
+ @Override
|
||||
+ public void onNewIntent(Intent intent) {
|
||||
+ if (!initialized) {
|
||||
+ Bundle bundle = intent.getExtras();
|
||||
+ if (bundle != null) {
|
||||
+ Set<String> keys = bundle.keySet();
|
||||
+
|
||||
+ StringBuilder stringBuilder = new StringBuilder();
|
||||
+ for (String key : keys) {
|
||||
+ stringBuilder.append(key).append("=").append(bundle.get(key)).append("\n\r");
|
||||
+ initialized = stringBuilder.toString().contains("screen=Root");
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
@Override
|
||||
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode != AUTH_REQUEST || authPromise == null) return;
|
||||
@@ -61,19 +80,21 @@ public class LocalAuthModule extends ReactContextBaseJavaModule {
|
||||
promise.resolve(mKeyguardManager.isDeviceSecure());
|
||||
}
|
||||
|
||||
+ @ReactMethod
|
||||
+ public void isInitialized(final Promise promise) { promise.resolve(initialized);}
|
||||
+
|
||||
@ReactMethod
|
||||
public void authenticate(ReadableMap map, final Promise promise) {
|
||||
// Create the Confirm Credentials screen. You can customize the title and description. Or
|
||||
// we will provide a generic one for you if you leave it null
|
||||
- Activity currentActivity = getCurrentActivity();
|
||||
|
||||
- if (authPromise != null) {
|
||||
- promise.reject(E_ONE_REQ_AT_A_TIME, "Activity doesn't exist");
|
||||
+ if (getCurrentActivity() == null) {
|
||||
+ promise.reject(E_ACTIVITY_DOES_NOT_EXIST, "One auth request at a time");
|
||||
return;
|
||||
}
|
||||
|
||||
- if (currentActivity == null) {
|
||||
- promise.reject(E_ACTIVITY_DOES_NOT_EXIST, "One auth request at a time");
|
||||
+ if (authPromise != null) {
|
||||
+ promise.reject(E_ONE_REQ_AT_A_TIME, "Activity doesn't exist");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -84,7 +105,7 @@ public class LocalAuthModule extends ReactContextBaseJavaModule {
|
||||
String description = map.hasKey("description") ? map.getString("description") : null;
|
||||
try {
|
||||
final Intent authIntent = mKeyguardManager.createConfirmDeviceCredentialIntent(reason, description);
|
||||
- currentActivity.startActivityForResult(authIntent, AUTH_REQUEST);
|
||||
+ getCurrentActivity().startActivityForResult(authIntent, AUTH_REQUEST);
|
||||
} catch (Exception e) {
|
||||
authPromise.reject(E_FAILED_TO_SHOW_AUTH, e);
|
||||
authPromise = null;
|
||||
|
|
@ -1,16 +1,8 @@
|
|||
diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java
|
||||
index 260ed81..0caba42 100644
|
||||
index 260ed81..52b53d8 100644
|
||||
--- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java
|
||||
+++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java
|
||||
@@ -28,6 +28,7 @@ import com.reactnativenavigation.viewcontrollers.ViewController;
|
||||
import com.reactnativenavigation.viewcontrollers.navigator.Navigator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
+import java.lang.ClassCastException;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -56,14 +57,18 @@ public class NavigationModule extends ReactContextBaseJavaModule {
|
||||
@@ -56,14 +56,18 @@ public class NavigationModule extends ReactContextBaseJavaModule {
|
||||
reactContext.addLifecycleEventListener(new LifecycleEventListenerAdapter() {
|
||||
@Override
|
||||
public void onHostResume() {
|
||||
|
|
@ -38,13 +30,13 @@ index 260ed81..0caba42 100644
|
|||
});
|
||||
}
|
||||
diff --git a/node_modules/react-native-navigation/lib/ios/RNNCommandsHandler.m b/node_modules/react-native-navigation/lib/ios/RNNCommandsHandler.m
|
||||
index 7719499..5b245ba 100644
|
||||
index ae8be52..8a8dec5 100644
|
||||
--- a/node_modules/react-native-navigation/lib/ios/RNNCommandsHandler.m
|
||||
+++ b/node_modules/react-native-navigation/lib/ios/RNNCommandsHandler.m
|
||||
@@ -295,10 +295,9 @@ - (void)dismissAllModals:(NSDictionary *)mergeOptions commandId:(NSString*)comma
|
||||
@@ -300,10 +300,9 @@ - (void)dismissAllModals:(NSDictionary *)mergeOptions commandId:(NSString*)comma
|
||||
[CATransaction begin];
|
||||
[CATransaction setCompletionBlock:^{
|
||||
[_eventEmitter sendOnNavigationCommandCompletion:dismissAllModals commandId:commandId params:@{}];
|
||||
[self->_eventEmitter sendOnNavigationCommandCompletion:dismissAllModals commandId:commandId params:@{}];
|
||||
- completion();
|
||||
}];
|
||||
RNNNavigationOptions* options = [[RNNNavigationOptions alloc] initWithDict:mergeOptions];
|
||||
Loading…
Reference in a new issue