Skip to content

Commit 30db78e

Browse files
committed
feat(rss): add image_alt + fix 'embed' object case
1 parent 4563f73 commit 30db78e

3 files changed

Lines changed: 32 additions & 44 deletions

File tree

src/components/GuildDashboard/SpecialCategoryComponents/RssFeeds/FeedEmbedSettings.tsx

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ export default function FeedEmbedSettings({ feed, editFeed }: FeedEmbedSettingsP
4141
}
4242

4343
function ShowDateInFooterToggle({ feed, editFeed }: FeedEmbedSettingsProps) {
44-
const currentValue = feed.embed.showDateInFooter ?? true;
44+
const currentValue = feed.embed.show_date_in_footer ?? true;
4545
function onChange() {
4646
editFeed({
4747
...feed,
4848
embed: {
4949
...feed.embed,
50-
showDateInFooter: !currentValue,
50+
"show_date_in_footer": !currentValue,
5151
},
5252
});
5353
}
@@ -61,13 +61,13 @@ function ShowDateInFooterToggle({ feed, editFeed }: FeedEmbedSettingsProps) {
6161
}
6262

6363
function EnableLinkInTitleToggle({ feed, editFeed }: FeedEmbedSettingsProps) {
64-
const currentValue = feed.embed.enableLinkInTitle ?? false;
64+
const currentValue = feed.embed.enable_link_in_title ?? false;
6565
function onChange() {
6666
editFeed({
6767
...feed,
6868
embed: {
6969
...feed.embed,
70-
enableLinkInTitle: !currentValue,
70+
"enable_link_in_title": !currentValue,
7171
},
7272
});
7373
}
@@ -82,7 +82,7 @@ function EnableLinkInTitleToggle({ feed, editFeed }: FeedEmbedSettingsProps) {
8282

8383
function ImageLocationSelector({ feed, editFeed }: FeedEmbedSettingsProps) {
8484
const possibleValues = ["thumbnail", "banner", "none"] as const;
85-
const currentValue = feed.embed.imageLocation ?? possibleValues[0];
85+
const currentValue = feed.embed.image_location ?? possibleValues[0];
8686

8787
function valueIsValid(value: string): value is typeof possibleValues[number] {
8888
return possibleValues.includes(value as never);
@@ -94,7 +94,7 @@ function ImageLocationSelector({ feed, editFeed }: FeedEmbedSettingsProps) {
9494
...feed,
9595
embed: {
9696
...feed.embed,
97-
imageLocation: value,
97+
"image_location": value,
9898
},
9999
});
100100
}
@@ -146,14 +146,14 @@ function EmbedAuthorTextEditor({ feed, editFeed }: FeedEmbedSettingsProps) {
146146
...feed,
147147
embed: {
148148
...feed.embed,
149-
authorText: value || undefined,
149+
"author_text": value || undefined,
150150
},
151151
});
152152
}
153153

154154
return (
155155
<TextField
156-
value={feed.embed.authorText ?? ""}
156+
value={feed.embed.author_text ?? ""}
157157
onChange={(e) => onChange(e.target.value)}
158158
variant="standard"
159159
style={{ marginTop: 0 }}
@@ -170,14 +170,14 @@ function EmbedFooterTextEditor({ feed, editFeed }: FeedEmbedSettingsProps) {
170170
...feed,
171171
embed: {
172172
...feed.embed,
173-
footerText: value || undefined,
173+
"footer_text": value || undefined,
174174
},
175175
});
176176
}
177177

178178
return (
179179
<TextField
180-
value={feed.embed.footerText ?? ""}
180+
value={feed.embed.footer_text ?? ""}
181181
onChange={(e) => onChange(e.target.value)}
182182
variant="standard"
183183
style={{ marginTop: 0 }}

src/components/GuildDashboard/SpecialCategoryComponents/RssFeeds/FeedPreview.tsx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -65,17 +65,17 @@ function useBuildDiscordMessageFromFeed({ feed, feedData }: { feed: RssFeed; fee
6565
color: feed.embed.color || 0x979C9F,
6666
};
6767

68-
if (feed.embed.authorText) {
68+
if (feed.embed.author_text) {
6969
embed.author = {
70-
name: formatStringPythonLike(feed.embed.authorText, variables, 256),
70+
name: formatStringPythonLike(feed.embed.author_text, variables, 256),
7171
};
7272
}
73-
if (feed.embed.footerText) {
73+
if (feed.embed.footer_text) {
7474
embed.footer = {
75-
text: formatStringPythonLike(feed.embed.footerText, variables, 2048),
75+
text: formatStringPythonLike(feed.embed.footer_text, variables, 2048),
7676
};
7777
}
78-
if (feed.embed.showDateInFooter !== false) {
78+
if (feed.embed.show_date_in_footer !== false) {
7979
const parsedDate = parseDate(feedData.pubDate);
8080
if (parsedDate !== null) {
8181
embed.timestamp = parsedDate.getTime();
@@ -87,13 +87,13 @@ function useBuildDiscordMessageFromFeed({ feed, feedData }: { feed: RssFeed; fee
8787
embed.title = feedData.title.substring(0, 256);
8888
}
8989
if (feedData.image) {
90-
if (feed.embed.imageLocation === undefined || feed.embed.imageLocation === "thumbnail") {
90+
if (feed.embed.image_location === undefined || feed.embed.image_location === "thumbnail") {
9191
embed.thumbnail = feedData.image;
92-
} else if (feed.embed.imageLocation === "banner") {
92+
} else if (feed.embed.image_location === "banner") {
9393
embed.image = feedData.image;
9494
}
9595
}
96-
if (feed.embed.enableLinkInTitle) {
96+
if (feed.embed.enable_link_in_title) {
9797
embed.url = feedData.url;
9898
}
9999

@@ -110,6 +110,7 @@ function useVariablesDict(feed: RssFeed, feedData: RssFeedParsedEntry): Record<s
110110
"logo": "📰",
111111
"full_text": feedData.postText || "",
112112
"description": feedData.postDescription || "",
113+
"image_alt": feedData.imageAlt || "",
113114
};
114115
const parsedDate = parseDate(feedData.pubDate);
115116
if (parsedDate !== null) {

src/repository/types/api.d.ts

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,13 @@ export interface RssFeed {
6666
roles: string[];
6767
useEmbed: boolean;
6868
embed: {
69-
authorText?: string;
69+
author_text?: string;
7070
title?: string;
71-
footerText?: string;
71+
footer_text?: string;
7272
color?: number;
73-
showDateInFooter?: boolean;
74-
enableLinkInTitle?: boolean;
75-
imageLocation?: "thumbnail" | "banner" | "none";
73+
show_date_in_footer?: boolean;
74+
enable_link_in_title?: boolean;
75+
image_location?: "thumbnail" | "banner" | "none";
7676
};
7777
silentMention: boolean;
7878
recentErrors: number;
@@ -81,39 +81,25 @@ export interface RssFeed {
8181
}
8282

8383

84-
interface __RssFeedPUT_Common {
84+
interface RssFeedPUTData {
85+
id: string;
8586
channelId: string;
8687
structure: string;
8788
roles: string[];
8889
useEmbed: boolean;
8990
embed: {
90-
authorText?: string;
91+
author_text?: string;
9192
title?: string;
92-
footerText?: string;
93+
footer_text?: string;
9394
color?: number;
94-
showDateInFooter?: boolean;
95-
enableLinkInTitle?: boolean;
96-
imageLocation?: "thumbnail" | "banner" | "none";
95+
show_date_in_footer?: boolean;
96+
enable_link_in_title?: boolean;
97+
image_location?: "thumbnail" | "banner" | "none";
9798
};
9899
silentMention: boolean;
99100
enabled: boolean;
100101
}
101102

102-
export interface RssFeedPUTData extends __RssFeedPUT_Common {
103-
id: string;
104-
}
105-
106-
interface RssFeedsPATCHData {
107-
add?: (__RssFeedPUT_Common & {
108-
link: string;
109-
type: Exclude<VALID_RSS_FEED_TYPES, "tw">;
110-
})[];
111-
edit?: (__RssFeedPUT_Common & {
112-
id: string;
113-
})[];
114-
remove?: string[];
115-
}
116-
117103
export interface RssFeedParsedEntry {
118104
url: string;
119105
title: string;
@@ -122,6 +108,7 @@ export interface RssFeedParsedEntry {
122108
author: string | null;
123109
channel: string | null;
124110
image: string | null;
111+
imageAlt: string | null;
125112
postText: string | null;
126113
postDescription: string | null;
127114
}

0 commit comments

Comments
 (0)