import axios from 'src/utils/axios'; // ---------------------------------------------------------------------- export async function getMaterials(params) { const res = await axios.get('/materials/materials/', { params }); const {data} = res; if (Array.isArray(data)) return { results: data, count: data.length }; return { results: data?.results ?? [], count: data?.count ?? 0 }; } export async function getMyMaterials() { const res = await axios.get('/materials/materials/my_materials/'); const {data} = res; if (Array.isArray(data)) return data; return data?.results ?? []; } export async function getMaterialById(id) { const res = await axios.get(`/materials/materials/${id}/`); return res.data; } export async function createMaterial(data) { const formData = new FormData(); formData.append('title', data.title); if (data.description) formData.append('description', data.description); if (data.file) formData.append('file', data.file); if (data.category) formData.append('category', String(data.category)); if (data.is_public !== undefined) formData.append('is_public', String(data.is_public)); const res = await axios.post('/materials/materials/', formData); return res.data; } export async function updateMaterial(id, data) { const formData = new FormData(); if (data.title) formData.append('title', data.title); if (data.description !== undefined) formData.append('description', data.description); if (data.file) formData.append('file', data.file); if (data.category) formData.append('category', String(data.category)); if (data.is_public !== undefined) formData.append('is_public', String(data.is_public)); const res = await axios.patch(`/materials/materials/${id}/`, formData); return res.data; } export async function deleteMaterial(id) { await axios.delete(`/materials/materials/${id}/`); } export async function shareMaterial(id, userIds) { await axios.post(`/materials/materials/${id}/share/`, { user_ids: userIds }); } export async function getMaterialCategories() { const res = await axios.get('/materials/categories/'); return res.data; } // Helper: icon by type export function getMaterialTypeIcon(material) { const type = material?.material_type; const mime = (material?.file_type || '').toLowerCase(); const name = material?.file_name || material?.file || ''; if (type === 'image' || mime.startsWith('image/') || /\.(jpe?g|png|gif|webp|bmp|svg)$/i.test(name)) return 'eva:image-outline'; if (type === 'video' || mime.startsWith('video/') || /\.(mp4|webm|mov|avi)$/i.test(name)) return 'eva:video-outline'; if (type === 'audio' || mime.startsWith('audio/') || /\.(mp3|wav|ogg|m4a)$/i.test(name)) return 'eva:headphones-outline'; if (type === 'document' || mime.includes('pdf') || /\.(pdf|docx?|odt)$/i.test(name)) return 'eva:file-text-outline'; if (type === 'presentation' || /\.(pptx?|odp)$/i.test(name)) return 'eva:monitor-outline'; if (type === 'archive' || /\.(zip|rar|7z|tar)$/i.test(name)) return 'eva:archive-outline'; return 'eva:file-outline'; }