mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
feat: add media upload to news editor with drag-drop, paste, and file picker
Upload images/videos directly to server from editor. DOMPurify video sanitization, XSS protection, upload cancellation on unmount.
This commit is contained in:
@@ -4,6 +4,7 @@ import type {
|
||||
NewsListResponse,
|
||||
NewsCreateRequest,
|
||||
NewsUpdateRequest,
|
||||
NewsMediaUploadResponse,
|
||||
} from '../types/news';
|
||||
|
||||
export const newsApi = {
|
||||
@@ -56,4 +57,19 @@ export const newsApi = {
|
||||
const response = await apiClient.post<NewsArticle>(`/cabinet/admin/news/${id}/feature`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
uploadMedia: async (file: File): Promise<NewsMediaUploadResponse> => {
|
||||
const formData = new FormData();
|
||||
formData.append('file', file);
|
||||
const response = await apiClient.post<NewsMediaUploadResponse>(
|
||||
'/cabinet/admin/news/media/upload',
|
||||
formData,
|
||||
{ headers: { 'Content-Type': 'multipart/form-data' } },
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
deleteMedia: async (filename: string): Promise<void> => {
|
||||
await apiClient.delete(`/cabinet/admin/news/media/${encodeURIComponent(filename)}`);
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user