Chorehancement: update to Angular v22, 'zoneless' / 'reactive' (#13114)

This commit is contained in:
shamoon
2026-07-10 00:42:16 -07:00
committed by GitHub
parent f244442c65
commit 106b41a15c
213 changed files with 5363 additions and 5842 deletions
@@ -96,7 +96,7 @@ describe(`Additional service tests for SavedViewService`, () => {
})
it('should sort dashboard views', () => {
service['savedViews'] = saved_views
service['savedViews'].set(saved_views)
jest.spyOn(settingsService, 'get').mockImplementation((key) => {
if (key === SETTINGS_KEYS.DASHBOARD_VIEWS_VISIBLE_IDS) return [1, 2, 3]
if (key === SETTINGS_KEYS.DASHBOARD_VIEWS_SORT_ORDER) return [3, 1, 2]
@@ -110,7 +110,7 @@ describe(`Additional service tests for SavedViewService`, () => {
})
it('should use user-specific dashboard visibility when configured', () => {
service['savedViews'] = saved_views
service['savedViews'].set(saved_views)
jest.spyOn(settingsService, 'get').mockImplementation((key) => {
if (key === SETTINGS_KEYS.DASHBOARD_VIEWS_VISIBLE_IDS) return [4, 2]
if (key === SETTINGS_KEYS.DASHBOARD_VIEWS_SORT_ORDER) return []
@@ -119,7 +119,7 @@ describe(`Additional service tests for SavedViewService`, () => {
})
it('should sort sidebar views', () => {
service['savedViews'] = saved_views
service['savedViews'].set(saved_views)
jest.spyOn(settingsService, 'get').mockImplementation((key) => {
if (key === SETTINGS_KEYS.SIDEBAR_VIEWS_VISIBLE_IDS) return [1, 2, 3]
if (key === SETTINGS_KEYS.SIDEBAR_VIEWS_SORT_ORDER) return [3, 1, 2]
@@ -133,7 +133,7 @@ describe(`Additional service tests for SavedViewService`, () => {
})
it('should use user-specific sidebar visibility when configured', () => {
service['savedViews'] = saved_views
service['savedViews'].set(saved_views)
jest.spyOn(settingsService, 'get').mockImplementation((key) => {
if (key === SETTINGS_KEYS.SIDEBAR_VIEWS_VISIBLE_IDS) return [4, 2]
if (key === SETTINGS_KEYS.SIDEBAR_VIEWS_SORT_ORDER) return []
@@ -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,10 @@ 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 readonly savedViews = signal<SavedView[]>([])
private readonly savedViewDocumentCounts = signal<Map<number, number>>(
new Map()
)
private unsubscribeNotifier: Subject<void> = new Subject<void>()
constructor() {
@@ -37,15 +39,16 @@ export class SavedViewService extends AbstractPaperlessService<SavedView> {
tap({
next: (r) => {
const views = r.results.map((view) => this.withUserVisibility(view))
this.savedViews = views
this.savedViews.set(views)
r.results = views
this._loading = false
this.settingsService.dashboardIsEmpty =
this.settingsService.dashboardIsEmpty.set(
this.dashboardViews.length === 0
)
},
error: () => {
this._loading = false
this.settingsService.dashboardIsEmpty = true
this.settingsService.dashboardIsEmpty.set(true)
},
})
)
@@ -63,8 +66,8 @@ export class SavedViewService extends AbstractPaperlessService<SavedView> {
.subscribe()
}
get allViews() {
return this.savedViews
get allViews(): SavedView[] {
return this.savedViews()
}
private getVisibleViewIds(setting: string): number[] {
@@ -95,7 +98,9 @@ export class SavedViewService extends AbstractPaperlessService<SavedView> {
}
get sidebarViews(): SavedView[] {
const sidebarViews = this.savedViews.filter((v) => this.isSidebarVisible(v))
const sidebarViews = this.savedViews().filter((v) =>
this.isSidebarVisible(v)
)
const sorted: number[] = this.settingsService.get(
SETTINGS_KEYS.SIDEBAR_VIEWS_SORT_ORDER
@@ -110,7 +115,7 @@ export class SavedViewService extends AbstractPaperlessService<SavedView> {
}
get dashboardViews(): SavedView[] {
const dashboardViews = this.savedViews.filter((v) =>
const dashboardViews = this.savedViews().filter((v) =>
this.isDashboardVisible(v)
)
@@ -176,10 +181,12 @@ 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.set(counts)
}
public getDocumentCount(view: SavedView): number {
return this.savedViewDocumentCounts.get(view.id)
return this.savedViewDocumentCounts().get(view.id)
}
}