refactor: extract url helpers, add EMAIL_DOMAIN support

- Add src/utils/urls.ts with baseUrl, feedRssUrl, feedAtomUrl, feedUrl,
  feedEmailAddress, feedTopicPattern
- Add optional EMAIL_DOMAIN env var so web domain and email domain can
  differ (e.g. demo.kill-the.news serves feeds, @kill-the.news receives mail)
- Replace all inline domain template literals with the new helpers
- Remove unused site_url/feed_url fields from FeedConfig
- Remove unused feedPath param from fetchFeedData
- Extract verifyCallback() to deduplicate verifyAndStoreSubscription /
  verifyAndDeleteSubscription

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
Julien HerrandClaude Sonnet 4.6 committed 2026-05-22 22:38:29 +02:00
1 parent c64ceb4ee7
commit 7b2b98d693
15 files changed
+104 -92

No files matched your search

+3 -4
View File
@@ -3,6 +3,7 @@ import { z } from "zod";
import { Env, FeedConfig, FeedMetadata, EmailData } from "../../types";
import { generateFeedId } from "../../utils/id-generator";
import { waitUntilSafe } from "../../utils/worker";
import { feedRssUrl, feedEmailAddress } from "../../utils/urls";
import { logger } from "../../lib/logger";
import { Layout } from "./ui";
import {
@@ -192,8 +193,6 @@ feedsRouter.post("/create", async (c) => {
title: parsedData.title,
description: parsedData.description,
language: parsedData.language,
site_url: `https://${env.DOMAIN}/rss/${feedId}`,
feed_url: `https://${env.DOMAIN}/rss/${feedId}`,
allowed_senders: parsedData.allowedSenders,
created_at: Date.now(),
updated_at: Date.now(),
@@ -216,8 +215,8 @@ feedsRouter.post("/create", async (c) => {
if (isJson) {
return c.json({
feedId,
email: `${feedId}@${env.DOMAIN}`,
feedUrl: feedConfig.feed_url,
email: feedEmailAddress(feedId, env),
feedUrl: feedRssUrl(feedId, env),
});
}