blob: de88ba5a31f5df9aa812150011fd9ea2495f8f46 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import { API } from '../api.js';
import { state } from '../state.js';
import { toast } from '../utils.js';
let loadMediaCallback = () => {};
export function initUpload({ onLoadMedia } = {}) {
loadMediaCallback = onLoadMedia || (() => {});
const modal = document.getElementById('upload-modal');
const closeBtn = document.getElementById('upload-close');
const form = document.getElementById('upload-form');
const fileInput = document.getElementById('upload-file');
closeBtn?.addEventListener('click', () => modal?.classList.remove('open'));
modal?.addEventListener('click', (e) => {
if (e.target === modal) modal.classList.remove('open');
});
form?.addEventListener('submit', async (e) => {
e.preventDefault();
if (!state.selectedSetId) {
toast('Select a set first', 'error');
return;
}
const file = fileInput?.files[0];
if (!file) {
toast('Choose a file', 'error');
return;
}
const fd = new FormData();
fd.append('file', file);
try {
await API.upload(state.selectedSetId, fd);
toast('Upload complete');
fileInput.value = '';
modal?.classList.remove('open');
loadMediaCallback();
} catch (err) {
toast(err.message || 'Upload failed', 'error');
}
});
}
export function showUpload() {
const modal = document.getElementById('upload-modal');
modal?.classList.add('open');
}
|