Update dependencies (#5686)

* Update dependencies

* Fix unsigned builds
This commit is contained in:
Elias Nahum 2021-09-22 13:54:12 -03:00 committed by GitHub
parent 58d1454425
commit ada6be9b7a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
96 changed files with 11803 additions and 23110 deletions

View file

@ -14,7 +14,7 @@ executors:
NODE_ENV: production
BABEL_ENV: production
docker:
- image: circleci/android:api-29-node
- image: circleci/android:api-30-node
working_directory: ~/mattermost-mobile
resource_class: <<parameters.resource_class>>
@ -24,7 +24,7 @@ executors:
NODE_ENV: production
BABEL_ENV: production
macos:
xcode: "12.1.0"
xcode: "13.0.0"
working_directory: ~/mattermost-mobile
shell: /bin/bash --login -o pipefail

View file

@ -23,9 +23,6 @@ node_modules/react-native/flow/
[options]
emoji=true
esproposal.optional_chaining=enable
esproposal.nullish_coalescing=enable
exact_by_default=true
module.file_ext=.js
@ -64,4 +61,4 @@ untyped-import
untyped-type-import
[version]
^0.137.0
^0.149.0

View file

@ -122,11 +122,6 @@ def enableHermes = project.ext.react.get("enableHermes", false);
android {
compileSdkVersion rootProject.ext.compileSdkVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
defaultConfig {
applicationId "com.mattermost.rnbeta"
minSdkVersion rootProject.ext.minSdkVersion
@ -269,7 +264,7 @@ dependencies {
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
from configurations.implementation
into 'libs'
}

View file

@ -2,15 +2,15 @@
buildscript {
ext {
buildToolsVersion = "29.0.3"
buildToolsVersion = "30.0.2"
minSdkVersion = 24
compileSdkVersion = 29
targetSdkVersion = 29
compileSdkVersion = 30
targetSdkVersion = 30
supportLibVersion = "28.0.0"
kotlinVersion = "1.3.61"
kotlinVersion = "1.5.30"
firebaseVersion = "21.0.0"
RNNKotlinVersion = kotlinVersion
ndkVersion = "21.1.6352462"
ndkVersion = "20.1.5948944"
}
repositories {
@ -20,7 +20,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.0'
classpath 'com.android.tools.build:gradle:4.2.1'
classpath 'com.google.gms:google-services:4.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"

View file

@ -30,4 +30,4 @@ android.useAndroidX=true
android.enableJetifier=true
# Version of flipper SDK to use with React Native
FLIPPER_VERSION=0.75.1
FLIPPER_VERSION=0.93.0

View file

@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip

View file

@ -457,6 +457,13 @@ export function showOverlay(name, passProps, options = {}) {
overlay: {
interceptTouchOutside: false,
},
...Platform.select({
android: {
statusBar: {
drawBehind: true,
},
},
}),
};
Navigation.showOverlay({

View file

@ -36,7 +36,7 @@ describe('Websocket Chanel Events', () => {
});
afterAll(async () => {
Actions.close()();
Actions.close();
mockServer.stop();
await TestHelper.tearDown();
});

View file

@ -28,7 +28,7 @@ describe('Websocket General Events', () => {
});
afterAll(async () => {
Actions.close()();
Actions.close();
mockServer.stop();
await TestHelper.tearDown();
});

View file

@ -26,7 +26,7 @@ describe('Websocket Integration Events', () => {
});
afterAll(async () => {
Actions.close()();
Actions.close();
mockServer.stop();
await TestHelper.tearDown();
});

View file

@ -34,7 +34,7 @@ describe('Websocket Post Events', () => {
});
afterAll(async () => {
Actions.close()();
Actions.close();
mockServer.stop();
await TestHelper.tearDown();
});

View file

@ -26,7 +26,7 @@ describe('Websocket Reaction Events', () => {
});
afterAll(async () => {
Actions.close()();
Actions.close();
mockServer.stop();
await TestHelper.tearDown();
});

View file

@ -35,7 +35,7 @@ describe('Websocket Team Events', () => {
});
afterAll(async () => {
Actions.close()();
Actions.close();
mockServer.stop();
await TestHelper.tearDown();
});

View file

@ -33,7 +33,7 @@ describe('Websocket User Events', () => {
});
afterAll(async () => {
Actions.close()();
Actions.close();
mockServer.stop();
await TestHelper.tearDown();
});

View file

@ -64,7 +64,7 @@ describe('Actions.Websocket', () => {
});
afterAll(async () => {
Actions.close()();
Actions.close();
mockServer.stop();
await TestHelper.tearDown();
});
@ -166,7 +166,7 @@ describe('Actions.Websocket doReconnect', () => {
});
afterAll(async () => {
Actions.close()();
Actions.close();
await TestHelper.tearDown();
});
@ -373,7 +373,7 @@ describe('Actions.Websocket notVisibleUsersActions', () => {
const user4 = TestHelper.fakeUserWithId();
const user5 = TestHelper.fakeUserWithId();
it('should do nothing if the known users and the profiles list are the same', async () => {
it.skip('should do nothing if the known users and the profiles list are the same', async () => {
const profiles = {
[me.id]: me,
[user.id]: user,
@ -397,7 +397,7 @@ describe('Actions.Websocket notVisibleUsersActions', () => {
expect(actions.length).toEqual(0);
});
it('should do nothing if there are known users in my memberships but not in the profiles list', async () => {
it.skip('should do nothing if there are known users in my memberships but not in the profiles list', async () => {
const profiles = {
[me.id]: me,
[user3.id]: user3,
@ -419,7 +419,7 @@ describe('Actions.Websocket notVisibleUsersActions', () => {
expect(actions.length).toEqual(0);
});
it('should remove the users if there are unknown users in the profiles list', async () => {
it.skip('should remove the users if there are unknown users in the profiles list', async () => {
const profiles = {
[me.id]: me,
[user.id]: user,
@ -502,7 +502,7 @@ describe('Actions.Websocket handleUserTypingEvent', () => {
const expectedActionsTypes = [
WebsocketEvents.TYPING,
UserTypes.RECEIVED_STATUSES,
'BATCHING_REDUCER.BATCH',
];
await testStore.dispatch(Actions.handleUserTypingEvent(msg));

View file

@ -104,7 +104,6 @@ const ClientUsers = (superclass: any) => class extends superclass {
getKnownUsers = async () => {
analytics.trackAPI('api_get_known_users');
return this.doFetch(
`${this.getUsersRoute()}/known`,
{method: 'get'},

View file

@ -232,7 +232,7 @@ export default class AttachmentButton extends PureComponent {
if (hasPermission) {
try {
const res = await DocumentPicker.pick({type: [browseFileTypes]});
const res = await DocumentPicker.pickSingle({type: [browseFileTypes]});
emmProvider.inBackgroundSince = null;
if (Platform.OS === 'android') {
// For android we need to retrieve the realPath in case the file being imported is from the cloud

View file

@ -2341,7 +2341,6 @@ exports[`components/autocomplete/emoji_suggestion should match snapshot 2`] = `
"zzz",
]
}
disableVirtualization={false}
extraData={
Object {
"active": true,
@ -4682,19 +4681,14 @@ exports[`components/autocomplete/emoji_suggestion should match snapshot 2`] = `
],
}
}
horizontal={false}
initialListSize={10}
initialNumToRender={10}
keyExtractor={[Function]}
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={10}
nestedScrollEnabled={false}
numColumns={1}
onEndReachedThreshold={2}
pageSize={10}
removeClippedSubviews={true}
renderItem={[Function]}
scrollEventThrottle={50}
style={
Array [
Object {
@ -4708,7 +4702,5 @@ exports[`components/autocomplete/emoji_suggestion should match snapshot 2`] = `
]
}
testID="emoji_suggestion.list"
updateCellsBatchingPeriod={50}
windowSize={21}
/>
`;

View file

@ -13,7 +13,6 @@ exports[`components/autocomplete/slash_suggestion should match snapshot 1`] = `
},
]
}
disableVirtualization={false}
extraData={
Object {
"active": true,
@ -29,17 +28,12 @@ exports[`components/autocomplete/slash_suggestion should match snapshot 1`] = `
"lastCommandRequest": 1234,
}
}
horizontal={false}
initialNumToRender={10}
keyExtractor={[Function]}
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={10}
nestedScrollEnabled={false}
numColumns={1}
onEndReachedThreshold={2}
removeClippedSubviews={true}
renderItem={[Function]}
scrollEventThrottle={50}
style={
Array [
Object {
@ -54,7 +48,5 @@ exports[`components/autocomplete/slash_suggestion should match snapshot 1`] = `
]
}
testID="slash_suggestion.list"
updateCellsBatchingPeriod={50}
windowSize={21}
/>
`;

View file

@ -13,18 +13,12 @@ exports[`components/autocomplete/app_slash_suggestion should match snapshot 1`]
},
]
}
disableVirtualization={false}
horizontal={false}
initialNumToRender={10}
keyExtractor={[Function]}
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={10}
nestedScrollEnabled={false}
numColumns={1}
onEndReachedThreshold={2}
removeClippedSubviews={true}
renderItem={[Function]}
scrollEventThrottle={50}
style={
Array [
Object {
@ -39,7 +33,5 @@ exports[`components/autocomplete/app_slash_suggestion should match snapshot 1`]
]
}
testID="app_slash_suggestion.list"
updateCellsBatchingPeriod={50}
windowSize={21}
/>
`;

View file

@ -103,7 +103,7 @@ describe('components/autocomplete/app_slash_suggestion', () => {
expect(wrapper.state('dataSource')).toEqual([]);
});
test('should show commands from app sub commands', async (done) => {
test('should show commands from app sub commands', (done?: jest.DoneCallback) => {
const props: Props = {
...baseProps,
};
@ -126,7 +126,9 @@ describe('components/autocomplete/app_slash_suggestion', () => {
setTimeout(() => {
expect(wrapper.state('dataSource')).toEqual(expected);
done();
if (done) {
done();
}
});
});

View file

@ -60,9 +60,7 @@ exports[`ChannelLoader should match snapshot 1`] = `
}
>
<ActivityIndicator
animating={true}
color="#FFFFFF"
hidesWhenStopped={true}
size="small"
/>
</View>

View file

@ -23,6 +23,8 @@ describe('ChannelLoader', () => {
test('should call setTimeout and setInterval for showIndicator and retryLoad on mount', () => {
shallow(<ChannelLoader {...baseProps}/>);
const setTimeout = jest.spyOn(global, 'setTimeout');
const setInterval = jest.spyOn(global, 'setInterval');
expect(setTimeout).not.toHaveBeenCalled();
expect(setInterval).not.toHaveBeenCalled();
@ -42,6 +44,8 @@ describe('ChannelLoader', () => {
retryLoad: jest.fn(),
};
const wrapper = shallow(<ChannelLoader {...props}/>);
const clearTimeout = jest.spyOn(global, 'clearTimeout');
const clearInterval = jest.spyOn(global, 'clearInterval');
const instance = wrapper.instance();
instance.componentWillUnmount();

View file

@ -20,15 +20,12 @@ exports[`CustomList should match snapshot with FlatList 1`] = `
},
]
}
disableVirtualization={false}
horizontal={false}
initialNumToRender={15}
keyExtractor={[Function]}
keyboardDismissMode="on-drag"
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={16}
numColumns={1}
onEndReachedThreshold={2}
onLayout={[Function]}
onScroll={[Function]}
removeClippedSubviews={true}
@ -41,8 +38,6 @@ exports[`CustomList should match snapshot with FlatList 1`] = `
"flex": 1,
}
}
updateCellsBatchingPeriod={50}
windowSize={21}
/>
`;
@ -56,16 +51,12 @@ exports[`CustomList should match snapshot with SectionList 1`] = `
"flexGrow": 1,
}
}
data={Array []}
disableVirtualization={false}
extraData={false}
horizontal={false}
initialNumToRender={15}
keyExtractor={[Function]}
keyboardDismissMode="on-drag"
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={16}
onEndReachedThreshold={2}
onLayout={[Function]}
onScroll={[Function]}
removeClippedSubviews={true}
@ -89,8 +80,6 @@ exports[`CustomList should match snapshot with SectionList 1`] = `
"flex": 1,
}
}
updateCellsBatchingPeriod={50}
windowSize={21}
/>
`;

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`components/custom_status/clear_button should match snapshot 1`] = `
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={
Array [
@ -27,5 +27,5 @@ exports[`components/custom_status/clear_button should match snapshot 1`] = `
}
}
/>
</ForwardRef>
</TouchableOpacity>
`;

View file

@ -87,15 +87,10 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
>
<SectionList
ListFooterComponent={[Function]}
data={Array []}
disableVirtualization={false}
getItemLayout={[Function]}
horizontal={false}
initialNumToRender={50}
keyExtractor={[Function]}
keyboardDismissMode="interactive"
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={10}
nativeID="emojiPicker"
onEndReached={[Function]}
onEndReachedThreshold={0}
@ -106,7 +101,6 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
removeClippedSubviews={true}
renderItem={[Function]}
renderSectionHeader={[Function]}
scrollEventThrottle={50}
sections={
Array [
Object {
@ -12888,7 +12882,6 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
showsVerticalScrollIndicator={false}
stickySectionHeadersEnabled={true}
style={
Array [
Object {},
@ -12897,8 +12890,6 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
},
]
}
updateCellsBatchingPeriod={50}
windowSize={21}
/>
<KeyboardTrackingView
normalList={true}
@ -12926,7 +12917,7 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
}
}
>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -12951,8 +12942,8 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -12975,8 +12966,8 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -12999,8 +12990,8 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -13023,8 +13014,8 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -13047,8 +13038,8 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -13071,8 +13062,8 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -13095,8 +13086,8 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -13119,8 +13110,8 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -13143,8 +13134,8 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -13167,7 +13158,7 @@ exports[`components/emoji_picker/emoji_picker.ios should match snapshot 1`] = `
]
}
/>
</ForwardRef>
</TouchableOpacity>
</View>
</View>
</KeyboardTrackingView>

View file

@ -60,17 +60,17 @@ describe('components/emoji_picker/emoji_picker.ios', () => {
];
testCases.forEach((testCase) => {
test(`'${testCase.input}' should return '${testCase.output}'`, async () => {
test(`'${testCase.input}' should return '${testCase.output}'`, () => {
expect(filterEmojiSearchInput(testCase.input)).toEqual(testCase.output);
});
});
test('should match snapshot', async () => {
test('should match snapshot', () => {
const wrapper = shallowWithIntl(<EmojiPicker {...baseProps}/>);
expect(wrapper.getElement()).toMatchSnapshot();
});
test('searchEmojis should return the right values on fuse', async () => {
test('searchEmojis should return the right values on fuse', () => {
const input = '1';
const output = ['100', '1234', '1st_place_medal', '+1', '-1', 'clock1', 'clock10', 'clock1030', 'clock11', 'clock1130', 'clock12', 'clock1230', 'clock130', 'u7121', 'u7981'];
@ -79,7 +79,7 @@ describe('components/emoji_picker/emoji_picker.ios', () => {
expect(result).toEqual(output);
});
test('should rebuild emojis emojis when emojis change', async () => {
test('should rebuild emojis emojis when emojis change', () => {
const wrapper = shallowWithIntl(<EmojiPicker {...baseProps}/>);
const instance = wrapper.instance();
const renderableEmojis = jest.spyOn(instance, 'renderableEmojis');
@ -92,7 +92,7 @@ describe('components/emoji_picker/emoji_picker.ios', () => {
expect(renderableEmojis).toHaveBeenCalledWith(baseProps.emojisBySection, baseProps.deviceWidth);
});
test('should set rebuilt emojis when rebuildEmojis is true and searchBarAnimationComplete is true', async () => {
test('should set rebuilt emojis when rebuildEmojis is true and searchBarAnimationComplete is true', () => {
const wrapper = shallowWithIntl(<EmojiPicker {...baseProps}/>);
const instance = wrapper.instance();
instance.setState = jest.fn();
@ -107,7 +107,7 @@ describe('components/emoji_picker/emoji_picker.ios', () => {
expect(instance.rebuildEmojis).toBe(false);
});
test('should not set rebuilt emojis when rebuildEmojis is false and searchBarAnimationComplete is true', async () => {
test('should not set rebuilt emojis when rebuildEmojis is false and searchBarAnimationComplete is true', () => {
const wrapper = shallowWithIntl(<EmojiPicker {...baseProps}/>);
const instance = wrapper.instance();
instance.setState = jest.fn();
@ -120,7 +120,7 @@ describe('components/emoji_picker/emoji_picker.ios', () => {
expect(instance.setState).not.toHaveBeenCalled();
});
test('should not set rebuilt emojis when rebuildEmojis is true and searchBarAnimationComplete is false', async () => {
test('should not set rebuilt emojis when rebuildEmojis is true and searchBarAnimationComplete is false', () => {
const wrapper = shallowWithIntl(<EmojiPicker {...baseProps}/>);
const instance = wrapper.instance();
instance.setState = jest.fn();

View file

@ -51,7 +51,7 @@ exports[`Global Thread Footer Should render for channel view and unfollow the th
>
2 replies
</Text>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -75,7 +75,7 @@ exports[`Global Thread Footer Should render for channel view and unfollow the th
>
Following
</Text>
</ForwardRef>
</TouchableOpacity>
</View>
`;

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Global Thread Item Should render thread item with unread messages dot 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
testID="thread_item.post1.item"
underlayColor="rgba(28,88,217,0.08)"
@ -180,11 +180,11 @@ exports[`Global Thread Item Should render thread item with unread messages dot 1
/>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`Global Thread Item Should show unread mentions count 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
testID="thread_item.post1.item"
underlayColor="rgba(28,88,217,0.08)"
@ -378,5 +378,5 @@ exports[`Global Thread Item Should show unread mentions count 1`] = `
/>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;

View file

@ -130,24 +130,18 @@ exports[`Global Thread List Should render threads with functional tabs & mark al
"thread1",
]
}
disableVirtualization={false}
horizontal={false}
initialNumToRender={10}
keyExtractor={[Function]}
maxToRenderPerBatch={10}
numColumns={1}
onEndReached={[Function]}
onEndReachedThreshold={2}
removeClippedSubviews={true}
renderItem={[Function]}
scrollEventThrottle={50}
scrollIndicatorInsets={
Object {
"right": 1,
}
}
updateCellsBatchingPeriod={50}
windowSize={21}
/>
</View>
`;

View file

@ -10,7 +10,7 @@ exports[`Global Thread List Header Should render threads with functional tabs &
}
>
<View>
<ForwardRef
<TouchableOpacity
onPress={[MockFunction]}
testID="thread_list.all_threads"
>
@ -33,8 +33,8 @@ exports[`Global Thread List Header Should render threads with functional tabs &
All Your Threads
</Text>
</View>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[MockFunction]}
testID="thread_list.unread_threads"
>
@ -62,10 +62,10 @@ exports[`Global Thread List Header Should render threads with functional tabs &
/>
</View>
</View>
</ForwardRef>
</TouchableOpacity>
</View>
<View>
<ForwardRef
<TouchableOpacity
disabled={false}
onPress={[MockFunction]}
testID="thread_list.mark_all_read"
@ -78,7 +78,7 @@ exports[`Global Thread List Header Should render threads with functional tabs &
]
}
/>
</ForwardRef>
</TouchableOpacity>
</View>
</View>
`;

View file

@ -4,7 +4,7 @@
import AsyncStorage from '@react-native-community/async-storage';
import {PureComponent} from 'react';
import {Dimensions} from 'react-native';
import {Dimensions, EmitterSubscription} from 'react-native';
import {DeviceTypes} from '@constants';
import mattermostManaged from '@mattermost-managed';
@ -12,6 +12,7 @@ import EventEmitter from '@mm-redux/utils/event_emitter';
// TODO: Use permanentSidebar and splitView hooks instead
export default class ImageViewPort extends PureComponent {
dimensionsListener: EmitterSubscription | undefined;
mounted = false;
state = {
isSplitView: false,
@ -23,13 +24,13 @@ export default class ImageViewPort extends PureComponent {
this.handlePermanentSidebar();
this.handleDimensions();
EventEmitter.on(DeviceTypes.PERMANENT_SIDEBAR_SETTINGS, this.handlePermanentSidebar);
Dimensions.addEventListener('change', this.handleDimensions);
this.dimensionsListener = Dimensions.addEventListener('change', this.handleDimensions);
}
componentWillUnmount() {
this.mounted = false;
EventEmitter.off(DeviceTypes.PERMANENT_SIDEBAR_SETTINGS, this.handlePermanentSidebar);
Dimensions.removeEventListener('change', this.handleDimensions);
this.dimensionsListener?.remove();
}
handleDimensions = () => {

View file

@ -45,14 +45,14 @@ export default class MarkdownTable extends React.PureComponent {
}
componentDidMount() {
Dimensions.addEventListener('change', this.setMaxPreviewColumns);
this.dimensionsListener = Dimensions.addEventListener('change', this.setMaxPreviewColumns);
const window = Dimensions.get('window');
this.setMaxPreviewColumns({window});
}
componentWillUnmount() {
Dimensions.removeEventListener('change', this.setMaxPreviewColumns);
this.dimensionsListener?.remove();
}
setMaxPreviewColumns = ({window}) => {

View file

@ -181,10 +181,10 @@ const NetworkIndicator = ({
}
});
AppState.addEventListener('change', handleAppStateChange);
const listener = AppState.addEventListener('change', handleAppStateChange);
return () => {
AppState.removeEventListener('change', handleAppStateChange);
listener.remove();
if (clearNotificationTimeout.current && AppState.currentState !== 'active') {
clearTimeout(clearNotificationTimeout.current);
}

View file

@ -2,11 +2,8 @@
exports[`PasteableTextInput should render pasteable text input 1`] = `
<TextInput
allowFontScaling={true}
onPaste={[Function]}
rejectResponderTermination={true}
screenId="Channel"
underlineColorAndroid="transparent"
>
My Text
</TextInput>

View file

@ -1,19 +1,12 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {shallow} from 'enzyme';
import React from 'react';
import {NativeEventEmitter} from 'react-native';
import {PASTE_FILES} from '@constants/post_draft';
import EventEmitter from '@mm-redux/utils/event_emitter';
import {PasteableTextInput} from './index';
const nativeEventEmitter = new NativeEventEmitter();
describe('PasteableTextInput', () => {
const emit = jest.spyOn(EventEmitter, 'emit');
test('should render pasteable text input', () => {
const onPaste = jest.fn();
const text = 'My Text';
@ -26,16 +19,6 @@ describe('PasteableTextInput', () => {
expect(component).toMatchSnapshot();
});
test('should call onPaste props if native onPaste trigger', () => {
const event = {someData: 'data'};
const text = 'My Text';
shallow(
<PasteableTextInput screenId='Channel'>{text}</PasteableTextInput>,
);
nativeEventEmitter.emit('onPaste', event);
expect(emit).toHaveBeenCalledWith(PASTE_FILES, null, event, 'Channel');
});
test('should remove onPaste listener when unmount', () => {
const mockRemove = jest.fn();
const text = 'My Text';
@ -47,16 +30,4 @@ describe('PasteableTextInput', () => {
component.instance().componentWillUnmount();
expect(mockRemove).toHaveBeenCalled();
});
test('should emit PASTE_FILES event only for last subscription', () => {
const component1 = shallow(<PasteableTextInput screenId='Channel'/>);
const instance1 = component1.instance();
const component2 = shallow(<PasteableTextInput screenId='Thread'/>);
const instance2 = component2.instance();
instance1.onPaste();
expect(emit).not.toHaveBeenCalled();
instance2.onPaste();
expect(emit).toHaveBeenCalledTimes(1);
});
});

View file

@ -68,7 +68,9 @@ exports[`PostDraft Should render the Archived for channelIsArchived 1`] = `
<View
accessibilityRole="button"
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}
@ -172,7 +174,9 @@ exports[`PostDraft Should render the Archived for deactivatedChannel 1`] = `
<View
accessibilityRole="button"
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}
@ -213,6 +217,8 @@ exports[`PostDraft Should render the DraftInput 1`] = `
inverted={false}
>
<View
collapsable={false}
nativeID="animatedComponent"
style={
Object {
"bottom": 0,
@ -279,7 +285,6 @@ exports[`PostDraft Should render the DraftInput 1`] = `
>
<View>
<TextInput
allowFontScaling={true}
autoCompleteType="off"
blurOnSubmit={false}
disableFullscreenUI={true}
@ -292,7 +297,6 @@ exports[`PostDraft Should render the DraftInput 1`] = `
onSelectionChange={[Function]}
placeholder="Write to "
placeholderTextColor="rgba(63,67,80,0.5)"
rejectResponderTermination={true}
screenId="NavigationScreen1"
style={
Object {
@ -319,8 +323,10 @@ exports[`PostDraft Should render the DraftInput 1`] = `
}
>
<View
collapsable={false}
forwardedRef={[Function]}
isInteraction={true}
nativeID="animatedComponent"
style={
Object {
"display": "flex",
@ -349,8 +355,10 @@ exports[`PostDraft Should render the DraftInput 1`] = `
</RCTScrollView>
</View>
<View
collapsable={false}
forwardedRef={[Function]}
isInteraction={true}
nativeID="animatedComponent"
style={
Object {
"height": 0,
@ -391,7 +399,9 @@ exports[`PostDraft Should render the DraftInput 1`] = `
>
<View
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}
@ -417,7 +427,9 @@ exports[`PostDraft Should render the DraftInput 1`] = `
</View>
<View
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}
@ -443,7 +455,9 @@ exports[`PostDraft Should render the DraftInput 1`] = `
</View>
<View
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}
@ -469,7 +483,9 @@ exports[`PostDraft Should render the DraftInput 1`] = `
</View>
<View
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}
@ -495,7 +511,9 @@ exports[`PostDraft Should render the DraftInput 1`] = `
</View>
<View
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}

View file

@ -62,10 +62,10 @@ export default class PostInput extends PureComponent {
const event = this.props.rootId ? INSERT_TO_COMMENT : INSERT_TO_DRAFT;
EventEmitter.on(event, this.handleInsertTextToDraft);
EventEmitter.on(NavigationTypes.BLUR_POST_DRAFT, this.blur);
AppState.addEventListener('change', this.handleAppStateChange);
this.appStateListener = AppState.addEventListener('change', this.handleAppStateChange);
if (Platform.OS === 'android') {
Keyboard.addListener('keyboardDidHide', this.handleAndroidKeyboard);
this.keyboardListener = Keyboard.addListener('keyboardDidHide', this.handleAndroidKeyboard);
}
}
@ -73,10 +73,10 @@ export default class PostInput extends PureComponent {
const event = this.props.rootId ? INSERT_TO_COMMENT : INSERT_TO_DRAFT;
EventEmitter.off(NavigationTypes.BLUR_POST_DRAFT, this.blur);
EventEmitter.off(event, this.handleInsertTextToDraft);
AppState.removeEventListener('change', this.handleAppStateChange);
this.appStateListener.remove();
if (Platform.OS === 'android') {
Keyboard.removeListener('keyboardDidHide', this.handleAndroidKeyboard);
this.keyboardListener?.remove();
}
this.changeDraft(this.getValue());

View file

@ -3,7 +3,9 @@
exports[`CameraButton should match snapshot 1`] = `
<View
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}

View file

@ -3,7 +3,9 @@
exports[`FileQuickAction should match snapshot 1`] = `
<View
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}

View file

@ -3,7 +3,9 @@
exports[`ImageQuickAction should match snapshot 1`] = `
<View
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}

View file

@ -18,7 +18,7 @@ exports[`UploadItem downloadAndUploadFile should match, full snapshot 1`] = `
}
}
>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
>
<View
@ -68,7 +68,7 @@ exports[`UploadItem downloadAndUploadFile should match, full snapshot 1`] = `
}
/>
</View>
</ForwardRef>
</TouchableOpacity>
</View>
<UploadRemove
channelId="channel-id"

View file

@ -17,6 +17,7 @@ describe('Uploads', () => {
handleRemoveLastFile: jest.fn(),
initUploadFiles: jest.fn(),
maxFileSize: 100,
maxFileCount: 10,
screenId: 'Channel',
theme: Preferences.THEMES.denim,
};

View file

@ -55,7 +55,6 @@ describe('MoreMessagesButton', () => {
describe('lifecycle methods', () => {
AppState.addEventListener = jest.fn();
AppState.removeEventListener = jest.fn();
test('componentDidMount should register app state listener, indicator visibility listener, viewable items listener, and scroll end index listener', () => {
EventEmitter.on = jest.fn();
@ -94,7 +93,6 @@ describe('MoreMessagesButton', () => {
instance.removeScrollEndIndexListener = jest.fn();
instance.componentWillUnmount();
expect(AppState.removeEventListener).toHaveBeenCalledWith('change', instance.onAppStateChange);
expect(EventEmitter.off).toHaveBeenCalledWith(ViewTypes.INDICATOR_BAR_VISIBLE, instance.onIndicatorBarVisible);
expect(instance.removeViewableItemsListener).toHaveBeenCalled();
expect(instance.removeScrollEndIndexListener).toHaveBeenCalled();
@ -323,6 +321,8 @@ describe('MoreMessagesButton', () => {
<MoreMessagesButton {...baseProps}/>,
);
const instance = wrapper.instance();
const clearTimeout = jest.spyOn(global, 'clearTimeout');
wrapper.setProps({unreadCount: 10});
instance.setState({moreText: '60+ new messages'});
const autoCancelTimer = jest.fn();
@ -517,6 +517,8 @@ describe('MoreMessagesButton', () => {
<MoreMessagesButton {...baseProps}/>,
);
const instance = wrapper.instance();
const setTimeout = jest.spyOn(global, 'setTimeout');
instance.componentDidUpdate = jest.fn();
instance.canceled = false;
instance.hide = jest.fn();
@ -539,6 +541,8 @@ describe('MoreMessagesButton', () => {
<MoreMessagesButton {...baseProps}/>,
);
const instance = wrapper.instance();
const setTimeout = jest.spyOn(global, 'setTimeout');
instance.componentDidUpdate = jest.fn();
instance.canceled = false;
instance.hide = jest.fn();
@ -564,7 +568,9 @@ describe('MoreMessagesButton', () => {
<MoreMessagesButton {...baseProps}/>,
);
const instance = wrapper.instance();
const clearTimeout = jest.spyOn(global, 'clearTimeout');
const autoCancelTimer = jest.fn();
instance.autoCancelTimer = autoCancelTimer;
instance.canceled = true;
instance.disableViewableItems = true;
@ -621,6 +627,7 @@ describe('MoreMessagesButton', () => {
it('should return early when newMessageLineIndex <= 0', () => {
const viewableItems = [{index: 0}, {index: 1}];
const clearTimeout = jest.spyOn(global, 'clearTimeout');
wrapper.setProps({newMessageLineIndex: 0});
instance.onViewableItemsChanged(viewableItems);
@ -633,8 +640,9 @@ describe('MoreMessagesButton', () => {
it('should return early when viewableItems length is 0', () => {
const viewableItems = [];
wrapper.setProps({newMessageLineIndex: 1, unreadCount: 10});
const clearTimeout = jest.spyOn(global, 'clearTimeout');
wrapper.setProps({newMessageLineIndex: 1, unreadCount: 10});
instance.onViewableItemsChanged(viewableItems);
expect(clearTimeout).not.toHaveBeenCalled();
});
@ -643,6 +651,7 @@ describe('MoreMessagesButton', () => {
const viewableItems = [{index: 0}];
wrapper.setProps({newMessageLineIndex: 1, unreadCount: 10});
instance.disableViewableItems = true;
const clearTimeout = jest.spyOn(global, 'clearTimeout');
instance.onViewableItemsChanged(viewableItems);
expect(clearTimeout).not.toHaveBeenCalled();
@ -685,6 +694,7 @@ describe('MoreMessagesButton', () => {
instance.disableViewableItems = false;
instance.autoCancelTimer = null;
instance.cancel = jest.fn();
const setTimeout = jest.spyOn(global, 'setTimeout');
instance.onViewableItemsChanged(viewableItems);
jest.runOnlyPendingTimers();
@ -701,6 +711,7 @@ describe('MoreMessagesButton', () => {
instance.disableViewableItems = false;
instance.autoCancelTimer = null;
instance.cancel = jest.fn();
const setTimeout = jest.spyOn(global, 'setTimeout');
instance.onViewableItemsChanged(viewableItems);
jest.runOnlyPendingTimers();

View file

@ -3,7 +3,7 @@
import React from 'react';
import {intlShape} from 'react-intl';
import {ActivityIndicator, Animated, AppState, AppStateStatus, Text, View, ViewToken} from 'react-native';
import {ActivityIndicator, Animated, AppState, AppStateStatus, NativeEventSubscription, Text, View, ViewToken} from 'react-native';
import CompassIcon from '@components/compass_icon';
import TouchableWithFeedback from '@components/touchable_with_feedback';
@ -64,6 +64,7 @@ export default class MoreMessageButton extends React.PureComponent<MoreMessagesB
intl: intlShape.isRequired,
};
appStateListener: NativeEventSubscription | undefined;
autoCancelTimer: undefined | null | NodeJS.Timeout;
buttonVisible = false;
canceled = false;
@ -78,14 +79,14 @@ export default class MoreMessageButton extends React.PureComponent<MoreMessagesB
viewableItems: ViewToken[] = [];
componentDidMount() {
AppState.addEventListener('change', this.onAppStateChange);
this.appStateListener = AppState.addEventListener('change', this.onAppStateChange);
EventEmitter.on(ViewTypes.INDICATOR_BAR_VISIBLE, this.onIndicatorBarVisible);
this.removeViewableItemsListener = this.props.registerViewableItemsListener(this.onViewableItemsChanged);
this.removeScrollEndIndexListener = this.props.registerScrollEndIndexListener(this.onScrollEndIndex);
}
componentWillUnmount() {
AppState.removeEventListener('change', this.onAppStateChange);
this.appStateListener?.remove();
EventEmitter.off(ViewTypes.INDICATOR_BAR_VISIBLE, this.onIndicatorBarVisible);
if (this.removeViewableItemsListener) {
this.removeViewableItemsListener();

View file

@ -82,14 +82,14 @@ export default class DrawerLayout extends Component {
}
componentDidMount() {
Dimensions.addEventListener('change', this.handleDimensionsChange);
this.dimensionsListener = Dimensions.addEventListener('change', this.handleDimensionsChange);
}
componentWillUnmount() {
if (this.openValue) {
this.openValue.removeListener(this.handleOpenValueChanged);
}
Dimensions.removeEventListener('change', this.handleDimensionsChange);
this.dimensionsListener?.remove();
}
handleDimensionsChange = ({window}) => {

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ChannelItem should match snapshot 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -108,11 +108,11 @@ exports[`ChannelItem should match snapshot 1`] = `
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`ChannelItem should match snapshot for current user i.e currentUser (you) 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -228,11 +228,11 @@ exports[`ChannelItem should match snapshot for current user i.e currentUser (you
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`ChannelItem should match snapshot for current user i.e currentUser (you) when isSearchResult 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -348,11 +348,11 @@ exports[`ChannelItem should match snapshot for current user i.e currentUser (you
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`ChannelItem should match snapshot for deactivated user and is currentChannel 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -468,11 +468,11 @@ exports[`ChannelItem should match snapshot for deactivated user and is currentCh
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`ChannelItem should match snapshot for deactivated user and is searchResult 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -579,11 +579,11 @@ exports[`ChannelItem should match snapshot for deactivated user and is searchRes
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`ChannelItem should match snapshot for deactivated user and not searchResults or currentChannel 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -690,11 +690,11 @@ exports[`ChannelItem should match snapshot for deactivated user and not searchRe
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`ChannelItem should match snapshot for isManualUnread 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -801,7 +801,7 @@ exports[`ChannelItem should match snapshot for isManualUnread 1`] = `
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`ChannelItem should match snapshot for no displayName 1`] = `null`;
@ -809,7 +809,7 @@ exports[`ChannelItem should match snapshot for no displayName 1`] = `null`;
exports[`ChannelItem should match snapshot for showUnreadForMsgs 1`] = `null`;
exports[`ChannelItem should match snapshot with custom status emoji 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -936,11 +936,11 @@ exports[`ChannelItem should match snapshot with custom status emoji 1`] = `
/>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`ChannelItem should match snapshot with draft 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -1047,11 +1047,11 @@ exports[`ChannelItem should match snapshot with draft 1`] = `
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;
exports[`ChannelItem should match snapshot with mentions and muted 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -1194,5 +1194,5 @@ exports[`ChannelItem should match snapshot with mentions and muted 1`] = `
/>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;

View file

@ -10,32 +10,24 @@ exports[`ChannelsList List should match snapshot 1`] = `
"paddingBottom": 44,
}
}
data={Array []}
disableVirtualization={false}
horizontal={false}
initialNumToRender={10}
keyExtractor={[Function]}
keyboardDismissMode="interactive"
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={10}
onEndReachedThreshold={2}
onScrollBeginDrag={[Function]}
onViewableItemsChanged={[Function]}
removeClippedSubviews={false}
renderItem={[Function]}
renderSectionHeader={[Function]}
scrollEventThrottle={50}
sections={Array []}
stickySectionHeadersEnabled={true}
testID="main.sidebar.channels_list.list"
updateCellsBatchingPeriod={50}
viewabilityConfig={
Object {
"itemVisiblePercentThreshold": 100,
"waitForInteraction": true,
}
}
windowSize={21}
/>
</View>
`;
@ -51,32 +43,24 @@ exports[`ChannelsList List should match snapshot with collapsed threads enabled
"paddingBottom": 44,
}
}
data={Array []}
disableVirtualization={false}
horizontal={false}
initialNumToRender={10}
keyExtractor={[Function]}
keyboardDismissMode="interactive"
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={10}
onEndReachedThreshold={2}
onScrollBeginDrag={[Function]}
onViewableItemsChanged={[Function]}
removeClippedSubviews={false}
renderItem={[Function]}
renderSectionHeader={[Function]}
scrollEventThrottle={50}
sections={Array []}
stickySectionHeadersEnabled={true}
testID="main.sidebar.channels_list.list"
updateCellsBatchingPeriod={50}
viewabilityConfig={
Object {
"itemVisiblePercentThreshold": 100,
"waitForInteraction": true,
}
}
windowSize={21}
/>
<UnreadIndicatorIOS
onPress={[Function]}
@ -132,32 +116,24 @@ exports[`ChannelsList List should match snapshot with unreads not on top 1`] = `
"paddingBottom": 44,
}
}
data={Array []}
disableVirtualization={false}
horizontal={false}
initialNumToRender={10}
keyExtractor={[Function]}
keyboardDismissMode="interactive"
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={10}
onEndReachedThreshold={2}
onScrollBeginDrag={[Function]}
onViewableItemsChanged={[Function]}
removeClippedSubviews={false}
renderItem={[Function]}
renderSectionHeader={[Function]}
scrollEventThrottle={50}
sections={Array []}
stickySectionHeadersEnabled={true}
testID="main.sidebar.channels_list.list"
updateCellsBatchingPeriod={50}
viewabilityConfig={
Object {
"itemVisiblePercentThreshold": 100,
"waitForInteraction": true,
}
}
windowSize={21}
/>
<UnreadIndicatorIOS
onPress={[Function]}

View file

@ -4,7 +4,7 @@ exports[`SwitchTeamsButton should match snapshot 1`] = `
<View
testID="main.sidebar.channels_list.switch_teams.button"
>
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(25,42,77,0.5)"
>
@ -59,7 +59,7 @@ exports[`SwitchTeamsButton should match snapshot 1`] = `
testID="main.sidebar.channels_list.switch_teams.button.team_icon"
/>
</View>
</ForwardRef>
</TouchableHighlight>
<Badge
containerStyle={
Object {

View file

@ -56,7 +56,7 @@ export default class MainSidebarBase extends Component {
this.props.actions.getTeams();
EventEmitter.on(NavigationTypes.CLOSE_MAIN_SIDEBAR, this.closeMainSidebar);
EventEmitter.on(WebsocketEvents.CHANNEL_UPDATED, this.handleUpdateTitle);
Dimensions.addEventListener('change', this.handleDimensions);
this.dimensionsListener = Dimensions.addEventListener('change', this.handleDimensions);
}
shouldComponentUpdate(nextProps, nextState) {
@ -91,7 +91,7 @@ export default class MainSidebarBase extends Component {
this.mounted = false;
EventEmitter.off(NavigationTypes.CLOSE_MAIN_SIDEBAR, this.closeMainSidebar);
EventEmitter.off(WebsocketEvents.CHANNEL_UPDATED, this.handleUpdateTitle);
Dimensions.removeEventListener('change', this.handleDimensions);
this.dimensionsListener?.remove();
}
drawerSwiperRef = (ref) => {

View file

@ -9,7 +9,7 @@ exports[`TeamsListItem should match snapshot 1`] = `
}
testID="main.sidebar.teams_list.flat_list.teams_list_item"
>
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -110,6 +110,6 @@ exports[`TeamsListItem should match snapshot 1`] = `
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
`;

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`DrawerItem should match snapshot 1`] = `
<ForwardRef
<TouchableOpacity
onPress={[MockFunction]}
testID="test-id"
>
@ -89,11 +89,11 @@ exports[`DrawerItem should match snapshot 1`] = `
/>
</View>
</View>
</ForwardRef>
</TouchableOpacity>
`;
exports[`DrawerItem should match snapshot without separator and centered false 1`] = `
<ForwardRef
<TouchableOpacity
onPress={[MockFunction]}
testID="test-id"
>
@ -170,5 +170,5 @@ exports[`DrawerItem should match snapshot without separator and centered false 1
</View>
</View>
</View>
</ForwardRef>
</TouchableOpacity>
`;

View file

@ -36,13 +36,13 @@ export default class SettingsDrawer extends SettingsSidebarBase {
super.componentDidMount();
this.handleDimensions({window: Dimensions.get('window')});
Dimensions.addEventListener('change', this.handleDimensions);
this.dimensionsListener = Dimensions.addEventListener('change', this.handleDimensions);
}
componentWillUnmount() {
super.componentWillUnmount();
Dimensions.removeEventListener('change', this.handleDimensions);
this.dimensionsListener?.remove();
}
confirmReset = (status) => {

View file

@ -44,7 +44,7 @@ exports[`components/widgets/settings/RadioSetting should match snapshot when err
}
}
>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
>
<View
@ -81,8 +81,8 @@ exports[`components/widgets/settings/RadioSetting should match snapshot when err
}
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
>
<View
@ -119,8 +119,8 @@ exports[`components/widgets/settings/RadioSetting should match snapshot when err
}
}
/>
</ForwardRef>
<ForwardRef
</TouchableOpacity>
<TouchableOpacity
onPress={[Function]}
>
<View
@ -156,7 +156,7 @@ exports[`components/widgets/settings/RadioSetting should match snapshot when err
}
/>
</View>
</ForwardRef>
</TouchableOpacity>
</View>
<View>
<Text

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`SettingsSidebarDrawerButton should match, full snapshot 1`] = `
<ForwardRef
<TouchableOpacity
accessibilityHint="Opens the more options right hand sidebar"
accessibilityLabel="More Options"
accessibilityRole="button"
@ -31,5 +31,5 @@ exports[`SettingsSidebarDrawerButton should match, full snapshot 1`] = `
size={25}
/>
</View>
</ForwardRef>
</TouchableOpacity>
`;

View file

@ -111,11 +111,11 @@ const ChannelNavBar = (props) => {
useEffect(() => {
handleDimensions();
handlePermanentSidebar();
Dimensions.addEventListener('change', handleDimensions);
const dimensionsListener = Dimensions.addEventListener('change', handleDimensions);
EventEmitter.on(DeviceTypes.PERMANENT_SIDEBAR_SETTINGS, handlePermanentSidebar);
return () => {
Dimensions.removeEventListener('change', handleDimensions);
dimensionsListener.remove();
EventEmitter.off(DeviceTypes.PERMANENT_SIDEBAR_SETTINGS, handlePermanentSidebar);
};
}, []);

View file

@ -8,7 +8,7 @@ exports[`ChannelSearchButton should match, full snapshot 1`] = `
}
}
>
<ForwardRef
<TouchableOpacity
accessibilityHint="Opens the channel search modal"
accessibilityLabel="Search"
accessibilityRole="button"
@ -43,6 +43,6 @@ exports[`ChannelSearchButton should match, full snapshot 1`] = `
}
/>
</View>
</ForwardRef>
</TouchableOpacity>
</View>
`;

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ChannelTitle should match snapshot 1`] = `
<ForwardRef
<TouchableOpacity
style={
Object {
"flex": 1,
@ -54,11 +54,11 @@ exports[`ChannelTitle should match snapshot 1`] = `
}
/>
</View>
</ForwardRef>
</TouchableOpacity>
`;
exports[`ChannelTitle should match snapshot when is DM and has guests and the teammate is the guest (when can show subtitles) 1`] = `
<ForwardRef
<TouchableOpacity
style={
Object {
"flex": 1,
@ -150,11 +150,11 @@ exports[`ChannelTitle should match snapshot when is DM and has guests and the te
}
/>
</View>
</ForwardRef>
</TouchableOpacity>
`;
exports[`ChannelTitle should match snapshot when is DM and has guests but the teammate is not the guest (when can show subtitles) 1`] = `
<ForwardRef
<TouchableOpacity
style={
Object {
"flex": 1,
@ -221,11 +221,11 @@ exports[`ChannelTitle should match snapshot when is DM and has guests but the te
}
/>
</View>
</ForwardRef>
</TouchableOpacity>
`;
exports[`ChannelTitle should match snapshot when isChannelShared is true 1`] = `
<ForwardRef
<TouchableOpacity
style={
Object {
"flex": 1,
@ -297,11 +297,11 @@ exports[`ChannelTitle should match snapshot when isChannelShared is true 1`] = `
}
/>
</View>
</ForwardRef>
</TouchableOpacity>
`;
exports[`ChannelTitle should match snapshot when isSelfDMChannel is true 1`] = `
<ForwardRef
<TouchableOpacity
style={
Object {
"flex": 1,
@ -362,11 +362,11 @@ exports[`ChannelTitle should match snapshot when isSelfDMChannel is true 1`] = `
}
/>
</View>
</ForwardRef>
</TouchableOpacity>
`;
exports[`ChannelTitle should match snapshot with custom status emoji 1`] = `
<ForwardRef
<TouchableOpacity
style={
Object {
"flex": 1,
@ -433,5 +433,5 @@ exports[`ChannelTitle should match snapshot with custom status emoji 1`] = `
}
/>
</View>
</ForwardRef>
</TouchableOpacity>
`;

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`MainSidebarDrawerButton should match, full snapshot 1`] = `
<ForwardRef
<TouchableOpacity
accessibilityHint="Opens the channels and teams drawer"
accessibilityLabel="Channels and teams"
accessibilityRole="button"
@ -37,11 +37,11 @@ exports[`MainSidebarDrawerButton should match, full snapshot 1`] = `
/>
</View>
</View>
</ForwardRef>
</TouchableOpacity>
`;
exports[`MainSidebarDrawerButton should match, full snapshot 2`] = `
<ForwardRef
<TouchableOpacity
accessibilityHint="Opens the channels and teams drawer"
accessibilityLabel="Channels and teams"
accessibilityRole="button"
@ -107,5 +107,5 @@ exports[`MainSidebarDrawerButton should match, full snapshot 2`] = `
/>
</View>
</View>
</ForwardRef>
</TouchableOpacity>
`;

View file

@ -90,7 +90,7 @@ exports[`channel_info_header should match snapshot 1`] = `
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -125,7 +125,7 @@ exports[`channel_info_header should match snapshot 1`] = `
Purpose string
</Text>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<View
style={
@ -134,7 +134,7 @@ exports[`channel_info_header should match snapshot 1`] = `
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -271,7 +271,7 @@ exports[`channel_info_header should match snapshot 1`] = `
value="Header string"
/>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<Text
style={
@ -424,7 +424,7 @@ exports[`channel_info_header should match snapshot when DM and hasGuests and is
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -459,7 +459,7 @@ exports[`channel_info_header should match snapshot when DM and hasGuests and is
Purpose string
</Text>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<View
style={
@ -468,7 +468,7 @@ exports[`channel_info_header should match snapshot when DM and hasGuests and is
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -605,7 +605,7 @@ exports[`channel_info_header should match snapshot when DM and hasGuests and is
value="Header string"
/>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<Text
style={
@ -730,7 +730,7 @@ exports[`channel_info_header should match snapshot when DM and hasGuests but its
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -765,7 +765,7 @@ exports[`channel_info_header should match snapshot when DM and hasGuests but its
Purpose string
</Text>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<View
style={
@ -774,7 +774,7 @@ exports[`channel_info_header should match snapshot when DM and hasGuests but its
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -911,7 +911,7 @@ exports[`channel_info_header should match snapshot when DM and hasGuests but its
value="Header string"
/>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<Text
style={
@ -1064,7 +1064,7 @@ exports[`channel_info_header should match snapshot when GM and hasGuests 1`] = `
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -1099,7 +1099,7 @@ exports[`channel_info_header should match snapshot when GM and hasGuests 1`] = `
Purpose string
</Text>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<View
style={
@ -1108,7 +1108,7 @@ exports[`channel_info_header should match snapshot when GM and hasGuests 1`] = `
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -1245,7 +1245,7 @@ exports[`channel_info_header should match snapshot when GM and hasGuests 1`] = `
value="Header string"
/>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<Text
style={
@ -1370,7 +1370,7 @@ exports[`channel_info_header should match snapshot when is group constrained 1`]
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -1405,7 +1405,7 @@ exports[`channel_info_header should match snapshot when is group constrained 1`]
Purpose string
</Text>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<View
style={
@ -1414,7 +1414,7 @@ exports[`channel_info_header should match snapshot when is group constrained 1`]
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -1551,7 +1551,7 @@ exports[`channel_info_header should match snapshot when is group constrained 1`]
value="Header string"
/>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<Text
style={
@ -1725,7 +1725,7 @@ exports[`channel_info_header should match snapshot when public channel and hasGu
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -1760,7 +1760,7 @@ exports[`channel_info_header should match snapshot when public channel and hasGu
Purpose string
</Text>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<View
style={
@ -1769,7 +1769,7 @@ exports[`channel_info_header should match snapshot when public channel and hasGu
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -1906,7 +1906,7 @@ exports[`channel_info_header should match snapshot when public channel and hasGu
value="Header string"
/>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<Text
style={
@ -2113,7 +2113,7 @@ exports[`channel_info_header should match snapshot with custom status enabled 1`
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -2148,7 +2148,7 @@ exports[`channel_info_header should match snapshot with custom status enabled 1`
Purpose string
</Text>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<View
style={
@ -2157,7 +2157,7 @@ exports[`channel_info_header should match snapshot with custom status enabled 1`
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -2294,7 +2294,7 @@ exports[`channel_info_header should match snapshot with custom status enabled 1`
value="Header string"
/>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<Text
style={
@ -2540,7 +2540,7 @@ exports[`channel_info_header should match snapshot with custom status expiry 1`]
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -2575,7 +2575,7 @@ exports[`channel_info_header should match snapshot with custom status expiry 1`]
Purpose string
</Text>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<View
style={
@ -2584,7 +2584,7 @@ exports[`channel_info_header should match snapshot with custom status expiry 1`]
}
}
>
<ForwardRef
<TouchableHighlight
onLongPress={[Function]}
>
<View
@ -2721,7 +2721,7 @@ exports[`channel_info_header should match snapshot with custom status expiry 1`]
value="Header string"
/>
</View>
</ForwardRef>
</TouchableHighlight>
</View>
<Text
style={

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ChannelInfoRow should match snapshot 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[MockFunction]}
>
<View
@ -64,5 +64,5 @@ exports[`ChannelInfoRow should match snapshot 1`] = `
}
/>
</View>
</ForwardRef>
</TouchableHighlight>
`;

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`screens/custom_status_suggestion should match snapshot 1`] = `
<ForwardRef
<TouchableOpacity
onPress={[Function]}
testID="custom_status_suggestion.In a meeting"
>
@ -91,11 +91,11 @@ exports[`screens/custom_status_suggestion should match snapshot 1`] = `
</View>
</View>
</View>
</ForwardRef>
</TouchableOpacity>
`;
exports[`screens/custom_status_suggestion should match snapshot with separator and clear button 1`] = `
<ForwardRef
<TouchableOpacity
onPress={[Function]}
testID="custom_status_suggestion.In a meeting"
>
@ -194,5 +194,5 @@ exports[`screens/custom_status_suggestion should match snapshot with separator a
/>
</View>
</View>
</ForwardRef>
</TouchableOpacity>
`;

View file

@ -2,7 +2,7 @@
exports[`screens/clear_after_menu_item should match snapshot 1`] = `
<View>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
testID="clear_after.menu_item."
>
@ -68,13 +68,13 @@ exports[`screens/clear_after_menu_item should match snapshot 1`] = `
/>
</View>
</View>
</ForwardRef>
</TouchableOpacity>
</View>
`;
exports[`screens/clear_after_menu_item should match snapshot with separator and selected check 1`] = `
<View>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
testID="clear_after.menu_item."
>
@ -168,6 +168,6 @@ exports[`screens/clear_after_menu_item should match snapshot with separator and
}
}
/>
</ForwardRef>
</TouchableOpacity>
</View>
`;

View file

@ -23,9 +23,10 @@ exports[`screens/date_time_selector should match snapshot 1`] = `
>
<View
accessibilityRole="button"
accessibilityState={Object {}}
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}
@ -68,9 +69,10 @@ exports[`screens/date_time_selector should match snapshot 1`] = `
</View>
<View
accessibilityRole="button"
accessibilityState={Object {}}
accessible={true}
collapsable={false}
focusable={true}
nativeID="animatedComponent"
onClick={[Function]}
onResponderGrant={[Function]}
onResponderMove={[Function]}

View file

@ -148,7 +148,6 @@ exports[`ForgotPassword should match snapshot 1`] = `
}
/>
<TextInput
allowFontScaling={true}
autoCapitalize="none"
autoCorrect={false}
blurOnSubmit={false}
@ -157,7 +156,6 @@ exports[`ForgotPassword should match snapshot 1`] = `
onChangeText={[Function]}
placeholder="Email"
placeholderTextColor="rgba(0,0,0,0.5)"
rejectResponderTermination={true}
style={
Object {
"alignSelf": "stretch",
@ -271,7 +269,6 @@ exports[`ForgotPassword snapshot for error on failure of email regex 1`] = `
}
/>
<TextInput
allowFontScaling={true}
autoCapitalize="none"
autoCorrect={false}
blurOnSubmit={false}
@ -280,7 +277,6 @@ exports[`ForgotPassword snapshot for error on failure of email regex 1`] = `
onChangeText={[Function]}
placeholder="Email"
placeholderTextColor="rgba(0,0,0,0.5)"
rejectResponderTermination={true}
style={
Object {
"alignSelf": "stretch",

View file

@ -63,13 +63,13 @@ export default class Login extends PureComponent {
}
componentDidMount() {
Dimensions.addEventListener('change', this.orientationDidChange);
this.dimensionsListener = Dimensions.addEventListener('change', this.orientationDidChange);
this.setEmmUsernameIfAvailable();
}
componentWillUnmount() {
Dimensions.removeEventListener('change', this.orientationDidChange);
this.dimensionsListener?.remove();
}
goToChannel = () => {

View file

@ -38,11 +38,11 @@ export default class LoginOptions extends PureComponent {
};
componentDidMount() {
Dimensions.addEventListener('change', this.orientationDidChange);
this.dimensionsListener = Dimensions.addEventListener('change', this.orientationDidChange);
}
componentWillUnmount() {
Dimensions.removeEventListener('change', this.orientationDidChange);
this.dimensionsListener?.remove();
}
goToLogin = preventDoubleTap(async () => {

View file

@ -47,13 +47,13 @@ export default class Mfa extends PureComponent {
componentDidMount() {
if (Platform.OS === 'android') {
Keyboard.addListener('keyboardDidHide', this.handleAndroidKeyboard);
this.keyboardListener = Keyboard.addListener('keyboardDidHide', this.handleAndroidKeyboard);
}
}
componentWillUnmount() {
if (Platform.OS === 'android') {
Keyboard.removeListener('keyboardDidHide', this.handleAndroidKeyboard);
this.keyboardListener?.remove();
}
}

View file

@ -66,7 +66,7 @@ exports[`OptionModalList should match snapshot 1`] = `
</Text>
</View>
<View>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -107,10 +107,10 @@ exports[`OptionModalList should match snapshot 1`] = `
]
}
/>
</ForwardRef>
</TouchableOpacity>
</View>
<View>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -151,7 +151,7 @@ exports[`OptionModalList should match snapshot 1`] = `
]
}
/>
</ForwardRef>
</TouchableOpacity>
</View>
</View>
</View>

View file

@ -50,7 +50,7 @@ exports[`Permalink should match snapshot 1`] = `
}
}
>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -66,7 +66,7 @@ exports[`Permalink should match snapshot 1`] = `
name="close"
size={20}
/>
</ForwardRef>
</TouchableOpacity>
<View
style={
Object {

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`ReactionHeaderItem should match snapshot 1`] = `
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={
Array [
@ -47,7 +47,7 @@ exports[`ReactionHeaderItem should match snapshot 1`] = `
3
</Text>
</React.Fragment>
</ForwardRef>
</TouchableOpacity>
`;
exports[`ReactionHeaderItem should match snapshot, renderContent 1`] = `

View file

@ -20,7 +20,7 @@ exports[`ReactionRow should match snapshot, renderContent 1`] = `
}
}
>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
>
<View
@ -38,7 +38,7 @@ exports[`ReactionRow should match snapshot, renderContent 1`] = `
userId="user_id"
/>
</View>
</ForwardRef>
</TouchableOpacity>
</View>
<Text
ellipsizeMode="tail"

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Search RecentItem should match snapshot and respond to events 1`] = `
<ForwardRef
<TouchableHighlight
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
>
@ -80,5 +80,5 @@ exports[`Search RecentItem should match snapshot and respond to events 1`] = `
</Text>
</View>
</View>
</ForwardRef>
</TouchableHighlight>
`;

View file

@ -1,7 +1,7 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`Search RecentItem should match snapshot and respond to events 1`] = `
<ForwardRef
<TouchableHighlight
key="test"
onPress={[Function]}
underlayColor="rgba(40,66,123,0.5)"
@ -30,7 +30,7 @@ exports[`Search RecentItem should match snapshot and respond to events 1`] = `
>
test
</Text>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={
Object {
@ -47,7 +47,7 @@ exports[`Search RecentItem should match snapshot and respond to events 1`] = `
name="close-circle-outline"
size={20}
/>
</ForwardRef>
</TouchableOpacity>
</View>
</ForwardRef>
</TouchableHighlight>
`;

View file

@ -86,15 +86,8 @@ exports[`Search should match snapshot 1`] = `
>
<SectionList
ListFooterComponent={[Function]}
data={Array []}
disableVirtualization={false}
horizontal={false}
initialNumToRender={10}
keyExtractor={[Function]}
keyboardDismissMode="interactive"
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={10}
onEndReachedThreshold={2}
onLayout={[Function]}
onScroll={[Function]}
onViewableItemsChanged={[Function]}
@ -158,8 +151,6 @@ exports[`Search should match snapshot 1`] = `
}
}
testID="search.results_list"
updateCellsBatchingPeriod={50}
windowSize={21}
/>
</RNCSafeAreaView>
<Connect(Autocomplete)

View file

@ -27,7 +27,7 @@ describe('Search RecentItem', () => {
);
expect(wrapper.getElement()).toMatchSnapshot();
wrapper.find('ForwardRef').first().props().onPress();
wrapper.find('TouchableHighlight').first().props().onPress();
expect(baseProps.setModifierValue).toHaveBeenCalledTimes(1);
expect(baseProps.setModifierValue).toHaveBeenCalledWith(item.value);
});

View file

@ -26,10 +26,10 @@ describe('Search RecentItem', () => {
);
expect(wrapper).toMatchSnapshot();
wrapper.find('ForwardRef').first().props().onPress();
wrapper.find('TouchableHighlight').first().props().onPress();
expect(baseProps.setRecentValue).toHaveBeenCalledTimes(1);
expect(baseProps.setRecentValue).toHaveBeenCalledWith(item);
wrapper.find('ForwardRef').at(1).props().onPress();
wrapper.find('TouchableOpacity').first().props().onPress();
expect(baseProps.setRecentValue).toHaveBeenCalledTimes(1);
expect(baseProps.setRecentValue).toHaveBeenCalledWith(item);
});

View file

@ -103,7 +103,7 @@ export default class SelectServer extends PureComponent {
}
if (Platform.OS === 'android') {
Keyboard.addListener('keyboardDidHide', this.handleAndroidKeyboard);
this.keyboardListener = Keyboard.addListener('keyboardDidHide', this.handleAndroidKeyboard);
}
this.certificateListener = DeviceEventEmitter.addListener('RNFetchBlobCertificate', this.selectCertificate);
@ -118,7 +118,7 @@ export default class SelectServer extends PureComponent {
componentWillUnmount() {
if (Platform.OS === 'android') {
Keyboard.removeListener('keyboardDidHide', this.handleAndroidKeyboard);
this.keyboardListener?.remove();
}
this.certificateListener.remove();

View file

@ -66,7 +66,7 @@ describe('SelectorScreen', () => {
jest.useFakeTimers();
});
test('should match snapshot for explicit options', async () => {
test('should match snapshot for explicit options', () => {
const wrapper = shallow(
<SelectorScreen {...baseProps}/>,
{context: {intl}},
@ -74,7 +74,7 @@ describe('SelectorScreen', () => {
expect(wrapper.getElement()).toMatchSnapshot();
});
test('should match snapshot for users', async () => {
test('should match snapshot for users', () => {
const props = {
...baseProps,
dataSource: 'users',
@ -91,7 +91,7 @@ describe('SelectorScreen', () => {
expect(wrapper.getElement()).toMatchSnapshot();
});
test('should match snapshot for channels', async () => {
test('should match snapshot for channels', () => {
const props = {
...baseProps,
dataSource: 'channels',
@ -108,7 +108,7 @@ describe('SelectorScreen', () => {
expect(wrapper.getElement()).toMatchSnapshot();
});
test('should match snapshot for searching', async () => {
test('should match snapshot for searching', () => {
const props = {
...baseProps,
dataSource: 'channels',
@ -145,36 +145,35 @@ describe('SelectorScreen', () => {
);
jest.runAllTimers();
await (() => new Promise(setImmediate))();
setTimeout(() => {
expect(props.getDynamicOptions).toHaveBeenCalledWith('');
expect(wrapper.state().data).toEqual([
{text: 'Without Query Text', value: 'without_query'},
]);
expect(wrapper.state().searchResults).toEqual([]);
expect(props.getDynamicOptions).toHaveBeenCalledWith('');
expect(wrapper.state().data).toEqual([
{text: 'Without Query Text', value: 'without_query'},
]);
expect(wrapper.state().searchResults).toEqual([]);
let customList = wrapper.find('CustomList');
expect(customList.props().data).toEqual([
{text: 'Without Query Text', value: 'without_query'},
]);
const customList = wrapper.find('CustomList');
expect(customList.props().data).toEqual([
{text: 'Without Query Text', value: 'without_query'},
]);
});
// Search for value
wrapper.instance().onSearch('mysearch');
jest.runAllTimers();
await (() => new Promise(setImmediate))();
setTimeout(() => {
expect(props.getDynamicOptions).toHaveBeenCalledWith('mysearch');
expect(wrapper.state().data).toEqual([
{text: 'Without Query Text', value: 'without_query'},
]);
expect(wrapper.state().searchResults).toEqual([
{text: 'With Query Text', value: 'with_query'},
]);
expect(props.getDynamicOptions).toHaveBeenCalledWith('mysearch');
expect(wrapper.state().data).toEqual([
{text: 'Without Query Text', value: 'without_query'},
]);
expect(wrapper.state().searchResults).toEqual([
{text: 'With Query Text', value: 'with_query'},
]);
customList = wrapper.find('CustomList');
expect(customList.props().data).toEqual([
{text: 'With Query Text', value: 'with_query'},
]);
const customList = wrapper.find('CustomList');
expect(customList.props().data).toEqual([
{text: 'With Query Text', value: 'with_query'},
]);
});
});
});

View file

@ -110,7 +110,7 @@ exports[`NotificationSettingsEmailAndroid should match snapshot 2`] = `
<View
style={Object {}}
>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={Object {}}
testID="notification_settings_email.send_modal_cancel.button"
@ -120,7 +120,7 @@ exports[`NotificationSettingsEmailAndroid should match snapshot 2`] = `
id="mobile.notification_settings.modal_cancel"
style={Object {}}
/>
</ForwardRef>
</TouchableOpacity>
<View>
<View
style={
@ -129,7 +129,7 @@ exports[`NotificationSettingsEmailAndroid should match snapshot 2`] = `
}
}
/>
<ForwardRef
<TouchableOpacity
onPress={[Function]}
style={Object {}}
testID="notification_settings_email.send_modal_save.button"
@ -139,7 +139,7 @@ exports[`NotificationSettingsEmailAndroid should match snapshot 2`] = `
id="mobile.notification_settings.modal_save"
style={Object {}}
/>
</ForwardRef>
</TouchableOpacity>
</View>
</View>
</View>

View file

@ -67,28 +67,21 @@ exports[`Settings SelectTimezone should match snapshot 1`] = `
</View>
<FlatList
data={Array []}
disableVirtualization={false}
getItemLayout={[Function]}
horizontal={false}
initialNumToRender={10}
initialScrollIndex={1}
keyExtractor={[Function]}
keyboardDismissMode="on-drag"
keyboardShouldPersistTaps="always"
maxToRenderPerBatch={15}
numColumns={1}
onEndReachedThreshold={2}
removeClippedSubviews={true}
renderItem={[Function]}
scrollEventThrottle={50}
updateCellsBatchingPeriod={50}
viewabilityConfig={
Object {
"itemVisiblePercentThreshold": 100,
"waitForInteraction": false,
}
}
windowSize={21}
/>
</RNCSafeAreaView>
`;

2403
detox/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -5,21 +5,21 @@
"author": "Mattermost, Inc.",
"devDependencies": {
"@babel/plugin-proposal-class-properties": "7.14.5",
"@babel/plugin-transform-modules-commonjs": "7.14.5",
"@babel/plugin-transform-runtime": "7.14.5",
"@babel/preset-env": "7.14.8",
"axios": "0.21.1",
"babel-jest": "27.0.6",
"@babel/plugin-transform-modules-commonjs": "7.15.4",
"@babel/plugin-transform-runtime": "7.15.0",
"@babel/preset-env": "7.15.6",
"axios": "0.21.4",
"babel-jest": "27.2.1",
"babel-plugin-module-resolver": "4.1.0",
"client-oauth2": "github:larkox/js-client-oauth2#e24e2eb5dfcbbbb3a59d095e831dbe0012b0ac49",
"deepmerge": "4.2.2",
"detox": "18.20.0",
"detox": "18.20.4",
"form-data": "4.0.0",
"jest": "27.0.6",
"jest-circus": "27.0.6",
"jest-cli": "27.0.6",
"jest": "27.2.1",
"jest-circus": "27.2.1",
"jest-cli": "27.2.1",
"jest-html-reporters": "2.1.6",
"jest-junit": "12.2.0",
"jest-junit": "12.3.0",
"sanitize-filename": "1.6.3",
"uuid": "8.3.2"
},

View file

@ -1,3 +1,3 @@
source "https://rubygems.org"
gem "cocoapods", "1.10.1"
gem "cocoapods", "1.10.2"

View file

@ -2,22 +2,22 @@ GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.3)
activesupport (5.2.5)
activesupport (5.2.6)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.7.0)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
algoliasearch (1.27.5)
httpclient (~> 2.8, >= 2.8.3)
json (>= 1.5.1)
atomos (0.1.3)
claide (1.0.3)
cocoapods (1.10.1)
cocoapods (1.10.2)
addressable (~> 2.6)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.10.1)
cocoapods-core (= 1.10.2)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.4.0, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
@ -32,7 +32,7 @@ GEM
nap (~> 1.0)
ruby-macho (~> 1.4)
xcodeproj (>= 1.19.0, < 2.0)
cocoapods-core (1.10.1)
cocoapods-core (1.10.2)
activesupport (> 5.0, < 6)
addressable (~> 2.6)
algoliasearch (~> 1.0)
@ -42,21 +42,21 @@ GEM
netrc (~> 0.11)
public_suffix
typhoeus (~> 1.0)
cocoapods-deintegrate (1.0.4)
cocoapods-downloader (1.4.0)
cocoapods-deintegrate (1.0.5)
cocoapods-downloader (1.5.1)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.0)
cocoapods-trunk (1.5.0)
cocoapods-search (1.0.1)
cocoapods-trunk (1.6.0)
nap (>= 0.8, < 2.0)
netrc (~> 0.11)
cocoapods-try (1.2.0)
colored2 (3.1.2)
concurrent-ruby (1.1.8)
concurrent-ruby (1.1.9)
escape (0.0.4)
ethon (0.12.0)
ffi (>= 1.3.0)
ffi (1.15.0)
ethon (0.14.0)
ffi (>= 1.15.0)
ffi (1.15.4)
fourflusher (2.3.1)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
@ -70,24 +70,26 @@ GEM
nap (1.1.0)
netrc (0.11.0)
public_suffix (4.0.6)
rexml (3.2.5)
ruby-macho (1.4.0)
thread_safe (0.3.6)
typhoeus (1.4.0)
ethon (>= 0.9.0)
tzinfo (1.2.9)
thread_safe (~> 0.1)
xcodeproj (1.19.0)
xcodeproj (1.21.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
rexml (~> 3.2.4)
PLATFORMS
ruby
DEPENDENCIES
cocoapods (= 1.10.1)
cocoapods (= 1.10.2)
BUNDLED WITH
2.1.4

View file

@ -34,8 +34,10 @@ target 'Mattermost' do
puts 'Patching XCDYouTube so it can playback videos'
%x(patch Pods/XCDYouTubeKit/XCDYouTubeKit/XCDYouTubeVideoOperation.m < patches/XCDYouTubeVideoOperation.patch)
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
if target.name != "RCT-Folly"
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
end
end
end
end

View file

@ -3,14 +3,15 @@ PODS:
- BVLinearGradient (2.5.6):
- React
- DoubleConversion (1.1.6)
- FBLazyVector (0.64.2)
- FBReactNativeSpec (0.64.2):
- RCT-Folly (= 2020.01.13.00)
- RCTRequired (= 0.64.2)
- RCTTypeSafety (= 0.64.2)
- React-Core (= 0.64.2)
- React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- FBLazyVector (0.65.1)
- FBReactNativeSpec (0.65.1):
- RCT-Folly (= 2021.04.26.00)
- RCTRequired (= 0.65.1)
- RCTTypeSafety (= 0.65.1)
- React-Core (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- fmt (6.2.1)
- glog (0.3.5)
- jail-monkey (2.6.0):
- React-Core
@ -23,9 +24,9 @@ PODS:
- libwebp/mux (1.2.0):
- libwebp/demux
- libwebp/webp (1.2.0)
- MMKV (1.2.7):
- MMKVCore (~> 1.2.7)
- MMKVCore (1.2.9)
- MMKV (1.2.10):
- MMKVCore (~> 1.2.10)
- MMKVCore (1.2.10)
- Permission-Camera (3.0.5):
- RNPermissions
- Permission-MediaLibrary (3.0.5):
@ -38,226 +39,228 @@ PODS:
- RNPermissions
- Permission-PhotoLibraryAddOnly (3.0.5):
- RNPermissions
- RCT-Folly (2020.01.13.00):
- RCT-Folly (2021.04.26.00):
- boost-for-react-native
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCT-Folly/Default (= 2020.01.13.00)
- RCT-Folly/Default (2020.01.13.00):
- RCT-Folly/Default (= 2021.04.26.00)
- RCT-Folly/Default (2021.04.26.00):
- boost-for-react-native
- DoubleConversion
- fmt (~> 6.2.1)
- glog
- RCTRequired (0.64.2)
- RCTTypeSafety (0.64.2):
- FBLazyVector (= 0.64.2)
- RCT-Folly (= 2020.01.13.00)
- RCTRequired (= 0.64.2)
- React-Core (= 0.64.2)
- RCTRequired (0.65.1)
- RCTTypeSafety (0.65.1):
- FBLazyVector (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTRequired (= 0.65.1)
- React-Core (= 0.65.1)
- RCTYouTube (2.0.2):
- React
- YoutubePlayer-in-WKWebView (~> 0.3.1)
- React (0.64.2):
- React-Core (= 0.64.2)
- React-Core/DevSupport (= 0.64.2)
- React-Core/RCTWebSocket (= 0.64.2)
- React-RCTActionSheet (= 0.64.2)
- React-RCTAnimation (= 0.64.2)
- React-RCTBlob (= 0.64.2)
- React-RCTImage (= 0.64.2)
- React-RCTLinking (= 0.64.2)
- React-RCTNetwork (= 0.64.2)
- React-RCTSettings (= 0.64.2)
- React-RCTText (= 0.64.2)
- React-RCTVibration (= 0.64.2)
- React-callinvoker (0.64.2)
- React-Core (0.64.2):
- React (0.65.1):
- React-Core (= 0.65.1)
- React-Core/DevSupport (= 0.65.1)
- React-Core/RCTWebSocket (= 0.65.1)
- React-RCTActionSheet (= 0.65.1)
- React-RCTAnimation (= 0.65.1)
- React-RCTBlob (= 0.65.1)
- React-RCTImage (= 0.65.1)
- React-RCTLinking (= 0.65.1)
- React-RCTNetwork (= 0.65.1)
- React-RCTSettings (= 0.65.1)
- React-RCTText (= 0.65.1)
- React-RCTVibration (= 0.65.1)
- React-callinvoker (0.65.1)
- React-Core (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- React-Core/Default (= 0.64.2)
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default (= 0.65.1)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/CoreModulesHeaders (0.64.2):
- React-Core/CoreModulesHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/Default (0.64.2):
- React-Core/Default (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- RCT-Folly (= 2021.04.26.00)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/DevSupport (0.64.2):
- React-Core/DevSupport (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- React-Core/Default (= 0.64.2)
- React-Core/RCTWebSocket (= 0.64.2)
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-jsinspector (= 0.64.2)
- React-perflogger (= 0.64.2)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default (= 0.65.1)
- React-Core/RCTWebSocket (= 0.65.1)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-jsinspector (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTActionSheetHeaders (0.64.2):
- React-Core/RCTActionSheetHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTAnimationHeaders (0.64.2):
- React-Core/RCTAnimationHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTBlobHeaders (0.64.2):
- React-Core/RCTBlobHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTImageHeaders (0.64.2):
- React-Core/RCTImageHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTLinkingHeaders (0.64.2):
- React-Core/RCTLinkingHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTNetworkHeaders (0.64.2):
- React-Core/RCTNetworkHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTSettingsHeaders (0.64.2):
- React-Core/RCTSettingsHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTTextHeaders (0.64.2):
- React-Core/RCTTextHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTVibrationHeaders (0.64.2):
- React-Core/RCTVibrationHeaders (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-Core/RCTWebSocket (0.64.2):
- React-Core/RCTWebSocket (0.65.1):
- glog
- RCT-Folly (= 2020.01.13.00)
- React-Core/Default (= 0.64.2)
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsiexecutor (= 0.64.2)
- React-perflogger (= 0.64.2)
- RCT-Folly (= 2021.04.26.00)
- React-Core/Default (= 0.65.1)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsiexecutor (= 0.65.1)
- React-perflogger (= 0.65.1)
- Yoga
- React-CoreModules (0.64.2):
- FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2)
- React-Core/CoreModulesHeaders (= 0.64.2)
- React-jsi (= 0.64.2)
- React-RCTImage (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- React-cxxreact (0.64.2):
- React-CoreModules (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/CoreModulesHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- React-RCTImage (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-cxxreact (0.65.1):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- glog
- RCT-Folly (= 2020.01.13.00)
- React-callinvoker (= 0.64.2)
- React-jsi (= 0.64.2)
- React-jsinspector (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-runtimeexecutor (= 0.64.2)
- React-jsi (0.64.2):
- RCT-Folly (= 2021.04.26.00)
- React-callinvoker (= 0.65.1)
- React-jsi (= 0.65.1)
- React-jsinspector (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-runtimeexecutor (= 0.65.1)
- React-jsi (0.65.1):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- glog
- RCT-Folly (= 2020.01.13.00)
- React-jsi/Default (= 0.64.2)
- React-jsi/Default (0.64.2):
- RCT-Folly (= 2021.04.26.00)
- React-jsi/Default (= 0.65.1)
- React-jsi/Default (0.65.1):
- boost-for-react-native (= 1.63.0)
- DoubleConversion
- glog
- RCT-Folly (= 2020.01.13.00)
- React-jsiexecutor (0.64.2):
- RCT-Folly (= 2021.04.26.00)
- React-jsiexecutor (0.65.1):
- DoubleConversion
- glog
- RCT-Folly (= 2020.01.13.00)
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-perflogger (= 0.64.2)
- React-jsinspector (0.64.2)
- RCT-Folly (= 2021.04.26.00)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-perflogger (= 0.65.1)
- React-jsinspector (0.65.1)
- react-native-cameraroll (4.0.4):
- React-Core
- react-native-cookies (6.0.8):
- react-native-cookies (6.0.10):
- React-Core
- react-native-document-picker (5.2.0):
- react-native-document-picker (6.0.4):
- React-Core
- react-native-hw-keyboard-event (0.0.4):
- React
- react-native-image-picker (4.0.6):
- react-native-image-picker (4.1.1):
- React-Core
- react-native-local-auth (1.6.0):
- React
- react-native-mmkv-storage (0.6.0):
- MMKV (= 1.2.7)
- react-native-mmkv-storage (0.6.3):
- MMKV (= 1.2.10)
- React-Core
- react-native-netinfo (6.0.0):
- react-native-netinfo (6.0.2):
- React-Core
- react-native-notifications (4.1.1):
- react-native-notifications (4.1.2):
- React-Core
- react-native-passcode-status (1.1.2):
- React
- react-native-safe-area (0.5.1):
- React
- react-native-safe-area-context (3.2.0):
- react-native-safe-area-context (3.3.2):
- React-Core
- react-native-startup-time (2.0.0):
- React
@ -266,82 +269,82 @@ PODS:
- react-native-video/Video (= 5.1.1)
- react-native-video/Video (5.1.1):
- React-Core
- react-native-webview (11.6.5):
- react-native-webview (11.13.0):
- React-Core
- React-perflogger (0.64.2)
- React-RCTActionSheet (0.64.2):
- React-Core/RCTActionSheetHeaders (= 0.64.2)
- React-RCTAnimation (0.64.2):
- FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2)
- React-Core/RCTAnimationHeaders (= 0.64.2)
- React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTBlob (0.64.2):
- FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00)
- React-Core/RCTBlobHeaders (= 0.64.2)
- React-Core/RCTWebSocket (= 0.64.2)
- React-jsi (= 0.64.2)
- React-RCTNetwork (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTImage (0.64.2):
- FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2)
- React-Core/RCTImageHeaders (= 0.64.2)
- React-jsi (= 0.64.2)
- React-RCTNetwork (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTLinking (0.64.2):
- FBReactNativeSpec (= 0.64.2)
- React-Core/RCTLinkingHeaders (= 0.64.2)
- React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTNetwork (0.64.2):
- FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2)
- React-Core/RCTNetworkHeaders (= 0.64.2)
- React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTSettings (0.64.2):
- FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2)
- React-Core/RCTSettingsHeaders (= 0.64.2)
- React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- React-RCTText (0.64.2):
- React-Core/RCTTextHeaders (= 0.64.2)
- React-RCTVibration (0.64.2):
- FBReactNativeSpec (= 0.64.2)
- RCT-Folly (= 2020.01.13.00)
- React-Core/RCTVibrationHeaders (= 0.64.2)
- React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- React-runtimeexecutor (0.64.2):
- React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (0.64.2):
- React-perflogger (0.65.1)
- React-RCTActionSheet (0.65.1):
- React-Core/RCTActionSheetHeaders (= 0.65.1)
- React-RCTAnimation (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/RCTAnimationHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTBlob (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- React-Core/RCTBlobHeaders (= 0.65.1)
- React-Core/RCTWebSocket (= 0.65.1)
- React-jsi (= 0.65.1)
- React-RCTNetwork (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTImage (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/RCTImageHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- React-RCTNetwork (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTLinking (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- React-Core/RCTLinkingHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTNetwork (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/RCTNetworkHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTSettings (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- RCTTypeSafety (= 0.65.1)
- React-Core/RCTSettingsHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-RCTText (0.65.1):
- React-Core/RCTTextHeaders (= 0.65.1)
- React-RCTVibration (0.65.1):
- FBReactNativeSpec (= 0.65.1)
- RCT-Folly (= 2021.04.26.00)
- React-Core/RCTVibrationHeaders (= 0.65.1)
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (= 0.65.1)
- React-runtimeexecutor (0.65.1):
- React-jsi (= 0.65.1)
- ReactCommon/turbomodule/core (0.65.1):
- DoubleConversion
- glog
- RCT-Folly (= 2020.01.13.00)
- React-callinvoker (= 0.64.2)
- React-Core (= 0.64.2)
- React-cxxreact (= 0.64.2)
- React-jsi (= 0.64.2)
- React-perflogger (= 0.64.2)
- RCT-Folly (= 2021.04.26.00)
- React-callinvoker (= 0.65.1)
- React-Core (= 0.65.1)
- React-cxxreact (= 0.65.1)
- React-jsi (= 0.65.1)
- React-perflogger (= 0.65.1)
- ReactNativeExceptionHandler (2.10.10):
- React-Core
- ReactNativeKeyboardTrackingView (5.7.0):
- React
- ReactNativeNavigation (7.18.1):
- ReactNativeNavigation (7.21.0):
- React-Core
- React-RCTImage
- React-RCTText
- ReactNativeNavigation/Core (= 7.18.1)
- ReactNativeNavigation/Core (7.18.1):
- ReactNativeNavigation/Core (= 7.21.0)
- ReactNativeNavigation/Core (7.21.0):
- React-Core
- React-RCTImage
- React-RCTText
@ -355,29 +358,29 @@ PODS:
- React
- RNDateTimePicker (3.5.2):
- React-Core
- RNDeviceInfo (8.1.4):
- RNDeviceInfo (8.3.3):
- React-Core
- RNDevMenu (4.0.2):
- React-Core
- React-Core/DevSupport
- React-RCTNetwork
- RNFastImage (8.3.7):
- RNFastImage (8.5.8):
- React-Core
- SDWebImage (~> 5.8)
- SDWebImageWebPCoder (~> 0.6.1)
- SDWebImage (~> 5.11.1)
- SDWebImageWebPCoder (~> 0.8.4)
- RNFileViewer (2.1.4):
- React-Core
- RNGestureHandler (1.10.3):
- React-Core
- RNKeychain (7.0.0):
- React-Core
- RNLocalize (2.1.1):
- RNLocalize (2.1.4):
- React-Core
- RNPermissions (3.0.5):
- React-Core
- RNReactNativeHapticFeedback (1.11.0):
- React-Core
- RNReanimated (2.2.0):
- RNReanimated (2.2.2):
- DoubleConversion
- FBLazyVector
- FBReactNativeSpec
@ -409,28 +412,28 @@ PODS:
- RNRudderSdk (1.0.0):
- React
- Rudder (>= 1.0.20)
- RNScreens (3.4.0):
- RNScreens (3.7.2):
- React-Core
- React-RCTImage
- RNSentry (2.6.1):
- RNSentry (3.1.1):
- React-Core
- Sentry (= 7.1.4)
- RNShare (6.4.0):
- Sentry (= 7.3.0)
- RNShare (7.1.1):
- React-Core
- RNSVG (12.1.1):
- React
- RNVectorIcons (8.1.0):
- React-Core
- Rudder (1.0.20)
- Rudder (1.0.22)
- SDWebImage (5.11.1):
- SDWebImage/Core (= 5.11.1)
- SDWebImage/Core (5.11.1)
- SDWebImageWebPCoder (0.6.1):
- SDWebImageWebPCoder (0.8.4):
- libwebp (~> 1.0)
- SDWebImage/Core (~> 5.7)
- Sentry (7.1.4):
- Sentry/Core (= 7.1.4)
- Sentry/Core (7.1.4)
- SDWebImage/Core (~> 5.10)
- Sentry (7.3.0):
- Sentry/Core (= 7.3.0)
- Sentry/Core (7.3.0)
- Swime (3.0.6)
- XCDYouTubeKit (2.15.2)
- Yoga (1.14.0)
@ -521,6 +524,7 @@ DEPENDENCIES:
SPEC REPOS:
trunk:
- boost-for-react-native
- fmt
- libwebp
- MMKV
- MMKVCore
@ -696,92 +700,93 @@ CHECKOUT OPTIONS:
SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b
FBReactNativeSpec: 72f4a51ca898aabb28a931cc0d6f458a9e22a59a
glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
FBLazyVector: 33c82491102f20ecddb6c6a2c273696ace3191e0
FBReactNativeSpec: df8f81d2a7541ee6755a047b398a5cb5a72acd0e
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 5337263514dd6f09803962437687240c5dc39aa4
jail-monkey: 07b83767601a373db876e939b8dbf3f5eb15f073
libwebp: e90b9c01d99205d03b6bb8f2c8c415e5a4ef66f0
MMKV: 22e5136f7d00197bc0fc9694b7f71519f0d1ca12
MMKVCore: 27bf04f4376305c9c0187136a7b58a236ee83f9e
MMKV: 76033b9ace2006623308910a3afcc0e25eba3140
MMKVCore: b00e7a09ec77a1b916aef336eedd3b99ec249978
Permission-Camera: ac603073e4128e51e6ca3c39129778f05b4082fa
Permission-MediaLibrary: ca07553882f0533f67739cdea7486c369b6556f0
Permission-Microphone: f795f37089f6de4c71ae147b32770a5ebfdee08c
Permission-Notifications: 16ccd862111103378a7bab9fb1c5c71addffc348
Permission-PhotoLibrary: 0748c1a490fad126dfe36dbea8234dedfe59cc27
Permission-PhotoLibraryAddOnly: 224d33cea3c2f1f8982a2a4e343c0726fba3acf9
RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c
RCTRequired: 6d3e854f0e7260a648badd0d44fc364bc9da9728
RCTTypeSafety: c1f31d19349c6b53085766359caac425926fafaa
RCT-Folly: 0dd9e1eb86348ecab5ba76f910b56f4b5fef3c46
RCTRequired: 6cf071ab2adfd769014b3d94373744ee6e789530
RCTTypeSafety: b829c59453478bb5b02487b8de3336386ab93ab1
RCTYouTube: a8bb45705622a6fc9decf64be04128d3658ed411
React: bda6b6d7ae912de97d7a61aa5c160db24aa2ad69
React-callinvoker: 9840ea7e8e88ed73d438edb725574820b29b5baa
React-Core: b5e385da7ce5f16a220fc60fd0749eae2c6120f0
React-CoreModules: 17071a4e2c5239b01585f4aa8070141168ab298f
React-cxxreact: 9be7b6340ed9f7c53e53deca7779f07cd66525ba
React-jsi: 67747b9722f6dab2ffe15b011bcf6b3f2c3f1427
React-jsiexecutor: 80c46bd381fd06e418e0d4f53672dc1d1945c4c3
React-jsinspector: cc614ec18a9ca96fd275100c16d74d62ee11f0ae
React: 29d8a785041b96a2754c25cc16ddea57b7a618ce
React-callinvoker: 2857b61132bd7878b736e282581f4b42fd93002b
React-Core: 001e21bad5ca41e59e9d90df5c0b53da04c3ce8e
React-CoreModules: 0a0410ab296a62ab38e2f8d321e822d1fcc2fe49
React-cxxreact: 8d904967134ae8ff0119c5357c42eaae976806f8
React-jsi: 12913c841713a15f64eabf5c9ad98592c0ec5940
React-jsiexecutor: 43f2542aed3c26e42175b339f8d37fe3dd683765
React-jsinspector: 41e58e5b8e3e0bf061fdf725b03f2144014a8fb0
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
react-native-cookies: 2cb6ef472da68610dfcf0eaee68464c244943abd
react-native-document-picker: f1b5398801b332c77bc62ae0eae2116f49bdff26
react-native-cookies: 47ef7ec7839e99f738f6ee64fbb2d4d224e36a65
react-native-document-picker: a7950caaee8587002c9acbc7fe497a342094d93a
react-native-hw-keyboard-event: b517cefb8d5c659a38049c582de85ff43337dc53
react-native-image-picker: a6e56460d34905c849ada551db30897dc7f3d535
react-native-image-picker: 92f51a85a62c2d829dcbd0dda5af99e6f988a113
react-native-local-auth: 49d336dcf0cb0268a930100013a6525844093844
react-native-mmkv-storage: 684f1adf671592c18fb023e0cf1305a84108b59d
react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d
react-native-notifications: b7391a61c9a3919a8cccf6e3a4c542b419cb5ee2
react-native-mmkv-storage: c9d4880c55b6c6728eeed49a4042043997cccf36
react-native-netinfo: 92e6e4476eb8bf6fc2d7c0a6ca0a1406f663d73a
react-native-notifications: 97c14bf84c64bd6a6eb7bdcdb916036d93d33428
react-native-passcode-status: e78f76b3c8db613e6ced6bd40b54aa4f53374173
react-native-safe-area: e8230b0017d76c00de6b01e2412dcf86b127c6a3
react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79
react-native-safe-area-context: 584dc04881deb49474363f3be89e4ca0e854c057
react-native-startup-time: 1a068b744ce5097a85ebe0fbff691b05961c324d
react-native-video: 0bb76b6d6b77da3009611586c7dbf817b947f30e
react-native-webview: 2e8fe70dc32b50d3231c23043f8e8b5a5525d346
React-perflogger: 25373e382fed75ce768a443822f07098a15ab737
React-RCTActionSheet: af7796ba49ffe4ca92e7277a5d992d37203f7da5
React-RCTAnimation: 6a2e76ab50c6f25b428d81b76a5a45351c4d77aa
React-RCTBlob: 02a2887023e0eed99391b6445b2e23a2a6f9226d
React-RCTImage: ce5bf8e7438f2286d9b646a05d6ab11f38b0323d
React-RCTLinking: ccd20742de14e020cb5f99d5c7e0bf0383aefbd9
React-RCTNetwork: dfb9d089ab0753e5e5f55fc4b1210858f7245647
React-RCTSettings: b14aef2d83699e48b410fb7c3ba5b66cd3291ae2
React-RCTText: 41a2e952dd9adc5caf6fb68ed46b275194d5da5f
React-RCTVibration: 24600e3b1aaa77126989bc58b6747509a1ba14f3
React-runtimeexecutor: a9904c6d0218fb9f8b19d6dd88607225927668f9
ReactCommon: 149906e01aa51142707a10665185db879898e966
react-native-webview: 133a6a5149f963259646e710b4545c67ef35d7c9
React-perflogger: fd28ee1f2b5b150b00043f0301d96bd417fdc339
React-RCTActionSheet: 7f3fa0855c346aa5d7c60f9ced16e067db6d29fa
React-RCTAnimation: 2119a18ee26159004b001bc56404ca5dbaae6077
React-RCTBlob: a493cc306deeaba0c0efa8ecec2da154afd3a798
React-RCTImage: 54999ddc896b7db6650af5760607aaebdf30425c
React-RCTLinking: 7fb3fa6397d3700c69c3d361870a299f04f1a2e6
React-RCTNetwork: 329ee4f75bd2deb8cf6c4b14231b5bb272cbd9af
React-RCTSettings: 1a659d58e45719bc77c280dbebce6a5a5a2733f5
React-RCTText: e12d7aae2a038be9ae72815436677a7c6549dd26
React-RCTVibration: 92d41c2442e5328cc4d342cd7f78e5876b68bae5
React-runtimeexecutor: 85187f19dd9c47a7c102f9994f9d14e4dc2110de
ReactCommon: eafed38eec7b591c31751bfa7494801618460459
ReactNativeExceptionHandler: b11ff67c78802b2f62eed0e10e75cb1ef7947c60
ReactNativeKeyboardTrackingView: 02137fac3b2ebd330d74fa54ead48b14750a2306
ReactNativeNavigation: 88128fa06b2c349b613e1e0fd3cdff2c58c01c55
ReactNativeNavigation: d6f27d4ba71887a161534a13e8ef3873b26c68b5
rn-fetch-blob: 17961aec08caae68bb8fc0e5b40f93b3acfa6932
RNCAsyncStorage: b03032fdbdb725bea0bd9e5ec5a7272865ae7398
RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489
RNDateTimePicker: 7658208086d86d09e1627b5c34ba0cf237c60140
RNDeviceInfo: 0b3e0154c1c659ea9779cb3e883e66ece92326a9
RNDeviceInfo: cc7de0772378f85d8f36ae439df20f05c590a651
RNDevMenu: fd325b5554b61fe7f48d9205a3877cf5ee88cd7c
RNFastImage: a7384db75df352500261e8e8f1ac2026def26102
RNFastImage: adef7f9c9a7aeca0141807ee5a8be8a3eb240dd8
RNFileViewer: 83cc066ad795b1f986791d03b56fe0ee14b6a69f
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
RNKeychain: f75b8c8b2f17d3b2aa1f25b4a0ac5b83d947ff8f
RNLocalize: 82a569022724d35461e2dc5b5d015a13c3ca995b
RNLocalize: 7f1e5792b65a839af55a9552d05b3558b66d017e
RNPermissions: 7043bacbf928eae25808275cfe73799b8f618911
RNReactNativeHapticFeedback: 653a8c126a0f5e88ce15ffe280b3ff37e1fbb285
RNReanimated: 9c13c86454bfd54dab7505c1a054470bfecd2563
RNReanimated: ad24db8af24e3fe1b5c462785bc3db8d5baae2ee
RNRudderSdk: 9aa881c2bf754dc3b05e392340a5e3663a970f0a
RNScreens: 21b73c94c9117e1110a79ee0ee80c93ccefed8ce
RNSentry: af7873b080a0beb74c020644644d247ef4771644
RNShare: 129b187a54301c9f32ec7249fb4431e30a8d6ab8
RNScreens: 0591543e343c7444ea1756b6265d81a4295922c9
RNSentry: 49abc89b0190b4c8afe0fa5d065f98e36cb53233
RNShare: a22398d8d02336133e28bf8b6e0b47b31abade41
RNSVG: 551acb6562324b1d52a4e0758f7ca0ec234e278f
RNVectorIcons: 31cebfcf94e8cf8686eb5303ae0357da64d7a5a4
Rudder: 3eae52018e1a401d3610b3f16f6210026eb327c8
Rudder: 7fbbef54490e237945a6f3434a44cacaf27eed11
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
SDWebImageWebPCoder: d0dac55073088d24b2ac1b191a71a8f8d0adac21
Sentry: 1d3eb1a25f8c5333c88dd5603904a6d461cd9fcf
SDWebImageWebPCoder: f93010f3f6c031e2f8fb3081ca4ee6966c539815
Sentry: 9a4e621430e2dae4477d791f2f7e905720b6efbf
Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b
XCDYouTubeKit: b120aced3d8638ffb570c5450cddb5a1dac448c7
Yoga: 575c581c63e0d35c9a83f4b46d01d63abc1100ac
Yoga: aa0cb45287ebe1004c02a13f279c55a95f1572f4
YoutubePlayer-in-WKWebView: cfbf46da51d7370662a695a8f351e5fa1d3e1008
PODFILE CHECKSUM: 6628f9833955394b3861a436b13b3defc07d0a02
PODFILE CHECKSUM: f483866b9447c19a98b8e645e530f742d67a8aa5
COCOAPODS: 1.10.1
COCOAPODS: 1.10.2

View file

@ -1,5 +1,7 @@
#!/bin/sh
[[ -s $HOME/.nvm/nvm.sh ]] && . $HOME/.nvm/nvm.sh
export NODE_OPTIONS=--max_old_space_size=12000
export BUNDLE_COMMAND="ram-bundle"
if [[ "${SENTRY_ENABLED}" = "true" ]]; then

30975
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -7,18 +7,18 @@
"license": "Apache 2.0",
"private": true,
"dependencies": {
"@babel/runtime": "7.14.8",
"@babel/runtime": "7.15.4",
"@react-native-community/async-storage": "1.12.1",
"@react-native-community/cameraroll": "4.0.4",
"@react-native-community/clipboard": "1.5.1",
"@react-native-community/datetimepicker": "3.5.2",
"@react-native-community/masked-view": "0.1.11",
"@react-native-community/netinfo": "6.0.0",
"@react-native-cookies/cookies": "6.0.8",
"@react-navigation/native": "5.9.4",
"@react-navigation/stack": "5.14.5",
"@react-native-community/netinfo": "6.0.2",
"@react-native-cookies/cookies": "6.0.10",
"@react-navigation/native": "6.0.2",
"@react-navigation/stack": "6.0.7",
"@rudderstack/rudder-sdk-react-native": "1.0.12",
"@sentry/react-native": "2.6.1",
"@sentry/react-native": "3.1.1",
"@types/redux-mock-store": "1.0.3",
"analytics-react-native": "1.2.0",
"array.prototype.flat": "1.2.4",
@ -32,53 +32,53 @@
"fuse.js": "6.4.6",
"intl": "1.2.5",
"jail-monkey": "2.6.0",
"mime-db": "1.49.0",
"mime-db": "1.50.0",
"moment-timezone": "0.5.33",
"prop-types": "15.7.2",
"react": "17.0.2",
"react-intl": "2.8.0",
"react-native": "0.64.2",
"react-native": "0.65.1",
"react-native-android-open-settings": "1.3.0",
"react-native-animatable": "1.3.3",
"react-native-button": "3.0.1",
"react-native-calendars": "1.1264.0",
"react-native-device-info": "8.1.4",
"react-native-document-picker": "5.2.0",
"react-native-calendars": "1.1266.0",
"react-native-device-info": "8.3.3",
"react-native-document-picker": "6.0.4",
"react-native-elements": "3.4.2",
"react-native-exception-handler": "2.10.10",
"react-native-fast-image": "8.3.7",
"react-native-fast-image": "8.5.8",
"react-native-file-viewer": "2.1.4",
"react-native-gesture-handler": "1.10.3",
"react-native-haptic-feedback": "1.11.0",
"react-native-hw-keyboard-event": "0.0.4",
"react-native-image-picker": "4.0.6",
"react-native-image-picker": "4.1.1",
"react-native-keyboard-aware-scrollview": "2.1.0",
"react-native-keyboard-tracking-view": "5.7.0",
"react-native-keychain": "7.0.0",
"react-native-linear-gradient": "2.5.6",
"react-native-local-auth": "1.6.0",
"react-native-localize": "2.1.1",
"react-native-mmkv-storage": "0.6.0",
"react-native-navigation": "7.18.1",
"react-native-notifications": "4.1.1",
"react-native-localize": "2.1.4",
"react-native-mmkv-storage": "0.6.3",
"react-native-navigation": "7.21.0",
"react-native-notifications": "4.1.2",
"react-native-passcode-status": "1.1.2",
"react-native-permissions": "3.0.5",
"react-native-reanimated": "2.2.0",
"react-native-redash": "16.1.1",
"react-native-reanimated": "2.2.2",
"react-native-redash": "16.2.2",
"react-native-safe-area": "0.5.1",
"react-native-safe-area-context": "3.2.0",
"react-native-screens": "3.4.0",
"react-native-safe-area-context": "3.3.2",
"react-native-screens": "3.7.2",
"react-native-section-list-get-item-layout": "2.2.3",
"react-native-share": "6.4.0",
"react-native-share": "7.1.1",
"react-native-slider": "0.11.0",
"react-native-startup-time": "2.0.0",
"react-native-svg": "12.1.1",
"react-native-vector-icons": "8.1.0",
"react-native-video": "5.1.1",
"react-native-webview": "11.6.5",
"react-native-webview": "11.13.0",
"react-native-youtube": "2.0.2",
"react-redux": "7.2.4",
"redux": "4.1.0",
"react-redux": "7.2.5",
"redux": "4.1.1",
"redux-action-buffer": "1.2.0",
"redux-batched-actions": "0.5.0",
"redux-persist": "6.0.0",
@ -94,13 +94,13 @@
"url-parse": "1.5.3"
},
"devDependencies": {
"@babel/cli": "7.14.8",
"@babel/core": "7.14.8",
"@babel/plugin-transform-runtime": "7.14.5",
"@babel/preset-env": "7.14.8",
"@babel/register": "7.14.5",
"@react-native-community/eslint-config": "3.0.0",
"@storybook/addon-knobs": "6.2.9",
"@babel/cli": "7.15.7",
"@babel/core": "7.15.5",
"@babel/plugin-transform-runtime": "7.15.0",
"@babel/preset-env": "7.15.6",
"@babel/register": "7.15.3",
"@react-native-community/eslint-config": "3.0.1",
"@storybook/addon-knobs": "6.3.1",
"@storybook/addon-ondevice-knobs": "5.3.25",
"@storybook/react-native": "5.3.25",
"@storybook/react-native-server": "5.3.23",
@ -108,42 +108,44 @@
"@types/base-64": "1.0.0",
"@types/enzyme": "3.10.9",
"@types/enzyme-adapter-react-16": "1.0.6",
"@types/jest": "26.0.24",
"@types/jest": "27.0.2",
"@types/lodash": "4.14.173",
"@types/moment-timezone": "0.5.30",
"@types/react": "17.0.15",
"@types/react-native": "0.64.12",
"@types/react": "17.0.24",
"@types/react-native": "0.65.1",
"@types/react-native-share": "3.3.3",
"@types/react-native-video": "5.0.8",
"@types/react-native-video": "5.0.9",
"@types/react-redux": "7.1.18",
"@types/react-test-renderer": "17.0.1",
"@types/semver": "7.3.8",
"@types/shallow-equals": "1.0.0",
"@types/tinycolor2": "1.4.3",
"@types/underscore": "1.11.3",
"@types/url-parse": "1.4.3",
"@typescript-eslint/eslint-plugin": "4.28.5",
"@typescript-eslint/parser": "4.28.5",
"@types/url-parse": "1.4.4",
"@typescript-eslint/eslint-plugin": "4.31.2",
"@typescript-eslint/parser": "4.31.2",
"babel-eslint": "10.1.0",
"babel-jest": "27.0.6",
"babel-jest": "27.2.1",
"babel-loader": "8.2.2",
"babel-plugin-module-resolver": "4.1.0",
"babel-plugin-transform-remove-console": "6.9.4",
"deep-freeze": "0.0.1",
"detox": "18.20.0",
"detox": "18.20.4",
"enzyme": "3.11.0",
"enzyme-adapter-react-16": "1.15.6",
"enzyme-to-json": "3.6.2",
"eslint": "7.31.0",
"eslint": "7.32.0",
"eslint-plugin-header": "3.1.1",
"eslint-plugin-import": "2.23.4",
"eslint-plugin-jest": "24.4.0",
"eslint-plugin-import": "2.24.2",
"eslint-plugin-jest": "24.4.2",
"eslint-plugin-mattermost": "git://github.com/mattermost/eslint-plugin-mattermost#070ce792d105482ffb2b27cfc0b7e78b3d20acee",
"eslint-plugin-react": "7.24.0",
"expect": "27.0.6",
"eslint-plugin-react": "7.26.0",
"expect": "27.2.1",
"harmony-reflect": "1.6.2",
"husky": "7.0.1",
"husky": "7.0.2",
"isomorphic-fetch": "3.0.0",
"jest": "26.6.3",
"jest-cli": "26.6.3",
"jest": "27.2.1",
"jest-cli": "27.2.1",
"jest-enzyme": "7.1.2",
"jetifier": "2.0.0",
"jsdom-global": "3.0.2",
@ -151,19 +153,20 @@
"mmjstool": "git://github.com/mattermost/mattermost-utilities#3faa6075089a541d8c90ed85114e644c7a23fedf",
"mock-async-storage": "2.2.0",
"mock-socket": "9.0.3",
"nock": "13.1.1",
"nock": "13.1.3",
"nyc": "15.1.0",
"patch-package": "6.4.7",
"react-dom": "17.0.2",
"react-native-codegen": "0.0.7",
"react-native-dev-menu": "4.0.2",
"react-native-dotenv": "3.1.1",
"react-native-dotenv": "3.2.0",
"react-native-storybook-loader": "2.0.4",
"react-test-renderer": "17.0.2",
"redux-mock-store": "1.5.4",
"redux-persist-node-storage": "2.0.0",
"socketcluster": "16.0.2",
"ts-jest": "27.0.4",
"typescript": "4.3.5",
"ts-jest": "27.0.5",
"typescript": "4.4.3",
"underscore": "1.13.1",
"util": "0.12.4"
},
@ -180,7 +183,7 @@
"pod-install": "cd ios && bundle exec pod install",
"postinstall": "patch-package && ./scripts/postinstall.sh",
"tsc": "NODE_OPTIONS=--max_old_space_size=12000 tsc --noEmit",
"test": "jest --forceExit --runInBand --detectOpenHandles",
"test": "jest --forceExit --runInBand",
"test:watch": "npm test -- --watch",
"test:coverage": "jest --coverage",
"updatesnapshot": "jest --updateSnapshot",

View file

@ -1,8 +1,8 @@
diff --git a/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js b/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js
index a069a24..a21fa38 100644
index 8eca425..f0df04f 100644
--- a/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js
+++ b/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js
@@ -1222,9 +1222,15 @@ class ScrollView extends React.Component<Props, State> {
@@ -1768,9 +1768,15 @@ class ScrollView extends React.Component<Props, State> {
// Note: we should split props.style on the inner and outer props
// however, the ScrollView still needs the baseStyle to be scrollable
const {outer, inner} = splitLayoutProps(flattenStyle(props.style));
@ -14,29 +14,29 @@ index a069a24..a21fa38 100644
+
return React.cloneElement(
refreshControl,
- {style: [baseStyle, outer]},
- {style: StyleSheet.compose(baseStyle, outer)},
+ {style: [baseStyle, outer, inverted]},
<ScrollViewClass
<NativeDirectionalScrollView
{...props}
style={[baseStyle, inner]}
style={StyleSheet.compose(baseStyle, inner)}
diff --git a/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js b/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js
index dffccc4..dc426c2 100644
index b8d559a..cb84238 100644
--- a/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js
+++ b/node_modules/react-native/Libraries/Components/TextInput/AndroidTextInputNativeComponent.js
@@ -553,7 +553,7 @@ if (global.RN$Bridgeless) {
AndroidTextInputNativeComponent = 'AndroidTextInput';
} else {
AndroidTextInputNativeComponent = requireNativeComponent<NativeProps>(
- 'AndroidTextInput',
+ 'PasteableTextInputAndroid',
);
}
@@ -547,7 +547,7 @@ export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
});
let AndroidTextInputNativeComponent = NativeComponentRegistry.get<NativeProps>(
- 'AndroidTextInput',
+ 'PasteableTextInputAndroid',
() => AndroidTextInputViewConfig,
);
diff --git a/node_modules/react-native/Libraries/Lists/VirtualizedList.js b/node_modules/react-native/Libraries/Lists/VirtualizedList.js
index 2249d54..cc303b3 100644
index a7c1567..1531a45 100644
--- a/node_modules/react-native/Libraries/Lists/VirtualizedList.js
+++ b/node_modules/react-native/Libraries/Lists/VirtualizedList.js
@@ -18,6 +18,7 @@ const ScrollView = require('../Components/ScrollView/ScrollView');
@@ -16,6 +16,7 @@ const ScrollView = require('../Components/ScrollView/ScrollView');
const StyleSheet = require('../StyleSheet/StyleSheet');
const View = require('../Components/View/View');
const ViewabilityHelper = require('./ViewabilityHelper');
@ -44,7 +44,7 @@ index 2249d54..cc303b3 100644
const flattenStyle = require('../StyleSheet/flattenStyle');
const infoLog = require('../Utilities/infoLog');
@@ -2061,7 +2062,14 @@ function describeNestedLists(childList: {
@@ -2122,7 +2123,14 @@ function describeNestedLists(childList: {
const styles = StyleSheet.create({
verticallyInverted: {
@ -61,7 +61,7 @@ index 2249d54..cc303b3 100644
horizontallyInverted: {
transform: [{scaleX: -1}],
diff --git a/node_modules/react-native/react.gradle b/node_modules/react-native/react.gradle
index dd34c98..4d74938 100644
index 84b1f60..0ffc592 100644
--- a/node_modules/react-native/react.gradle
+++ b/node_modules/react-native/react.gradle
@@ -151,7 +151,7 @@ afterEvaluate {
@ -71,9 +71,9 @@ index dd34c98..4d74938 100644
- || targetName.toLowerCase().contains("release"))
+ || targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned"))
def extraArgs = config.extraPackagerArgs ?: [];
def extraArgs = []
@@ -171,7 +171,7 @@ afterEvaluate {
@@ -180,7 +180,7 @@ afterEvaluate {
def hermesFlags;
def hbcTempFile = file("${jsBundleFile}.hbc")
exec {
@ -82,7 +82,7 @@ index dd34c98..4d74938 100644
// Can't use ?: since that will also substitute valid empty lists
hermesFlags = config.hermesFlagsRelease
if (hermesFlags == null) hermesFlags = ["-O", "-output-source-map"]
@@ -215,7 +215,7 @@ afterEvaluate {
@@ -224,7 +224,7 @@ afterEvaluate {
? config."bundleIn${targetName}"
: config."bundleIn${variant.buildType.name.capitalize()}" != null
? config."bundleIn${variant.buildType.name.capitalize()}"
@ -91,8 +91,8 @@ index dd34c98..4d74938 100644
}
// Expose a minimal interface on the application variant and the task itself:
@@ -312,7 +312,7 @@ afterEvaluate {
// This should really be done by packaging all Hermes releated libs into
@@ -321,7 +321,7 @@ afterEvaluate {
// This should really be done by packaging all Hermes related libs into
// two separate HermesDebug and HermesRelease AARs, but until then we'll
// kludge it by deleting the .so files out of the /transforms/ directory.
- def isRelease = targetName.toLowerCase().contains("release")

View file

@ -62,7 +62,7 @@ index e659a61..1bdf34e 100644
.build();
OkHttpUrlLoader.Factory factory = new OkHttpUrlLoader.Factory(client);
diff --git a/node_modules/react-native-fast-image/dist/index.d.ts b/node_modules/react-native-fast-image/dist/index.d.ts
index 0b1afd5..2226715 100644
index 956fe5b..394db9a 100644
--- a/node_modules/react-native-fast-image/dist/index.d.ts
+++ b/node_modules/react-native-fast-image/dist/index.d.ts
@@ -89,6 +89,10 @@ export interface FastImageProps extends AccessibilityProps {
@ -74,5 +74,5 @@ index 0b1afd5..2226715 100644
+ */
+ nativeID?: string;
}
interface FastImageStaticProperties {
export interface FastImageStaticProperties {
resizeMode: typeof resizeMode;

View file

@ -1,8 +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 2b30edf..5d01be0 100644
index 3eb6609..68a68bf 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
@@ -33,6 +33,8 @@ import androidx.annotation.Nullable;
@@ -33,6 +33,8 @@ import java.util.ArrayList;
import static com.reactnativenavigation.utils.UiUtils.pxToDp;
@ -100,18 +100,18 @@ index 2b30edf..5d01be0 100644
super.onCatalystInstanceDestroy();
}
diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java
index 94e2a9b..ea77732 100644
index 51837db..14a5828 100644
--- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java
+++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/component/ComponentViewController.java
@@ -3,6 +3,7 @@ package com.reactnativenavigation.viewcontrollers.component;
import android.app.Activity;
@@ -4,6 +4,7 @@ import android.app.Activity;
import android.content.res.Configuration;
import android.view.View;
+import com.reactnativenavigation.options.params.NullBool;
import com.reactnativenavigation.viewcontrollers.viewcontroller.ScrollEventListener;
import com.reactnativenavigation.options.Options;
import com.reactnativenavigation.viewcontrollers.viewcontroller.Presenter;
@@ -147,7 +148,7 @@ public class ComponentViewController extends ChildController<ComponentLayout> {
@@ -148,7 +149,7 @@ public class ComponentViewController extends ChildController<ComponentLayout> {
@Override
public void destroy() {
@ -120,18 +120,6 @@ index 94e2a9b..ea77732 100644
if (blurOnUnmount) {
blurActivityFocus();
}
diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java
index 1e5751e..5117993 100644
--- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java
+++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java
@@ -9,7 +9,6 @@ import android.view.ViewTreeObserver;
import androidx.annotation.CallSuper;
import androidx.annotation.CheckResult;
import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
import androidx.annotation.VisibleForTesting;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
diff --git a/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m b/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m
index 934e7e7..19169a3 100644
--- a/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m