diff --git a/frontend/cypress/e2e/project/project.spec.ts b/frontend/cypress/e2e/project/project.spec.ts index a5ef6cabc..7258b59fd 100644 --- a/frontend/cypress/e2e/project/project.spec.ts +++ b/frontend/cypress/e2e/project/project.spec.ts @@ -33,14 +33,14 @@ describe('Projects', () => { }) it('Should redirect to a specific project view after visited', () => { - cy.intercept(Cypress.env('API_URL') + '/projects/*/buckets*').as('loadBuckets') - cy.visit('/projects/1/kanban') + cy.intercept(Cypress.env('API_URL') + '/projects/*/views/*/tasks**').as('loadBuckets') + cy.visit('/projects/1/4') cy.url() - .should('contain', '/projects/1/kanban') + .should('contain', '/projects/1/4') cy.wait('@loadBuckets') cy.visit('/projects/1') cy.url() - .should('contain', '/projects/1/kanban') + .should('contain', '/projects/1/4') }) it('Should rename the project in all places', () => { diff --git a/frontend/src/helpers/projectView.ts b/frontend/src/helpers/projectView.ts index fd34bbdb2..4b5af0f8d 100644 --- a/frontend/src/helpers/projectView.ts +++ b/frontend/src/helpers/projectView.ts @@ -13,7 +13,7 @@ export function saveProjectView(projectId: IProject['id'], viewId: number) { if (!projectId || !viewId) { return } - + // We use local storage and not the store here to make it persistent across reloads. const savedProjectView = localStorage.getItem(SETTINGS_KEY_PROJECT_VIEW) let savedProjectViewSettings: ProjectViewSettings | false = false @@ -30,19 +30,15 @@ export function saveProjectView(projectId: IProject['id'], viewId: number) { localStorage.setItem(SETTINGS_KEY_PROJECT_VIEW, JSON.stringify(projectViewSettings)) } -export const getProjectView = (projectId: IProject['id']) => { - try { - const projectViewSettingsString = localStorage.getItem(SETTINGS_KEY_PROJECT_VIEW) - if (!projectViewSettingsString) { - throw new Error() - } - - const projectViewSettings = JSON.parse(projectViewSettingsString) as ProjectViewSettings - if (!router.hasRoute(projectViewSettings[projectId])) { - throw new Error() - } - return projectViewSettings[projectId] - } catch (e) { - return - } +export function getProjectViewId(projectId: IProject['id']): number { + const projectViewSettingsString = localStorage.getItem(SETTINGS_KEY_PROJECT_VIEW) + if (!projectViewSettingsString) { + return 0 + } + + const projectViewSettings = JSON.parse(projectViewSettingsString) as ProjectViewSettings + if (isNaN(projectViewSettings[projectId])) { + return 0 + } + return projectViewSettings[projectId] } \ No newline at end of file diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index d85d2dec8..a5f94d45c 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -2,7 +2,7 @@ import { createRouter, createWebHistory } from 'vue-router' import type { RouteLocation } from 'vue-router' import {saveLastVisited} from '@/helpers/saveLastVisited' -import {saveProjectView, getProjectView} from '@/helpers/projectView' +import {saveProjectView, getProjectViewId} from '@/helpers/projectView' import {parseDateOrString} from '@/helpers/time/parseDateOrString' import {getNextWeekDate} from '@/helpers/time/getNextWeekDate' import {LINK_SHARE_HASH_PREFIX} from '@/constants/linkShareHash' @@ -347,7 +347,8 @@ const router = createRouter({ path: '/projects/:projectId', name: 'project.index', redirect(to) { - const viewId = getProjectView(Number(to.params.projectId as string)) + const viewId = getProjectViewId(Number(to.params.projectId as string)) + console.log(viewId) if (viewId) { console.debug('Replaced list view with', viewId)