import { Subscription } from 'rxjs'
import { VideoCommentThreadTree } from '../../../../../../shared/models/videos/video-comment.model'
import { AuthService } from '../../../core/auth'
-import { ComponentPagination } from '../../../shared/rest/component-pagination.model'
+import { ComponentPagination, hasMoreItems } from '../../../shared/rest/component-pagination.model'
import { User } from '../../../shared/users'
import { VideoSortField } from '../../../shared/video/sort-field.type'
import { VideoDetails } from '../../../shared/video/video-details.model'
this.highlightedThread = new VideoComment(res.comment)
// Scroll to the highlighted thread
- setTimeout(() => {
- // -60 because of the fixed header
- const scrollY = this.commentHighlightBlock.nativeElement.offsetTop - 60
- window.scroll(0, scrollY)
- }, 500)
+ setTimeout(() => this.commentHighlightBlock.nativeElement.scrollIntoView(), 0)
}
},
async onWantedToDelete (commentToDelete: VideoComment) {
let message = 'Do you really want to delete this comment?'
+
if (commentToDelete.totalReplies !== 0) {
message += this.i18n(' {{totalReplies}} replies will be deleted too.', { totalReplies: commentToDelete.totalReplies })
}
+ if (commentToDelete.isLocal) {
+ message += this.i18n(' The deletion will be sent to remote instances so they remove the comment too.')
+ } else {
+ message += this.i18n(' It is a remote comment, so the deletion will only be effective on your instance.')
+ }
+
const res = await this.confirmService.confirm(message, this.i18n('Delete'))
if (res === false) return
onNearOfBottom () {
this.componentPagination.currentPage++
- if (this.hasMoreComments()) {
+ if (hasMoreItems(this.componentPagination)) {
this.loadMoreComments()
}
}
- private hasMoreComments () {
- // No results
- if (this.componentPagination.totalItems === 0) return false
-
- // Not loaded yet
- if (!this.componentPagination.totalItems) return true
-
- const maxPage = this.componentPagination.totalItems / this.componentPagination.itemsPerPage
- return maxPage > this.componentPagination.currentPage
- }
-
private deleteLocalCommentThread (parentComment: VideoCommentThreadTree, commentToDelete: VideoComment) {
for (const commentChild of parentComment.children) {
if (commentChild.comment.id === commentToDelete.id) {