'use server' import { getSessionData } from '@/app/actions/session'; import { API_BASE_URL } from '@/app/actions/definitions'; export async function getUserFilesData({ page, pageSize, sortBy, sortOrder, type, date, query = '' }: { page: number; pageSize: number; sortBy?: string; sortOrder?: 'asc' | 'desc' | string; type?: string; date?: string; query?: 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: 'search_files', page: page, page_size: pageSize, query: query, sort_by: sortBy || '', // protectStatus, fileName, fileSize, createdAt, updatedAt, supportId type: type || '', // image, video, document, audio date: date || '', // today, week, month sort_order: sortOrder } }), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': `Bearer ${token}` } }); if (response.ok) { let parsed = await response.json(); if (parsed.message_code === 0) { return parsed.message_body; } else { throw parsed.message_text ? parsed.message_text : 'error'; } } else { throw `${response.status}`; } } catch (error) { return error; } } export async function removeUserFile(fileId: string, fullDelete: number) { 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, full_delete: fullDelete, } }), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': `Bearer ${token}` } }); 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}`); } } catch (error) { return error } } 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 } }), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': `Bearer ${token}` } }); 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 } } export async function downloadFile(fileId: string, fileName: string) { const token = await getSessionData('token'); 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 } } export async function FileAnAppeal(fileId: string, appealReason: string, additionalInfo: 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: 'submit_appeal', file_id: fileId, appeal_reason: appealReason, additional_info: additionalInfo } }), headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': `Bearer ${token}` } }); if (response.ok) { let parsed = await response.json(); if (parsed.message_code === 0) { return parsed; } else { throw parsed; } } else { throw (`${response.status}`); } } catch (error) { return error } }