Prevent error on highlighted thread
This commit is contained in:
parent
37b1d97f22
commit
5a9a56b78f
|
@ -5,6 +5,7 @@ import { AuthService, ComponentPagination, ConfirmService, hasMoreItems, Notifie
|
||||||
import { HooksService } from '@app/core/plugins/hooks.service'
|
import { HooksService } from '@app/core/plugins/hooks.service'
|
||||||
import { Syndication, VideoDetails } from '@app/shared/shared-main'
|
import { Syndication, VideoDetails } from '@app/shared/shared-main'
|
||||||
import { VideoComment, VideoCommentService, VideoCommentThreadTree } from '@app/shared/shared-video-comment'
|
import { VideoComment, VideoCommentService, VideoCommentThreadTree } from '@app/shared/shared-video-comment'
|
||||||
|
import { PeerTubeProblemDocument, ServerErrorCode } from '@shared/models'
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'my-video-comments',
|
selector: 'my-video-comments',
|
||||||
|
@ -104,7 +105,14 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
error: err => this.notifier.error(err.message)
|
error: err => {
|
||||||
|
// We may try to fetch highlighted thread of another video, skip the error if it is the case
|
||||||
|
// We'll retry the request on video Input() change
|
||||||
|
const errorBody = err.body as PeerTubeProblemDocument
|
||||||
|
if (highlightThread && errorBody?.code === ServerErrorCode.COMMENT_NOT_ASSOCIATED_TO_VIDEO) return
|
||||||
|
|
||||||
|
this.notifier.error(err.message)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -254,6 +262,10 @@ export class VideoCommentsComponent implements OnInit, OnChanges, OnDestroy {
|
||||||
|
|
||||||
this.syndicationItems = this.videoCommentService.getVideoCommentsFeeds(this.video)
|
this.syndicationItems = this.videoCommentService.getVideoCommentsFeeds(this.video)
|
||||||
this.loadMoreThreads()
|
this.loadMoreThreads()
|
||||||
|
|
||||||
|
if (this.activatedRoute.params['threadId']) {
|
||||||
|
this.processHighlightedThread(+this.activatedRoute.params['threadId'])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -242,6 +242,8 @@ export class VideoWatchComponent implements OnInit, OnDestroy {
|
||||||
|
|
||||||
if (this.player) this.player.pause()
|
if (this.player) this.player.pause()
|
||||||
|
|
||||||
|
this.video = undefined
|
||||||
|
|
||||||
const videoObs = this.hooks.wrapObsFun(
|
const videoObs = this.hooks.wrapObsFun(
|
||||||
this.videoService.getVideo.bind(this.videoService),
|
this.videoService.getVideo.bind(this.videoService),
|
||||||
{ videoId },
|
{ videoId },
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import express from 'express'
|
import express from 'express'
|
||||||
import { VideoCommentModel } from '@server/models/video/video-comment'
|
import { VideoCommentModel } from '@server/models/video/video-comment'
|
||||||
import { MVideoId } from '@server/types/models'
|
import { MVideoId } from '@server/types/models'
|
||||||
import { HttpStatusCode } from '@shared/models'
|
import { HttpStatusCode, ServerErrorCode } from '@shared/models'
|
||||||
|
|
||||||
async function doesVideoCommentThreadExist (idArg: number | string, video: MVideoId, res: express.Response) {
|
async function doesVideoCommentThreadExist (idArg: number | string, video: MVideoId, res: express.Response) {
|
||||||
const id = parseInt(idArg + '', 10)
|
const id = parseInt(idArg + '', 10)
|
||||||
|
@ -16,7 +16,10 @@ async function doesVideoCommentThreadExist (idArg: number | string, video: MVide
|
||||||
}
|
}
|
||||||
|
|
||||||
if (videoComment.videoId !== video.id) {
|
if (videoComment.videoId !== video.id) {
|
||||||
res.fail({ message: 'Video comment is not associated to this video.' })
|
res.fail({
|
||||||
|
type: ServerErrorCode.COMMENT_NOT_ASSOCIATED_TO_VIDEO,
|
||||||
|
message: 'Video comment is not associated to this video.'
|
||||||
|
})
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +45,10 @@ async function doesVideoCommentExist (idArg: number | string, video: MVideoId, r
|
||||||
}
|
}
|
||||||
|
|
||||||
if (videoComment.videoId !== video.id) {
|
if (videoComment.videoId !== video.id) {
|
||||||
res.fail({ message: 'Video comment is not associated to this video.' })
|
res.fail({
|
||||||
|
type: ServerErrorCode.COMMENT_NOT_ASSOCIATED_TO_VIDEO,
|
||||||
|
message: 'Video comment is not associated to this video.'
|
||||||
|
})
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,9 @@ export const enum ServerErrorCode {
|
||||||
* A torrent should have at most one correct video file. Any more and we will
|
* A torrent should have at most one correct video file. Any more and we will
|
||||||
* not be able to choose automatically.
|
* not be able to choose automatically.
|
||||||
*/
|
*/
|
||||||
INCORRECT_FILES_IN_TORRENT = 'incorrect_files_in_torrent'
|
INCORRECT_FILES_IN_TORRENT = 'incorrect_files_in_torrent',
|
||||||
|
|
||||||
|
COMMENT_NOT_ASSOCIATED_TO_VIDEO = 'comment_not_associated_to_video'
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue