Skip to content

fix: apply the persisted Favorites filter on initial load (reload shows filtered tasks) - EXO-88376 - #628

Merged
Jihed525 merged 1 commit into
feature/ai-contributionfrom
feat/task-favorites-filter-restore-EXO-88376
Jul 21, 2026
Merged

Jihed525 merged 1 commit into
feature/ai-contributionfrom
feat/task-favorites-filter-restore-EXO-88376

Conversation

@bmestrallet

Copy link
Copy Markdown

Follow-up to #619/#624 addressing @jihed_chabbeh's report on EXO-88376: after a page reload, the "Favorites only" toggle is restored ON but the displayed list is not filtered (shows all tasks).

Root cause

In TasksDashboard.vue created(), this.getTasksByPrimary(this.primaryFilter) fires the initial searchTasks() before the persisted filters are restored from localStorage. searchTasks() reads this.filterTasks, whose favorite is still the default false at that moment; the persisted value is only restored a few lines later. So the toggle ends up ON while the initial /tasks/filter request went out with favorite= (empty) → unfiltered list. (The restored groupBy/orderBy/showCompletedTasks were also applied after the first fetch — same ordering flaw.)

Fix

Move the localStorage-restore block above getTasksByPrimary(...) in created(), so the first fetch honors the persisted filters. Confirmed the only primary filter on load is ALL, whose branch does not clobber favorite and re-reads groupBy/orderBy from the same key — so no regression to the date-primary filters (which force ungrouped and are only reached via toolbar events, never on load).

TasksViewDashboard.vue (project view) needs no change — it does not persist the favorite filter (only group/order/completed), so it has no restore-on-reload mismatch.

Verification

Built the task WAR and verified live on a 7.3.x-ai-contribution build: with the favorites filter persisted, after a page reload the initial GET /tasks/filter now carries favorite=true (was favorite= before the fix) → the list is filtered from the first render. Front-end only, lint clean.

🤖 Generated with Claude Code

… shows filtered tasks - EXO-88376

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bmestrallet
bmestrallet requested a review from ahamdi July 20, 2026 14:29
@github-actions github-actions Bot added the partialCIBuild Perform Partial CI Build label Jul 20, 2026
@sonarqubecloud

Copy link
Copy Markdown

@Jihed525
Jihed525 merged commit 7f7e53c into feature/ai-contribution Jul 21, 2026
11 checks passed
@Jihed525
Jihed525 deleted the feat/task-favorites-filter-restore-EXO-88376 branch July 21, 2026 07:21
Jihed525 added a commit that referenced this pull request Jul 22, 2026
## What

Backport of #619, #624, #628, #629 onto `develop`.

Adds a **"Favorites only"** filter for tasks (follow-up to Favorites
#615 / EXO-88316), with the fixes that followed after real-world
testing:

- **#619** — `favorite` query param on `GET /tasks/filter` (batched via
`FavoriteService`) + a "Favorites only" toggle in the Sort & Filter
drawer, persisted in localStorage.
- **#624** — un-bookmarking a task now removes it from the
favorites-filtered list immediately (list rows carry `favorite` state,
front-end listens for `metadata.favorite.updated`); drawer star
recolored to neutral grey.
- **#628** — the persisted "Favorites only" toggle is now honored on the
*first* fetch after a page reload in My Tasks (was previously applied
only after the initial unfiltered fetch).
- **#629** — same reload fix extended to the project/space board view,
which #628 had missed.

## Backport notes

Cherry-picked the 4 commits onto `develop`. Two conflicts, both
resolved:
- `TaskRestService.java`: import conflict (develop already had
`FavoriteService` imported for an unrelated feature); also dropped a
private `isFavorite(String, long)` helper introduced by #624 that
duplicated `FavoriteUtil.isFavorite`, already present on `develop` since
#622 (`Favorites for projects & tasks - EXO-88316`) — it was unused here
since `getTaskById` on `develop` already goes through `FavoriteUtil`.
- `TasksViewDashboard.vue`: #629's diff assumed `favorite` had been
dropped from this file by an intermediate commit that only exists on
`feature/ai-contribution`, not `develop` — on `develop` the field was
already being carried through (from #619/#624), so the "fix" was already
effectively in place; resolved by keeping upstream's exact wording where
it was purely a stylistic difference (`!!x` vs `x || false`), for
consistency.

## Test

- `mvn -pl services -am -Dcheckstyle.skip=true -DskipTests install` →
BUILD SUCCESS
- `mvn -pl services -Dcheckstyle.skip=true -Dtest=TestTaskRestService
test` → 20 tests, 0 failures/errors

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

partialCIBuild Perform Partial CI Build

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants