mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-09 09:58:20 -05:00
102 lines
2.8 KiB
TypeScript
102 lines
2.8 KiB
TypeScript
import { Component, Input } from '@angular/core'
|
|
import { DocumentCommentsService } from 'src/app/services/rest/document-comments.service'
|
|
import { PaperlessDocumentComment } from 'src/app/data/paperless-document-comment'
|
|
import { FormControl, FormGroup } from '@angular/forms'
|
|
import { first } from 'rxjs/operators'
|
|
import { ToastService } from 'src/app/services/toast.service'
|
|
|
|
@Component({
|
|
selector: 'app-document-comments',
|
|
templateUrl: './document-comments.component.html',
|
|
styleUrls: ['./document-comments.component.scss'],
|
|
})
|
|
export class DocumentCommentsComponent {
|
|
commentForm: FormGroup = new FormGroup({
|
|
newComment: new FormControl(''),
|
|
})
|
|
|
|
networkActive = false
|
|
comments: PaperlessDocumentComment[] = []
|
|
newCommentError: boolean = false
|
|
|
|
private _documentId: number
|
|
|
|
@Input()
|
|
set documentId(id: number) {
|
|
if (id != this._documentId) {
|
|
this._documentId = id
|
|
this.update()
|
|
}
|
|
}
|
|
|
|
constructor(
|
|
private commentsService: DocumentCommentsService,
|
|
private toastService: ToastService
|
|
) {}
|
|
|
|
update(): void {
|
|
this.networkActive = true
|
|
this.commentsService
|
|
.getComments(this._documentId)
|
|
.pipe(first())
|
|
.subscribe((comments) => {
|
|
this.comments = comments
|
|
this.networkActive = false
|
|
})
|
|
}
|
|
|
|
addComment() {
|
|
const comment: string = this.commentForm
|
|
.get('newComment')
|
|
.value.toString()
|
|
.trim()
|
|
if (comment.length == 0) {
|
|
this.newCommentError = true
|
|
return
|
|
}
|
|
this.newCommentError = false
|
|
this.networkActive = true
|
|
this.commentsService.addComment(this._documentId, comment).subscribe({
|
|
next: (result) => {
|
|
this.comments = result
|
|
this.commentForm.get('newComment').reset()
|
|
this.networkActive = false
|
|
},
|
|
error: (e) => {
|
|
this.networkActive = false
|
|
this.toastService.showError(
|
|
$localize`Error saving comment: ${e.toString()}`
|
|
)
|
|
},
|
|
})
|
|
}
|
|
|
|
deleteComment(commentId: number) {
|
|
this.commentsService.deleteComment(this._documentId, commentId).subscribe({
|
|
next: (result) => {
|
|
this.comments = result
|
|
this.networkActive = false
|
|
},
|
|
error: (e) => {
|
|
this.networkActive = false
|
|
this.toastService.showError(
|
|
$localize`Error deleting comment: ${e.toString()}`
|
|
)
|
|
},
|
|
})
|
|
}
|
|
|
|
displayName(comment: PaperlessDocumentComment): string {
|
|
if (!comment.user) return ''
|
|
let nameComponents = []
|
|
if (comment.user.firstname) nameComponents.unshift(comment.user.firstname)
|
|
if (comment.user.lastname) nameComponents.unshift(comment.user.lastname)
|
|
if (comment.user.username) {
|
|
if (nameComponents.length > 0)
|
|
nameComponents.push(`(${comment.user.username})`)
|
|
else nameComponents.push(comment.user.username)
|
|
}
|
|
return nameComponents.join(' ')
|
|
}
|
|
}
|