From 9e7881745aa4908cbd5eb979d8560be60147e546 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Thu, 26 Sep 2024 21:22:34 +0800 Subject: [PATCH] :sparkles: Sticker CRUD --- components/creator/stickers/DataTable.vue | 112 +++++++++-- .../creator/stickers/[id]/[sticker]/edit.vue | 178 ++++++++++++++++++ .../stickers/{edit/[id].vue => [id]/edit.vue} | 0 pages/creator/stickers/[id]/new.vue | 158 ++++++++++++++++ pages/creator/stickers/index.vue | 9 +- pages/dev/bots/index.vue | 1 + pages/gallery/new.vue | 13 +- 7 files changed, 449 insertions(+), 22 deletions(-) create mode 100644 pages/creator/stickers/[id]/[sticker]/edit.vue rename pages/creator/stickers/{edit/[id].vue => [id]/edit.vue} (100%) create mode 100644 pages/creator/stickers/[id]/new.vue diff --git a/components/creator/stickers/DataTable.vue b/components/creator/stickers/DataTable.vue index ea8706d..44822a6 100644 --- a/components/creator/stickers/DataTable.vue +++ b/components/creator/stickers/DataTable.vue @@ -19,26 +19,32 @@ {{ item.id }} - - - +
+ + + + + + {{ item.attachment.rid }} + +
{{ item.name }} {{ props.packPrefix + item.alias }} @@ -49,7 +55,47 @@ size="x-small" color="warning" icon="mdi-pencil" + class="ms-[-8px]" + :to="`/creator/stickers/${item.pack_id}/${item.id}/edit`" /> + + + + + + @@ -107,4 +153,30 @@ async function readStickers({ page, itemsPerPage }: { page?: number; itemsPerPag } onMounted(() => readStickers({})) + +const submitting = ref(false) + +async function deleteSticker(item: any) { + submitting.value = true + + const res = await solarFetch(`/cgi/uc/stickers/${item.id}`, { + method: "DELETE", + }) + if (res.status !== 200) { + error.value = await res.text() + } else { + await readStickers({}) + } + + submitting.value = false +} + + diff --git a/pages/creator/stickers/[id]/[sticker]/edit.vue b/pages/creator/stickers/[id]/[sticker]/edit.vue new file mode 100644 index 0000000..1c52811 --- /dev/null +++ b/pages/creator/stickers/[id]/[sticker]/edit.vue @@ -0,0 +1,178 @@ + + + diff --git a/pages/creator/stickers/edit/[id].vue b/pages/creator/stickers/[id]/edit.vue similarity index 100% rename from pages/creator/stickers/edit/[id].vue rename to pages/creator/stickers/[id]/edit.vue diff --git a/pages/creator/stickers/[id]/new.vue b/pages/creator/stickers/[id]/new.vue new file mode 100644 index 0000000..6971fc8 --- /dev/null +++ b/pages/creator/stickers/[id]/new.vue @@ -0,0 +1,158 @@ + + + diff --git a/pages/creator/stickers/index.vue b/pages/creator/stickers/index.vue index 147ef5e..1df9dc9 100644 --- a/pages/creator/stickers/index.vue +++ b/pages/creator/stickers/index.vue @@ -51,12 +51,19 @@

Actions

+ diff --git a/pages/dev/bots/index.vue b/pages/dev/bots/index.vue index 9e7fc87..3b72bd8 100644 --- a/pages/dev/bots/index.vue +++ b/pages/dev/bots/index.vue @@ -45,6 +45,7 @@ size="x-small" color="info" icon="mdi-key" + class="ms-[-8px]" /> diff --git a/pages/gallery/new.vue b/pages/gallery/new.vue index 9f816e5..5d74cc4 100644 --- a/pages/gallery/new.vue +++ b/pages/gallery/new.vue @@ -10,7 +10,7 @@ { + if (route.query.pool) { + pool.value = atob(decodeURIComponent(route.query.pool.toString())) + if (pool.value == "dedicated") { + pool.value = poolOptions[0].value + } + } +}) const poolOptions = [ { label: "Interactive", description: "Public indexable, no lifecycle.", value: "interactive" }, { label: "Messaging", description: "Has lifecycle, will delete after 14 days.", value: "messaging" }, + { label: "Sticker", description: "Public indexable, privilege required.", value: "sticker", disabled: true }, { label: "Dedicated Pool", description: "Your own configuration, coming soon.", value: "dedicated", disabled: true }, ]