init
This commit is contained in:
@@ -68,7 +68,16 @@ export default function AiNewsPage({ onNavigate }) {
|
|||||||
setNewsHasMore(false);
|
setNewsHasMore(false);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const data = await res.json();
|
let data;
|
||||||
|
try {
|
||||||
|
data = await res.json();
|
||||||
|
} catch (e) {
|
||||||
|
// Apache SPA rewrite(.htaccess 포함)가 API까지 잡아먹으면 index.html(HTML)이 내려올 수 있음
|
||||||
|
const ct = res.headers.get('content-type') || '';
|
||||||
|
setNewsError(`인사이트 API 응답이 JSON이 아닙니다. (content-type: ${ct || 'unknown'}) Apache rewrite/.htaccess에서 /community 제외가 필요합니다.`);
|
||||||
|
setNewsHasMore(false);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
const rawItems = Array.isArray(data.items) ? data.items : [];
|
const rawItems = Array.isArray(data.items) ? data.items : [];
|
||||||
// 서버는 보통 최신이 먼저 오므로, UI를 "아래가 최신" 형태로 유지하려고 reverse 유지
|
// 서버는 보통 최신이 먼저 오므로, UI를 "아래가 최신" 형태로 유지하려고 reverse 유지
|
||||||
const items = rawItems.slice().reverse();
|
const items = rawItems.slice().reverse();
|
||||||
@@ -104,7 +113,9 @@ export default function AiNewsPage({ onNavigate }) {
|
|||||||
}
|
}
|
||||||
return nextOffset;
|
return nextOffset;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
setNewsError('인사이트 데이터를 불러오지 못했습니다. (네트워크 오류)');
|
// e.g. "Failed to fetch" (mixed content/SSL/DNS 등)
|
||||||
|
const msg = e?.message ? ` (${e.message})` : '';
|
||||||
|
setNewsError(`인사이트 데이터를 불러오지 못했습니다. (네트워크 오류)${msg}`);
|
||||||
setNewsHasMore(false);
|
setNewsHasMore(false);
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user