Fix sidebar via saved view + tasks service signals

This commit is contained in:
shamoon
2026-07-06 20:24:51 -07:00
parent da23edc9eb
commit 2b48ebaa59
2 changed files with 32 additions and 6 deletions
@@ -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<SavedView> {
private settingsService = inject(SettingsService)
private documentService = inject(DocumentService)
private savedViews: SavedView[] = []
private savedViewDocumentCounts: Map<number, number> = new Map()
private savedViewsSignal = signal<SavedView[]>([])
private savedViewDocumentCountsSignal = signal<Map<number, number>>(new Map())
private unsubscribeNotifier: Subject<void> = new Subject<void>()
constructor() {
@@ -26,6 +26,22 @@ export class SavedViewService extends AbstractPaperlessService<SavedView> {
this.resourceName = 'saved_views'
}
private get savedViews(): SavedView[] {
return this.savedViewsSignal()
}
private set savedViews(views: SavedView[]) {
this.savedViewsSignal.set(views)
}
private get savedViewDocumentCounts(): Map<number, number> {
return this.savedViewDocumentCountsSignal()
}
private set savedViewDocumentCounts(counts: Map<number, number>) {
this.savedViewDocumentCountsSignal.set(counts)
}
public list(
page?: number,
pageSize?: number,
@@ -176,7 +192,9 @@ export class SavedViewService extends AbstractPaperlessService<SavedView> {
}
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 {
+10 -2
View File
@@ -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<PaperlessTask[]>([])
private unsubscribeNotifer: Subject<any> = 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
}