import './lists.css'; import { useEffect, useReducer, useRef, useState } from 'preact/hooks'; import Icon from '../components/icon'; import Link from '../components/link'; import ListAddEdit from '../components/list-add-edit'; import Loader from '../components/loader'; import Modal from '../components/modal'; import NavMenu from '../components/nav-menu'; import { api } from '../utils/api'; import useTitle from '../utils/useTitle'; function Lists() { const { masto } = api(); useTitle(`Lists`, `/l`); const [uiState, setUiState] = useState('default'); const [reloadCount, reload] = useReducer((c) => c + 1, 0); const [lists, setLists] = useState([]); useEffect(() => { setUiState('loading'); (async () => { try { const lists = await masto.v1.lists.list(); console.log(lists); setLists(lists); setUiState('default'); } catch (e) { console.error(e); setUiState('error'); } })(); }, [reloadCount]); const [showListAddEditModal, setShowListAddEditModal] = useState(false); return (

Lists

{lists.length > 0 ? ( ) : uiState === 'loading' ? (

) : uiState === 'error' ? (

Unable to load lists.

) : (

No lists yet.

)}
{showListAddEditModal && ( { if (e.target === e.currentTarget) { setShowListAddEditModal(false); } }} > { if (result.state === 'success') { reload(); } setShowListAddEditModal(false); }} /> )}
); } export default Lists;