This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

semble / src / webapp / features / reader / lib / fetchReaderContent.ts
844 B 27 lines
1import type { ReaderContent } from '@/app/api/reader/route'; 2 3export type ReaderState = 4 | { status: 'idle' } 5 | { status: 'loading' } 6 | { status: 'error'; message: string } 7 | { status: 'success'; data: ReaderContent }; 8 9export async function fetchReaderContent( 10 url: string, 11 setState: (state: ReaderState) => void, 12): Promise<void> { 13 setState({ status: 'loading' }); 14 try { 15 const res = await fetch(`/api/reader?url=${encodeURIComponent(url)}`); 16 const json = await res.json(); 17 if (!res.ok) { 18 setState({ status: 'error', message: json.error ?? 'Unknown error' }); 19 return; 20 } 21 setState({ status: 'success', data: json as ReaderContent }); 22 } catch (err) { 23 const message = 24 err instanceof Error ? err.message : 'Failed to load reader content'; 25 setState({ status: 'error', message }); 26 } 27}