From 2b48ebaa596e8b3ba149c0a39adaf3ddbb31ca7b Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Mon, 6 Jul 2026 20:24:51 -0700 Subject: [PATCH] Fix sidebar via saved view + tasks service signals --- .../app/services/rest/saved-view.service.ts | 26 ++++++++++++++++--- src-ui/src/app/services/tasks.service.ts | 12 +++++++-- 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src-ui/src/app/services/rest/saved-view.service.ts b/src-ui/src/app/services/rest/saved-view.service.ts index d9baec22b..dea02cd0c 100644 --- a/src-ui/src/app/services/rest/saved-view.service.ts +++ b/src-ui/src/app/services/rest/saved-view.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { inject, Injectable } from '@angular/core' +import { inject, Injectable, signal } from '@angular/core' import { combineLatest, Observable, Subject } from 'rxjs' import { takeUntil, tap } from 'rxjs/operators' import { Results } from 'src/app/data/results' @@ -17,8 +17,8 @@ export class SavedViewService extends AbstractPaperlessService { private settingsService = inject(SettingsService) private documentService = inject(DocumentService) - private savedViews: SavedView[] = [] - private savedViewDocumentCounts: Map = new Map() + private savedViewsSignal = signal([]) + private savedViewDocumentCountsSignal = signal>(new Map()) private unsubscribeNotifier: Subject = new Subject() constructor() { @@ -26,6 +26,22 @@ export class SavedViewService extends AbstractPaperlessService { this.resourceName = 'saved_views' } + private get savedViews(): SavedView[] { + return this.savedViewsSignal() + } + + private set savedViews(views: SavedView[]) { + this.savedViewsSignal.set(views) + } + + private get savedViewDocumentCounts(): Map { + return this.savedViewDocumentCountsSignal() + } + + private set savedViewDocumentCounts(counts: Map) { + this.savedViewDocumentCountsSignal.set(counts) + } + public list( page?: number, pageSize?: number, @@ -176,7 +192,9 @@ export class SavedViewService extends AbstractPaperlessService { } public setDocumentCount(view: SavedView, count: number) { - this.savedViewDocumentCounts.set(view.id, count) + const counts = new Map(this.savedViewDocumentCounts) + counts.set(view.id, count) + this.savedViewDocumentCounts = counts } public getDocumentCount(view: SavedView): number { diff --git a/src-ui/src/app/services/tasks.service.ts b/src-ui/src/app/services/tasks.service.ts index 404db589a..de358513a 100644 --- a/src-ui/src/app/services/tasks.service.ts +++ b/src-ui/src/app/services/tasks.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { Injectable, inject } from '@angular/core' +import { Injectable, inject, signal } from '@angular/core' import { Observable, Subject } from 'rxjs' import { first, map, takeUntil, tap } from 'rxjs/operators' import { @@ -23,10 +23,18 @@ export class TasksService { public loading: boolean = false - private fileTasks: PaperlessTask[] = [] + private fileTasksSignal = signal([]) private unsubscribeNotifer: Subject = new Subject() + private get fileTasks(): PaperlessTask[] { + return this.fileTasksSignal() + } + + private set fileTasks(tasks: PaperlessTask[]) { + this.fileTasksSignal.set(tasks) + } + public get total(): number { return this.fileTasks.length }