From 106489be754241796d6eee6531e80305516fdf7c Mon Sep 17 00:00:00 2001 From: Kevin Shenk Date: Wed, 22 Jan 2025 18:54:57 +0000 Subject: [PATCH] feat: reverse the order of the rss feed --- .../modals/rssfeed/OpenCloseModal.vue | 1 + .../components/modals/rssfeed/ViewFeedModal.vue | 6 ++++++ .../widgets/RssFeedMetadataBuilder.vue | 17 ++++++++++++++++- client/strings/en-us.json | 3 ++- server/models/Feed.js | 15 ++++++++++++--- 5 files changed, 37 insertions(+), 5 deletions(-) diff --git a/client/components/modals/rssfeed/OpenCloseModal.vue b/client/components/modals/rssfeed/OpenCloseModal.vue index 86dfeccf4..f125f6d3a 100644 --- a/client/components/modals/rssfeed/OpenCloseModal.vue +++ b/client/components/modals/rssfeed/OpenCloseModal.vue @@ -66,6 +66,7 @@ export default { currentFeed: null, metadataDetails: { preventIndexing: true, + reverseOrder: false, ownerName: '', ownerEmail: '' }, diff --git a/client/components/modals/rssfeed/ViewFeedModal.vue b/client/components/modals/rssfeed/ViewFeedModal.vue index ac594ed7c..4193a0019 100644 --- a/client/components/modals/rssfeed/ViewFeedModal.vue +++ b/client/components/modals/rssfeed/ViewFeedModal.vue @@ -16,6 +16,12 @@
{{ feed.meta.preventIndexing ? 'Yes' : 'No' }}
+
+
+ {{ $strings.LabelRSSFeedReverseOrder }} +
+
{{ feed.meta.reverseOrder ? 'Yes' : 'No' }}
+
{{ $strings.LabelRSSFeedCustomOwnerName }} diff --git a/client/components/widgets/RssFeedMetadataBuilder.vue b/client/components/widgets/RssFeedMetadataBuilder.vue index 5e6294855..5052aad1b 100644 --- a/client/components/widgets/RssFeedMetadataBuilder.vue +++ b/client/components/widgets/RssFeedMetadataBuilder.vue @@ -24,6 +24,9 @@
+
+ +
@@ -38,7 +41,8 @@ export default { return { preventIndexing: true, ownerName: '', - ownerEmail: '' + ownerEmail: '', + reverseOrder: false } } } @@ -82,6 +86,17 @@ export default { ownerEmail: value }) } + }, + reverseOrder: { + get() { + return this.value.reverseOrder + }, + set(value) { + this.$emit('input', { + ...this.value, + reverseOrder: value + }) + } } }, methods: {}, diff --git a/client/strings/en-us.json b/client/strings/en-us.json index 37a3aae3e..e8c764bfd 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -508,6 +508,7 @@ "LabelRSSFeedCustomOwnerName": "Custom owner Name", "LabelRSSFeedOpen": "RSS Feed Open", "LabelRSSFeedPreventIndexing": "Prevent Indexing", + "LabelRSSFeedReverseOrder": "Reverse Episode Order", "LabelRSSFeedSlug": "RSS Feed Slug", "LabelRSSFeedURL": "RSS Feed URL", "LabelRandomly": "Randomly", @@ -1081,4 +1082,4 @@ "ToastUserPasswordMismatch": "Passwords do not match", "ToastUserPasswordMustChange": "New password cannot match old password", "ToastUserRootRequireName": "Must enter a root username" -} +} \ No newline at end of file diff --git a/server/models/Feed.js b/server/models/Feed.js index 577dedfb9..654099076 100644 --- a/server/models/Feed.js +++ b/server/models/Feed.js @@ -388,7 +388,11 @@ class Feed extends Model { ownerEmail: DataTypes.STRING, explicit: DataTypes.BOOLEAN, preventIndexing: DataTypes.BOOLEAN, - coverPath: DataTypes.STRING + coverPath: DataTypes.STRING, + reverseOrder: { + type: DataTypes.BOOLEAN, + defaultValue: false + } }, { sequelize, @@ -613,8 +617,13 @@ class Feed extends Model { } const rssfeed = new RSS(rssData) - this.feedEpisodes.forEach((ep) => { - rssfeed.item(ep.getRSSData(hostPrefix)) + let episodes = this.feedEpisodes || [] + if (this.reverseOrder) { + episodes = [...episodes].reverse() + } + + episodes.forEach(episode => { + rssfeed.item(episode.getRSSData(hostPrefix)) }) return rssfeed.xml() }