From 7cb33d7d8815f3da9a9480fd51e4fe8e9c3edd2b Mon Sep 17 00:00:00 2001
From: Konrad Mohrfeldt <km@roko.li>
Date: Fri, 7 Jun 2024 16:49:54 +0200
Subject: [PATCH] fix: ensure only valid values are part of order filter

---
 src/Pages/MyShows.vue          |  2 +-
 src/components/OrderFilter.vue | 15 ++++++++++-----
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/Pages/MyShows.vue b/src/Pages/MyShows.vue
index f2732f84..4288f635 100644
--- a/src/Pages/MyShows.vue
+++ b/src/Pages/MyShows.vue
@@ -179,7 +179,7 @@ const selectedCategory = useRouteQuery<Category['id'] | ''>('category', '')
 const debouncedSearchTerm = computedDebounced(searchTerm, (q: string) => (q.trim() ? 0.3 : 0))
 const order = useStorage<ShowOrder[]>('aura:myShows:order', ['-is_owner', '-is_active', 'slug'])
 const query = useQuery(() => ({
-  order: order.value.join(','),
+  order: order.value.filter((v) => v).join(','),
   search: debouncedSearchTerm.value.trim(),
   categoryIds: selectedCategory.value || undefined,
   isWritable: '1',
diff --git a/src/components/OrderFilter.vue b/src/components/OrderFilter.vue
index c8df62c8..cc205441 100644
--- a/src/components/OrderFilter.vue
+++ b/src/components/OrderFilter.vue
@@ -65,7 +65,10 @@ const orderFields = computed<OrderField[]>(() => {
   return props.choices.map((choice) => normalizeOrderField(choice))
 })
 const selectedFieldNames = computed(
-  () => modelValue.value.map((value) => (value.startsWith('-') ? value.slice(1) : value)) as T[],
+  () =>
+    modelValue.value
+      .filter((v) => v)
+      .map((value) => (value.startsWith('-') ? value.slice(1) : value)) as T[],
 )
 const deselectedFieldNames = computed(
   () =>
@@ -101,10 +104,12 @@ const normalizedChoices = computed(() => {
 const selectedOrder = computed(
   () =>
     Object.fromEntries(
-      modelValue.value.map((value) => {
-        const field = (value.startsWith('-') ? value.slice(1) : value) as T
-        return [field, value.startsWith('-') ? 'desc' : 'asc']
-      }),
+      modelValue.value
+        .filter((v) => v)
+        .map((value) => {
+          const field = (value.startsWith('-') ? value.slice(1) : value) as T
+          return [field, value.startsWith('-') ? 'desc' : 'asc']
+        }),
     ) as Record<T, OrderDirection>,
 )
 
-- 
GitLab