mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-12-13 22:51:18 +00:00
* bulk_edit_object_perms API endpoint * Frontend support for bulk object permissions edit
65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import { Component, OnDestroy, OnInit } from '@angular/core'
|
|
import { Subscription } from 'rxjs'
|
|
import { Toast, ToastService } from 'src/app/services/toast.service'
|
|
import { ClipboardService } from 'ngx-clipboard'
|
|
|
|
@Component({
|
|
selector: 'pngx-toasts',
|
|
templateUrl: './toasts.component.html',
|
|
styleUrls: ['./toasts.component.scss'],
|
|
})
|
|
export class ToastsComponent implements OnInit, OnDestroy {
|
|
constructor(
|
|
private toastService: ToastService,
|
|
private clipboardService: ClipboardService
|
|
) {}
|
|
|
|
private subscription: Subscription
|
|
|
|
public toasts: Toast[] = []
|
|
|
|
public copied: boolean = false
|
|
|
|
ngOnDestroy(): void {
|
|
this.subscription?.unsubscribe()
|
|
}
|
|
|
|
ngOnInit(): void {
|
|
this.subscription = this.toastService.getToasts().subscribe((toasts) => {
|
|
this.toasts = toasts
|
|
this.toasts.forEach((t) => {
|
|
if (typeof t.error === 'string') {
|
|
try {
|
|
t.error = JSON.parse(t.error)
|
|
} catch (e) {}
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
public isDetailedError(error: any): boolean {
|
|
return (
|
|
typeof error === 'object' &&
|
|
'status' in error &&
|
|
'statusText' in error &&
|
|
'url' in error &&
|
|
'message' in error &&
|
|
'error' in error
|
|
)
|
|
}
|
|
|
|
public copyError(error: any) {
|
|
this.clipboardService.copy(JSON.stringify(error))
|
|
this.copied = true
|
|
setTimeout(() => {
|
|
this.copied = false
|
|
}, 3000)
|
|
}
|
|
|
|
getErrorText(error: any) {
|
|
let text: string = error.error?.detail ?? error.error ?? ''
|
|
if (typeof text === 'object') text = JSON.stringify(text)
|
|
return `${text.slice(0, 200)}${text.length > 200 ? '...' : ''}`
|
|
}
|
|
}
|