X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fvideos%2F%2Bvideo-watch%2Fcomment%2Fvideo-comment.component.ts;h=e90008de9b603fb8cbf2a5972ae23b72eebc20b8;hb=13a6b53655cdd7baba494abc3c9ff52788d4651e;hp=0224132ac9b53cee3a5f449de3310aee9b3463bf;hpb=3d9eaae318670986fedab257b8be344c9b43d8d5;p=github%2FChocobozzz%2FPeerTube.git 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 0224132ac..e90008de9 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 @@ -1,11 +1,9 @@ import { Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core' -import { MarkdownService } from '@app/videos/shared' +import { LinkifierService } from '@app/videos/+video-watch/comment/linkifier.service' import * as sanitizeHtml from 'sanitize-html' -import { Account as AccountInterface } from '../../../../../../shared/models/actors' import { UserRight } from '../../../../../../shared/models/users' import { VideoCommentThreadTree } from '../../../../../../shared/models/videos/video-comment.model' import { AuthService } from '../../../core/auth' -import { Account } from '../../../shared/account/account.model' import { Video } from '../../../shared/video/video.model' import { VideoComment } from './video-comment.model' @@ -31,8 +29,8 @@ export class VideoCommentComponent implements OnInit, OnChanges { newParentComments = [] constructor ( - private authService: AuthService, - private markdownService: MarkdownService + private linkifierService: LinkifierService, + private authService: AuthService ) {} get user () { @@ -57,7 +55,7 @@ export class VideoCommentComponent implements OnInit, OnChanges { this.threadCreated.emit(this.commentTree) } - this.commentTree.children.push({ + this.commentTree.children.unshift({ comment: createdComment, children: [] }) @@ -80,10 +78,6 @@ export class VideoCommentComponent implements OnInit, OnChanges { this.resetReply.emit() } - getAvatarUrl (account: AccountInterface) { - return Account.GET_ACCOUNT_AVATAR_URL(account) - } - isRemovableByUser () { return this.isUserLoggedIn() && ( @@ -93,14 +87,28 @@ export class VideoCommentComponent implements OnInit, OnChanges { } private init () { - this.sanitizedCommentHTML = sanitizeHtml(this.comment.text, { + // Convert possible markdown to html + const html = this.linkifierService.linkify(this.comment.text) + + this.sanitizedCommentHTML = sanitizeHtml(html, { allowedTags: [ 'a', 'p', 'span', 'br' ], - allowedSchemes: [ 'http', 'https' ] + allowedSchemes: [ 'http', 'https' ], + allowedAttributes: { + 'a': [ 'href', 'class', 'target' ] + }, + transformTags: { + a: (tagName, attribs) => { + return { + tagName, + attribs: Object.assign(attribs, { + target: '_blank', + rel: 'noopener noreferrer' + }) + } + } + } }) - // Convert possible markdown to html - this.sanitizedCommentHTML = this.markdownService.linkify(this.comment.text) - this.newParentComments = this.parentComments.concat([ this.comment ]) } }