Update torrents info name on video update

This commit is contained in:
Chocobozzz 2021-12-08 11:32:45 +01:00
parent 9b293cd6a2
commit 38d69d6501
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
4 changed files with 18 additions and 8 deletions

View File

@ -131,7 +131,7 @@ export class MenuComponent implements OnInit {
}
getExternalLoginHref () {
if (this.serverConfig.client.menu.login.redirectOnSingleExternalAuth !== true) return undefined
if (!this.serverConfig || this.serverConfig.client.menu.login.redirectOnSingleExternalAuth !== true) return undefined
const externalAuths = this.serverConfig.plugin.registeredExternalAuths
if (externalAuths.length !== 1) return undefined

View File

@ -69,7 +69,7 @@ async function updateVideo (req: express.Request, res: express.Response) {
})
try {
const videoInstanceUpdated = await sequelizeTypescript.transaction(async t => {
const { videoInstanceUpdated, isNewVideo } = await sequelizeTypescript.transaction(async t => {
// Refresh video since thumbnails to prevent concurrent updates
const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(videoFromReq.id, t)
@ -138,8 +138,6 @@ async function updateVideo (req: express.Request, res: express.Response) {
transaction: t
})
await federateVideoIfNeeded(videoInstanceUpdated, isNewVideo, t)
auditLogger.update(
getAuditIdFromRes(res),
new VideoAuditView(videoInstanceUpdated.toFormattedDetailsJSON()),
@ -147,10 +145,13 @@ async function updateVideo (req: express.Request, res: express.Response) {
)
logger.info('Video with name %s and uuid %s updated.', video.name, video.uuid, lTags(video.uuid))
return videoInstanceUpdated
return { videoInstanceUpdated, isNewVideo }
})
if (videoInfoToUpdate.name) await updateTorrentsMetadata(videoInstanceUpdated)
await federateVideoIfNeeded(videoInstanceUpdated, isNewVideo, undefined)
if (wasConfidentialVideo) Notifier.Instance.notifyOnNewVideoIfNeeded(videoInstanceUpdated)
Hooks.runAction('action:api.video.updated', { video: videoInstanceUpdated, body: req.body, req, res })
@ -203,5 +204,7 @@ function updateSchedule (videoInstance: MVideoFullLight, videoInfoToUpdate: Vide
async function updateTorrentsMetadata (video: MVideoFullLight) {
for (const file of video.getAllFiles()) {
await updateTorrentMetadata(video, file)
await file.save()
}
}

View File

@ -14,7 +14,7 @@ import { MVideo } from '@server/types/models/video/video'
import { MVideoFile, MVideoFileRedundanciesOpt } from '@server/types/models/video/video-file'
import { MStreamingPlaylistVideo } from '@server/types/models/video/video-streaming-playlist'
import { CONFIG } from '../initializers/config'
import { promisify2 } from './core-utils'
import { promisify2, sha1 } from './core-utils'
import { logger } from './logger'
import { generateVideoImportTmpPath } from './utils'
import { extractVideo } from './video'
@ -145,6 +145,7 @@ async function updateTorrentMetadata (videoOrPlaylist: MVideo | MStreamingPlayli
await remove(join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename))
videoFile.torrentFilename = newTorrentFilename
videoFile.infoHash = sha1(encode(decoded.info))
}
function generateMagnetUri (

View File

@ -1,5 +1,6 @@
import express from 'express'
import { ProblemDocument, ProblemDocumentExtension } from 'http-problem-details'
import { logger } from '@server/helpers/logger'
import { HttpStatusCode } from '@shared/models'
function apiFailMiddleware (req: express.Request, res: express.Response, next: express.NextFunction) {
@ -18,7 +19,8 @@ function apiFailMiddleware (req: express.Request, res: express.Response, next: e
res.status(status)
res.setHeader('Content-Type', 'application/problem+json')
res.json(new ProblemDocument({
const json = new ProblemDocument({
status,
title,
instance,
@ -28,7 +30,11 @@ function apiFailMiddleware (req: express.Request, res: express.Response, next: e
type: type
? `https://docs.joinpeertube.org/api-rest-reference.html#section/Errors/${type}`
: undefined
}, extension))
}, extension)
logger.debug('Bad HTTP request.', { json })
res.json(json)
}
if (next) next()