diff options
5 files changed, 30 insertions, 24 deletions
diff --git a/client/src/app/+videos/+video-watch/comment/video-comment-add.component.ts b/client/src/app/+videos/+video-watch/comment/video-comment-add.component.ts index 3d0611a2d..3fa5fd623 100644 --- a/client/src/app/+videos/+video-watch/comment/video-comment-add.component.ts +++ b/client/src/app/+videos/+video-watch/comment/video-comment-add.component.ts | |||
@@ -17,11 +17,10 @@ import { I18n } from '@ngx-translate/i18n-polyfill' | |||
17 | export class VideoCommentAddComponent extends FormReactive implements OnChanges, OnInit { | 17 | export class VideoCommentAddComponent extends FormReactive implements OnChanges, OnInit { |
18 | @Input() user: User | 18 | @Input() user: User |
19 | @Input() video: Video | 19 | @Input() video: Video |
20 | @Input() parentComment: VideoComment | 20 | @Input() parentComment?: VideoComment |
21 | @Input() parentComments: VideoComment[] | 21 | @Input() parentComments?: VideoComment[] |
22 | @Input() focusOnInit = false | 22 | @Input() focusOnInit = false |
23 | @Input() textValue?: string | 23 | @Input() textValue?: string |
24 | @Input() commentThread?: boolean | ||
25 | 24 | ||
26 | @Output() commentCreated = new EventEmitter<VideoComment>() | 25 | @Output() commentCreated = new EventEmitter<VideoComment>() |
27 | @Output() cancel = new EventEmitter() | 26 | @Output() cancel = new EventEmitter() |
@@ -57,27 +56,13 @@ export class VideoCommentAddComponent extends FormReactive implements OnChanges, | |||
57 | }) | 56 | }) |
58 | 57 | ||
59 | if (this.user) { | 58 | if (this.user) { |
60 | if (this.commentThread) { | 59 | if (!this.parentComment) { |
61 | this.addingCommentButtonValue = this.i18n('Comment') | 60 | this.addingCommentButtonValue = this.i18n('Comment') |
62 | } else { | 61 | } else { |
63 | this.addingCommentButtonValue = this.i18n('Reply') | 62 | this.addingCommentButtonValue = this.i18n('Reply') |
64 | } | 63 | } |
65 | 64 | ||
66 | if (this.textValue) { | 65 | this.initTextValue() |
67 | this.patchTextValue(this.textValue, this.focusOnInit) | ||
68 | return | ||
69 | } | ||
70 | |||
71 | if (this.parentComment) { | ||
72 | const mentions = this.parentComments | ||
73 | .filter(c => c.account && c.account.id !== this.user.account.id) // Don't add mention of ourselves | ||
74 | .map(c => '@' + c.by) | ||
75 | |||
76 | const mentionsSet = new Set(mentions) | ||
77 | const mentionsText = Array.from(mentionsSet).join(' ') + ' ' | ||
78 | |||
79 | this.patchTextValue(mentionsText, this.focusOnInit) | ||
80 | } | ||
81 | } | 66 | } |
82 | } | 67 | } |
83 | 68 | ||
@@ -176,6 +161,24 @@ export class VideoCommentAddComponent extends FormReactive implements OnChanges, | |||
176 | .addCommentThread(this.video.id, commentCreate) | 161 | .addCommentThread(this.video.id, commentCreate) |
177 | } | 162 | } |
178 | 163 | ||
164 | private initTextValue () { | ||
165 | if (this.textValue) { | ||
166 | this.patchTextValue(this.textValue, this.focusOnInit) | ||
167 | return | ||
168 | } | ||
169 | |||
170 | if (this.parentComment) { | ||
171 | const mentions = this.parentComments | ||
172 | .filter(c => c.account && c.account.id !== this.user.account.id) // Don't add mention of ourselves | ||
173 | .map(c => '@' + c.by) | ||
174 | |||
175 | const mentionsSet = new Set(mentions) | ||
176 | const mentionsText = Array.from(mentionsSet).join(' ') + ' ' | ||
177 | |||
178 | this.patchTextValue(mentionsText, this.focusOnInit) | ||
179 | } | ||
180 | } | ||
181 | |||
179 | private patchTextValue (text: string, focus: boolean) { | 182 | private patchTextValue (text: string, focus: boolean) { |
180 | setTimeout(() => { | 183 | setTimeout(() => { |
181 | if (focus) { | 184 | if (focus) { |
diff --git a/client/src/app/+videos/+video-watch/comment/video-comment.component.html b/client/src/app/+videos/+video-watch/comment/video-comment.component.html index 8e44d0052..c4b2cd117 100644 --- a/client/src/app/+videos/+video-watch/comment/video-comment.component.html +++ b/client/src/app/+videos/+video-watch/comment/video-comment.component.html | |||
@@ -1,4 +1,4 @@ | |||
1 | <div *ngIf="!comment.isDeleted || comment.isDeleted && comment.totalReplies !== 0" class="root-comment"> | 1 | <div *ngIf="isNotDeletedOrDeletedWithReplies()" class="root-comment"> |
2 | <div class="left"> | 2 | <div class="left"> |
3 | <a *ngIf="!comment.isDeleted" [href]="comment.account.url" target="_blank" rel="noopener noreferrer"> | 3 | <a *ngIf="!comment.isDeleted" [href]="comment.account.url" target="_blank" rel="noopener noreferrer"> |
4 | <img | 4 | <img |
diff --git a/client/src/app/+videos/+video-watch/comment/video-comment.component.ts b/client/src/app/+videos/+video-watch/comment/video-comment.component.ts index 5491023ee..17e7e28ca 100644 --- a/client/src/app/+videos/+video-watch/comment/video-comment.component.ts +++ b/client/src/app/+videos/+video-watch/comment/video-comment.component.ts | |||
@@ -75,7 +75,7 @@ export class VideoCommentComponent implements OnInit, OnChanges { | |||
75 | 75 | ||
76 | this.resetReply.emit() | 76 | this.resetReply.emit() |
77 | 77 | ||
78 | delete this.redraftValue | 78 | this.redraftValue = undefined |
79 | } | 79 | } |
80 | 80 | ||
81 | onWantToReply (comment?: VideoComment) { | 81 | onWantToReply (comment?: VideoComment) { |
@@ -133,6 +133,10 @@ export class VideoCommentComponent implements OnInit, OnChanges { | |||
133 | ($event.target as HTMLImageElement).src = Actor.GET_DEFAULT_AVATAR_URL() | 133 | ($event.target as HTMLImageElement).src = Actor.GET_DEFAULT_AVATAR_URL() |
134 | } | 134 | } |
135 | 135 | ||
136 | isNotDeletedOrDeletedWithReplies () { | ||
137 | return !this.comment.isDeleted || this.comment.isDeleted && this.comment.totalReplies !== 0 | ||
138 | } | ||
139 | |||
136 | private getUserIfNeeded (account: Account) { | 140 | private getUserIfNeeded (account: Account) { |
137 | if (!account.userId) return | 141 | if (!account.userId) return |
138 | if (!this.authService.isLoggedIn()) return | 142 | if (!this.authService.isLoggedIn()) return |
diff --git a/client/src/app/+videos/+video-watch/comment/video-comments.component.html b/client/src/app/+videos/+video-watch/comment/video-comments.component.html index ac69f094b..1bc0885a4 100644 --- a/client/src/app/+videos/+video-watch/comment/video-comments.component.html +++ b/client/src/app/+videos/+video-watch/comment/video-comments.component.html | |||
@@ -28,7 +28,6 @@ | |||
28 | [user]="user" | 28 | [user]="user" |
29 | (commentCreated)="onCommentThreadCreated($event)" | 29 | (commentCreated)="onCommentThreadCreated($event)" |
30 | [textValue]="commentThreadRedraftValue" | 30 | [textValue]="commentThreadRedraftValue" |
31 | [commentThread]="true" | ||
32 | ></my-video-comment-add> | 31 | ></my-video-comment-add> |
33 | 32 | ||
34 | <div *ngIf="componentPagination.totalItems === 0 && comments.length === 0" i18n>No comments.</div> | 33 | <div *ngIf="componentPagination.totalItems === 0 && comments.length === 0" i18n>No comments.</div> |
diff --git a/client/src/app/+videos/+video-watch/comment/video-comments.component.ts b/client/src/app/+videos/+video-watch/comment/video-comments.component.ts index 9e8e143c2..adce31c5b 100644 --- a/client/src/app/+videos/+video-watch/comment/video-comments.component.ts +++ b/client/src/app/+videos/+video-watch/comment/video-comments.component.ts | |||
@@ -133,7 +133,7 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy { | |||
133 | 133 | ||
134 | onCommentThreadCreated (comment: VideoComment) { | 134 | onCommentThreadCreated (comment: VideoComment) { |
135 | this.comments.unshift(comment) | 135 | this.comments.unshift(comment) |
136 | delete this.commentThreadRedraftValue | 136 | this.commentThreadRedraftValue = undefined |
137 | } | 137 | } |
138 | 138 | ||
139 | onWantedToReply (comment: VideoComment) { | 139 | onWantedToReply (comment: VideoComment) { |
@@ -142,7 +142,7 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy { | |||
142 | 142 | ||
143 | onResetReply () { | 143 | onResetReply () { |
144 | this.inReplyToCommentId = undefined | 144 | this.inReplyToCommentId = undefined |
145 | delete this.commentReplyRedraftValue | 145 | this.commentReplyRedraftValue = undefined |
146 | } | 146 | } |
147 | 147 | ||
148 | onThreadCreated (commentTree: VideoCommentThreadTree) { | 148 | onThreadCreated (commentTree: VideoCommentThreadTree) { |