import PocketBase from 'pocketbase' import { ChangeEvent, useEffect, useState } from 'react' import QuoteInfo from './QuoteInfo.tsx' import { Collections, Quote, TypedPocketBase } from './pocketbase-types.ts' import FilterIcon from "pixelarticons/svg/sliders-2.svg?react" import AddIcon from "pixelarticons/svg/note-plus.svg?react" //TODO: Add Comments export default function QuoteList() { // const { quotes, loading, error } = getAllQuotes(collection) const pb = new PocketBase("https://api.m3.fyi") as TypedPocketBase const [quotes, setQuotes] = useState(null) const [filteredQuotes, setFilteredQuotes] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [collection, setCollection] = useState(Collections.QtBit) const [searchItem, setSearchItem] = useState(null) const handleInputChange = (e: ChangeEvent) => { const searchTerm = e.target.value; setSearchItem(searchTerm) const filteredItems = quotes?.filter((quote) => quote.quote.toLowerCase().includes(searchTerm.toLowerCase())); setFilteredQuotes(filteredItems!) } useEffect(() => { pb.realtime.subscribe(`${collection}`, function (e) { console.log("realtime", e.record); let x = quotes!.filter((quote) => quote.id !== e.record.id); setQuotes([e.record, ...x]) setFilteredQuotes([e.record, ...x]) }); return () => { pb.realtime.unsubscribe(); } }) const getQuotes = async () => { try { const records = await pb.collection(`${collection}`).getFullList({ sort: "-created", requestKey: null }); setQuotes(records); setFilteredQuotes(records); } catch (err: any) { setError(err) console.error("Error:", error) } finally { setLoading(false) } } useEffect(() => { getQuotes() }, [collection]) return ( //TODO: Add Quote source selection

|

handleInputChange(e)} className='placeholder:text-slate-400 bg-slate-700' />

|

|

{loading ? (

Loading...

) : ( //TODO: Replace div with styled QuoteInfo component
{/* {filteredQuotes.map(quote => )} */} {/* {quotes != null ? (quotes.map((quote) => (
{quote.quote}
))) : (

No Quotes

)} */} {filteredQuotes != null ? (filteredQuotes.map((quote) => ())) : (

No Quotes

)}
) }
) }