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:
Fringg
2026-03-23 11:58:18 +03:00
parent 8d994f75d9
commit 723591e5c3
8 changed files with 324 additions and 23 deletions

View File

@@ -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)}`);
},
};