feat: personalized feed — fetch /feed/media when API key is set
If API key present, GET /feed/media from Brain API to collect user's custom sources, then POST to Feed API with customFeeds array. Falls back to default GET if no key or fetch fails. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
ef35f18223
commit
605b2697d1
33
index.html
33
index.html
|
|
@ -950,7 +950,38 @@ async function loadFeed() {
|
|||
document.getElementById('briefList').innerHTML = '';
|
||||
|
||||
try {
|
||||
const res = await fetch(FEED_API, { cache: 'no-store' });
|
||||
const apiKey = localStorage.getItem('posimai-brief-apikey');
|
||||
let res;
|
||||
if (apiKey) {
|
||||
let customFeeds = [];
|
||||
try {
|
||||
const mediaRes = await fetch(API_BASE + '/feed/media', {
|
||||
headers: { 'Authorization': `Bearer ${apiKey}` }
|
||||
});
|
||||
if (mediaRes.ok) {
|
||||
const medias = await mediaRes.json();
|
||||
customFeeds = medias
|
||||
.filter(m => m.is_active !== false)
|
||||
.map(m => ({
|
||||
id: `db-${m.id}`,
|
||||
name: m.name,
|
||||
url: m.feed_url,
|
||||
siteUrl: m.site_url,
|
||||
category: m.category || 'tech',
|
||||
icon: 'rss',
|
||||
dbId: m.id,
|
||||
}));
|
||||
}
|
||||
} catch (_) { /* カスタムソース取得失敗 → デフォルトのみで続行 */ }
|
||||
res = await fetch(FEED_API, {
|
||||
method: 'POST',
|
||||
cache: 'no-store',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ customFeeds }),
|
||||
});
|
||||
} else {
|
||||
res = await fetch(FEED_API, { cache: 'no-store' });
|
||||
}
|
||||
if (!res.ok) throw new Error(`Feed ${res.status}`);
|
||||
const data = await res.json();
|
||||
const list = (data.articles || []).slice(0, 8);
|
||||
|
|
|
|||
Loading…
Reference in New Issue