From 475afd03ed57c56cab14c62200b29dbb1ea2db2c Mon Sep 17 00:00:00 2001 From: Lorenz Padberg Date: Mon, 14 Aug 2023 14:41:47 +0200 Subject: [PATCH] Store LastModuleCategory with the user --- .../src/components/modules/ModuleFilter.vue | 58 ++++++++++++++----- .../src/graphql/gql/fragments/userParts.gql | 4 ++ client/src/pages/topic-page.vue | 2 +- 3 files changed, 48 insertions(+), 16 deletions(-) diff --git a/client/src/components/modules/ModuleFilter.vue b/client/src/components/modules/ModuleFilter.vue index 3b747fd1..237beb95 100644 --- a/client/src/components/modules/ModuleFilter.vue +++ b/client/src/components/modules/ModuleFilter.vue @@ -2,7 +2,7 @@
-
+
@@ -38,11 +38,11 @@ import {computed, ref} from "vue"; import ModuleTeaser from "@/components/modules/ModuleTeaser.vue"; import gql from "graphql-tag"; - import {useQuery} from "@vue/apollo-composable"; - + import {useQuery, useMutation} from "@vue/apollo-composable"; const props = defineProps<{ modules: []; + me: any; }>(); @@ -59,21 +59,13 @@ name: '---', id: null, }; + let defaultCategory = loadDefaultCategory(props.me); - const selectedCategory = ref(nullCategory); - + let selectedCategory = ref(defaultCategory); const firstLevelCategories = computed(() => { return [nullCategory, ...moduleCategoriesResult.value?.moduleCategories || []]; }); - const {result: moduleCategoryTypesResult} = useQuery(gql` - query ModuleCategoryTypesQuery { - moduleCategoryTypes { - name - id - } - } - `); const nullLernfeld = { name: '---', @@ -82,6 +74,14 @@ const selectedLernfeld = ref(nullLernfeld); + const {result: moduleCategoryTypesResult} = useQuery(gql` + query ModuleCategoryTypesQuery { + moduleCategoryTypes { + name + id + } + } + `); const lernfeldOptions = computed(() => { return [nullLernfeld, ...moduleCategoryTypesResult.value?.moduleCategoryTypes || []]; @@ -94,6 +94,10 @@ // "$flavor.textInstrumentFilterShowAll" + function loadDefaultCategory(me) { + return me?.lastModuleCategory || nullCategory; + } + function filterModules() { let filteredModules = props.modules; @@ -114,12 +118,36 @@ return module.categoryType.id == selectedLernfeld.value.id; }); } - + updateLastModuleCategory(selectedCategory.value); return filteredModules; } + + + function updateLastModuleCategory(moduleCategory) { + console.log(moduleCategory); + + const {mutate: updateLastModuleCategory} = useMutation(gql` + mutation ($input: UpdateLastModuleCategoryInput!){updateLastModuleCategory(input: $input) { + clientMutationId + user { + username + lastModuleCategory { + name + id + } + } + }}`); + + updateLastModuleCategory({ + input: { + id: moduleCategory.id, + }, + }); + + }