This commit is contained in:
2023-03-01 20:14:00 +10:00
parent 86f44c8bab
commit 2b69d9985e

View File

@@ -17,7 +17,11 @@
label="Upload Media" /> --> label="Upload Media" /> -->
</template> </template>
<template #right> <template #right>
<input v-model="search" placeholder="Search" /> <SMInput
v-model="search"
label="Search"
:small="true"
style="max-width: 250px" />
</template> </template>
</SMToolbar> </SMToolbar>
@@ -56,22 +60,25 @@ import { reactive, ref, watch } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import EasyDataTable from "vue3-easy-data-table"; import EasyDataTable from "vue3-easy-data-table";
import { openDialog } from "vue3-promise-dialog"; import { openDialog } from "vue3-promise-dialog";
import DialogConfirm from "../../components/dialogs/SMDialogConfirm.vue"; import SMDialogConfirm from "../../components/dialogs/SMDialogConfirm.vue";
import SMButton from "../../components/SMButton.vue"; import SMButton from "../../components/SMButton.vue";
import SMFileLink from "../../components/SMFileLink.vue"; import SMFileLink from "../../components/SMFileLink.vue";
import SMLoadingIcon from "../../components/SMLoadingIcon.vue"; import SMLoadingIcon from "../../components/SMLoadingIcon.vue";
import SMMessage from "../../components/SMMessage.vue"; import SMMessage from "../../components/SMMessage.vue";
import SMToolbar from "../../components/SMToolbar.vue"; import SMToolbar from "../../components/SMToolbar.vue";
import { api } from "../../helpers/api"; import { api } from "../../helpers/api";
import { UserResponse } from "../../helpers/api.types"; import { Media, UserResponse } from "../../helpers/api.types";
import { SMDate } from "../../helpers/datetime"; import { SMDate } from "../../helpers/datetime";
import { debounce } from "../../helpers/debounce"; import { debounce } from "../../helpers/debounce";
import { bytesReadable } from "../../helpers/types"; import { bytesReadable } from "../../helpers/types";
import { useUserStore } from "../../store/UserStore"; import { useUserStore } from "../../store/UserStore";
import { useToastStore } from "../../store/ToastStore";
import SMInput from "../../components/SMInput.vue";
const router = useRouter(); const router = useRouter();
const search = ref(""); const search = ref("");
const userStore = useUserStore(); const userStore = useUserStore();
const toastStore = useToastStore();
const headers = [ const headers = [
{ text: "Name", value: "title", sortable: true }, { text: "Name", value: "title", sortable: true },
@@ -209,8 +216,13 @@ const handleEdit = (item) => {
router.push({ name: "dashboard-media-edit", params: { id: item.id } }); router.push({ name: "dashboard-media-edit", params: { id: item.id } });
}; };
const handleDelete = async (item) => { /**
let result = await openDialog(DialogConfirm, { * Request to delete a media item from the server.
*
* @param {Media} item The media object to delete.
*/
const handleDelete = async (item: Media) => {
let result = await openDialog(SMDialogConfirm, {
title: "Delete File?", title: "Delete File?",
text: `Are you sure you want to delete the file <strong>${item.title}</strong>?`, text: `Are you sure you want to delete the file <strong>${item.title}</strong>?`,
cancel: { cancel: {
@@ -225,13 +237,27 @@ const handleDelete = async (item) => {
if (result) { if (result) {
try { try {
await api.delete(`media/${item.id}`); let r = await api.delete({
url: "/media/{id}",
params: {
id: item.id,
},
});
toastStore.addToast({
title: "File Deleted",
content: `The file ${item.title} has been deleted.`,
type: "success",
});
loadFromServer(); loadFromServer();
} catch (err) { } catch (error) {
alert( toastStore.addToast({
err.response?.data?.message || title: "Error Deleting File",
"An unexpected server error occurred" content:
); error.data?.message ||
"An unexpected server error occurred",
type: "danger",
});
} }
} }
}; };