From 38d69d65012c8bf01bceb672be99f94fe414f275 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 8 Dec 2021 11:32:45 +0100 Subject: [PATCH] Update torrents info name on video update --- client/src/app/menu/menu.component.ts | 2 +- server/controllers/api/videos/update.ts | 11 +++++++---- server/helpers/webtorrent.ts | 3 ++- server/middlewares/error.ts | 10 ++++++++-- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/client/src/app/menu/menu.component.ts b/client/src/app/menu/menu.component.ts index bcc884878..d5ddc29cb 100644 --- a/client/src/app/menu/menu.component.ts +++ b/client/src/app/menu/menu.component.ts @@ -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 diff --git a/server/controllers/api/videos/update.ts b/server/controllers/api/videos/update.ts index 6f14a6788..c0eb4ebee 100644 --- a/server/controllers/api/videos/update.ts +++ b/server/controllers/api/videos/update.ts @@ -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() } } diff --git a/server/helpers/webtorrent.ts b/server/helpers/webtorrent.ts index b350c9718..ecc703646 100644 --- a/server/helpers/webtorrent.ts +++ b/server/helpers/webtorrent.ts @@ -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 ( diff --git a/server/middlewares/error.ts b/server/middlewares/error.ts index 6c52ce7bd..34c87a26d 100644 --- a/server/middlewares/error.ts +++ b/server/middlewares/error.ts @@ -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() -- 2.41.0