import { Alert } from "react-native"; import * as ImagePicker from "expo-image-picker"; import mime from "mime"; const uploadImage = async (storeKey: string) => { // No permissions request is necessary for launching the image library let result = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ImagePicker.MediaTypeOptions.All, allowsEditing: true, aspect: [4, 3], quality: 1, }); if (!result.canceled) { const image = result.assets[0]; const formData = new FormData(); formData.append("file", { uri: image.uri, type: mime.getType(image.uri), name: "file", } as unknown as File); const res = await fetch( `${process.env.EXPO_PUBLIC_BACKEND_URL}/?` + new URLSearchParams({ storeKey: storeKey, }), { method: "PUT", body: formData, mode: "cors", redirect: "follow", } ); if (!res.ok) { Alert.alert("Error!", "Server error! Please report to ak95@riseup.net"); } return image.uri; } }; export default uploadImage;