From ec1ff80791c2c9241d482fa6267515d561133668 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sat, 6 Apr 2024 13:32:54 +0200 Subject: [PATCH] fix(kanban): save done and default bucket on the view and not on the project The frontend was still trying to update the two in the project which won't work since they are now saved at the view level, not the project. --- .../project/views/ProjectKanban.vue | 48 ++++++++++++++----- frontend/src/modelTypes/IProject.ts | 2 - frontend/src/models/project.ts | 2 - 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/frontend/src/components/project/views/ProjectKanban.vue b/frontend/src/components/project/views/ProjectKanban.vue index 7ae992a6332..ef1c0913a39 100644 --- a/frontend/src/components/project/views/ProjectKanban.vue +++ b/frontend/src/components/project/views/ProjectKanban.vue @@ -41,7 +41,7 @@ @click="() => unCollapseBucket(bucket)" > @@ -109,7 +109,7 @@ @@ -117,7 +117,7 @@ @@ -304,6 +304,8 @@ import type {IProjectView} from '@/modelTypes/IProjectView' import TaskPositionService from '@/services/taskPosition' import TaskPositionModel from '@/models/taskPosition' import {i18n} from '@/i18n' +import ProjectViewService from '@/services/projectViews' +import ProjectViewModel from '@/models/projectView' const { projectId, @@ -393,6 +395,8 @@ const project = computed(() => projectId ? projectStore.projects[projectId] : nu const buckets = computed(() => kanbanStore.buckets) const loading = computed(() => kanbanStore.isLoading) +const view = computed(() => project.value?.views.find(v => v.id === viewId) || null) + const taskLoading = computed(() => taskStore.isLoading || taskPositionService.value.loading) watch( @@ -701,26 +705,46 @@ function dragstart(bucket: IBucket) { } async function toggleDefaultBucket(bucket: IBucket) { - const defaultBucketId = project.value.defaultBucketId === bucket.id + const defaultBucketId = view.value?.defaultBucketId === bucket.id ? 0 : bucket.id - await projectStore.updateProject({ - ...project.value, + const projectViewService = new ProjectViewService() + const updatedView = await projectViewService.update(new ProjectViewModel({ + ...view.value, defaultBucketId, - }) + })) + + const views = project.value.views.map(v => v.id === view.value?.id ? updatedView : v) + const updatedProject = { + ...project.value, + views, + } + + projectStore.setProject(updatedProject) + success({message: t('project.kanban.defaultBucketSavedSuccess')}) } async function toggleDoneBucket(bucket: IBucket) { - const doneBucketId = project.value?.doneBucketId === bucket.id + const doneBucketId = view.value?.doneBucketId === bucket.id ? 0 : bucket.id - - await projectStore.updateProject({ - ...project.value, + + const projectViewService = new ProjectViewService() + const updatedView = await projectViewService.update(new ProjectViewModel({ + ...view.value, doneBucketId, - }) + })) + + const views = project.value.views.map(v => v.id === view.value?.id ? updatedView : v) + const updatedProject = { + ...project.value, + views, + } + + projectStore.setProject(updatedProject) + success({message: t('project.kanban.doneBucketSavedSuccess')}) } diff --git a/frontend/src/modelTypes/IProject.ts b/frontend/src/modelTypes/IProject.ts index c4e212e83d0..150edad666c 100644 --- a/frontend/src/modelTypes/IProject.ts +++ b/frontend/src/modelTypes/IProject.ts @@ -20,8 +20,6 @@ export interface IProject extends IAbstract { position: number backgroundBlurHash: string parentProjectId: number - doneBucketId: number - defaultBucketId: number views: IProjectView[] created: Date diff --git a/frontend/src/models/project.ts b/frontend/src/models/project.ts index 06c9e8ee716..f0ee4b1ab1a 100644 --- a/frontend/src/models/project.ts +++ b/frontend/src/models/project.ts @@ -24,8 +24,6 @@ export default class ProjectModel extends AbstractModel implements IPr position = 0 backgroundBlurHash = '' parentProjectId = 0 - doneBucketId = 0 - defaultBucketId = 0 views = [] created: Date = null