Files
no-copy-frontend/src/app/actions/file-upload.ts
T

146 lines
3.0 KiB
TypeScript
Raw Normal View History

2025-12-23 18:56:48 +07:00
'use server'
import { localDevelopmentUrl } from '@/app/actions/definitions';
import { getSessionData, createSession } from '@/app/actions/session';
import { number } from 'zod';
const API_BASE_URL = process.env.NODE_ENV === 'development'
? localDevelopmentUrl
: 'http://app:8080';
interface initMessageBody {
file_name: string,
file_type: string,
extension: string,
file_size: number | string,
action?: string,
token?: string
}
export async function fileUpload(messageBody: initMessageBody) {
const token = await getSessionData('token');
if (!token) {
return;
}
const message = messageBody;
message.action = "init";
message.token = token;
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 20004,
message_body: message
}),
headers: {
"Content-Type": "application/json",
"Accept": "application/json"
}
});
if (response.ok) {
let parsed = await response.json() as {
message_desc: string,
message_body: {
upload_id: string,
total_chunks: number,
chunk_size: number,
status: string
},
message_code: string
};
console.log(parsed);
if (parsed.message_desc === 'Operation successful') {
return parsed.message_body;
} else {
console.log('error fileUpload');
throw parsed;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return error;
}
}
export async function cancelUpload(udloadId: string) {
console.log('cancelUpload');
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 20004,
message_body: {
action: "cancel",
upload_id: udloadId,
}
}),
headers: {
"Content-Type": "application/json",
"Accept": "application/json"
}
});
if (response.ok) {
let parsed = await response.json() as {
message_code: string,
message_desc: string,
message_body: {
upload_id: string,
message: string
}
};
console.log(parsed);
if (parsed.message_desc === 'Upload cancelled successfully') {
return parsed.message_body;
} else {
console.log('error cancel upload');
throw parsed;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return error;
}
}
export async function chunkUpload(formData: FormData) {
console.log('chunkUpload');
console.log(`${API_BASE_URL}/api/v1/files/chunk`);
try {
const response = await fetch(`${API_BASE_URL}/api/v1/files/chunk`, {
method: 'POST',
body: formData
});
console.log(response);
if (response.ok) {
let parsed = await response.json();
console.log('response.ok');
console.log(parsed);
if (parsed.message_desc === 'Upload cancelled successfully') {
return parsed.message_body;
} else {
console.log('error cancel chunkUpload');
throw parsed;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return error
}
}