Compare commits
32 Commits
develop
...
expo-image
Author | SHA1 | Date |
---|---|---|
GleidsonDaniel | a6df0c4357 | |
GleidsonDaniel | 69562c4eae | |
Gleidson Daniel Silva | 201b893d26 | |
GleidsonDaniel | 62290848b9 | |
Gleidson Daniel Silva | f7781246fd | |
Gleidson Daniel | b6e668ebe0 | |
Diego Mello | 4700253815 | |
Gleidson Daniel | 952135f7e0 | |
Gleidson Daniel | 22bcf3cb66 | |
Gleidson Daniel | a0887c6d9d | |
Gleidson Daniel | 45183121c7 | |
Gleidson Daniel | 58a6e2286a | |
Gleidson Daniel | 3bcbbffa8e | |
Gleidson Daniel | 3e769f8220 | |
Gleidson Daniel | f537920626 | |
Gleidson Daniel | 553237caaf | |
Gleidson Daniel | a01559a10d | |
Gleidson Daniel | b7a68d61ff | |
Gleidson Daniel | ff2ff5ccd8 | |
Gleidson Daniel | f878986edb | |
Gleidson Daniel | 909c8c8b7d | |
Gleidson Daniel | 9d39524fe7 | |
Gleidson Daniel | 03b0487680 | |
Gleidson Daniel | 3943518d6e | |
Gleidson Daniel | 1aecff2d69 | |
Gleidson Daniel | 878ed8b2fc | |
Gleidson Daniel Silva | cc2b78b4fd | |
Gleidson Daniel | 8b80deb8b5 | |
Gleidson Daniel | ab4f4aada9 | |
Gleidson Daniel | 7ab2727946 | |
Gleidson Daniel | 70e6ae40cf | |
Gleidson Daniel | 75ae38edfa |
|
@ -1,107 +0,0 @@
|
||||||
import { Image } from 'react-native-image-crop-picker';
|
|
||||||
|
|
||||||
import { forceJpgExtension } from './forceJpgExtension';
|
|
||||||
|
|
||||||
const attachment: Image = {
|
|
||||||
exif: null,
|
|
||||||
filename: 'IMG_0040.PNG',
|
|
||||||
path: 'tmp/temp',
|
|
||||||
height: 534,
|
|
||||||
width: 223,
|
|
||||||
data: null,
|
|
||||||
modificationDate: '1643984790',
|
|
||||||
localIdentifier: 'device/L0/001',
|
|
||||||
size: 16623,
|
|
||||||
sourceURL: '',
|
|
||||||
mime: 'image/jpeg',
|
|
||||||
cropRect: null,
|
|
||||||
creationDate: '1641490665'
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('forceJpgExtension for iOS', () => {
|
|
||||||
jest.mock('react-native', () => ({ Platform: { OS: 'ios' } }));
|
|
||||||
describe('with mime as image/jpeg', () => {
|
|
||||||
test('filename.jpg should be filename.jpg', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.jpg';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.jpg');
|
|
||||||
});
|
|
||||||
test('filename.png should be filename.jpg', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.png';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.jpg');
|
|
||||||
});
|
|
||||||
test('filename.jpeg should be filename.jpg', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.jpeg';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.jpg');
|
|
||||||
});
|
|
||||||
test('filename.heic should be filename.jpg', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.heic';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.jpg');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
describe('with mime different', () => {
|
|
||||||
test('filename.jpg should be filename.jpg', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.png';
|
|
||||||
newAttachment.mime = 'image/png';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.png');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('forceJpgExtension for android', () => {
|
|
||||||
jest.mock('react-native', () => ({ Platform: { OS: 'android' } }));
|
|
||||||
describe('with mime as image/jpeg', () => {
|
|
||||||
test('filename.jpg should be filename.jpg', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.jpg';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.jpg');
|
|
||||||
});
|
|
||||||
test('filename.png should be filename.png', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.png';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.png');
|
|
||||||
});
|
|
||||||
test('filename.jpeg should be filename.jpeg', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.jpeg';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.jpeg');
|
|
||||||
});
|
|
||||||
test('filename.heic should be filename.heic', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.heic';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.heic');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
describe('with mime different', () => {
|
|
||||||
test('filename.jpg should be filename.jpg', () => {
|
|
||||||
const newAttachment = attachment;
|
|
||||||
newAttachment.filename = 'filename.png';
|
|
||||||
newAttachment.mime = 'image/png';
|
|
||||||
const file = forceJpgExtension(newAttachment);
|
|
||||||
|
|
||||||
expect(file.filename).toBe('filename.png');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
|
@ -1,13 +0,0 @@
|
||||||
import { ImageOrVideo } from 'react-native-image-crop-picker';
|
|
||||||
|
|
||||||
import { isIOS } from '../../lib/methods/helpers';
|
|
||||||
|
|
||||||
const regex = new RegExp(/\.[^/.]+$/); // Check from last '.' of the string
|
|
||||||
|
|
||||||
export const forceJpgExtension = (attachment: ImageOrVideo): ImageOrVideo => {
|
|
||||||
if (isIOS && attachment.mime === 'image/jpeg' && attachment.filename) {
|
|
||||||
// Replace files extension that mime type is 'image/jpeg' to .jpg;
|
|
||||||
attachment.filename = attachment.filename.replace(regex, '.jpg');
|
|
||||||
}
|
|
||||||
return attachment;
|
|
||||||
};
|
|
|
@ -2,7 +2,6 @@ import React, { Component } from 'react';
|
||||||
import { Alert, Keyboard, NativeModules, Text, View, BackHandler } from 'react-native';
|
import { Alert, Keyboard, NativeModules, Text, View, BackHandler } from 'react-native';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { KeyboardAccessoryView } from 'react-native-ui-lib/keyboard';
|
import { KeyboardAccessoryView } from 'react-native-ui-lib/keyboard';
|
||||||
import ImagePicker, { Image, ImageOrVideo, Options } from 'react-native-image-crop-picker';
|
|
||||||
import { dequal } from 'dequal';
|
import { dequal } from 'dequal';
|
||||||
import DocumentPicker from 'react-native-document-picker';
|
import DocumentPicker from 'react-native-document-picker';
|
||||||
import { Q } from '@nozbe/watermelondb';
|
import { Q } from '@nozbe/watermelondb';
|
||||||
|
@ -41,7 +40,6 @@ import Navigation from '../../lib/navigation/appNavigation';
|
||||||
import { TActionSheetOptionsItem, withActionSheet } from '../ActionSheet';
|
import { TActionSheetOptionsItem, withActionSheet } from '../ActionSheet';
|
||||||
import { sanitizeLikeString } from '../../lib/database/utils';
|
import { sanitizeLikeString } from '../../lib/database/utils';
|
||||||
import { CustomIcon } from '../CustomIcon';
|
import { CustomIcon } from '../CustomIcon';
|
||||||
import { forceJpgExtension } from './forceJpgExtension';
|
|
||||||
import {
|
import {
|
||||||
IApplicationState,
|
IApplicationState,
|
||||||
IBaseScreen,
|
IBaseScreen,
|
||||||
|
@ -59,30 +57,13 @@ import { hasPermission, debounce, isAndroid, isIOS, isTablet, compareServerVersi
|
||||||
import { Services } from '../../lib/services';
|
import { Services } from '../../lib/services';
|
||||||
import { TSupportedThemes } from '../../theme';
|
import { TSupportedThemes } from '../../theme';
|
||||||
import { ChatsStackParamList } from '../../stacks/types';
|
import { ChatsStackParamList } from '../../stacks/types';
|
||||||
|
import { pickMultipleImageAndVideoFromLibrary, pickImageFromCamera, pickVideoFromCamera } from '../../lib/methods/mediaPicker';
|
||||||
import { EventTypes } from '../EmojiPicker/interfaces';
|
import { EventTypes } from '../EmojiPicker/interfaces';
|
||||||
import EmojiSearchbar from './EmojiSearchbar';
|
import EmojiSearchbar from './EmojiSearchbar';
|
||||||
import shortnameToUnicode from '../../lib/methods/helpers/shortnameToUnicode';
|
import shortnameToUnicode from '../../lib/methods/helpers/shortnameToUnicode';
|
||||||
|
|
||||||
require('./EmojiKeyboard');
|
require('./EmojiKeyboard');
|
||||||
|
|
||||||
const imagePickerConfig = {
|
|
||||||
cropping: true,
|
|
||||||
avoidEmptySpaceAroundImage: false,
|
|
||||||
freeStyleCropEnabled: true,
|
|
||||||
forceJpg: true
|
|
||||||
};
|
|
||||||
|
|
||||||
const libraryPickerConfig: Options = {
|
|
||||||
multiple: true,
|
|
||||||
compressVideoPreset: 'Passthrough',
|
|
||||||
mediaType: 'any',
|
|
||||||
forceJpg: true
|
|
||||||
};
|
|
||||||
|
|
||||||
const videoPickerConfig: Options = {
|
|
||||||
mediaType: 'video'
|
|
||||||
};
|
|
||||||
|
|
||||||
export interface IMessageBoxProps extends IBaseScreen<ChatsStackParamList & MasterDetailInsideStackParamList, any> {
|
export interface IMessageBoxProps extends IBaseScreen<ChatsStackParamList & MasterDetailInsideStackParamList, any> {
|
||||||
rid: string;
|
rid: string;
|
||||||
baseUrl: string;
|
baseUrl: string;
|
||||||
|
@ -142,12 +123,6 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
|
|
||||||
private focused: boolean;
|
private focused: boolean;
|
||||||
|
|
||||||
private imagePickerConfig: Options;
|
|
||||||
|
|
||||||
private libraryPickerConfig: Options;
|
|
||||||
|
|
||||||
private videoPickerConfig: Options;
|
|
||||||
|
|
||||||
private room!: TSubscriptionModel;
|
private room!: TSubscriptionModel;
|
||||||
|
|
||||||
private thread!: TThreadModel;
|
private thread!: TThreadModel;
|
||||||
|
@ -193,29 +168,6 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
this.text = '';
|
this.text = '';
|
||||||
this.selection = { start: 0, end: 0 };
|
this.selection = { start: 0, end: 0 };
|
||||||
this.focused = false;
|
this.focused = false;
|
||||||
|
|
||||||
const libPickerLabels = {
|
|
||||||
cropperChooseText: I18n.t('Choose'),
|
|
||||||
cropperCancelText: I18n.t('Cancel'),
|
|
||||||
loadingLabelText: I18n.t('Processing')
|
|
||||||
};
|
|
||||||
|
|
||||||
this.imagePickerConfig = {
|
|
||||||
...imagePickerConfig,
|
|
||||||
...libPickerLabels
|
|
||||||
};
|
|
||||||
|
|
||||||
this.libraryPickerConfig = {
|
|
||||||
...libraryPickerConfig,
|
|
||||||
...libPickerLabels
|
|
||||||
};
|
|
||||||
|
|
||||||
this.videoPickerConfig = {
|
|
||||||
...videoPickerConfig,
|
|
||||||
...libPickerLabels
|
|
||||||
};
|
|
||||||
|
|
||||||
BackHandler.addEventListener('hardwareBackPress', this.handleBackPress);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get sendThreadToChannel() {
|
get sendThreadToChannel() {
|
||||||
|
@ -789,9 +741,8 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
takePhoto = async () => {
|
takePhoto = async () => {
|
||||||
logEvent(events.ROOM_BOX_ACTION_PHOTO);
|
logEvent(events.ROOM_BOX_ACTION_PHOTO);
|
||||||
try {
|
try {
|
||||||
let image = (await ImagePicker.openCamera(this.imagePickerConfig)) as Image;
|
const image = await pickImageFromCamera();
|
||||||
image = forceJpgExtension(image);
|
if (image && this.canUploadFile(image)) {
|
||||||
if (this.canUploadFile(image)) {
|
|
||||||
this.openShareView([image]);
|
this.openShareView([image]);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -802,8 +753,8 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
takeVideo = async () => {
|
takeVideo = async () => {
|
||||||
logEvent(events.ROOM_BOX_ACTION_VIDEO);
|
logEvent(events.ROOM_BOX_ACTION_VIDEO);
|
||||||
try {
|
try {
|
||||||
const video = await ImagePicker.openCamera(this.videoPickerConfig);
|
const video = await pickVideoFromCamera();
|
||||||
if (this.canUploadFile(video)) {
|
if (video && this.canUploadFile(video)) {
|
||||||
this.openShareView([video]);
|
this.openShareView([video]);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -814,10 +765,10 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
chooseFromLibrary = async () => {
|
chooseFromLibrary = async () => {
|
||||||
logEvent(events.ROOM_BOX_ACTION_LIBRARY);
|
logEvent(events.ROOM_BOX_ACTION_LIBRARY);
|
||||||
try {
|
try {
|
||||||
// The type can be video or photo, however the lib understands that it is just one of them.
|
const attachments = await pickMultipleImageAndVideoFromLibrary();
|
||||||
let attachments = (await ImagePicker.openPicker(this.libraryPickerConfig)) as unknown as ImageOrVideo[];
|
if (attachments) {
|
||||||
attachments = attachments.map(att => forceJpgExtension(att));
|
this.openShareView(attachments);
|
||||||
this.openShareView(attachments);
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logEvent(events.ROOM_BOX_ACTION_LIBRARY_F);
|
logEvent(events.ROOM_BOX_ACTION_LIBRARY_F);
|
||||||
}
|
}
|
||||||
|
@ -864,7 +815,7 @@ class MessageBox extends Component<IMessageBoxProps, IMessageBoxState> {
|
||||||
value = message;
|
value = message;
|
||||||
replyCancel();
|
replyCancel();
|
||||||
}
|
}
|
||||||
Navigation.navigate('ShareView', { room: this.room, thread: value, attachments });
|
Navigation.navigate('ShareView', { room: this.room, thread: value, attachments, canEdit: true });
|
||||||
};
|
};
|
||||||
|
|
||||||
createDiscussion = () => {
|
createDiscussion = () => {
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
import * as FileSystem from 'expo-file-system';
|
||||||
|
import * as ImagePicker from 'expo-image-picker';
|
||||||
|
import { PermissionsAndroid } from 'react-native';
|
||||||
|
import * as mime from 'react-native-mime-types';
|
||||||
|
|
||||||
|
import { isAndroid } from './helpers';
|
||||||
|
import log from './helpers/log';
|
||||||
|
|
||||||
|
interface ImagePickerFile extends ImagePicker.ImageInfo {
|
||||||
|
path: string;
|
||||||
|
filename: string;
|
||||||
|
size?: number;
|
||||||
|
mime: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
const handlePermission = async (): Promise<boolean> => {
|
||||||
|
if (isAndroid) {
|
||||||
|
const permissions = await PermissionsAndroid.requestMultiple([
|
||||||
|
PermissionsAndroid.PERMISSIONS.WRITE_EXTERNAL_STORAGE,
|
||||||
|
PermissionsAndroid.PERMISSIONS.CAMERA
|
||||||
|
]);
|
||||||
|
if (permissions['android.permission.CAMERA'] !== 'granted') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
const permission = await ImagePicker.requestCameraPermissionsAsync();
|
||||||
|
if (!permission.granted) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const permission = await ImagePicker.getCameraPermissionsAsync();
|
||||||
|
if (!permission.granted) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const addAdditionalPropsToFile = async (file: ImagePicker.ImageInfo) => {
|
||||||
|
const fileInfo = await FileSystem.getInfoAsync(file.uri);
|
||||||
|
const data = {
|
||||||
|
...file,
|
||||||
|
path: file.uri,
|
||||||
|
filename: `${file.uri.substring(file.uri.lastIndexOf('/') + 1)}`,
|
||||||
|
size: fileInfo.size,
|
||||||
|
mime: mime.lookup(file.uri)
|
||||||
|
};
|
||||||
|
return data;
|
||||||
|
};
|
||||||
|
|
||||||
|
const pickFromCamera = async (
|
||||||
|
allowsEditing: boolean,
|
||||||
|
mediaType: ImagePicker.MediaTypeOptions
|
||||||
|
): Promise<ImagePickerFile | null> => {
|
||||||
|
try {
|
||||||
|
const hasPermission = await handlePermission();
|
||||||
|
if (!hasPermission) return null;
|
||||||
|
const image = await ImagePicker.launchCameraAsync({
|
||||||
|
mediaTypes: mediaType,
|
||||||
|
quality: 0.8,
|
||||||
|
allowsEditing
|
||||||
|
});
|
||||||
|
if (!image.cancelled) return addAdditionalPropsToFile(image);
|
||||||
|
return null;
|
||||||
|
} catch (error) {
|
||||||
|
log(error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export const pickMultipleImageAndVideoFromLibrary = async (): Promise<ImagePickerFile | ImagePickerFile[] | null> => {
|
||||||
|
try {
|
||||||
|
const result = await ImagePicker.launchImageLibraryAsync({
|
||||||
|
mediaTypes: ImagePicker.MediaTypeOptions.All,
|
||||||
|
quality: isAndroid ? 1 : undefined, // TODO - Apply fix for iOS processing error
|
||||||
|
allowsMultipleSelection: true
|
||||||
|
});
|
||||||
|
if (!result.cancelled) {
|
||||||
|
if (result.selected) {
|
||||||
|
const selectedFiles = result.selected.map(file => addAdditionalPropsToFile(file));
|
||||||
|
const files = await Promise.all(selectedFiles);
|
||||||
|
return files;
|
||||||
|
}
|
||||||
|
// @ts-ignore - The type for when returning only one file is wrong.
|
||||||
|
const selectedFile = await addAdditionalPropsToFile(result);
|
||||||
|
return [selectedFile];
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
} catch (error) {
|
||||||
|
log(error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function pickImageFromLibrary({ animatedGif = true }: { animatedGif: boolean }): Promise<ImagePickerFile | null> {
|
||||||
|
try {
|
||||||
|
const image = await ImagePicker.launchImageLibraryAsync({
|
||||||
|
mediaTypes: ImagePicker.MediaTypeOptions.Images,
|
||||||
|
quality: animatedGif ? 1 : 0.8,
|
||||||
|
base64: true
|
||||||
|
});
|
||||||
|
if (!image.cancelled) {
|
||||||
|
const selectedImage = await addAdditionalPropsToFile(image);
|
||||||
|
return selectedImage;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
} catch (error) {
|
||||||
|
log(error);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const pickVideoFromCamera = (allowsEditing = false): Promise<ImagePickerFile | null> =>
|
||||||
|
pickFromCamera(allowsEditing, ImagePicker.MediaTypeOptions.Videos);
|
||||||
|
|
||||||
|
export const pickImageFromCamera = (allowsEditing = false): Promise<ImagePickerFile | null> =>
|
||||||
|
pickFromCamera(allowsEditing, ImagePicker.MediaTypeOptions.Images);
|
|
@ -272,6 +272,7 @@ export type InsideStackParamList = {
|
||||||
text: string;
|
text: string;
|
||||||
room: TSubscriptionModel;
|
room: TSubscriptionModel;
|
||||||
thread: TThreadModel;
|
thread: TThreadModel;
|
||||||
|
canEdit: boolean;
|
||||||
};
|
};
|
||||||
ModalBlockView: {
|
ModalBlockView: {
|
||||||
data: any; // TODO: Change;
|
data: any; // TODO: Change;
|
||||||
|
|
|
@ -2,7 +2,6 @@ import React from 'react';
|
||||||
import { Keyboard, ScrollView, TextInput, View } from 'react-native';
|
import { Keyboard, ScrollView, TextInput, View } from 'react-native';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { sha256 } from 'js-sha256';
|
import { sha256 } from 'js-sha256';
|
||||||
import ImagePicker, { Image } from 'react-native-image-crop-picker';
|
|
||||||
import RNPickerSelect from 'react-native-picker-select';
|
import RNPickerSelect from 'react-native-picker-select';
|
||||||
import { dequal } from 'dequal';
|
import { dequal } from 'dequal';
|
||||||
import omit from 'lodash/omit';
|
import omit from 'lodash/omit';
|
||||||
|
@ -45,6 +44,7 @@ import { TwoFactorMethods } from '../../definitions/ITotp';
|
||||||
import { withActionSheet, IActionSheetProvider } from '../../containers/ActionSheet';
|
import { withActionSheet, IActionSheetProvider } from '../../containers/ActionSheet';
|
||||||
import { DeleteAccountActionSheetContent } from './components/DeleteAccountActionSheetContent';
|
import { DeleteAccountActionSheetContent } from './components/DeleteAccountActionSheetContent';
|
||||||
import ActionSheetContentWithInputAndSubmit from '../../containers/ActionSheet/ActionSheetContentWithInputAndSubmit';
|
import ActionSheetContentWithInputAndSubmit from '../../containers/ActionSheet/ActionSheetContentWithInputAndSubmit';
|
||||||
|
import { pickImageFromLibrary } from '../../lib/methods/mediaPicker';
|
||||||
|
|
||||||
interface IProfileViewProps extends IActionSheetProvider, IBaseScreen<ProfileStackParamList, 'ProfileView'> {
|
interface IProfileViewProps extends IActionSheetProvider, IBaseScreen<ProfileStackParamList, 'ProfileView'> {
|
||||||
user: IUser;
|
user: IUser;
|
||||||
|
@ -345,19 +345,12 @@ class ProfileView extends React.Component<IProfileViewProps, IProfileViewState>
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const options = {
|
|
||||||
cropping: true,
|
|
||||||
compressImageQuality: 0.8,
|
|
||||||
freeStyleCropEnabled: true,
|
|
||||||
cropperAvoidEmptySpaceAroundImage: false,
|
|
||||||
cropperChooseText: I18n.t('Choose'),
|
|
||||||
cropperCancelText: I18n.t('Cancel'),
|
|
||||||
includeBase64: true
|
|
||||||
};
|
|
||||||
try {
|
try {
|
||||||
logEvent(events.PROFILE_PICK_AVATAR);
|
logEvent(events.PROFILE_PICK_AVATAR);
|
||||||
const response: Image = await ImagePicker.openPicker(options);
|
const response = await pickImageFromLibrary({ animatedGif: false });
|
||||||
this.setAvatar({ url: response.path, data: `data:image/jpeg;base64,${response.data}`, service: 'upload' });
|
if (response) {
|
||||||
|
this.setAvatar({ url: response.path, data: `data:image/jpeg;base64,${response.base64}`, service: 'upload' });
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logEvent(events.PROFILE_PICK_AVATAR_F);
|
logEvent(events.PROFILE_PICK_AVATAR_F);
|
||||||
console.warn(error);
|
console.warn(error);
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { BlockContext } from '@rocket.chat/ui-kit';
|
||||||
import { dequal } from 'dequal';
|
import { dequal } from 'dequal';
|
||||||
import isEmpty from 'lodash/isEmpty';
|
import isEmpty from 'lodash/isEmpty';
|
||||||
import { Alert, Keyboard, ScrollView, Text, TextInput, TouchableOpacity, View, StyleSheet } from 'react-native';
|
import { Alert, Keyboard, ScrollView, Text, TextInput, TouchableOpacity, View, StyleSheet } from 'react-native';
|
||||||
import ImagePicker, { Image } from 'react-native-image-crop-picker';
|
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { Subscription } from 'rxjs';
|
import { Subscription } from 'rxjs';
|
||||||
|
|
||||||
|
@ -51,6 +50,7 @@ import {
|
||||||
random
|
random
|
||||||
} from '../../lib/methods/helpers';
|
} from '../../lib/methods/helpers';
|
||||||
import { Services } from '../../lib/services';
|
import { Services } from '../../lib/services';
|
||||||
|
import { pickImageFromLibrary } from '../../lib/methods/mediaPicker';
|
||||||
|
|
||||||
interface IRoomInfoEditViewState {
|
interface IRoomInfoEditViewState {
|
||||||
room: ISubscription;
|
room: ISubscription;
|
||||||
|
@ -488,18 +488,11 @@ class RoomInfoEditView extends React.Component<IRoomInfoEditViewProps, IRoomInfo
|
||||||
};
|
};
|
||||||
|
|
||||||
changeAvatar = async () => {
|
changeAvatar = async () => {
|
||||||
const options = {
|
|
||||||
cropping: true,
|
|
||||||
compressImageQuality: 0.8,
|
|
||||||
cropperAvoidEmptySpaceAroundImage: false,
|
|
||||||
cropperChooseText: I18n.t('Choose'),
|
|
||||||
cropperCancelText: I18n.t('Cancel'),
|
|
||||||
includeBase64: true
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const response: Image = await ImagePicker.openPicker(options);
|
const response = await pickImageFromLibrary({ animatedGif: false });
|
||||||
this.setState({ avatar: { url: response.path, data: `data:image/jpeg;base64,${response.data}`, service: 'upload' } });
|
if (response) {
|
||||||
|
this.setState({ avatar: { url: response.path, data: `data:image/jpeg;base64,${response.base64}`, service: 'upload' } });
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,27 +136,29 @@ const Thumb = ({ item, theme, isShareExtension, onPress, onRemove }: IThumb) =>
|
||||||
</ThumbButton>
|
</ThumbButton>
|
||||||
);
|
);
|
||||||
|
|
||||||
const Thumbs = React.memo(({ attachments, theme, isShareExtension, onPress, onRemove }: IThumbs) => {
|
const Thumbs = ({ attachments, theme, isShareExtension, onPress, onRemove }: IThumbs) => {
|
||||||
if (attachments?.length > 1) {
|
if (attachments?.length > 1) {
|
||||||
return (
|
return (
|
||||||
<FlatList
|
<View style={{ height: THUMB_SIZE }}>
|
||||||
horizontal
|
<FlatList
|
||||||
data={attachments}
|
horizontal
|
||||||
keyExtractor={item => item.path}
|
data={attachments}
|
||||||
renderItem={({ item }) => (
|
keyExtractor={item => item.path}
|
||||||
<Thumb
|
renderItem={({ item }) => (
|
||||||
item={item}
|
<Thumb
|
||||||
theme={theme}
|
item={item}
|
||||||
isShareExtension={isShareExtension}
|
theme={theme}
|
||||||
onPress={() => onPress(item)}
|
isShareExtension={isShareExtension}
|
||||||
onRemove={() => onRemove(item)}
|
onPress={() => onPress(item)}
|
||||||
/>
|
onRemove={() => onRemove(item)}
|
||||||
)}
|
/>
|
||||||
style={[styles.list, { backgroundColor: themes[theme].messageboxBackground }]}
|
)}
|
||||||
/>
|
style={[styles.list, { backgroundColor: themes[theme].messageboxBackground }]}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
});
|
};
|
||||||
|
|
||||||
export default Thumbs;
|
export default Thumbs;
|
||||||
|
|
|
@ -5,6 +5,7 @@ import { NativeModules, Text, View } from 'react-native';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import ShareExtension from 'rn-extensions-share';
|
import ShareExtension from 'rn-extensions-share';
|
||||||
import { Q } from '@nozbe/watermelondb';
|
import { Q } from '@nozbe/watermelondb';
|
||||||
|
import ImagePicker, { Image } from 'react-native-image-crop-picker';
|
||||||
|
|
||||||
import { InsideStackParamList } from '../../stacks/types';
|
import { InsideStackParamList } from '../../stacks/types';
|
||||||
import { themes } from '../../lib/constants';
|
import { themes } from '../../lib/constants';
|
||||||
|
@ -62,6 +63,7 @@ class ShareView extends Component<IShareViewProps, IShareViewState> {
|
||||||
private files: any[];
|
private files: any[];
|
||||||
private isShareExtension: boolean;
|
private isShareExtension: boolean;
|
||||||
private serverInfo: IServer;
|
private serverInfo: IServer;
|
||||||
|
private canEdit: boolean;
|
||||||
|
|
||||||
constructor(props: IShareViewProps) {
|
constructor(props: IShareViewProps) {
|
||||||
super(props);
|
super(props);
|
||||||
|
@ -69,6 +71,7 @@ class ShareView extends Component<IShareViewProps, IShareViewState> {
|
||||||
this.files = props.route.params?.attachments ?? [];
|
this.files = props.route.params?.attachments ?? [];
|
||||||
this.isShareExtension = props.route.params?.isShareExtension;
|
this.isShareExtension = props.route.params?.isShareExtension;
|
||||||
this.serverInfo = props.route.params?.serverInfo ?? {};
|
this.serverInfo = props.route.params?.serverInfo ?? {};
|
||||||
|
this.canEdit = props.route.params?.canEdit;
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
selected: {} as IShareAttachment,
|
selected: {} as IShareAttachment,
|
||||||
|
@ -94,6 +97,45 @@ class ShareView extends Component<IShareViewProps, IShareViewState> {
|
||||||
console.countReset(`${this.constructor.name}.render calls`);
|
console.countReset(`${this.constructor.name}.render calls`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cropImage = () => {
|
||||||
|
const { attachments, selected } = this.state;
|
||||||
|
ImagePicker.openCropper({
|
||||||
|
path: this.state.selected.path,
|
||||||
|
mediaType: 'photo',
|
||||||
|
writeTempFile: true,
|
||||||
|
includeExif: true
|
||||||
|
})
|
||||||
|
.then((image: Image) => {
|
||||||
|
let editedAttachment: undefined | IShareAttachment;
|
||||||
|
const newAttachments = attachments.map(attachment => {
|
||||||
|
if (attachment.filename === selected.filename) {
|
||||||
|
const editedImage = {
|
||||||
|
...attachment,
|
||||||
|
...image,
|
||||||
|
uri: image.path,
|
||||||
|
filename: `${image.path.substring(image.path.lastIndexOf('/') + 1)}`
|
||||||
|
};
|
||||||
|
editedAttachment = editedImage;
|
||||||
|
return editedImage;
|
||||||
|
}
|
||||||
|
return attachment;
|
||||||
|
});
|
||||||
|
this.setState({ attachments: newAttachments, selected: editedAttachment! });
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
|
|
||||||
|
headerRight = () => {
|
||||||
|
const { theme } = this.props;
|
||||||
|
if (!this.isShareExtension)
|
||||||
|
return (
|
||||||
|
<HeaderButton.Container>
|
||||||
|
<HeaderButton.Item iconName='edit' onPress={this.cropImage} color={themes[theme].previewTintColor} />
|
||||||
|
</HeaderButton.Container>
|
||||||
|
);
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
setHeader = () => {
|
setHeader = () => {
|
||||||
const { room, thread, readOnly, attachments } = this.state;
|
const { room, thread, readOnly, attachments } = this.state;
|
||||||
const { navigation, theme } = this.props;
|
const { navigation, theme } = this.props;
|
||||||
|
@ -109,7 +151,9 @@ class ShareView extends Component<IShareViewProps, IShareViewState> {
|
||||||
options.headerLeft = () => <HeaderButton.CloseModal navigation={navigation} color={themes[theme].previewTintColor} />;
|
options.headerLeft = () => <HeaderButton.CloseModal navigation={navigation} color={themes[theme].previewTintColor} />;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!attachments.length && !readOnly) {
|
if (this.canEdit && this.state.selected.mime === 'image/jpeg') {
|
||||||
|
options.headerRight = this.headerRight;
|
||||||
|
} else if (!attachments.length && !readOnly) {
|
||||||
options.headerRight = () => (
|
options.headerRight = () => (
|
||||||
<HeaderButton.Container>
|
<HeaderButton.Container>
|
||||||
<HeaderButton.Item title={I18n.t('Send')} onPress={this.send} color={themes[theme].previewTintColor} />
|
<HeaderButton.Item title={I18n.t('Send')} onPress={this.send} color={themes[theme].previewTintColor} />
|
||||||
|
@ -256,6 +300,8 @@ class ShareView extends Component<IShareViewProps, IShareViewState> {
|
||||||
|
|
||||||
selectFile = (item: IShareAttachment) => {
|
selectFile = (item: IShareAttachment) => {
|
||||||
const { attachments, selected } = this.state;
|
const { attachments, selected } = this.state;
|
||||||
|
const { navigation } = this.props;
|
||||||
|
|
||||||
if (attachments.length > 0) {
|
if (attachments.length > 0) {
|
||||||
const text = this.messagebox.current?.text;
|
const text = this.messagebox.current?.text;
|
||||||
const newAttachments = attachments.map(att => {
|
const newAttachments = attachments.map(att => {
|
||||||
|
@ -264,7 +310,14 @@ class ShareView extends Component<IShareViewProps, IShareViewState> {
|
||||||
}
|
}
|
||||||
return att;
|
return att;
|
||||||
});
|
});
|
||||||
return this.setState({ attachments: newAttachments, selected: item });
|
|
||||||
|
return this.setState({ attachments: newAttachments, selected: item }, () => {
|
||||||
|
if (item.mime === 'image/jpeg') {
|
||||||
|
navigation.setOptions({ headerRight: this.headerRight });
|
||||||
|
} else {
|
||||||
|
navigation.setOptions({ headerRight: undefined });
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -293,7 +346,6 @@ class ShareView extends Component<IShareViewProps, IShareViewState> {
|
||||||
renderContent = () => {
|
renderContent = () => {
|
||||||
const { attachments, selected, room, text } = this.state;
|
const { attachments, selected, room, text } = this.state;
|
||||||
const { theme, navigation } = this.props;
|
const { theme, navigation } = this.props;
|
||||||
|
|
||||||
if (attachments.length) {
|
if (attachments.length) {
|
||||||
return (
|
return (
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
|
@ -318,15 +370,14 @@ class ShareView extends Component<IShareViewProps, IShareViewState> {
|
||||||
isFocused={navigation.isFocused}
|
isFocused={navigation.isFocused}
|
||||||
iOSScrollBehavior={NativeModules.KeyboardTrackingViewManager?.KeyboardTrackingScrollBehaviorNone}
|
iOSScrollBehavior={NativeModules.KeyboardTrackingViewManager?.KeyboardTrackingScrollBehaviorNone}
|
||||||
isActionsEnabled={false}
|
isActionsEnabled={false}
|
||||||
>
|
/>
|
||||||
<Thumbs
|
<Thumbs
|
||||||
attachments={attachments}
|
attachments={attachments}
|
||||||
theme={theme}
|
theme={theme}
|
||||||
isShareExtension={this.isShareExtension}
|
isShareExtension={this.isShareExtension}
|
||||||
onPress={this.selectFile}
|
onPress={this.selectFile}
|
||||||
onRemove={this.removeFile}
|
onRemove={this.removeFile}
|
||||||
/>
|
/>
|
||||||
</MessageBox>
|
|
||||||
</View>
|
</View>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
13
ios/Podfile
13
ios/Podfile
|
@ -2,7 +2,7 @@ require_relative '../node_modules/react-native/scripts/react_native_pods'
|
||||||
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||||
require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
|
require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
|
||||||
|
|
||||||
platform :ios, '12.0'
|
platform :ios, '13.0'
|
||||||
install! 'cocoapods', :deterministic_uuids => false
|
install! 'cocoapods', :deterministic_uuids => false
|
||||||
|
|
||||||
def all_pods
|
def all_pods
|
||||||
|
@ -60,4 +60,15 @@ post_install do |installer|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# This is necessary for Xcode 14, because it signs resource bundles by default
|
||||||
|
# when building for devices.
|
||||||
|
installer.target_installation_results.pod_target_installation_results
|
||||||
|
.each do |pod_name, target_installation_result|
|
||||||
|
target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
|
||||||
|
resource_bundle_target.build_configurations.each do |config|
|
||||||
|
config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,20 +11,25 @@ PODS:
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- React-runtimeexecutor
|
- React-runtimeexecutor
|
||||||
- ReactCommon
|
- ReactCommon
|
||||||
- EXFileSystem (14.0.0):
|
- EXFileSystem (14.1.0):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
|
- EXImageLoader (4.0.0):
|
||||||
|
- ExpoModulesCore
|
||||||
|
- React-Core
|
||||||
- EXLocalAuthentication (12.2.0):
|
- EXLocalAuthentication (12.2.0):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- Expo (46.0.9):
|
- Expo (47.0.8):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoHaptics (11.2.0):
|
- ExpoHaptics (12.0.1):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoKeepAwake (10.1.1):
|
- ExpoImagePicker (14.0.2):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- ExpoModulesCore (0.11.4):
|
- ExpoKeepAwake (11.0.1):
|
||||||
|
- ExpoModulesCore
|
||||||
|
- ExpoModulesCore (1.0.3):
|
||||||
- React-Core
|
- React-Core
|
||||||
- ReactCommon/turbomodule/core
|
- ReactCommon/turbomodule/core
|
||||||
- ExpoWebBrowser (10.2.1):
|
- ExpoWebBrowser (12.0.0):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
- EXVideoThumbnails (6.3.0):
|
- EXVideoThumbnails (6.3.0):
|
||||||
- ExpoModulesCore
|
- ExpoModulesCore
|
||||||
|
@ -524,12 +529,12 @@ PODS:
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNGestureHandler (2.4.2):
|
- RNGestureHandler (2.4.2):
|
||||||
- React-Core
|
- React-Core
|
||||||
- RNImageCropPicker (0.36.3):
|
- RNImageCropPicker (0.38.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- React-RCTImage
|
- React-RCTImage
|
||||||
- RNImageCropPicker/QBImagePickerController (= 0.36.3)
|
- RNImageCropPicker/QBImagePickerController (= 0.38.0)
|
||||||
- TOCropViewController
|
- TOCropViewController
|
||||||
- RNImageCropPicker/QBImagePickerController (0.36.3):
|
- RNImageCropPicker/QBImagePickerController (0.38.0):
|
||||||
- React-Core
|
- React-Core
|
||||||
- React-RCTImage
|
- React-RCTImage
|
||||||
- TOCropViewController
|
- TOCropViewController
|
||||||
|
@ -594,11 +599,13 @@ DEPENDENCIES:
|
||||||
- EXAppleAuthentication (from `../node_modules/expo-apple-authentication/ios`)
|
- EXAppleAuthentication (from `../node_modules/expo-apple-authentication/ios`)
|
||||||
- EXAV (from `../node_modules/expo-av/ios`)
|
- EXAV (from `../node_modules/expo-av/ios`)
|
||||||
- EXFileSystem (from `../node_modules/expo-file-system/ios`)
|
- EXFileSystem (from `../node_modules/expo-file-system/ios`)
|
||||||
|
- EXImageLoader (from `../node_modules/expo-image-loader/ios`)
|
||||||
- EXLocalAuthentication (from `../node_modules/expo-local-authentication/ios`)
|
- EXLocalAuthentication (from `../node_modules/expo-local-authentication/ios`)
|
||||||
- Expo (from `../node_modules/expo`)
|
- Expo (from `../node_modules/expo`)
|
||||||
- ExpoHaptics (from `../node_modules/expo-haptics/ios`)
|
- ExpoHaptics (from `../node_modules/expo-haptics/ios`)
|
||||||
|
- ExpoImagePicker (from `../node_modules/expo-image-picker/ios`)
|
||||||
- ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`)
|
- ExpoKeepAwake (from `../node_modules/expo-keep-awake/ios`)
|
||||||
- ExpoModulesCore (from `../node_modules/expo-modules-core/ios`)
|
- ExpoModulesCore (from `../node_modules/expo-modules-core`)
|
||||||
- ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`)
|
- ExpoWebBrowser (from `../node_modules/expo-web-browser/ios`)
|
||||||
- EXVideoThumbnails (from `../node_modules/expo-video-thumbnails/ios`)
|
- EXVideoThumbnails (from `../node_modules/expo-video-thumbnails/ios`)
|
||||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
||||||
|
@ -721,16 +728,20 @@ EXTERNAL SOURCES:
|
||||||
:path: "../node_modules/expo-av/ios"
|
:path: "../node_modules/expo-av/ios"
|
||||||
EXFileSystem:
|
EXFileSystem:
|
||||||
:path: "../node_modules/expo-file-system/ios"
|
:path: "../node_modules/expo-file-system/ios"
|
||||||
|
EXImageLoader:
|
||||||
|
:path: "../node_modules/expo-image-loader/ios"
|
||||||
EXLocalAuthentication:
|
EXLocalAuthentication:
|
||||||
:path: "../node_modules/expo-local-authentication/ios"
|
:path: "../node_modules/expo-local-authentication/ios"
|
||||||
Expo:
|
Expo:
|
||||||
:path: "../node_modules/expo"
|
:path: "../node_modules/expo"
|
||||||
ExpoHaptics:
|
ExpoHaptics:
|
||||||
:path: "../node_modules/expo-haptics/ios"
|
:path: "../node_modules/expo-haptics/ios"
|
||||||
|
ExpoImagePicker:
|
||||||
|
:path: "../node_modules/expo-image-picker/ios"
|
||||||
ExpoKeepAwake:
|
ExpoKeepAwake:
|
||||||
:path: "../node_modules/expo-keep-awake/ios"
|
:path: "../node_modules/expo-keep-awake/ios"
|
||||||
ExpoModulesCore:
|
ExpoModulesCore:
|
||||||
:path: "../node_modules/expo-modules-core/ios"
|
:path: "../node_modules/expo-modules-core"
|
||||||
ExpoWebBrowser:
|
ExpoWebBrowser:
|
||||||
:path: "../node_modules/expo-web-browser/ios"
|
:path: "../node_modules/expo-web-browser/ios"
|
||||||
EXVideoThumbnails:
|
EXVideoThumbnails:
|
||||||
|
@ -898,13 +909,15 @@ SPEC CHECKSUMS:
|
||||||
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
|
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
|
||||||
EXAppleAuthentication: 709a807fe7f48ac6986a2ceed206ee6a8baf28df
|
EXAppleAuthentication: 709a807fe7f48ac6986a2ceed206ee6a8baf28df
|
||||||
EXAV: 88f61c5af8415715b7ee51f084c1020235b85c56
|
EXAV: 88f61c5af8415715b7ee51f084c1020235b85c56
|
||||||
EXFileSystem: 2aa2d9289f84bca9532b9ccbd81504fa31eb1ded
|
EXFileSystem: 927e0a8885aa9c49e50fc38eaba2c2389f2f1019
|
||||||
|
EXImageLoader: 84b65e6bd9d3345d6fbb3ab936a546c54496a64d
|
||||||
EXLocalAuthentication: 7f37b242eae73f9acf111d39bdee3f1379e68902
|
EXLocalAuthentication: 7f37b242eae73f9acf111d39bdee3f1379e68902
|
||||||
Expo: 73412414e62f5cbc6e713def821de70b92cd3ad6
|
Expo: 36b5f625d36728adbdd1934d4d57182f319ab832
|
||||||
ExpoHaptics: ad58ec96a25e57579c14a47c7d71f0de0de8656a
|
ExpoHaptics: 5a56d30a87ea213dd00b09566dc4b441a4dff97f
|
||||||
ExpoKeepAwake: c0c494b442ecd8122974c13b93ccfb57bd408e88
|
ExpoImagePicker: d2a1cea4023008ae2fb0d95f33422b80772cc76e
|
||||||
ExpoModulesCore: e281bb7b78ea47e227dd5af94d04b24d8b2e1255
|
ExpoKeepAwake: 69b59d0a8d2b24de9f82759c39b3821fec030318
|
||||||
ExpoWebBrowser: 4b5f9633e5f169dc948587cb6d26d2d1d1406187
|
ExpoModulesCore: b5d21c8880afda6fb6ee95469f9ac2ec9b98e995
|
||||||
|
ExpoWebBrowser: 073e50f16669d498fb49063b9b7fe780b24f7fda
|
||||||
EXVideoThumbnails: 19e055dc3245b53c536da9e0ef9c618fd2118297
|
EXVideoThumbnails: 19e055dc3245b53c536da9e0ef9c618fd2118297
|
||||||
FBLazyVector: a7a655862f6b09625d11c772296b01cd5164b648
|
FBLazyVector: a7a655862f6b09625d11c772296b01cd5164b648
|
||||||
FBReactNativeSpec: 66b5770d86bfee27d67b850416dbc7123c4f6311
|
FBReactNativeSpec: 66b5770d86bfee27d67b850416dbc7123c4f6311
|
||||||
|
@ -989,7 +1002,7 @@ SPEC CHECKSUMS:
|
||||||
RNFBCrashlytics: 357955a1564721ca9001960e57b395c6a319f9be
|
RNFBCrashlytics: 357955a1564721ca9001960e57b395c6a319f9be
|
||||||
RNFileViewer: ce7ca3ac370e18554d35d6355cffd7c30437c592
|
RNFileViewer: ce7ca3ac370e18554d35d6355cffd7c30437c592
|
||||||
RNGestureHandler: 61628a2c859172551aa2100d3e73d1e57878392f
|
RNGestureHandler: 61628a2c859172551aa2100d3e73d1e57878392f
|
||||||
RNImageCropPicker: 97289cd94fb01ab79db4e5c92938be4d0d63415d
|
RNImageCropPicker: ffbba608264885c241cbf3a8f78eb7aeeb978241
|
||||||
RNLocalize: 82a569022724d35461e2dc5b5d015a13c3ca995b
|
RNLocalize: 82a569022724d35461e2dc5b5d015a13c3ca995b
|
||||||
RNMathView: 4c8a3c081fa671ab3136c51fa0bdca7ffb708bd5
|
RNMathView: 4c8a3c081fa671ab3136c51fa0bdca7ffb708bd5
|
||||||
RNReanimated: 64573e25e078ae6bec03b891586d50b9ec284393
|
RNReanimated: 64573e25e078ae6bec03b891586d50b9ec284393
|
||||||
|
@ -1004,6 +1017,6 @@ SPEC CHECKSUMS:
|
||||||
WatermelonDB: 577c61fceff16e9f9103b59d14aee4850c0307b6
|
WatermelonDB: 577c61fceff16e9f9103b59d14aee4850c0307b6
|
||||||
Yoga: 99652481fcd320aefa4a7ef90095b95acd181952
|
Yoga: 99652481fcd320aefa4a7ef90095b95acd181952
|
||||||
|
|
||||||
PODFILE CHECKSUM: 052cbf741847405abc3b902c9e107c1ebb48b252
|
PODFILE CHECKSUM: 8d2226713e77a455feba9d2ee3b2222cb6193697
|
||||||
|
|
||||||
COCOAPODS: 1.11.3
|
COCOAPODS: 1.11.3
|
||||||
|
|
13
package.json
13
package.json
|
@ -61,15 +61,16 @@
|
||||||
"commonmark-react-renderer": "git+https://github.com/RocketChat/commonmark-react-renderer.git",
|
"commonmark-react-renderer": "git+https://github.com/RocketChat/commonmark-react-renderer.git",
|
||||||
"dequal": "^2.0.3",
|
"dequal": "^2.0.3",
|
||||||
"ejson": "^2.2.3",
|
"ejson": "^2.2.3",
|
||||||
"expo": "^46.0.9",
|
"expo": "^47.0.8",
|
||||||
"expo-apple-authentication": "4.2.1",
|
"expo-apple-authentication": "4.2.1",
|
||||||
"expo-av": "11.2.3",
|
"expo-av": "11.2.3",
|
||||||
"expo-file-system": "14.0.0",
|
"expo-file-system": "^14.1.0",
|
||||||
"expo-haptics": "11.2.0",
|
"expo-haptics": "12.0.1",
|
||||||
"expo-keep-awake": "10.1.1",
|
"expo-image-picker": "^14.0.2",
|
||||||
|
"expo-keep-awake": "11.0.1",
|
||||||
"expo-local-authentication": "12.2.0",
|
"expo-local-authentication": "12.2.0",
|
||||||
"expo-video-thumbnails": "6.3.0",
|
"expo-video-thumbnails": "6.3.0",
|
||||||
"expo-web-browser": "10.2.1",
|
"expo-web-browser": "12.0.0",
|
||||||
"hoist-non-react-statics": "3.3.2",
|
"hoist-non-react-statics": "3.3.2",
|
||||||
"i18n-js": "3.9.2",
|
"i18n-js": "3.9.2",
|
||||||
"js-base64": "3.6.1",
|
"js-base64": "3.6.1",
|
||||||
|
@ -94,7 +95,7 @@
|
||||||
"react-native-fast-image": "RocketChat/react-native-fast-image.git#bump-version",
|
"react-native-fast-image": "RocketChat/react-native-fast-image.git#bump-version",
|
||||||
"react-native-file-viewer": "^2.1.4",
|
"react-native-file-viewer": "^2.1.4",
|
||||||
"react-native-gesture-handler": "2.4.2",
|
"react-native-gesture-handler": "2.4.2",
|
||||||
"react-native-image-crop-picker": "RocketChat/react-native-image-crop-picker",
|
"react-native-image-crop-picker": "^0.38.0",
|
||||||
"react-native-image-progress": "^1.1.1",
|
"react-native-image-progress": "^1.1.1",
|
||||||
"react-native-jitsi-meet": "RocketChat/react-native-jitsi-meet",
|
"react-native-jitsi-meet": "RocketChat/react-native-jitsi-meet",
|
||||||
"react-native-keycommands": "2.0.3",
|
"react-native-keycommands": "2.0.3",
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
index 7a28702..77888fc 100644
|
||||||
|
--- a/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/ImagePickerModule.kt
|
||||||
|
+++ b/node_modules/expo-image-picker/android/src/main/java/expo/modules/imagepicker/ImagePickerModule.kt
|
||||||
|
@@ -56,7 +56,7 @@ class ImagePickerModule : Module() {
|
||||||
|
|
||||||
|
AsyncFunction("launchCameraAsync") Coroutine { options: ImagePickerOptions ->
|
||||||
|
ensureTargetActivityIsAvailable(options)
|
||||||
|
- ensureCameraPermissionsAreGranted()
|
||||||
|
+ // ensureCameraPermissionsAreGranted()
|
||||||
|
|
||||||
|
val mediaFile = createOutputFile(context.cacheDir, options.mediaTypes.toFileExtension())
|
||||||
|
val uri = mediaFile.toContentUri(context)
|
349
yarn.lock
349
yarn.lock
|
@ -66,6 +66,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d"
|
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d"
|
||||||
integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==
|
integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==
|
||||||
|
|
||||||
|
"@babel/compat-data@^7.20.0", "@babel/compat-data@^7.20.1":
|
||||||
|
version "7.20.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.5.tgz#86f172690b093373a933223b4745deeb6049e733"
|
||||||
|
integrity sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==
|
||||||
|
|
||||||
"@babel/core@7.12.9":
|
"@babel/core@7.12.9":
|
||||||
version "7.12.9"
|
version "7.12.9"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
|
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
|
||||||
|
@ -405,6 +410,16 @@
|
||||||
browserslist "^4.20.2"
|
browserslist "^4.20.2"
|
||||||
semver "^6.3.0"
|
semver "^6.3.0"
|
||||||
|
|
||||||
|
"@babel/helper-compilation-targets@^7.20.0":
|
||||||
|
version "7.20.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a"
|
||||||
|
integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/compat-data" "^7.20.0"
|
||||||
|
"@babel/helper-validator-option" "^7.18.6"
|
||||||
|
browserslist "^4.21.3"
|
||||||
|
semver "^6.3.0"
|
||||||
|
|
||||||
"@babel/helper-create-class-features-plugin@^7.14.5":
|
"@babel/helper-create-class-features-plugin@^7.14.5":
|
||||||
version "7.14.5"
|
version "7.14.5"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.5.tgz#8842ec495516dd1ed8f6c572be92ba78b1e9beef"
|
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.5.tgz#8842ec495516dd1ed8f6c572be92ba78b1e9beef"
|
||||||
|
@ -894,6 +909,11 @@
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f"
|
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f"
|
||||||
integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==
|
integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==
|
||||||
|
|
||||||
|
"@babel/helper-plugin-utils@^7.20.2":
|
||||||
|
version "7.20.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629"
|
||||||
|
integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
|
||||||
|
|
||||||
"@babel/helper-regex@^7.8.3":
|
"@babel/helper-regex@^7.8.3":
|
||||||
version "7.8.3"
|
version "7.8.3"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965"
|
resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965"
|
||||||
|
@ -1566,6 +1586,17 @@
|
||||||
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
|
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
|
||||||
"@babel/plugin-transform-parameters" "^7.18.8"
|
"@babel/plugin-transform-parameters" "^7.18.8"
|
||||||
|
|
||||||
|
"@babel/plugin-proposal-object-rest-spread@^7.12.13":
|
||||||
|
version "7.20.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d"
|
||||||
|
integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/compat-data" "^7.20.1"
|
||||||
|
"@babel/helper-compilation-targets" "^7.20.0"
|
||||||
|
"@babel/helper-plugin-utils" "^7.20.2"
|
||||||
|
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
|
||||||
|
"@babel/plugin-transform-parameters" "^7.20.1"
|
||||||
|
|
||||||
"@babel/plugin-proposal-object-rest-spread@^7.18.0":
|
"@babel/plugin-proposal-object-rest-spread@^7.18.0":
|
||||||
version "7.18.0"
|
version "7.18.0"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8"
|
||||||
|
@ -2426,6 +2457,13 @@
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/helper-plugin-utils" "^7.17.12"
|
"@babel/helper-plugin-utils" "^7.17.12"
|
||||||
|
|
||||||
|
"@babel/plugin-transform-parameters@^7.20.1":
|
||||||
|
version "7.20.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz#f8f9186c681d10c3de7620c916156d893c8a019e"
|
||||||
|
integrity sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==
|
||||||
|
dependencies:
|
||||||
|
"@babel/helper-plugin-utils" "^7.20.2"
|
||||||
|
|
||||||
"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.18.6":
|
"@babel/plugin-transform-property-literals@^7.0.0", "@babel/plugin-transform-property-literals@^7.18.6":
|
||||||
version "7.18.6"
|
version "7.18.6"
|
||||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3"
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3"
|
||||||
|
@ -3579,23 +3617,23 @@
|
||||||
mv "~2"
|
mv "~2"
|
||||||
safe-json-stringify "~1"
|
safe-json-stringify "~1"
|
||||||
|
|
||||||
"@expo/cli@0.2.11":
|
"@expo/cli@0.4.10":
|
||||||
version "0.2.11"
|
version "0.4.10"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.2.11.tgz#25d8db8e46c6f02ef3edc189fdb6e29c922dd377"
|
resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.4.10.tgz#e965b97888c83cecdaddbb8dca3d5827643a0f36"
|
||||||
integrity sha512-TIlylp3nghiEdlVliZRcBg8Yb++tnU92HinuQQZznVGFXFCoqJ210SPUJS1j3rxxltt8NhIJjL9OTO7PYRqnsQ==
|
integrity sha512-c8NJOVa5b8g9CYj8ahdaN21cVE2wPwUaFrtTE0kLeRR5ASy8reWLFEOcstEtt6eufdcN/uGgBWQ0FLovgLZuzw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.14.0"
|
"@babel/runtime" "^7.14.0"
|
||||||
"@expo/code-signing-certificates" "^0.0.2"
|
"@expo/code-signing-certificates" "0.0.5"
|
||||||
"@expo/config" "~7.0.1"
|
"@expo/config" "~7.0.2"
|
||||||
"@expo/config-plugins" "~5.0.1"
|
"@expo/config-plugins" "~5.0.3"
|
||||||
"@expo/dev-server" "~0.1.119"
|
"@expo/dev-server" "0.1.123"
|
||||||
"@expo/devcert" "^1.0.0"
|
"@expo/devcert" "^1.0.0"
|
||||||
"@expo/json-file" "^8.2.35"
|
"@expo/json-file" "^8.2.35"
|
||||||
"@expo/metro-config" "~0.3.18"
|
"@expo/metro-config" "~0.5.0"
|
||||||
"@expo/osascript" "^2.0.31"
|
"@expo/osascript" "^2.0.31"
|
||||||
"@expo/package-manager" "~0.0.53"
|
"@expo/package-manager" "~0.0.53"
|
||||||
"@expo/plist" "^0.0.18"
|
"@expo/plist" "^0.0.18"
|
||||||
"@expo/prebuild-config" "~5.0.3"
|
"@expo/prebuild-config" "5.0.7"
|
||||||
"@expo/rudder-sdk-node" "1.1.1"
|
"@expo/rudder-sdk-node" "1.1.1"
|
||||||
"@expo/spawn-async" "1.5.0"
|
"@expo/spawn-async" "1.5.0"
|
||||||
"@expo/xcpretty" "^4.2.1"
|
"@expo/xcpretty" "^4.2.1"
|
||||||
|
@ -3616,6 +3654,7 @@
|
||||||
getenv "^1.0.0"
|
getenv "^1.0.0"
|
||||||
graphql "15.8.0"
|
graphql "15.8.0"
|
||||||
graphql-tag "^2.10.1"
|
graphql-tag "^2.10.1"
|
||||||
|
https-proxy-agent "^5.0.1"
|
||||||
internal-ip "4.3.0"
|
internal-ip "4.3.0"
|
||||||
is-root "^2.1.0"
|
is-root "^2.1.0"
|
||||||
js-yaml "^3.13.1"
|
js-yaml "^3.13.1"
|
||||||
|
@ -3645,14 +3684,35 @@
|
||||||
uuid "^3.4.0"
|
uuid "^3.4.0"
|
||||||
wrap-ansi "^7.0.0"
|
wrap-ansi "^7.0.0"
|
||||||
|
|
||||||
"@expo/code-signing-certificates@^0.0.2":
|
"@expo/code-signing-certificates@0.0.5":
|
||||||
version "0.0.2"
|
version "0.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/code-signing-certificates/-/code-signing-certificates-0.0.2.tgz#65cd615800e6724b54831c966dd1a90145017246"
|
resolved "https://registry.yarnpkg.com/@expo/code-signing-certificates/-/code-signing-certificates-0.0.5.tgz#a693ff684fb20c4725dade4b88a6a9f96b02496c"
|
||||||
integrity sha512-vnPHFjwOqxQ1VLztktY+fYCfwvLzjqpzKn09rchcQE7Sdf0wtW5fFtIZBEFOOY5wasp8tXSnp627zrAwazPHzg==
|
integrity sha512-BNhXkY1bblxKZpltzAx98G2Egj9g1Q+JRcvR7E99DOj862FTCX+ZPsAUtPTr7aHxwtrL7+fL3r0JSmM9kBm+Bw==
|
||||||
dependencies:
|
dependencies:
|
||||||
node-forge "^1.2.1"
|
node-forge "^1.2.1"
|
||||||
nullthrows "^1.1.1"
|
nullthrows "^1.1.1"
|
||||||
|
|
||||||
|
"@expo/config-plugins@5.0.4", "@expo/config-plugins@~5.0.3":
|
||||||
|
version "5.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-5.0.4.tgz#216fea6558fe66615af1370de55193f4181cb23e"
|
||||||
|
integrity sha512-vzUcVpqOMs3h+hyRdhGwk+eGIOhXa5xYdd92yO17RMNHav3v/+ekMbs7XA2c3lepMO8Yd4/5hqmRw9ZTL6jGzg==
|
||||||
|
dependencies:
|
||||||
|
"@expo/config-types" "^47.0.0"
|
||||||
|
"@expo/json-file" "8.2.36"
|
||||||
|
"@expo/plist" "0.0.18"
|
||||||
|
"@expo/sdk-runtime-versions" "^1.0.0"
|
||||||
|
"@react-native/normalize-color" "^2.0.0"
|
||||||
|
chalk "^4.1.2"
|
||||||
|
debug "^4.3.1"
|
||||||
|
find-up "~5.0.0"
|
||||||
|
getenv "^1.0.0"
|
||||||
|
glob "7.1.6"
|
||||||
|
resolve-from "^5.0.0"
|
||||||
|
semver "^7.3.5"
|
||||||
|
slash "^3.0.0"
|
||||||
|
xcode "^3.0.1"
|
||||||
|
xml2js "0.4.23"
|
||||||
|
|
||||||
"@expo/config-plugins@^4.0.14", "@expo/config-plugins@^4.1.5":
|
"@expo/config-plugins@^4.0.14", "@expo/config-plugins@^4.1.5":
|
||||||
version "4.1.5"
|
version "4.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-4.1.5.tgz#9d357d2cda9c095e511b51583ede8a3b76174068"
|
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-4.1.5.tgz#9d357d2cda9c095e511b51583ede8a3b76174068"
|
||||||
|
@ -3705,7 +3765,29 @@
|
||||||
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-46.0.2.tgz#191f225ebfcbe624868ddc40efae79593f948dd8"
|
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-46.0.2.tgz#191f225ebfcbe624868ddc40efae79593f948dd8"
|
||||||
integrity sha512-PXkmOgNwRyBfgVT1HmFZhfh3Qm7WKKyV6mk3/5HJ/LzPh1t+Zs2JrWX8U2YncTLV1QzV7nV8tnkyvszzqnZEzQ==
|
integrity sha512-PXkmOgNwRyBfgVT1HmFZhfh3Qm7WKKyV6mk3/5HJ/LzPh1t+Zs2JrWX8U2YncTLV1QzV7nV8tnkyvszzqnZEzQ==
|
||||||
|
|
||||||
"@expo/config@7.0.1", "@expo/config@~7.0.0", "@expo/config@~7.0.1":
|
"@expo/config-types@^47.0.0":
|
||||||
|
version "47.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@expo/config-types/-/config-types-47.0.0.tgz#99eeabe0bba7a776e0f252b78beb0c574692c38d"
|
||||||
|
integrity sha512-r0pWfuhkv7KIcXMUiNACJmJKKwlTBGMw9VZHNdppS8/0Nve8HZMTkNRFQzTHW1uH3pBj8jEXpyw/2vSWDHex9g==
|
||||||
|
|
||||||
|
"@expo/config@7.0.3", "@expo/config@~7.0.2":
|
||||||
|
version "7.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@expo/config/-/config-7.0.3.tgz#c9c634e76186de25e296485e51418f1e52966e6e"
|
||||||
|
integrity sha512-joVtB5o+NF40Tmsdp65UzryRtbnCuMbXkVO4wJnNJO4aaK0EYLdHCYSewORVqNcDfGN0LphQr8VTG2npbd9CJA==
|
||||||
|
dependencies:
|
||||||
|
"@babel/code-frame" "~7.10.4"
|
||||||
|
"@expo/config-plugins" "~5.0.3"
|
||||||
|
"@expo/config-types" "^47.0.0"
|
||||||
|
"@expo/json-file" "8.2.36"
|
||||||
|
getenv "^1.0.0"
|
||||||
|
glob "7.1.6"
|
||||||
|
require-from-string "^2.0.2"
|
||||||
|
resolve-from "^5.0.0"
|
||||||
|
semver "7.3.2"
|
||||||
|
slugify "^1.3.4"
|
||||||
|
sucrase "^3.20.0"
|
||||||
|
|
||||||
|
"@expo/config@~7.0.0":
|
||||||
version "7.0.1"
|
version "7.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/config/-/config-7.0.1.tgz#d8e2e5410bb0b8e305690bbc76e6bb76f6a6de31"
|
resolved "https://registry.yarnpkg.com/@expo/config/-/config-7.0.1.tgz#d8e2e5410bb0b8e305690bbc76e6bb76f6a6de31"
|
||||||
integrity sha512-4lu0wr45XXJ2MXiLAm2+fmOyy/jjqF3NuDm92fO6nuulRzEEvTP4w3vsibJ690rT81ohtvhpruKhkRs0wSjKWA==
|
integrity sha512-4lu0wr45XXJ2MXiLAm2+fmOyy/jjqF3NuDm92fO6nuulRzEEvTP4w3vsibJ690rT81ohtvhpruKhkRs0wSjKWA==
|
||||||
|
@ -3722,18 +3804,21 @@
|
||||||
slugify "^1.3.4"
|
slugify "^1.3.4"
|
||||||
sucrase "^3.20.0"
|
sucrase "^3.20.0"
|
||||||
|
|
||||||
"@expo/dev-server@~0.1.119":
|
"@expo/dev-server@0.1.123":
|
||||||
version "0.1.119"
|
version "0.1.123"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/dev-server/-/dev-server-0.1.119.tgz#d85036d8ddfd5668fd50ef373616b55580dc7670"
|
resolved "https://registry.yarnpkg.com/@expo/dev-server/-/dev-server-0.1.123.tgz#71304323b47db9ce300b9a774571ef2312b9d581"
|
||||||
integrity sha512-DcVnj4/YA+b+Ljsz2qffHHN5LbouXFKeE9ER0Yjq5vIb2moV1q3U6LezndFLCf42Uev7C2vSa8YCcP3WOpxuMw==
|
integrity sha512-N6UVzzeemfX0AONUSWInvkAAbqon8hRXpyYE/nMPaC6TvAmgGY5ILZAGoXwlpxwY2VKNT0Lx4s/UJ53ytIaHbA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/bunyan" "4.0.0"
|
"@expo/bunyan" "4.0.0"
|
||||||
"@expo/metro-config" "~0.3.18"
|
"@expo/metro-config" "~0.5.1"
|
||||||
"@expo/osascript" "2.0.33"
|
"@expo/osascript" "2.0.33"
|
||||||
|
"@expo/spawn-async" "^1.5.0"
|
||||||
body-parser "1.19.0"
|
body-parser "1.19.0"
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
connect "^3.7.0"
|
connect "^3.7.0"
|
||||||
fs-extra "9.0.0"
|
fs-extra "9.0.0"
|
||||||
|
is-docker "^2.0.0"
|
||||||
|
is-wsl "^2.1.1"
|
||||||
node-fetch "^2.6.0"
|
node-fetch "^2.6.0"
|
||||||
open "^8.3.0"
|
open "^8.3.0"
|
||||||
resolve-from "^5.0.0"
|
resolve-from "^5.0.0"
|
||||||
|
@ -3760,10 +3845,10 @@
|
||||||
tmp "^0.0.33"
|
tmp "^0.0.33"
|
||||||
tslib "^1.10.0"
|
tslib "^1.10.0"
|
||||||
|
|
||||||
"@expo/image-utils@0.3.20":
|
"@expo/image-utils@0.3.22":
|
||||||
version "0.3.20"
|
version "0.3.22"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.20.tgz#b8777a2ca18e331f084e62ee8e0f047a6fc52c16"
|
resolved "https://registry.yarnpkg.com/@expo/image-utils/-/image-utils-0.3.22.tgz#3a45fb2e268d20fcc761c87bca3aca7fd8e24260"
|
||||||
integrity sha512-NgF/80XENyCS+amwC0P6uk1fauEtUq7gijD19jvl2xknJaADq8M2dMCRHwWMVOXosr2v46f3Z++G/NjmyOVS7A==
|
integrity sha512-uzq+RERAtkWypOFOLssFnXXqEqKjNj9eXN7e97d/EXUAojNcLDoXc0sL+F5B1I4qtlsnhX01kcpoIBBZD8wZNQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/spawn-async" "1.5.0"
|
"@expo/spawn-async" "1.5.0"
|
||||||
chalk "^4.0.0"
|
chalk "^4.0.0"
|
||||||
|
@ -3786,12 +3871,12 @@
|
||||||
json5 "^1.0.1"
|
json5 "^1.0.1"
|
||||||
write-file-atomic "^2.3.0"
|
write-file-atomic "^2.3.0"
|
||||||
|
|
||||||
"@expo/metro-config@~0.3.18":
|
"@expo/metro-config@~0.5.0", "@expo/metro-config@~0.5.1":
|
||||||
version "0.3.22"
|
version "0.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.3.22.tgz#fa4a0729ec8ecbc9c9fb79c63ecc66a299505c82"
|
resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.5.1.tgz#58c715041e1773ad653519535c017138bfc766de"
|
||||||
integrity sha512-R81sLbaeUBjN8IXcxiVx7GcpSj8z7szILl1b5yJDb38WdIFwxhrseA5wXaTT1yMhI+59w6n99T2qtFV2yD5qYA==
|
integrity sha512-Rvy4ZFgKNDfXO401z2OQF8fWbPj1lLVDL4GF1aqCIhCDHCKrezbwB0xejpcUyndJRCxBL2BMAM+P24t6cKv9Fw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/config" "7.0.1"
|
"@expo/config" "~7.0.2"
|
||||||
"@expo/json-file" "8.2.36"
|
"@expo/json-file" "8.2.36"
|
||||||
chalk "^4.1.0"
|
chalk "^4.1.0"
|
||||||
debug "^4.3.2"
|
debug "^4.3.2"
|
||||||
|
@ -3833,15 +3918,15 @@
|
||||||
base64-js "^1.2.3"
|
base64-js "^1.2.3"
|
||||||
xmlbuilder "^14.0.0"
|
xmlbuilder "^14.0.0"
|
||||||
|
|
||||||
"@expo/prebuild-config@~5.0.3":
|
"@expo/prebuild-config@5.0.7":
|
||||||
version "5.0.3"
|
version "5.0.7"
|
||||||
resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-5.0.3.tgz#f475797a592f074b5a66f02aef27c6c14c54591e"
|
resolved "https://registry.yarnpkg.com/@expo/prebuild-config/-/prebuild-config-5.0.7.tgz#4658b66126c4d32c7b6302571e458a71811b07aa"
|
||||||
integrity sha512-G4j1H3WFjRaiQ+FgFNULrnIm7RsQyjc4xp6lLTP2ydBv79wO3x8wAdeZvaZh7eOkfu9BESpQzACT1uuJTag5jg==
|
integrity sha512-D+TBpJUHe4+oTGFPb4o0rrw/h1xxc6wF+abJnbDHUkhnaeiHkE2O3ByS7FdiZ2FT36t0OKqeSKG/xFwWT3m1Ew==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/config" "7.0.1"
|
"@expo/config" "~7.0.2"
|
||||||
"@expo/config-plugins" "~5.0.1"
|
"@expo/config-plugins" "~5.0.3"
|
||||||
"@expo/config-types" "^46.0.0"
|
"@expo/config-types" "^47.0.0"
|
||||||
"@expo/image-utils" "0.3.20"
|
"@expo/image-utils" "0.3.22"
|
||||||
"@expo/json-file" "8.2.36"
|
"@expo/json-file" "8.2.36"
|
||||||
debug "^4.3.1"
|
debug "^4.3.1"
|
||||||
fs-extra "^9.0.0"
|
fs-extra "^9.0.0"
|
||||||
|
@ -7623,17 +7708,18 @@ babel-preset-current-node-syntax@^1.0.0:
|
||||||
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
|
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
|
||||||
"@babel/plugin-syntax-top-level-await" "^7.8.3"
|
"@babel/plugin-syntax-top-level-await" "^7.8.3"
|
||||||
|
|
||||||
babel-preset-expo@~9.2.0:
|
babel-preset-expo@~9.2.2:
|
||||||
version "9.2.0"
|
version "9.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-9.2.0.tgz#d01793e3a556065f103b3095fbbc959d52f08e88"
|
resolved "https://registry.yarnpkg.com/babel-preset-expo/-/babel-preset-expo-9.2.2.tgz#3f3819a224bbc32cefebb5d97a40c950a2f7ae2e"
|
||||||
integrity sha512-aM2htiNx0H49H+MWCp9+cKVSdcdNSn0tbE5Dln/GO1xna4ZlnA30clbfClcYJFUcZtW90IsYeZwQ/hj8zyWhNA==
|
integrity sha512-69cSPObZWFz0AaUT6IhCu2VzPVTICUtXzhX5ecoDttFe+9wb9yMV8m7rBNZptJQ3wtiKB5iEL7/wvtKygPz/mQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/plugin-proposal-decorators" "^7.12.9"
|
"@babel/plugin-proposal-decorators" "^7.12.9"
|
||||||
|
"@babel/plugin-proposal-object-rest-spread" "^7.12.13"
|
||||||
"@babel/plugin-transform-react-jsx" "^7.12.17"
|
"@babel/plugin-transform-react-jsx" "^7.12.17"
|
||||||
"@babel/preset-env" "^7.12.9"
|
"@babel/preset-env" "^7.12.9"
|
||||||
babel-plugin-module-resolver "^4.1.0"
|
babel-plugin-module-resolver "^4.1.0"
|
||||||
babel-plugin-react-native-web "~0.18.2"
|
babel-plugin-react-native-web "~0.18.2"
|
||||||
metro-react-native-babel-preset "~0.70.3"
|
metro-react-native-babel-preset "0.72.3"
|
||||||
|
|
||||||
babel-preset-fbjs@^3.4.0:
|
babel-preset-fbjs@^3.4.0:
|
||||||
version "3.4.0"
|
version "3.4.0"
|
||||||
|
@ -10628,19 +10714,19 @@ expo-apple-authentication@4.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/config-plugins" "^4.0.14"
|
"@expo/config-plugins" "^4.0.14"
|
||||||
|
|
||||||
expo-application@~4.2.2:
|
expo-application@~5.0.1:
|
||||||
version "4.2.2"
|
version "5.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-4.2.2.tgz#c9500819723c59eaee5ca9832bf17d1fd4139f74"
|
resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-5.0.1.tgz#628aeee74697d7aa39d0c0173dbf9383e06e53e9"
|
||||||
integrity sha512-bFEaFRUdV6aK2iBd+HzkHNPYsyj88EAhaQW5leznmO0qQMJxpAQ3eoUXMey1hfDBh1qgkkHgSyCZ9BIgMAGJ1g==
|
integrity sha512-bThxK5zH/Lc2tkCvEXGjfM7ayvOVmPWYcWzXsMIU1RtG73TyXo4cq+73FvfDNIWn6gKS0WyMcmoPB3WXEV/jsw==
|
||||||
|
|
||||||
expo-asset@~8.6.1:
|
expo-asset@~8.6.2:
|
||||||
version "8.6.1"
|
version "8.6.2"
|
||||||
resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-8.6.1.tgz#86355b3e231e8aa6cf68a456ce9746dff1478b48"
|
resolved "https://registry.yarnpkg.com/expo-asset/-/expo-asset-8.6.2.tgz#607dbbed988f7fc54a6f37cd33f86a2388264b4b"
|
||||||
integrity sha512-urbUp1YtwH2J0Qc3inGQJdqTjWKML77SeMNgff+iR9MUE8gDkFqSCDjrBi7i5Oj5DDtq43mmtDg8G8ei6Vchcg==
|
integrity sha512-XqlXjkuUCEiojbHwbHPjQs1oboRz6w3eV96+9NBD+wb3EUqgAAYY2Do+IWyVCAl8UIFbFi3xzMiqk0Xm9+H8uQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
blueimp-md5 "^2.10.0"
|
blueimp-md5 "^2.10.0"
|
||||||
expo-constants "~13.2.2"
|
expo-constants "~14.0.0"
|
||||||
expo-file-system "~14.1.0"
|
expo-file-system "~15.1.0"
|
||||||
invariant "^2.2.4"
|
invariant "^2.2.4"
|
||||||
md5-file "^3.2.3"
|
md5-file "^3.2.3"
|
||||||
path-browserify "^1.0.0"
|
path-browserify "^1.0.0"
|
||||||
|
@ -10653,28 +10739,20 @@ expo-av@11.2.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/config-plugins" "^4.0.14"
|
"@expo/config-plugins" "^4.0.14"
|
||||||
|
|
||||||
expo-constants@~13.2.2, expo-constants@~13.2.4:
|
expo-constants@~14.0.0, expo-constants@~14.0.2:
|
||||||
version "13.2.4"
|
version "14.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-13.2.4.tgz#eab4a553f074b2c60ad7a158d3b82e3484a94606"
|
resolved "https://registry.yarnpkg.com/expo-constants/-/expo-constants-14.0.2.tgz#2cb1dec8f41a64c2fc5b4eecaf77d7661cad01cc"
|
||||||
integrity sha512-Zobau8EuTk2GgafwkfGnWM6CmSLB7X8qnQXVuXe0nd3v92hfQUmRWGhJwH88uxXj3LrfqctM6PaJ8taG1vxfBw==
|
integrity sha512-wzV3nrzTXTI8yG0tfas3fnqCfKV6YE+1GphEREyVDAShEB6mBInX1b6HgtpHFy2wOtnml+lPVmTCeGtjjLnZhA==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@expo/config" "~7.0.0"
|
"@expo/config" "~7.0.2"
|
||||||
uuid "^3.3.2"
|
uuid "^3.3.2"
|
||||||
|
|
||||||
expo-error-recovery@~3.2.0:
|
expo-error-recovery@~4.0.1:
|
||||||
version "3.2.0"
|
version "4.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/expo-error-recovery/-/expo-error-recovery-3.2.0.tgz#3a4543382904a5e70829cb41d7fc0f022c2bef6e"
|
resolved "https://registry.yarnpkg.com/expo-error-recovery/-/expo-error-recovery-4.0.1.tgz#3e3333e134c992c234539d3773fe78915c883755"
|
||||||
integrity sha512-XZ630ks5HNxa9oc2Ya1hEn1ez031Cy4VnyxerPC2o9fKNKSrD/64cRqGF9NkGM3X2uf8+PCB9adxVflAIXBf6w==
|
integrity sha512-wceptnRX+N3qCSVTNbIchUFu3GmY30onRH5L66OF8HMLpAIQfrZMLxJfz7SAMJTcr3jxsJ11vSa2l2RaPKgHsQ==
|
||||||
|
|
||||||
expo-file-system@14.0.0:
|
expo-file-system@^14.1.0:
|
||||||
version "14.0.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-14.0.0.tgz#8367af10969a486fcba2f1e1c7cc0148f855e962"
|
|
||||||
integrity sha512-Asva7ehLUq/PIem6Y+/OQvoIqhFqYDd7l4l49yDRDgLSbK2I7Fr8qGhDeDpnUXrMVamg2uwt9zRGhyrjFNRhVw==
|
|
||||||
dependencies:
|
|
||||||
"@expo/config-plugins" "^4.0.14"
|
|
||||||
uuid "^3.4.0"
|
|
||||||
|
|
||||||
expo-file-system@~14.1.0:
|
|
||||||
version "14.1.0"
|
version "14.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-14.1.0.tgz#4fa410873ef12ac8bec873593f7489f4305a14b8"
|
resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-14.1.0.tgz#4fa410873ef12ac8bec873593f7489f4305a14b8"
|
||||||
integrity sha512-lJcPGQ8yKXVknVkD5TmcJnR/TpQbEL0JP8hknLejfq3FIqPqI/LBFn31YiP37grxW8lITz1al8pq5T6CSUjAzQ==
|
integrity sha512-lJcPGQ8yKXVknVkD5TmcJnR/TpQbEL0JP8hknLejfq3FIqPqI/LBFn31YiP37grxW8lITz1al8pq5T6CSUjAzQ==
|
||||||
|
@ -10682,27 +10760,42 @@ expo-file-system@~14.1.0:
|
||||||
"@expo/config-plugins" "~5.0.0"
|
"@expo/config-plugins" "~5.0.0"
|
||||||
uuid "^3.4.0"
|
uuid "^3.4.0"
|
||||||
|
|
||||||
expo-font@~10.2.0:
|
expo-file-system@~15.1.0, expo-file-system@~15.1.1:
|
||||||
version "10.2.0"
|
version "15.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-10.2.0.tgz#881f767e13b2b534a4d3ffaedcf675ce6b63439d"
|
resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-15.1.1.tgz#724090f83ff1e6378cadc0a64b83552f769eb16b"
|
||||||
integrity sha512-2V4EcpmhNoppaLn+lPprZVS+3bmV9hxLPKttKh2u8ghjH/oX9bv3u4JVo77SYh0EfrWO4toqVyXn8pXH8GpbIg==
|
integrity sha512-MYYDKxjLo9VOkvGHqym5EOAUS+ero9O66X5zI+EXJzqNznKvnfScdXeeAaQzShmWtmLkdVDCoYFGOaTvTA1wTQ==
|
||||||
|
dependencies:
|
||||||
|
uuid "^3.4.0"
|
||||||
|
|
||||||
|
expo-font@~11.0.1:
|
||||||
|
version "11.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.0.1.tgz#0758ce4e505995d0193a33e3c4325b35bf1fb7f7"
|
||||||
|
integrity sha512-LGAIluWZfru0J0n87dzb6pwAB6TVMTEiLcsd/ktozzbn4DlN7SeQy40+ruU6bvAKCOGrnRneYbKSIOGkrd7oNg==
|
||||||
dependencies:
|
dependencies:
|
||||||
fontfaceobserver "^2.1.0"
|
fontfaceobserver "^2.1.0"
|
||||||
|
|
||||||
expo-haptics@11.2.0:
|
expo-haptics@12.0.1:
|
||||||
version "11.2.0"
|
version "12.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-11.2.0.tgz#0ffb9f82395e88f9f66ceebb0f3279739311412c"
|
resolved "https://registry.yarnpkg.com/expo-haptics/-/expo-haptics-12.0.1.tgz#151dc57bc01c1fa16d021e4714b23916bbc9f8e5"
|
||||||
integrity sha512-ijuWU2ljLBGjIf7OQCvnBQIu/chezndnWkfi518XxvK0hudA4+fAe98mqHO6hom9GexNRxhQZbXc0hcVnxkaiA==
|
integrity sha512-YubK3P3WTdjp5mFZcaF3ienqXHoDqzPpe61yTEIR5y+CVWqk+If9cC3ZYxn6lSp8KiNUmz7zC0GvUAVEqn8t6Q==
|
||||||
|
|
||||||
expo-keep-awake@10.1.1:
|
expo-image-loader@~4.0.0:
|
||||||
version "10.1.1"
|
version "4.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-10.1.1.tgz#03023c130f7e3824b738e3fdd5353b8a2c0c1980"
|
resolved "https://registry.yarnpkg.com/expo-image-loader/-/expo-image-loader-4.0.0.tgz#a17e5f95a4c1671791168dd5dfc221bf2f88480c"
|
||||||
integrity sha512-9zC0sdhQljUeMr2yQ7o4kzEZXVAy82fFOAZE1+TwPL7qR0b0sphe7OJ5T1GX1qLcwuVaJ8YewaPoLSHRk79+Rg==
|
integrity sha512-hVMhXagsO1cSng5s70IEjuJAuHy2hX/inu5MM3T0ecJMf7L/7detKf22molQBRymerbk6Tzu+20h11eU0n/3jQ==
|
||||||
|
|
||||||
expo-keep-awake@~10.2.0:
|
expo-image-picker@^14.0.2:
|
||||||
version "10.2.0"
|
version "14.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-10.2.0.tgz#46f04740bccd321732bbbed93491e2076d5dbbd7"
|
resolved "https://registry.yarnpkg.com/expo-image-picker/-/expo-image-picker-14.0.2.tgz#a611a43142be4c6f763ee39efd80e55f5a414ed7"
|
||||||
integrity sha512-kIRtO4Hmrvxh4E45IPWG/NiUZsuRe1AQwBT09pq+kx8nm6tUS4B9TeL6+1NFy+qVBLbGKDqoQD5Ez7XYTFtBeQ==
|
integrity sha512-dC0efykReusbjOtcvXYagABrVuwuOFwTfEx87VNjCZejig5aIPPj14UsViSV7xEQ+wkHvVnxyirox5xIbD196w==
|
||||||
|
dependencies:
|
||||||
|
expo-image-loader "~4.0.0"
|
||||||
|
uuid "7.0.2"
|
||||||
|
|
||||||
|
expo-keep-awake@11.0.1, expo-keep-awake@~11.0.1:
|
||||||
|
version "11.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-11.0.1.tgz#ee354465892a94040ffe09901b85b469e7d54fb3"
|
||||||
|
integrity sha512-44ZjgLE4lnce2d40Pv8xsjMVc6R5GvgHOwZfkLYtGmgYG9TYrEJeEj5UfSeweXPL3pBFhXKfFU8xpGYMaHdP0A==
|
||||||
|
|
||||||
expo-local-authentication@12.2.0:
|
expo-local-authentication@12.2.0:
|
||||||
version "12.2.0"
|
version "12.2.0"
|
||||||
|
@ -10712,10 +10805,10 @@ expo-local-authentication@12.2.0:
|
||||||
"@expo/config-plugins" "^4.0.14"
|
"@expo/config-plugins" "^4.0.14"
|
||||||
invariant "^2.2.4"
|
invariant "^2.2.4"
|
||||||
|
|
||||||
expo-modules-autolinking@0.10.3:
|
expo-modules-autolinking@1.0.0:
|
||||||
version "0.10.3"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-0.10.3.tgz#31bfcf3e4b613a7c3949fb1f1e9c23eea4c14caf"
|
resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.0.0.tgz#2daac20035e1ecf8e66d74dca9bd1b0d6c09166c"
|
||||||
integrity sha512-av9ln2zwUt303g98raX7sDmESgL3SXs1sbbtIjh1rL7R0676XIUacIKgbydR0/4tMbOShWx14Z9fozpk9xIAJA==
|
integrity sha512-MoRRkOVMoGUH/Lr8XS6UmBIZT/qrwbRt2IzUBALcM6MWZKtDn9Uct9XgMRxue82FJhRCfy9p1xZJVKHBRo4zEA==
|
||||||
dependencies:
|
dependencies:
|
||||||
chalk "^4.1.0"
|
chalk "^4.1.0"
|
||||||
commander "^7.2.0"
|
commander "^7.2.0"
|
||||||
|
@ -10723,10 +10816,10 @@ expo-modules-autolinking@0.10.3:
|
||||||
find-up "^5.0.0"
|
find-up "^5.0.0"
|
||||||
fs-extra "^9.1.0"
|
fs-extra "^9.1.0"
|
||||||
|
|
||||||
expo-modules-core@0.11.4:
|
expo-modules-core@1.0.3:
|
||||||
version "0.11.4"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-0.11.4.tgz#6b7a27bb212f3fbf7d6803f747f6491aa73a2a09"
|
resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.0.3.tgz#3d94da3524e7e7d81ae1e7e632a5e0e24db0f3f1"
|
||||||
integrity sha512-8dEYICk7hUi1GPz5hWm8dBuZDGc+4Tm7zDhSIhKApo5jY/5vB4Bk+fjPo693iWn6pp3+XBHT8Ri8rJ3G7wH1vQ==
|
integrity sha512-XqyA5c+zsK+cHDNVBVYu62HLBHyGMG0iWpXVP0bBQJWz0eyg5rcuEqLsnRTmoEz0YnH6QBf/cwRl+FfgnnH5Og==
|
||||||
dependencies:
|
dependencies:
|
||||||
compare-versions "^3.4.0"
|
compare-versions "^3.4.0"
|
||||||
invariant "^2.2.4"
|
invariant "^2.2.4"
|
||||||
|
@ -10736,31 +10829,33 @@ expo-video-thumbnails@6.3.0:
|
||||||
resolved "https://registry.yarnpkg.com/expo-video-thumbnails/-/expo-video-thumbnails-6.3.0.tgz#07daa798ad175242fef4e62c8f2040b11606a41b"
|
resolved "https://registry.yarnpkg.com/expo-video-thumbnails/-/expo-video-thumbnails-6.3.0.tgz#07daa798ad175242fef4e62c8f2040b11606a41b"
|
||||||
integrity sha512-oVy9XlzNxnpXFDz3FiWOrMOBWmYtZrNYnXc3XaVyj8ayRqwDNvW4P95kQeUhB04uwaMDOm4vIxc5SQxDAyxPGg==
|
integrity sha512-oVy9XlzNxnpXFDz3FiWOrMOBWmYtZrNYnXc3XaVyj8ayRqwDNvW4P95kQeUhB04uwaMDOm4vIxc5SQxDAyxPGg==
|
||||||
|
|
||||||
expo-web-browser@10.2.1:
|
expo-web-browser@12.0.0:
|
||||||
version "10.2.1"
|
version "12.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/expo-web-browser/-/expo-web-browser-10.2.1.tgz#4bd9214f7aefcd1af6ea26ae068a0e3e25a1e0bd"
|
resolved "https://registry.yarnpkg.com/expo-web-browser/-/expo-web-browser-12.0.0.tgz#c8e117bfd6357df05ae3cf85acb423b44c4f6304"
|
||||||
integrity sha512-om34EL7OX5ouBM/hq2PrjHDLKmjVhAy+1H7YqRY6nS8dWsewnLFdLq4d8GPwWQBYb6kHKYVzwFRj+WLTfpAOBQ==
|
integrity sha512-7/RUuE0sv5kf+mTw5/SOnks0Am1ctoxvT1Xi53Nom2EuXTKBV+b2Kf5xAw3ItoW5W4MHJUX3FdNI6qc9sS9+Pw==
|
||||||
dependencies:
|
dependencies:
|
||||||
compare-urls "^2.0.0"
|
compare-urls "^2.0.0"
|
||||||
|
|
||||||
expo@^46.0.9:
|
expo@^47.0.8:
|
||||||
version "46.0.9"
|
version "47.0.8"
|
||||||
resolved "https://registry.yarnpkg.com/expo/-/expo-46.0.9.tgz#4b4b943343c45c3a05c71da49c1cfd5555ab5f85"
|
resolved "https://registry.yarnpkg.com/expo/-/expo-47.0.8.tgz#80390fd63f8305103445069c647011915f7c32dd"
|
||||||
integrity sha512-UsBjm0BL7w+OyF6kypVPrk3jhg9cCXF0D9CaOWQ+cedm7oT4mTVQx9+A45VsDvLzNWBjJejZQZ1PFKqOY5HNcQ==
|
integrity sha512-PGNCIvrnYwHH4TDFsVocq/xhWZ5DW8N3bLkZJPZZgX6VgjtVLNsbZ+0lm1inLCZHP+6xSpSKRccjGHO/QQoMBQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.14.0"
|
"@babel/runtime" "^7.14.0"
|
||||||
"@expo/cli" "0.2.11"
|
"@expo/cli" "0.4.10"
|
||||||
|
"@expo/config" "7.0.3"
|
||||||
|
"@expo/config-plugins" "5.0.4"
|
||||||
"@expo/vector-icons" "^13.0.0"
|
"@expo/vector-icons" "^13.0.0"
|
||||||
babel-preset-expo "~9.2.0"
|
babel-preset-expo "~9.2.2"
|
||||||
cross-spawn "^6.0.5"
|
cross-spawn "^6.0.5"
|
||||||
expo-application "~4.2.2"
|
expo-application "~5.0.1"
|
||||||
expo-asset "~8.6.1"
|
expo-asset "~8.6.2"
|
||||||
expo-constants "~13.2.4"
|
expo-constants "~14.0.2"
|
||||||
expo-file-system "~14.1.0"
|
expo-file-system "~15.1.1"
|
||||||
expo-font "~10.2.0"
|
expo-font "~11.0.1"
|
||||||
expo-keep-awake "~10.2.0"
|
expo-keep-awake "~11.0.1"
|
||||||
expo-modules-autolinking "0.10.3"
|
expo-modules-autolinking "1.0.0"
|
||||||
expo-modules-core "0.11.4"
|
expo-modules-core "1.0.3"
|
||||||
fbemitter "^3.0.0"
|
fbemitter "^3.0.0"
|
||||||
getenv "^1.0.0"
|
getenv "^1.0.0"
|
||||||
invariant "^2.2.4"
|
invariant "^2.2.4"
|
||||||
|
@ -10769,7 +10864,7 @@ expo@^46.0.9:
|
||||||
pretty-format "^26.5.2"
|
pretty-format "^26.5.2"
|
||||||
uuid "^3.4.0"
|
uuid "^3.4.0"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
expo-error-recovery "~3.2.0"
|
expo-error-recovery "~4.0.1"
|
||||||
|
|
||||||
express@^4.17.1:
|
express@^4.17.1:
|
||||||
version "4.18.1"
|
version "4.18.1"
|
||||||
|
@ -12227,6 +12322,14 @@ https-proxy-agent@^5.0.0:
|
||||||
agent-base "6"
|
agent-base "6"
|
||||||
debug "4"
|
debug "4"
|
||||||
|
|
||||||
|
https-proxy-agent@^5.0.1:
|
||||||
|
version "5.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
|
||||||
|
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
|
||||||
|
dependencies:
|
||||||
|
agent-base "6"
|
||||||
|
debug "4"
|
||||||
|
|
||||||
human-signals@^2.1.0:
|
human-signals@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
|
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
|
||||||
|
@ -14689,10 +14792,10 @@ metro-react-native-babel-preset@0.67.0, metro-react-native-babel-preset@^0.67.0:
|
||||||
"@babel/template" "^7.0.0"
|
"@babel/template" "^7.0.0"
|
||||||
react-refresh "^0.4.0"
|
react-refresh "^0.4.0"
|
||||||
|
|
||||||
metro-react-native-babel-preset@~0.70.3:
|
metro-react-native-babel-preset@0.72.3:
|
||||||
version "0.70.3"
|
version "0.72.3"
|
||||||
resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.70.3.tgz#1c77ec4544ecd5fb6c803e70b21284d7483e4842"
|
resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.72.3.tgz#e549199fa310fef34364fdf19bd210afd0c89432"
|
||||||
integrity sha512-4Nxc1zEiHEu+GTdEMEsHnRgfaBkg8f/Td3+FcQ8NTSvs+xL3LBrQy6N07idWSQZHIdGFf+tTHvRfSIWLD8u8Tg==
|
integrity sha512-uJx9y/1NIqoYTp6ZW1osJ7U5ZrXGAJbOQ/Qzl05BdGYvN1S7Qmbzid6xOirgK0EIT0pJKEEh1s8qbassYZe4cw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/core" "^7.14.0"
|
"@babel/core" "^7.14.0"
|
||||||
"@babel/plugin-proposal-async-generator-functions" "^7.0.0"
|
"@babel/plugin-proposal-async-generator-functions" "^7.0.0"
|
||||||
|
@ -17156,9 +17259,10 @@ react-native-gradle-plugin@^0.0.6:
|
||||||
resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.6.tgz#b61a9234ad2f61430937911003cddd7e15c72b45"
|
resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.6.tgz#b61a9234ad2f61430937911003cddd7e15c72b45"
|
||||||
integrity sha512-eIlgtsmDp1jLC24dRn43hB3kEcZVqx6DUQbR0N1ABXGnMEafm9I3V3dUUeD1vh+Dy5WqijSoEwLNUPLgu5zDMg==
|
integrity sha512-eIlgtsmDp1jLC24dRn43hB3kEcZVqx6DUQbR0N1ABXGnMEafm9I3V3dUUeD1vh+Dy5WqijSoEwLNUPLgu5zDMg==
|
||||||
|
|
||||||
react-native-image-crop-picker@RocketChat/react-native-image-crop-picker:
|
react-native-image-crop-picker@^0.38.0:
|
||||||
version "0.36.3"
|
version "0.38.0"
|
||||||
resolved "https://codeload.github.com/RocketChat/react-native-image-crop-picker/tar.gz/f347776247afb5cbd1400dde215689d7ca8fd6f2"
|
resolved "https://registry.yarnpkg.com/react-native-image-crop-picker/-/react-native-image-crop-picker-0.38.0.tgz#3f67a0ec40618e3cd6e05d3e7b90e70d01eaddf8"
|
||||||
|
integrity sha512-FaLASXOP7R23pi20vMiVlXl0Y7cwTdl7y7yBqrlrsSH9gl9ibsU5y4mYWPYRbe8x9F/3zPGUE+1F0Gj/QF/peg==
|
||||||
|
|
||||||
react-native-image-progress@^1.1.1:
|
react-native-image-progress@^1.1.1:
|
||||||
version "1.1.1"
|
version "1.1.1"
|
||||||
|
@ -20358,6 +20462,11 @@ utils-merge@1.0.1:
|
||||||
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
|
resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
|
||||||
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
|
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
|
||||||
|
|
||||||
|
uuid@7.0.2:
|
||||||
|
version "7.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.2.tgz#7ff5c203467e91f5e0d85cfcbaaf7d2ebbca9be6"
|
||||||
|
integrity sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw==
|
||||||
|
|
||||||
uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0:
|
uuid@^3.0.1, uuid@^3.3.2, uuid@^3.4.0:
|
||||||
version "3.4.0"
|
version "3.4.0"
|
||||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||||
|
|
Loading…
Reference in New Issue