From 79f28f3ae0439ed3079818ef177ce1487fb4767d Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Fri, 2 Sep 2022 15:46:20 +0100 Subject: [PATCH] Fix feed.success crashing the process due to a typing issue (#469) * Fix feed.sucess * changelog * Stop being lazy and use an interface --- changelog.d/469.bugfix | 1 + src/Bridge.ts | 6 +++--- src/feeds/FeedReader.ts | 8 ++++++-- 3 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 changelog.d/469.bugfix diff --git a/changelog.d/469.bugfix b/changelog.d/469.bugfix new file mode 100644 index 00000000..cec52ac3 --- /dev/null +++ b/changelog.d/469.bugfix @@ -0,0 +1 @@ +Fix a bug where reading RSS feeds could crash the process. \ No newline at end of file diff --git a/src/Bridge.ts b/src/Bridge.ts index b256b103..7a0e2dd2 100644 --- a/src/Bridge.ts +++ b/src/Bridge.ts @@ -40,7 +40,7 @@ import { getAppservice } from "./appservice"; import { JiraOAuthRequestCloud, JiraOAuthRequestOnPrem, JiraOAuthRequestResult } from "./Jira/OAuth"; import { GenericWebhookEvent, GenericWebhookEventResult } from "./generic/types"; import { SetupWidget } from "./Widgets/SetupWidget"; -import { FeedEntry, FeedError, FeedReader } from "./feeds/FeedReader"; +import { FeedEntry, FeedError, FeedReader, FeedSuccess } from "./feeds/FeedReader"; const log = new LogWrapper("Bridge"); export class Bridge { @@ -615,9 +615,9 @@ export class Bridge { (data) => connManager.getConnectionsForFeedUrl(data.feed.url), (c, data) => c.handleFeedEntry(data), ); - this.bindHandlerToQueue( + this.bindHandlerToQueue( "feed.success", - (data) => connManager.getConnectionsForFeedUrl(data.feed.url), + (data) => connManager.getConnectionsForFeedUrl(data.url), c => c.handleFeedSuccess(), ); this.bindHandlerToQueue( diff --git a/src/feeds/FeedReader.ts b/src/feeds/FeedReader.ts index fd4bdab2..1e5f9fce 100644 --- a/src/feeds/FeedReader.ts +++ b/src/feeds/FeedReader.ts @@ -55,6 +55,10 @@ export interface FeedEntry { fetchKey: string, } +export interface FeedSuccess { + url: string, +} + interface AccountData { [url: string]: string[], } @@ -210,7 +214,7 @@ export class FeedReader { const entry = { feed: { title: feed.title ? stripHtml(feed.title) : null, - url: url.toString() + url: url, }, title: item.title ? stripHtml(item.title) : null, link: item.link || null, @@ -233,7 +237,7 @@ export class FeedReader { const newSeenItems = Array.from(new Set([ ...newGuids, ...seenGuids ]).values()).slice(0, maxGuids); this.seenEntries.set(url, newSeenItems); } - this.queue.push({ eventName: 'feed.success', sender: 'FeedReader', data: undefined}); + this.queue.push({ eventName: 'feed.success', sender: 'FeedReader', data: { url: url } }); } catch (err: unknown) { const error = err instanceof Error ? err : new Error(`Unknown error ${err}`); const feedError = new FeedError(url.toString(), error, fetchKey);