Almost done with rewrite
This commit is contained in:
65
components/chat/mediaUtils.ts
Normal file
65
components/chat/mediaUtils.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
import { Alert } from 'react-native';
|
||||
import * as Linking from 'expo-linking';
|
||||
import * as Location from 'expo-location';
|
||||
import * as Permissions from 'expo-permissions';
|
||||
import * as ImagePicker from 'expo-image-picker';
|
||||
|
||||
export const getPermissionAsync = async (
|
||||
permission: Permissions.PermissionType) => {
|
||||
const {status} = await Permissions.askAsync(permission);
|
||||
if (status !== 'granted') {
|
||||
const permissionName = permission.toLowerCase().replace('_', ' ');
|
||||
Alert.alert(
|
||||
`Cannot access ${permissionName}`,
|
||||
`If you would like to use this feature, you will need to enable ` +
|
||||
`the ${permissionName} permission in your phone's settings.`,
|
||||
[
|
||||
{
|
||||
text: 'Let\'s go!',
|
||||
onPress: () => Linking.openURL('app-settings:'),
|
||||
},
|
||||
{
|
||||
text: 'Nevermind',
|
||||
onPress: () => {},
|
||||
style: 'cancel'
|
||||
},
|
||||
],
|
||||
{ cancelable: true }
|
||||
);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
export const getLocationAsync = async (
|
||||
onSend: (locations: { location: Location.LocationObjectCoords }[]) => void) => {
|
||||
const response = await Location.requestForegroundPermissionsAsync();
|
||||
if (!response.granted) return;
|
||||
const location = await Location.getCurrentPositionAsync();
|
||||
if (!location) return;
|
||||
onSend([{ location: location.coords }]);
|
||||
};
|
||||
|
||||
export const pickImageAsync = async (onSend: (images: {image: string}[]) => void) => {
|
||||
const response = await ImagePicker.requestMediaLibraryPermissionsAsync();
|
||||
if (!response.granted) return;
|
||||
const result = await ImagePicker.launchImageLibraryAsync({
|
||||
allowsEditing: true,
|
||||
aspect: [4, 3],
|
||||
});
|
||||
if (result.canceled) return;
|
||||
const images = result.assets.map(({ uri: image }) => ({ image }));
|
||||
onSend(images);
|
||||
};
|
||||
|
||||
export const takePictureAsync = async (onSend: (images: {image: string}[]) => void) => {
|
||||
const response = await ImagePicker.requestCameraPermissionsAsync();
|
||||
if (!response.granted) return;
|
||||
const result = await ImagePicker.launchCameraAsync({
|
||||
allowsEditing: true,
|
||||
aspect: [4, 3],
|
||||
});
|
||||
if (result.canceled) return;
|
||||
const images = result.assets.map(({ uri: image }) => ({ image }));
|
||||
onSend(images);
|
||||
};
|
||||
Reference in New Issue
Block a user