import { useEffect, useRef, useState } from 'react'; import { api } from '../api.js'; import useLiveData from '../useLiveData.js'; // Freunde: Grundlage fürs Teilen von Listen und Kanban-Projekten und für fremde Punkte auf der Reise-Karte export default function Freunde() { const { data, error, busy, run } = useLiveData('/api/freunde', { refresh: 30 }); const [q, setQ] = useState(''); const [results, setResults] = useState([]); const timer = useRef(null); useEffect(() => { clearTimeout(timer.current); if (q.trim().length < 2) { setResults([]); return undefined; } timer.current = setTimeout(() => { api('GET', `/api/freunde/suche?q=${encodeURIComponent(q.trim())}`).then(setResults).catch(() => setResults([])); }, 250); return () => clearTimeout(timer.current); }, [q, data]); const act = (method, person) => run(method, `/api/freunde/${person.id}`); const label = { freund: '✓ Freund', angefragt: 'Angefragt', eingeladen: 'Hat dich angefragt' }; return ( <>

Freunde

Mit Freunden teilst du Vorratslisten und Kanban-Projekte und siehst ihre Reise-Punkte. Eine Freundschaft gilt erst, wenn beide zugestimmt haben.

{error &&

{error}

}

Freund hinzufügen

setQ(e.target.value)} placeholder="Name oder Benutzername …" autoComplete="off" /> {results.length > 0 && ( )} {q.trim().length >= 2 && results.length === 0 &&

Kein Konto gefunden.

}
{data?.incoming.length > 0 && (

Anfragen an dich

)}

Deine Freunde

{data && !data.friends.length &&

Noch keine Freunde. Oben suchen und anfragen.

}
{data?.outgoing.length > 0 && (

Deine offenen Anfragen

)} ); }