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

143 lines
2.8 KiB
TypeScript
Raw Normal View History

2025-12-26 14:03:57 +07:00
'use server'
import { getSessionData } from '@/app/actions/session';
2025-12-26 17:56:57 +07:00
import { API_BASE_URL } from '@/app/actions/definitions';
2025-12-26 14:03:57 +07:00
2026-01-09 12:35:48 +07:00
export async function getUserFilesData(page: number, pageSize: number) {
2025-12-26 14:03:57 +07:00
const token = await getSessionData('token');
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 20005,
message_body: {
action: 'user_files',
2026-01-09 12:35:48 +07:00
page: page,
page_size: pageSize,
2025-12-26 14:03:57 +07:00
token: token
}
}),
headers: {
2026-01-28 18:53:08 +07:00
'Content-Type': 'application/json',
'Accept': 'application/json'
2025-12-26 14:03:57 +07:00
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed.message_code === 0) {
return parsed.message_body;
} else {
throw parsed;
}
} else {
throw (`${response.status}`);
}
} catch (error) {
return error
}
}
2026-01-27 19:52:01 +07:00
export async function removeUserFile(fileId: string, fullDelete: number) {
2025-12-26 14:03:57 +07:00
const token = await getSessionData('token');
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 20005,
message_body: {
action: 'delete_file',
file_id: fileId,
2026-01-27 19:52:01 +07:00
full_delete: fullDelete,
2025-12-26 14:03:57 +07:00
token: token
}
}),
headers: {
2026-01-28 18:53:08 +07:00
'Content-Type': 'application/json',
'Accept': 'application/json'
2025-12-26 14:03:57 +07:00
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed.message_code === 0) {
return parsed.message_body.file_id;
} else {
throw parsed;
}
} else {
throw (`${response.status}`);
}
2026-01-27 19:52:01 +07:00
} catch (error) {
return error
}
}
2026-01-28 18:53:08 +07:00
export async function viewFileInfo(fileId: string) {
const token = await getSessionData('token');
try {
const response = await fetch(`${API_BASE_URL}/api/v1/data`, {
method: 'POST',
body: JSON.stringify({
version: 1,
msg_id: 20005,
message_body: {
action: 'file_info',
file_id: fileId,
token: token
}
}),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
2026-01-27 19:52:01 +07:00
}
});
if (response.ok) {
let parsed = await response.json();
if (parsed.message_code === 0) {
return parsed.message_body;
} else {
throw parsed;
}
} else {
throw (`${response.status}`);
}
2025-12-26 14:03:57 +07:00
} catch (error) {
return error
}
2026-03-09 13:04:28 +07:00
}
export async function downloadFile(fileId: string, fileName: string) {
2026-03-12 17:44:02 +07:00
const token = await getSessionData('token');
2026-03-09 13:04:28 +07:00
const response = await fetch(`${API_BASE_URL}/api/v1/files/download/${fileId}`, {
headers: {
'Authorization': `Bearer ${token}`,
},
})
if (!response.ok) {
throw 'failed-to-download-file';
}
const arrayBuffer = await response.arrayBuffer()
const base64 = Buffer.from(arrayBuffer).toString('base64')
return {
data: base64,
contentType: response.headers.get('content-type') || 'application/octet-stream',
fileName: fileName
}
2025-12-26 14:03:57 +07:00
}