41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
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;
|