import '../styles/filters.css' import '../styles/pagination.css' import '../styles/styles.css' import '../styles/search.css' import { ModCard } from '../components/ModCard' import { useDidMount } from '../hooks' import { Filter, kinds } from 'nostr-tools' import { RelayController } from '../controllers' import { constructModListFromEvents, log, LogType } from '../utils' import { toast } from 'react-toastify' import { LoadingSpinner } from '../components/LoadingSpinner' import { useState } from 'react' import { ModDetails } from '../types' enum SortByFilter { Latest = 'Latest', Oldest = 'Oldest', Best_Rated = 'Best Rated', Worst_Rated = 'Worst Rated' } enum NSFWFilter { Hide_NSFW = 'Hide NSFW', Show_NSFW = 'Show NSFW', Only_NSFW = 'Only NSFW' } enum ModeratedFilter { Moderated = 'Moderated', Unmoderated = 'Unmoderated' } export const ModsPage = () => { const [isFetching, setIsFetching] = useState(true) const [mods, setMods] = useState([]) useDidMount(async () => { const filter: Filter = { kinds: [kinds.ClassifiedListing] } RelayController.getInstance() .fetchEvents(filter, []) .then((events) => { const modList = constructModListFromEvents(events) setMods(modList) }) .catch((err) => { log( true, LogType.Error, 'An error occurred in fetching mods from relays', err ) toast.error('An error occurred in fetching mods from relays') }) .finally(() => { setIsFetching(false) }) }) if (isFetching) return return (
{mods.map((mod, index) => ( ))}
) } const PageTitleRow = () => { return (

Mods

) } const Filters = () => { return (
{Object.values(SortByFilter).map((item, index) => (
{item}
))}
{Object.values(ModeratedFilter).map((item, index) => (
{item}
))}
{Object.values(NSFWFilter).map((item, index) => (
{item}
))}
Show From: {window.location.host}
Show All
) } const Pagination = () => { return (
) }