import React, { useState, useEffect, useMemo } from 'react'; import { useParams } from 'react-router-dom'; import { Helmet } from 'react-helmet'; import localForage from 'localforage'; import { sourceLink, infoLine, ToggleDot } from './utils.js'; function Article({ cache }) { const { id } = useParams(); if (id in cache) console.log('cache hit'); const [story, setStory] = useState(cache[id] || false); const [error, setError] = useState(false); const [pConv, setPConv] = useState([]); useEffect(() => { localForage.getItem(id) .then( (value) => { if (value) { setStory(value); } } ); fetch('/api/' + id) .then(res => res.json()) .then( (result) => { setStory(result.story); localForage.setItem(id, result.story); }, (error) => { setError(true); } ); }, [id]); const pConvert = (n) => { setPConv(prevPConv => [...prevPConv, n]); }; const nodes = useMemo(() => { if (story && story.text) { let div = document.createElement('div'); div.innerHTML = story.text; return div.childNodes; } return null; }, [story]); return (
Connection error?
} {story ?{v.data}
:Problem getting article :(
}loading...
}