mirror of https://github.com/Chocobozzz/PeerTube
Add author indicator to the comment replies loader
parent
bf64ed4196
commit
5b0413ddaa
|
@ -15,6 +15,7 @@ export class VideoComment implements VideoCommentServerModel {
|
|||
deletedAt: Date | string
|
||||
isDeleted: boolean
|
||||
account: AccountInterface
|
||||
totalRepliesFromVideoAuthor: number
|
||||
totalReplies: number
|
||||
by: string
|
||||
accountAvatarUrl: string
|
||||
|
@ -33,6 +34,7 @@ export class VideoComment implements VideoCommentServerModel {
|
|||
this.deletedAt = hash.deletedAt ? new Date(hash.deletedAt.toString()) : null
|
||||
this.isDeleted = hash.isDeleted
|
||||
this.account = hash.account
|
||||
this.totalRepliesFromVideoAuthor = hash.totalRepliesFromVideoAuthor
|
||||
this.totalReplies = hash.totalReplies
|
||||
|
||||
if (this.account) {
|
||||
|
|
|
@ -69,9 +69,19 @@
|
|||
></my-video-comment>
|
||||
|
||||
<div *ngIf="comment.totalReplies !== 0 && !threadComments[comment.id]" (click)="viewReplies(comment.id)" class="view-replies">
|
||||
<ng-container i18n>View all {{ comment.totalReplies }} replies</ng-container>
|
||||
|
||||
<span *ngIf="!threadLoading[comment.id]" class="glyphicon glyphicon-menu-down"></span>
|
||||
|
||||
<ng-container *ngIf="comment.totalRepliesFromVideoAuthor > 0; then hasAuthorComments; else noAuthorComments"></ng-container>
|
||||
<ng-template #hasAuthorComments>
|
||||
<ng-container *ngIf="comment.totalReplies !== comment.totalRepliesFromVideoAuthor; else onlyAuthorComments" i18n>
|
||||
View {{ comment.totalReplies }} replies from {{ video?.account?.displayName || 'the author' }} and others
|
||||
</ng-container>
|
||||
<ng-template i18n #onlyAuthorComments>
|
||||
View {{ comment.totalReplies }} replies from {{ video?.account?.displayName || 'the author' }}
|
||||
</ng-template>
|
||||
</ng-template>
|
||||
<ng-template i18n #noAuthorComments>View {{ comment.totalReplies }} replies</ng-template>
|
||||
|
||||
<my-small-loader class="comment-thread-loading" [loading]="threadLoading[comment.id]"></my-small-loader>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
}
|
||||
|
||||
.glyphicon, .comment-thread-loading {
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
display: inline-block;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
|
|
@ -56,6 +56,17 @@ enum ScopeNames {
|
|||
')'
|
||||
),
|
||||
'totalReplies'
|
||||
],
|
||||
[
|
||||
Sequelize.literal(
|
||||
'(' +
|
||||
'SELECT COUNT("replies"."id") ' +
|
||||
'FROM "videoComment" AS "replies" ' +
|
||||
'WHERE "replies"."originCommentId" = "VideoCommentModel"."id" ' +
|
||||
'AND "accountId" = ' + userAccountId +
|
||||
')'
|
||||
),
|
||||
'totalRepliesFromVideoAuthor'
|
||||
]
|
||||
]
|
||||
}
|
||||
|
@ -501,6 +512,7 @@ export class VideoCommentModel extends Model<VideoCommentModel> {
|
|||
updatedAt: this.updatedAt,
|
||||
deletedAt: this.deletedAt,
|
||||
isDeleted: this.isDeleted(),
|
||||
totalRepliesFromVideoAuthor: this.get('totalRepliesFromVideoAuthor') || 0,
|
||||
totalReplies: this.get('totalReplies') || 0,
|
||||
account: this.Account ? this.Account.toFormattedJSON() : null
|
||||
} as VideoComment
|
||||
|
|
|
@ -11,6 +11,7 @@ export interface VideoComment {
|
|||
updatedAt: Date | string
|
||||
deletedAt: Date | string
|
||||
isDeleted: boolean
|
||||
totalRepliesFromVideoAuthor: number
|
||||
totalReplies: number
|
||||
account: Account
|
||||
}
|
||||
|
|
|
@ -2257,6 +2257,8 @@ components:
|
|||
type: string
|
||||
updatedAt:
|
||||
type: string
|
||||
totalRepliesFromVideoAuthor:
|
||||
type: number
|
||||
totalReplies:
|
||||
type: number
|
||||
account:
|
||||
|
|
Loading…
Reference in New Issue