diff --git a/src/components/home/ProjectsNavigation.vue b/src/components/home/ProjectsNavigation.vue index 69ea625f6..8c78bafdd 100644 --- a/src/components/home/ProjectsNavigation.vue +++ b/src/components/home/ProjectsNavigation.vue @@ -80,7 +80,7 @@ async function saveProjectPosition(e: SortableEvent) { const newIndex = e.newIndex === projectsActive.length ? e.newIndex - 1 : e.newIndex const projectId = parseInt(e.item.dataset.projectId) - const project = projectStore.getProjectById(projectId) + const project = projectStore.projects[projectId] const parentProjectId = e.to.parentNode.dataset.projectId ? parseInt(e.to.parentNode.dataset.projectId) : 0 const projectBefore = projectsActive[newIndex - 1] ?? null diff --git a/src/components/project/ProjectWrapper.vue b/src/components/project/ProjectWrapper.vue index 199c4d454..555556919 100644 --- a/src/components/project/ProjectWrapper.vue +++ b/src/components/project/ProjectWrapper.vue @@ -130,8 +130,8 @@ watch( // Set the current project to the one we're about to load so that the title is already shown at the top loadedProjectId.value = 0 - const projectFromStore = projectStore.getProjectById(projectData.id) - if (projectFromStore !== null) { + const projectFromStore = projectStore.projects[projectData.id] + if (projectFromStore) { baseStore.setBackground(null) baseStore.setBlurHash(null) baseStore.handleSetCurrentProject({project: projectFromStore}) diff --git a/src/components/quick-actions/quick-actions.vue b/src/components/quick-actions/quick-actions.vue index 111635004..5a84f4e9d 100644 --- a/src/components/quick-actions/quick-actions.vue +++ b/src/components/quick-actions/quick-actions.vue @@ -145,12 +145,12 @@ const foundProjects = computed(() => { const history = getHistory() const allProjects = [ ...new Set([ - ...history.map((l) => projectStore.getProjectById(l.id)), + ...history.map((l) => projectStore.projects[l.id]), ...projectStore.searchProject(project), ]), ] - return allProjects.filter((l) => typeof l !== 'undefined' && l !== null) + return allProjects.filter(l => Boolean(l)) }) // FIXME: use fuzzysearch @@ -369,7 +369,7 @@ function searchTasks() { const r = await taskService.getAll({}, params) as DoAction[] foundTasks.value = r.map((t) => { t.type = ACTION_TYPE.TASK - const project = projectStore.getProjectById(t.projectId) + const project = projectStore.projects[t.projectId] if (project !== null) { t.title = `${t.title} (${project.title})` } diff --git a/src/components/tasks/partials/relatedTasks.vue b/src/components/tasks/partials/relatedTasks.vue index a4f10ce8b..40af34847 100644 --- a/src/components/tasks/partials/relatedTasks.vue +++ b/src/components/tasks/partials/relatedTasks.vue @@ -222,12 +222,12 @@ async function findTasks(newQuery: string) { function mapRelatedTasks(tasks: ITask[]) { return tasks.map(task => { // by doing this here once we can save a lot of duplicate calls in the template - const project = projectStore.getProjectById(task.ProjectId) + const project = projectStore.projects[task.ProjectId] return { ...task, differentProject: - (project !== null && + (project && task.projectId !== props.projectId && project?.title) || null, } diff --git a/src/components/tasks/partials/singleTaskInProject.vue b/src/components/tasks/partials/singleTaskInProject.vue index cec565c60..fbc492589 100644 --- a/src/components/tasks/partials/singleTaskInProject.vue +++ b/src/components/tasks/partials/singleTaskInProject.vue @@ -14,12 +14,12 @@ projectStore.getProjectById(task.value.projectId)) -const projectColor = computed(() => project.value !== null ? project.value.hexColor : '') +const project = computed(() => projectStore.projects[task.value.projectId]) +const projectColor = computed(() => project.value ? project.value?.hexColor : '') const currentProject = computed(() => { return typeof baseStore.currentProject === 'undefined' ? { diff --git a/src/router/index.ts b/src/router/index.ts index 34fecabb3..977658f1d 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -360,7 +360,7 @@ const router = createRouter({ saveProjectView(to.params.projectId, to.name) // Properly set the page title when a task popup is closed const projectStore = useProjectStore() - const projectFromStore = projectStore.getProjectById(Number(to.params.projectId)) + const projectFromStore = projectStore.projects[Number(to.params.projectId)] if(projectFromStore) { setTitle(projectFromStore.title) } diff --git a/src/stores/projects.ts b/src/stores/projects.ts index 26ee18ad2..3132c5c95 100644 --- a/src/stores/projects.ts +++ b/src/stores/projects.ts @@ -36,9 +36,6 @@ export const useProjectStore = defineStore('project', () => { .filter(p => !p.isArchived && p.isFavorite)) const hasProjects = computed(() => projects.value ? true : false) - const getProjectById = computed(() => { - return (id: IProject['id']) => typeof projects.value[id] !== 'undefined' ? projects.value[id] : null - }) const getChildProjects = computed(() => { return (id: IProject['id']) => projectsArray.value.filter(p => p.parentProjectId === id) || [] }) @@ -190,7 +187,6 @@ export const useProjectStore = defineStore('project', () => { favoriteProjects: readonly(favoriteProjects), hasProjects: readonly(hasProjects), - getProjectById, getChildProjects, findProjectByExactname, searchProject, @@ -229,7 +225,7 @@ export function useProject(projectId: MaybeRef) { () => project.parentProjectId, projectId => { if (project.parentProjectId) { - parentProject.value = projectStore.getProjectById(project.parentProjectId) + parentProject.value = projectStore.projects[project.parentProjectId] } }, {immediate: true}, diff --git a/src/views/Home.vue b/src/views/Home.vue index 478010fc1..c2142f911 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -74,8 +74,8 @@ const projectHistory = computed(() => { } return getHistory() - .map(l => projectStore.getProjectById(l.id)) - .filter((l): l is IProject => l !== null) + .map(l => projectStore.projects[l.id]) + .filter(l => Boolean(l)) }) const migratorsEnabled = computed(() => configStore.availableMigrators?.length > 0) diff --git a/src/views/project/ProjectInfo.vue b/src/views/project/ProjectInfo.vue index 6b0273b65..975f4cf9e 100644 --- a/src/views/project/ProjectInfo.vue +++ b/src/views/project/ProjectInfo.vue @@ -29,7 +29,7 @@ const props = defineProps({ }) const projectStore = useProjectStore() -const project = computed(() => projectStore.getProjectById(props.projectId)) +const project = computed(() => projectStore.projects[props.projectId]) const htmlDescription = computed(() => { const description = project.value?.description || '' if (description === '') { diff --git a/src/views/project/settings/archive.vue b/src/views/project/settings/archive.vue index ac3cc901d..ad59af279 100644 --- a/src/views/project/settings/archive.vue +++ b/src/views/project/settings/archive.vue @@ -31,7 +31,7 @@ const projectStore = useProjectStore() const router = useRouter() const route = useRoute() -const project = computed(() => projectStore.getProjectById(route.params.projectId)) +const project = computed(() => projectStore.projects[route.params.projectId]) useTitle(() => t('project.archive.title', {project: project.value.title})) async function archiveProject() { diff --git a/src/views/project/settings/delete.vue b/src/views/project/settings/delete.vue index 5a2d13221..7003d9e6a 100644 --- a/src/views/project/settings/delete.vue +++ b/src/views/project/settings/delete.vue @@ -43,7 +43,7 @@ const router = useRouter() const totalTasks = ref(null) -const project = computed(() => projectStore.getProjectById(route.params.projectId)) +const project = computed(() => projectStore.projects[route.params.projectId]) watchEffect( () => { diff --git a/src/views/project/settings/duplicate.vue b/src/views/project/settings/duplicate.vue index d8487a083..83a896780 100644 --- a/src/views/project/settings/duplicate.vue +++ b/src/views/project/settings/duplicate.vue @@ -39,9 +39,9 @@ const parentProject = ref(null) watch( () => route.params.projectId, projectId => { - const project = projectStore.getProjectById(route.params.projectId) + const project = projectStore.projects[route.params.projectId] if (project.parentProjectId) { - parentProject.value = projectStore.getProjectById(project.parentProjectId) + parentProject.value = projectStore.projects[project.parentProjectId] } }, {immediate: true}, diff --git a/src/views/tasks/TaskDetailView.vue b/src/views/tasks/TaskDetailView.vue index 1ff430280..b0ff6e524 100644 --- a/src/views/tasks/TaskDetailView.vue +++ b/src/views/tasks/TaskDetailView.vue @@ -539,7 +539,7 @@ const visible = ref(false) const taskId = toRef(props, 'taskId') -const project = computed(() => task.projectId ? projectStore.getProjectById(task.projectId) : null) +const project = computed(() => task.projectId ? projectStore.projects[task.projectId] : null) watchEffect(() => { baseStore.handleSetCurrentProject({ project: project.value, diff --git a/src/views/user/settings/General.vue b/src/views/user/settings/General.vue index 25b78dbda..87624daaf 100644 --- a/src/views/user/settings/General.vue +++ b/src/views/user/settings/General.vue @@ -245,7 +245,7 @@ watch( const projectStore = useProjectStore() const defaultProject = computed({ - get: () => projectStore.getProjectById(settings.value.defaultProjectId) || undefined, + get: () => projectStore.projects[settings.value.defaultProjectId], set(l) { settings.value.defaultProjectId = l ? l.id : DEFAULT_PROJECT_ID },