From f92e475703a71aa4ea3affe07aa3923e1c0a8c7c Mon Sep 17 00:00:00 2001 From: DecDuck Date: Tue, 10 Jun 2025 10:08:01 +1000 Subject: [PATCH] Combined fixes (#116) * fix: missing CheckIcon import in LanguageSelector * fix: #114 and error handling * fix: #97 * fix: lint * feat: #104 * fix: #72 --- server/components/LanguageSelector.vue | 5 ++- server/components/NewsArticleCreateButton.vue | 8 +++++ server/error.vue | 7 +++- server/nuxt.config.ts | 1 + server/pages/account/notifications.vue | 2 +- server/plugins/error-handler.ts | 4 +-- server/server/api/v1/admin/news/index.post.ts | 33 ++++++++++++------- .../server/internal/objects/transactional.ts | 2 +- server/server/internal/tasks/index.ts | 11 +++++-- server/server/plugins/redirect.ts | 27 --------------- 10 files changed, 53 insertions(+), 47 deletions(-) delete mode 100644 server/server/plugins/redirect.ts diff --git a/server/components/LanguageSelector.vue b/server/components/LanguageSelector.vue index 523b8e48..496f8e13 100644 --- a/server/components/LanguageSelector.vue +++ b/server/components/LanguageSelector.vue @@ -107,7 +107,10 @@ import { ListboxOptions, } from "@headlessui/vue"; import { ChevronUpDownIcon } from "@heroicons/vue/16/solid"; -import { ArrowTopRightOnSquareIcon } from "@heroicons/vue/24/outline"; +import { + ArrowTopRightOnSquareIcon, + CheckIcon, +} from "@heroicons/vue/24/outline"; import type { Locale } from "vue-i18n"; const { locales, locale: currLocale, setLocale } = useI18n(); diff --git a/server/components/NewsArticleCreateButton.vue b/server/components/NewsArticleCreateButton.vue index efe93129..5925d039 100644 --- a/server/components/NewsArticleCreateButton.vue +++ b/server/components/NewsArticleCreateButton.vue @@ -193,6 +193,7 @@ {{ $t("news.article.submit") }} @@ -235,6 +236,13 @@ const newArticle = ref({ tags: [] as string[], }); +const isValidArticle = computed( + () => + newArticle.value.title && + newArticle.value.description && + newArticle.value.content, +); + const markdownPreview = computed(() => { // TODO: maybe?? add https://github.com/cure53/DOMPurify // micromark says its safe, but this is straight html we are injecting diff --git a/server/error.vue b/server/error.vue index 3e2e31ab..94c0cf19 100644 --- a/server/error.vue +++ b/server/error.vue @@ -21,13 +21,18 @@ async function signIn() { redirect: `/auth/signin?redirect=${encodeURIComponent(route.fullPath)}`, }); } +switch (statusCode) { + case 401: + case 403: + await signIn(); +} useHead({ title: t("errors.pageTitle", [statusCode ?? message]), }); if (import.meta.client) { - console.log(props.error); + console.warn(props.error); } diff --git a/server/nuxt.config.ts b/server/nuxt.config.ts index c0eeb5b6..f8725211 100644 --- a/server/nuxt.config.ts +++ b/server/nuxt.config.ts @@ -254,5 +254,6 @@ export default defineNuxtConfig({ }, rateLimiter: false, xssValidator: false, + requestSizeLimiter: false, }, }); diff --git a/server/pages/account/notifications.vue b/server/pages/account/notifications.vue index 7f691064..2a60d6d4 100644 --- a/server/pages/account/notifications.vue +++ b/server/pages/account/notifications.vue @@ -9,7 +9,7 @@