UNPKG

immers

Version:

ActivityPub server for the metaverse

40 lines (36 loc) 1.13 kB
import React, { useEffect, useState, useContext } from 'react' import Post from './Post' import ServerDataContext from './ServerDataContext' export default function Feed ({ iri }) { const [page, setPage] = useState(iri) const [nextPage, setNextPage] = useState(undefined) const [items, setItems] = useState([]) const { token } = useContext(ServerDataContext) useEffect(() => { const headers = { Accept: 'application/activity+json' } if (token) { headers.Authorization = `Bearer ${token}` } window.fetch(page, { headers }) .then(res => res.json()) .then(collectionPage => { if (!collectionPage.orderedItems && collectionPage.first) { setPage(collectionPage.first) return } setItems(items.concat(collectionPage.orderedItems)) setNextPage(collectionPage.next) }) }, [page]) const handleNext = () => setPage(nextPage) return ( <div> <div> {items.map(item => <Post key={item.id} {...item} />)} </div> {nextPage && <button onClick={handleNext}>Load more</button>} </div> ) }