Chore: update to Angular 20 (#10273)

This commit is contained in:
shamoon
2025-06-27 14:06:40 -07:00
committed by GitHub
parent dfad3c4d8e
commit 958f98d7e5
146 changed files with 2662 additions and 2687 deletions

View File

@@ -1,3 +1,4 @@
import { Injectable } from '@angular/core'
import { Observable } from 'rxjs'
import { ObjectWithId } from 'src/app/data/object-with-id'
import { PermissionsObject } from 'src/app/data/object-with-permissions'
@@ -7,7 +8,9 @@ export enum BulkEditObjectOperation {
SetPermissions = 'set_permissions',
Delete = 'delete',
}
@Injectable({
providedIn: 'root',
})
export abstract class AbstractNameFilterService<
T extends ObjectWithId,
> extends AbstractPaperlessService<T> {

View File

@@ -1,17 +1,21 @@
import { HttpClient, HttpParams } from '@angular/common/http'
import { inject, Injectable } from '@angular/core'
import { Observable } from 'rxjs'
import { map, publishReplay, refCount } from 'rxjs/operators'
import { ObjectWithId } from 'src/app/data/object-with-id'
import { Results } from 'src/app/data/results'
import { environment } from 'src/environments/environment'
@Injectable({
providedIn: 'root',
})
export abstract class AbstractPaperlessService<T extends ObjectWithId> {
protected baseUrl: string = environment.apiBaseUrl
protected http: HttpClient
protected resourceName: string
constructor(
protected http: HttpClient,
protected resourceName: string
) {}
constructor() {
this.http = inject(HttpClient)
}
protected getResourceUrl(id: number = null, action: string = null): string {
let url = `${this.baseUrl}${this.resourceName}/`

View File

@@ -1,4 +1,3 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Correspondent } from 'src/app/data/correspondent'
import { AbstractNameFilterService } from './abstract-name-filter-service'
@@ -7,7 +6,8 @@ import { AbstractNameFilterService } from './abstract-name-filter-service'
providedIn: 'root',
})
export class CorrespondentService extends AbstractNameFilterService<Correspondent> {
constructor(http: HttpClient) {
super(http, 'correspondents')
constructor() {
super()
this.resourceName = 'correspondents'
}
}

View File

@@ -1,4 +1,3 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { CustomField } from 'src/app/data/custom-field'
import { AbstractPaperlessService } from './abstract-paperless-service'
@@ -7,7 +6,8 @@ import { AbstractPaperlessService } from './abstract-paperless-service'
providedIn: 'root',
})
export class CustomFieldsService extends AbstractPaperlessService<CustomField> {
constructor(http: HttpClient) {
super(http, 'custom_fields')
constructor() {
super()
this.resourceName = 'custom_fields'
}
}

View File

@@ -1,4 +1,4 @@
import { HttpClient, HttpParams } from '@angular/common/http'
import { HttpParams } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Observable } from 'rxjs'
import { DocumentNote } from 'src/app/data/document-note'
@@ -8,8 +8,9 @@ import { AbstractPaperlessService } from './abstract-paperless-service'
providedIn: 'root',
})
export class DocumentNotesService extends AbstractPaperlessService<DocumentNote> {
constructor(http: HttpClient) {
super(http, 'documents')
constructor() {
super()
this.resourceName = 'documents'
}
getNotes(documentId: number): Observable<DocumentNote[]> {

View File

@@ -1,4 +1,3 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { DocumentType } from 'src/app/data/document-type'
import { AbstractNameFilterService } from './abstract-name-filter-service'
@@ -7,7 +6,8 @@ import { AbstractNameFilterService } from './abstract-name-filter-service'
providedIn: 'root',
})
export class DocumentTypeService extends AbstractNameFilterService<DocumentType> {
constructor(http: HttpClient) {
super(http, 'document_types')
constructor() {
super()
this.resourceName = 'document_types'
}
}

View File

@@ -1,5 +1,4 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Injectable, inject } from '@angular/core'
import { Observable } from 'rxjs'
import { map } from 'rxjs/operators'
import { AuditLogEntry } from 'src/app/data/auditlog-entry'
@@ -41,6 +40,10 @@ export interface SelectionData {
providedIn: 'root',
})
export class DocumentService extends AbstractPaperlessService<Document> {
private permissionsService = inject(PermissionsService)
private settingsService = inject(SettingsService)
private customFieldService = inject(CustomFieldsService)
private _searchQuery: string
private _sortFields
@@ -55,13 +58,9 @@ export class DocumentService extends AbstractPaperlessService<Document> {
private customFields: CustomField[] = []
constructor(
http: HttpClient,
private permissionsService: PermissionsService,
private settingsService: SettingsService,
private customFieldService: CustomFieldsService
) {
super(http, 'documents')
constructor() {
super()
this.resourceName = 'documents'
this.reload()
}

View File

@@ -1,5 +1,4 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Injectable, inject } from '@angular/core'
import { Observable, switchMap } from 'rxjs'
import { Group } from 'src/app/data/group'
import { PermissionsService } from '../permissions.service'
@@ -9,11 +8,11 @@ import { AbstractNameFilterService } from './abstract-name-filter-service'
providedIn: 'root',
})
export class GroupService extends AbstractNameFilterService<Group> {
constructor(
http: HttpClient,
private permissionService: PermissionsService
) {
super(http, 'groups')
private permissionService = inject(PermissionsService)
constructor() {
super()
this.resourceName = 'groups'
}
update(o: Group): Observable<Group> {

View File

@@ -1,5 +1,5 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Injectable, inject } from '@angular/core'
import { Observable } from 'rxjs'
import { environment } from 'src/environments/environment'
@@ -7,7 +7,7 @@ import { environment } from 'src/environments/environment'
providedIn: 'root',
})
export class LogService {
constructor(private http: HttpClient) {}
private http = inject(HttpClient)
list(): Observable<string[]> {
return this.http.get<string[]>(`${environment.apiBaseUrl}logs/`)

View File

@@ -1,4 +1,3 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { tap } from 'rxjs/operators'
import { MailAccount } from 'src/app/data/mail-account'
@@ -10,8 +9,9 @@ import { AbstractPaperlessService } from './abstract-paperless-service'
export class MailAccountService extends AbstractPaperlessService<MailAccount> {
loading: boolean
constructor(http: HttpClient) {
super(http, 'mail_accounts')
constructor() {
super()
this.resourceName = 'mail_accounts'
}
private reload() {

View File

@@ -1,4 +1,3 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { tap } from 'rxjs/operators'
import { MailRule } from 'src/app/data/mail-rule'
@@ -10,8 +9,9 @@ import { AbstractPaperlessService } from './abstract-paperless-service'
export class MailRuleService extends AbstractPaperlessService<MailRule> {
loading: boolean
constructor(http: HttpClient) {
super(http, 'mail_rules')
constructor() {
super()
this.resourceName = 'mail_rules'
}
private reload() {

View File

@@ -1,5 +1,5 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Injectable, inject } from '@angular/core'
import { Observable } from 'rxjs'
import { environment } from 'src/environments/environment'
@@ -12,7 +12,7 @@ export interface AppRemoteVersion {
providedIn: 'root',
})
export class RemoteVersionService {
constructor(private http: HttpClient) {}
private http = inject(HttpClient)
public checkForUpdates(): Observable<AppRemoteVersion> {
return this.http.get<AppRemoteVersion>(

View File

@@ -1,5 +1,5 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { inject, Injectable } from '@angular/core'
import { combineLatest, Observable } from 'rxjs'
import { tap } from 'rxjs/operators'
import { Results } from 'src/app/data/results'
@@ -12,14 +12,15 @@ import { AbstractPaperlessService } from './abstract-paperless-service'
providedIn: 'root',
})
export class SavedViewService extends AbstractPaperlessService<SavedView> {
protected http: HttpClient
private settingsService = inject(SettingsService)
public loading: boolean = true
private savedViews: SavedView[] = []
constructor(
protected http: HttpClient,
private settingsService: SettingsService
) {
super(http, 'saved_views')
constructor() {
super()
this.resourceName = 'saved_views'
}
public list(

View File

@@ -1,5 +1,5 @@
import { HttpClient, HttpParams } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Injectable, inject } from '@angular/core'
import { Observable } from 'rxjs'
import { Correspondent } from 'src/app/data/correspondent'
import { CustomField } from 'src/app/data/custom-field'
@@ -37,12 +37,10 @@ export interface GlobalSearchResult {
providedIn: 'root',
})
export class SearchService {
public readonly searchResultObjectLimit: number = 3 // documents/views.py GlobalSearchView > OBJECT_LIMIT
private http = inject(HttpClient)
private settingsService = inject(SettingsService)
constructor(
private http: HttpClient,
private settingsService: SettingsService
) {}
public readonly searchResultObjectLimit: number = 3
autocomplete(term: string): Observable<string[]> {
return this.http.get<string[]>(

View File

@@ -1,4 +1,3 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Observable } from 'rxjs'
import { FileVersion, ShareLink } from 'src/app/data/share-link'
@@ -8,8 +7,9 @@ import { AbstractNameFilterService } from './abstract-name-filter-service'
providedIn: 'root',
})
export class ShareLinkService extends AbstractNameFilterService<ShareLink> {
constructor(http: HttpClient) {
super(http, 'share_links')
constructor() {
super()
this.resourceName = 'share_links'
}
getLinksForDocument(documentId: number): Observable<ShareLink[]> {

View File

@@ -1,4 +1,3 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Observable } from 'rxjs'
import { StoragePath } from 'src/app/data/storage-path'
@@ -8,8 +7,9 @@ import { AbstractNameFilterService } from './abstract-name-filter-service'
providedIn: 'root',
})
export class StoragePathService extends AbstractNameFilterService<StoragePath> {
constructor(http: HttpClient) {
super(http, 'storage_paths')
constructor() {
super()
this.resourceName = 'storage_paths'
}
public testPath(path: string, documentID: number): Observable<any> {

View File

@@ -1,4 +1,3 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Tag } from 'src/app/data/tag'
import { AbstractNameFilterService } from './abstract-name-filter-service'
@@ -7,7 +6,8 @@ import { AbstractNameFilterService } from './abstract-name-filter-service'
providedIn: 'root',
})
export class TagService extends AbstractNameFilterService<Tag> {
constructor(http: HttpClient) {
super(http, 'tags')
constructor() {
super()
this.resourceName = 'tags'
}
}

View File

@@ -1,5 +1,4 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { Injectable, inject } from '@angular/core'
import { Observable, switchMap } from 'rxjs'
import { User } from 'src/app/data/user'
import { PermissionsService } from '../permissions.service'
@@ -10,11 +9,11 @@ const endpoint = 'users'
providedIn: 'root',
})
export class UserService extends AbstractNameFilterService<User> {
constructor(
http: HttpClient,
private permissionService: PermissionsService
) {
super(http, endpoint)
private permissionService = inject(PermissionsService)
constructor() {
super()
this.resourceName = endpoint
}
update(o: User): Observable<User> {

View File

@@ -1,4 +1,3 @@
import { HttpClient } from '@angular/common/http'
import { Injectable } from '@angular/core'
import { tap } from 'rxjs'
import { Workflow } from 'src/app/data/workflow'
@@ -10,8 +9,9 @@ import { AbstractPaperlessService } from './abstract-paperless-service'
export class WorkflowService extends AbstractPaperlessService<Workflow> {
loading: boolean
constructor(http: HttpClient) {
super(http, 'workflows')
constructor() {
super()
this.resourceName = 'workflows'
}
public reload() {