Merge pull request #5 from stevedylandev/feat/add-substack-detection 885c20e8
feat: added substack feed detection
Steve Simkins · 2025-11-24 22:14 2 file(s) · +34 −10
src/App.tsx +17 −5
243 243
				// First, try to fetch the URL directly as a feed
244 244
				setErrorMessage("Checking URL...");
245 245
				try {
246 -
					xmlData = await fetchFeedWithFallback(urlInput);
247 -
					// Try to parse it to see if it's a valid feed
248 -
					parseFeedXml(xmlData);
249 -
					// If parsing succeeds, it's a valid feed
250 -
					feedUrl = urlInput;
246 +
					if (urlInput.includes("substack.com")) {
247 +
						const parts = urlInput.split("/");
248 +
						console.log(parts);
249 +
						const newUrl = `https://${parts[3].slice(1)}.${parts[2]}/feed`;
250 +
						console.log(newUrl);
251 +
						xmlData = await fetchFeedWithFallback(newUrl);
252 +
						// Try to parse it to see if it's a valid feed
253 +
						parseFeedXml(xmlData);
254 +
						// If parsing succeeds, it's a valid feed
255 +
						feedUrl = urlInput;
256 +
					} else {
257 +
						xmlData = await fetchFeedWithFallback(urlInput);
258 +
						// Try to parse it to see if it's a valid feed
259 +
						parseFeedXml(xmlData);
260 +
						// If parsing succeeds, it's a valid feed
261 +
						feedUrl = urlInput;
262 +
					}
251 263
				} catch {
252 264
					// If direct fetch/parse fails, try feed discovery
253 265
					setErrorMessage("Discovering RSS feed...");
src/components/add-feed-dialog.tsx +17 −5
71 71
				// First, try to fetch the URL directly as a feed
72 72
				setStatusMessage("Checking URL...");
73 73
				try {
74 -
					xmlData = await fetchFeedWithFallback(urlInput);
75 -
					// Try to parse it to see if it's a valid feed
76 -
					parseFeedXml(xmlData);
77 -
					// If parsing succeeds, it's a valid feed
78 -
					feedUrl = urlInput;
74 +
					if (urlInput.includes("substack.com")) {
75 +
						const parts = urlInput.split("/");
76 +
						console.log(parts);
77 +
						const newUrl = `https://${parts[3].slice(1)}.${parts[2]}/feed`;
78 +
						console.log(newUrl);
79 +
						xmlData = await fetchFeedWithFallback(newUrl);
80 +
						// Try to parse it to see if it's a valid feed
81 +
						parseFeedXml(xmlData);
82 +
						// If parsing succeeds, it's a valid feed
83 +
						feedUrl = urlInput;
84 +
					} else {
85 +
						xmlData = await fetchFeedWithFallback(urlInput);
86 +
						// Try to parse it to see if it's a valid feed
87 +
						parseFeedXml(xmlData);
88 +
						// If parsing succeeds, it's a valid feed
89 +
						feedUrl = urlInput;
90 +
					}
79 91
				} catch {
80 92
					// If direct fetch/parse fails, try feed discovery
81 93
					setStatusMessage("Discovering RSS feed...");