From 749c7247ae9042a74d132afda0c7eefab66a0428 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 13 Jun 2018 15:07:25 +0200 Subject: [PATCH] Fix bad RSS descriptions when filtering videos by account or channel --- server/controllers/feeds.ts | 33 ++++++++++++++++++++++------ server/models/video/video-channel.ts | 6 ++++- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/server/controllers/feeds.ts b/server/controllers/feeds.ts index c928dfacb..ece5dc067 100644 --- a/server/controllers/feeds.ts +++ b/server/controllers/feeds.ts @@ -1,6 +1,6 @@ import * as express from 'express' import { CONFIG, FEEDS, ROUTE_CACHE_LIFETIME } from '../initializers/constants' -import { asyncMiddleware, videoFeedsValidator, setDefaultSort, videosSortValidator, videoCommentsFeedsValidator } from '../middlewares' +import { asyncMiddleware, setDefaultSort, videoCommentsFeedsValidator, videoFeedsValidator, videosSortValidator } from '../middlewares' import { VideoModel } from '../models/video/video' import * as Feed from 'pfeed' import { AccountModel } from '../models/account/account' @@ -33,13 +33,17 @@ export { // --------------------------------------------------------------------------- async function generateVideoCommentsFeed (req: express.Request, res: express.Response, next: express.NextFunction) { - let feed = initFeed() const start = 0 - const videoId: number = res.locals.video ? res.locals.video.id : undefined + const video = res.locals.video as VideoModel + const videoId: number = video ? video.id : undefined const comments = await VideoCommentModel.listForFeed(start, FEEDS.COUNT, videoId) + const name = video ? video.name : CONFIG.INSTANCE.NAME + const description = video ? video.description : CONFIG.INSTANCE.DESCRIPTION + const feed = initFeed(name, description) + // Adding video items to the feed, one at a time comments.forEach(comment => { feed.addItem({ @@ -62,13 +66,28 @@ async function generateVideoCommentsFeed (req: express.Request, res: express.Res } async function generateVideoFeed (req: express.Request, res: express.Response, next: express.NextFunction) { - let feed = initFeed() const start = 0 const account: AccountModel = res.locals.account const videoChannel: VideoChannelModel = res.locals.videoChannel const hideNSFW = CONFIG.INSTANCE.DEFAULT_NSFW_POLICY === 'do_not_list' + let name: string + let description: string + + if (videoChannel) { + name = videoChannel.getDisplayName() + description = videoChannel.description + } else if (account) { + name = account.getDisplayName() + description = account.description + } else { + name = CONFIG.INSTANCE.NAME + description = CONFIG.INSTANCE.DESCRIPTION + } + + const feed = initFeed(name, description) + const resultList = await VideoModel.listForApi({ start, count: FEEDS.COUNT, @@ -112,12 +131,12 @@ async function generateVideoFeed (req: express.Request, res: express.Response, n return sendFeed(feed, req, res) } -function initFeed () { +function initFeed (name: string, description: string) { const webserverUrl = CONFIG.WEBSERVER.URL return new Feed({ - title: CONFIG.INSTANCE.NAME, - description: CONFIG.INSTANCE.DESCRIPTION, + title: name, + description, // updated: TODO: somehowGetLatestUpdate, // optional, default = today id: webserverUrl, link: webserverUrl, diff --git a/server/models/video/video-channel.ts b/server/models/video/video-channel.ts index b9df14eca..a65a03e38 100644 --- a/server/models/video/video-channel.ts +++ b/server/models/video/video-channel.ts @@ -237,7 +237,7 @@ export class VideoChannelModel extends Model { const actor = this.Actor.toFormattedJSON() const videoChannel = { id: this.id, - displayName: this.name, + displayName: this.getDisplayName(), description: this.description, support: this.support, isLocal: this.Actor.isOwned(), @@ -266,4 +266,8 @@ export class VideoChannelModel extends Model { ] }) } + + getDisplayName () { + return this.name + } }