feat: web frontend with Alpine.js
This commit is contained in:
+38
-1
@@ -1 +1,38 @@
|
||||
// placeholder
|
||||
function app() {
|
||||
return {
|
||||
inboxFiles: [],
|
||||
outboxFiles: [],
|
||||
async loadFiles() {
|
||||
const [inbox, outbox] = await Promise.all([
|
||||
fetch('/api/files?dir=inbox').then(r => r.json()),
|
||||
fetch('/api/files?dir=outbox').then(r => r.json())
|
||||
]);
|
||||
this.inboxFiles = inbox.files || [];
|
||||
this.outboxFiles = outbox.files || [];
|
||||
},
|
||||
async upload(event, dir) {
|
||||
const file = event.target.files[0];
|
||||
const form = new FormData();
|
||||
form.append('file', file);
|
||||
form.append('dir', dir);
|
||||
await fetch('/api/upload', {method: 'POST', body: form});
|
||||
this.loadFiles();
|
||||
},
|
||||
download(id) {
|
||||
window.location.href = '/api/files/' + id + '/download';
|
||||
},
|
||||
async deleteFile(id) {
|
||||
await fetch('/api/files/' + id, {method: 'DELETE'});
|
||||
this.loadFiles();
|
||||
},
|
||||
async share(id) {
|
||||
const res = await fetch('/api/files/' + id + '/share', {method: 'POST'});
|
||||
const data = await res.json();
|
||||
alert('Share URL: ' + data.url);
|
||||
},
|
||||
async logout() {
|
||||
await fetch('/api/logout', {method: 'POST'});
|
||||
window.location.href = '/login';
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user