diff options
author | Chocobozzz <me@florianbigard.com> | 2018-06-13 15:07:25 +0200 |
---|---|---|
committer | Chocobozzz <me@florianbigard.com> | 2018-06-13 15:07:45 +0200 |
commit | 749c7247ae9042a74d132afda0c7eefab66a0428 (patch) | |
tree | 73ceea2408c5aea13e2c936951e7ece3cf98b9aa | |
parent | bcec136ee62ee9fcc0f0177e9dd0ac191a2cf5ee (diff) | |
download | PeerTube-749c7247ae9042a74d132afda0c7eefab66a0428.tar.gz PeerTube-749c7247ae9042a74d132afda0c7eefab66a0428.tar.zst PeerTube-749c7247ae9042a74d132afda0c7eefab66a0428.zip |
Fix bad RSS descriptions when filtering videos by account or channel
-rw-r--r-- | server/controllers/feeds.ts | 33 | ||||
-rw-r--r-- | 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 @@ | |||
1 | import * as express from 'express' | 1 | import * as express from 'express' |
2 | import { CONFIG, FEEDS, ROUTE_CACHE_LIFETIME } from '../initializers/constants' | 2 | import { CONFIG, FEEDS, ROUTE_CACHE_LIFETIME } from '../initializers/constants' |
3 | import { asyncMiddleware, videoFeedsValidator, setDefaultSort, videosSortValidator, videoCommentsFeedsValidator } from '../middlewares' | 3 | import { asyncMiddleware, setDefaultSort, videoCommentsFeedsValidator, videoFeedsValidator, videosSortValidator } from '../middlewares' |
4 | import { VideoModel } from '../models/video/video' | 4 | import { VideoModel } from '../models/video/video' |
5 | import * as Feed from 'pfeed' | 5 | import * as Feed from 'pfeed' |
6 | import { AccountModel } from '../models/account/account' | 6 | import { AccountModel } from '../models/account/account' |
@@ -33,13 +33,17 @@ export { | |||
33 | // --------------------------------------------------------------------------- | 33 | // --------------------------------------------------------------------------- |
34 | 34 | ||
35 | async function generateVideoCommentsFeed (req: express.Request, res: express.Response, next: express.NextFunction) { | 35 | async function generateVideoCommentsFeed (req: express.Request, res: express.Response, next: express.NextFunction) { |
36 | let feed = initFeed() | ||
37 | const start = 0 | 36 | const start = 0 |
38 | 37 | ||
39 | const videoId: number = res.locals.video ? res.locals.video.id : undefined | 38 | const video = res.locals.video as VideoModel |
39 | const videoId: number = video ? video.id : undefined | ||
40 | 40 | ||
41 | const comments = await VideoCommentModel.listForFeed(start, FEEDS.COUNT, videoId) | 41 | const comments = await VideoCommentModel.listForFeed(start, FEEDS.COUNT, videoId) |
42 | 42 | ||
43 | const name = video ? video.name : CONFIG.INSTANCE.NAME | ||
44 | const description = video ? video.description : CONFIG.INSTANCE.DESCRIPTION | ||
45 | const feed = initFeed(name, description) | ||
46 | |||
43 | // Adding video items to the feed, one at a time | 47 | // Adding video items to the feed, one at a time |
44 | comments.forEach(comment => { | 48 | comments.forEach(comment => { |
45 | feed.addItem({ | 49 | feed.addItem({ |
@@ -62,13 +66,28 @@ async function generateVideoCommentsFeed (req: express.Request, res: express.Res | |||
62 | } | 66 | } |
63 | 67 | ||
64 | async function generateVideoFeed (req: express.Request, res: express.Response, next: express.NextFunction) { | 68 | async function generateVideoFeed (req: express.Request, res: express.Response, next: express.NextFunction) { |
65 | let feed = initFeed() | ||
66 | const start = 0 | 69 | const start = 0 |
67 | 70 | ||
68 | const account: AccountModel = res.locals.account | 71 | const account: AccountModel = res.locals.account |
69 | const videoChannel: VideoChannelModel = res.locals.videoChannel | 72 | const videoChannel: VideoChannelModel = res.locals.videoChannel |
70 | const hideNSFW = CONFIG.INSTANCE.DEFAULT_NSFW_POLICY === 'do_not_list' | 73 | const hideNSFW = CONFIG.INSTANCE.DEFAULT_NSFW_POLICY === 'do_not_list' |
71 | 74 | ||
75 | let name: string | ||
76 | let description: string | ||
77 | |||
78 | if (videoChannel) { | ||
79 | name = videoChannel.getDisplayName() | ||
80 | description = videoChannel.description | ||
81 | } else if (account) { | ||
82 | name = account.getDisplayName() | ||
83 | description = account.description | ||
84 | } else { | ||
85 | name = CONFIG.INSTANCE.NAME | ||
86 | description = CONFIG.INSTANCE.DESCRIPTION | ||
87 | } | ||
88 | |||
89 | const feed = initFeed(name, description) | ||
90 | |||
72 | const resultList = await VideoModel.listForApi({ | 91 | const resultList = await VideoModel.listForApi({ |
73 | start, | 92 | start, |
74 | count: FEEDS.COUNT, | 93 | count: FEEDS.COUNT, |
@@ -112,12 +131,12 @@ async function generateVideoFeed (req: express.Request, res: express.Response, n | |||
112 | return sendFeed(feed, req, res) | 131 | return sendFeed(feed, req, res) |
113 | } | 132 | } |
114 | 133 | ||
115 | function initFeed () { | 134 | function initFeed (name: string, description: string) { |
116 | const webserverUrl = CONFIG.WEBSERVER.URL | 135 | const webserverUrl = CONFIG.WEBSERVER.URL |
117 | 136 | ||
118 | return new Feed({ | 137 | return new Feed({ |
119 | title: CONFIG.INSTANCE.NAME, | 138 | title: name, |
120 | description: CONFIG.INSTANCE.DESCRIPTION, | 139 | description, |
121 | // updated: TODO: somehowGetLatestUpdate, // optional, default = today | 140 | // updated: TODO: somehowGetLatestUpdate, // optional, default = today |
122 | id: webserverUrl, | 141 | id: webserverUrl, |
123 | link: webserverUrl, | 142 | 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<VideoChannelModel> { | |||
237 | const actor = this.Actor.toFormattedJSON() | 237 | const actor = this.Actor.toFormattedJSON() |
238 | const videoChannel = { | 238 | const videoChannel = { |
239 | id: this.id, | 239 | id: this.id, |
240 | displayName: this.name, | 240 | displayName: this.getDisplayName(), |
241 | description: this.description, | 241 | description: this.description, |
242 | support: this.support, | 242 | support: this.support, |
243 | isLocal: this.Actor.isOwned(), | 243 | isLocal: this.Actor.isOwned(), |
@@ -266,4 +266,8 @@ export class VideoChannelModel extends Model<VideoChannelModel> { | |||
266 | ] | 266 | ] |
267 | }) | 267 | }) |
268 | } | 268 | } |
269 | |||
270 | getDisplayName () { | ||
271 | return this.name | ||
272 | } | ||
269 | } | 273 | } |