Skip to content

The calendar VTODO deep link redirects to a /flow-tasks route that does not exist #3313

Description

@rubenvdlinde

What

TaskController::open() redirects the calendar VTODO deep link to a route that does not exist, in a form the router no longer reads.

lib/Controller/TaskController.php:169:

return new RedirectResponse(rtrim($base, '/') . '/#/flow-tasks/' . $safeUuid);

Two separate things are wrong with that target:

  1. The hash form no longer routes. #3270 moved openregister to createWebHistory, so …/#/flow-tasks/<uuid> lands on the app's default route rather than the task.
  2. There is no /flow-tasks route at all. Grepping src/ for flow-tasks returns nothing, and no manifest page declares that route. So even written as a path it would resolve nowhere.

Why it is not caught

tests/e2e/task-projections.spec.ts:164 asserts only the redirect's Location header:

expect(followed.headers().location).toContain(`#/flow-tasks/${task.uuid}`)

It never follows the redirect to a rendered page, so it passes whether or not the target resolves. The test agrees with the code, and both are wrong about the same thing.

Impact

This is the link in the projected VTODO. An assignee who opens the task from their calendar reaches the dashboard, not the task, with no error.

Not fixed in #3306

I found this while fixing that PR's two E2E failures and deliberately left it: choosing the right target is a product decision, not a mechanical one. Someone needs to say whether the task opens on a dedicated /flow-tasks/:uuid route that still has to be built, or on an existing surface such as the task inbox.

Whatever the answer, the e2e assertion should follow the redirect rather than read its header.

Adjacent

lib/Service/TaskService.php:356 builds …/#/calendars/<uri>/tasks/<uri>, which is correct and should not be changed: that one points at the Nextcloud Tasks app (tasks.page.index), which does route on the hash.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

triageAwaiting triage

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions