From 12702d4e5935e716460b3d3ea48343b5910df680 Mon Sep 17 00:00:00 2001 From: Eric <5089238+emizzle@users.noreply.github.com> Date: Wed, 19 Jun 2024 16:43:41 +1000 Subject: [PATCH] add moderation controls Moderation view of all requests: /moderate Allows request details page to be opened in two separate tabs: one with moderation enabled, and the other without (for the projector). Moderating the image has its state synced to the other (non-moderated) tab --- package.json | 1 + src/App.vue | 14 +- src/components/CodexImage.vue | 28 +- src/components/StorageRequest.vue | 81 ++-- src/components/StorageRequests.vue | 30 +- src/main.js | 6 +- src/router/index.js | 6 + src/stores/requests.js | 616 ++++++++++++++++------------- src/utils/requests.js | 6 + src/views/ModerateView.vue | 16 + src/views/RequestView.vue | 9 +- yarn.lock | 5 + 12 files changed, 506 insertions(+), 312 deletions(-) create mode 100644 src/views/ModerateView.vue diff --git a/package.json b/package.json index 9664b84..f077191 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "ethers": "^6.12.1", "flowbite": "^2.3.0", "pinia": "^2.1.7", + "pinia-plugin-persistedstate": "^3.2.1", "vue": "^3.4.21", "vue-router": "^4.3.0", "vue-unique-id": "^3.2.1" diff --git a/src/App.vue b/src/App.vue index e74618c..81235da 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,5 +1,5 @@ diff --git a/src/components/CodexImage.vue b/src/components/CodexImage.vue index 5606666..ce16fbc 100644 --- a/src/components/CodexImage.vue +++ b/src/components/CodexImage.vue @@ -16,9 +16,20 @@ const props = defineProps({ type: Boolean, default: false }, - alt: String + alt: String, + moderated: { + type: [String], + default() { + return 'pending' + }, + validator(value, props) { + // The value must match one of these strings + return ['pending', 'approved', 'banned'].includes(value) + } + } }) const hidden = computed(() => props.cid === undefined) +const blurred = computed(() => ['pending', 'banned'].includes(props.moderated)) onMounted(async () => { if (hidden.value) { @@ -66,6 +77,19 @@ onMounted(async () => { {{ error }} - + + diff --git a/src/components/StorageRequest.vue b/src/components/StorageRequest.vue index 316a0ce..33fad7e 100644 --- a/src/components/StorageRequest.vue +++ b/src/components/StorageRequest.vue @@ -1,7 +1,9 @@