import React, { useState, useEffect, useCallback } from 'react'; import { Grid, H4 } from 'indigo-react'; import { Nothing } from 'folktale/maybe'; import * as ob from 'urbit-ob'; import View from 'components/View'; import Tabs from 'components/Tabs'; import Crumbs from 'components/Crumbs'; import Sigil from 'components/Sigil'; import { useLocalRouter } from 'lib/LocalRouter'; import useCurrentPointName from 'lib/useCurrentPointName'; import { useResidents } from 'lib/useResidents'; import * as need from 'lib/need'; import { usePointCursor } from 'store/pointCursor'; const NAMES = { REQUESTS: 'REQUESTS', ALL: 'ALL', }; const OPTIONS = [ { text: 'Requests', value: NAMES.REQUESTS }, { text: 'All', value: NAMES.ALL }, ]; const VIEWS = { [NAMES.REQUESTS]: Requests, [NAMES.ALL]: AllResidents, }; function Requests({ className }) { const onThing = () => {}; const { pointCursor } = usePointCursor(); const point = need.point(pointCursor); const { requests, syncRequests } = useResidents(point); useEffect(() => { syncRequests(); }, [syncRequests]); if (Nothing.hasInstance(requests)) { return ( Loading... ); } const _requests = requests.getOrElse([]); return ( {_requests.map(point => ( ))} ); } function Resident({ point, onAccept, onDecline }) { const patp = ob.patp(point); const sigilSize = 50; const isRequest = onAccept && onDecline; return ( <>
{patp}{' '} {isRequest && ( <> Accept Decline )} ); } function AllResidents({ className }) { const { pointCursor } = usePointCursor(); const point = need.point(pointCursor); const { syncResidents, residents } = useResidents(point); useEffect(() => { syncResidents(); }, [syncResidents]); if (Nothing.hasInstance(residents)) { return ( Loading... ); } const _residents = residents.getOrElse([]); return ( {_residents.map(point => ( ))} ); } export default function Residents() { const { pop } = useLocalRouter(); const name = useCurrentPointName(); // const { pointCursor } = usePointCursor(); const [currentTab, setCurrentTab] = useState(NAMES.ALL); const [req, selectRequest] = useState(); return ( Residents ); }