Files
hipmi-mobile/app/(application)/coba/upload-service.ts
Bagasbanuna02 bb95e8ccbd API
Add:
- service/api-client/api-file.ts: upload & delete

Portofolio
Fix:
- user)/portofolio/[id]/create.tsx: Loading submit
- (user)/portofolio/[id]/index.tsx: Delete button recode

Profile
Fix:
- (user)/profile/[id]/update-photo && upload-backgroud: delete image yang kama

### No Issue
2025-09-01 12:11:21 +08:00

69 lines
1.5 KiB
TypeScript

/* eslint-disable @typescript-eslint/no-unused-vars */
import { apiConfig } from "@/service/api-config";
import Toast from "react-native-toast-message";
export default async function tryUploadService({
dirId,
imageUri,
}: {
dirId: string;
imageUri: string | null;
}) {
if (!imageUri) {
Toast.show({
type: "error",
text1: "Gagal",
text2: "Harap pilih gambar terlebih dahulu",
});
return;
}
try {
const uri = imageUri;
const filename = uri.split("/").pop();
const match = /\.(\w+)$/.exec(filename || "");
const type = match ? `image/${match[1]}` : "image";
const formData = new FormData();
// @ts-ignore: React Native tidak mengenal Blob secara langsung
formData.append("file", {
uri,
name: filename,
type,
});
formData.append("dirId", dirId);
const response = await apiConfig.post("/mobile/upload", formData, {
headers: {
"Content-Type": "multipart/form-data",
},
timeout: 30000,
});
console.log("Response", JSON.stringify(response.data, null, 2));
const { data } = response;
if (!data.success) {
Toast.show({
type: "error",
text1: "Gagal",
text2: data.message,
});
return;
}
Toast.show({
type: "success",
text1: "File berhasil diunggah",
});
return data;
} catch (error) {
Toast.show({
type: "error",
text1: "File gagal diunggah",
});
}
}