mirror of
https://github.com/juherr/kill-the-news.git
synced 2026-06-21 06:13:48 +00:00
refactor: simplify quick-win code after review
- Make feedId required in generateRssFeed (removes dead /emails/ fallback) - Hoist loop-invariant conditional and remove intermediate variable - Extract normalizeAllowedSenders() so JSON and form paths share same logic - Move escapeHtml to src/utils/html.ts for reuse by admin.ts - Parallelize the two independent KV puts in feed creation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+10
-12
@@ -41,11 +41,12 @@ function waitUntilSafe(c: Context, promise: Promise<unknown>) {
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeAllowedSenders(senders: string[]): string[] {
|
||||
return senders.map((s) => s.trim().toLowerCase()).filter(Boolean);
|
||||
}
|
||||
|
||||
function parseAllowedSenders(rawAllowedSenders: string): string[] {
|
||||
return rawAllowedSenders
|
||||
.split(/[\n,]+/)
|
||||
.map((value) => value.trim().toLowerCase())
|
||||
.filter(Boolean);
|
||||
return normalizeAllowedSenders(rawAllowedSenders.split(/[\n,]+/));
|
||||
}
|
||||
|
||||
function clampText(value: string, maxLen: number): string {
|
||||
@@ -1580,7 +1581,7 @@ app.post("/feeds/create", async (c) => {
|
||||
language = String(body.language ?? "en");
|
||||
view = "list";
|
||||
allowedSenders = Array.isArray(body.allowedSenders)
|
||||
? (body.allowedSenders as unknown[]).map(String).map((s) => s.trim().toLowerCase()).filter(Boolean)
|
||||
? normalizeAllowedSenders((body.allowedSenders as unknown[]).map(String))
|
||||
: [];
|
||||
} else {
|
||||
const formData = await c.req.formData();
|
||||
@@ -1621,14 +1622,11 @@ app.post("/feeds/create", async (c) => {
|
||||
emails: [],
|
||||
};
|
||||
|
||||
// Store feed configuration and metadata
|
||||
await emailStorage.put(`feed:${feedId}:config`, JSON.stringify(feedConfig));
|
||||
await emailStorage.put(
|
||||
`feed:${feedId}:metadata`,
|
||||
JSON.stringify(feedMetadata),
|
||||
);
|
||||
await Promise.all([
|
||||
emailStorage.put(`feed:${feedId}:config`, JSON.stringify(feedConfig)),
|
||||
emailStorage.put(`feed:${feedId}:metadata`, JSON.stringify(feedMetadata)),
|
||||
]);
|
||||
|
||||
// Add feed to the list of all feeds
|
||||
await addFeedToList(
|
||||
emailStorage,
|
||||
feedId,
|
||||
|
||||
@@ -1,13 +1,6 @@
|
||||
import { Context } from "hono";
|
||||
import { Env, FeedMetadata, EmailData } from "../types";
|
||||
|
||||
function escapeHtml(str: string): string {
|
||||
return str
|
||||
.replace(/&/g, "&")
|
||||
.replace(/</g, "<")
|
||||
.replace(/>/g, ">")
|
||||
.replace(/"/g, """);
|
||||
}
|
||||
import { escapeHtml } from "../utils/html";
|
||||
|
||||
export async function handle(c: Context): Promise<Response> {
|
||||
const env = c.env as unknown as Env;
|
||||
|
||||
Reference in New Issue
Block a user