import React, { useState, useEffect } from 'react'; import { Organization } from '../types'; import { Icons } from '../components/IconSet'; import { dbService } from '../services/DatabaseService'; const OrgCard = ({ org, onClick }: { org: Organization; onClick: () => void }) => (
{org.name.charAt(0)}
{org.status}

{org.name}

{org.type}

{org.description}

{org.memberCount} Mitglieder
); const Organizations: React.FC<{ onSelectOrg: (id: string) => void }> = ({ onSelectOrg }) => { const [filter, setFilter] = useState<'all' | Organization['type']>('all'); const [orgs, setOrgs] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const loadData = async () => { setLoading(true); try { await dbService.fetchAll(); } catch (error) { console.warn('Failed to fetch fresh data:', error); // Continue with cached data } setLoading(false); }; const loadOrgs = () => { const allOrgs = dbService.getOrgs(); setOrgs(allOrgs); }; // Load fresh data on mount loadData(); // Subscribe to updates const unsub = dbService.subscribe(loadOrgs); return unsub; }, []); const filteredOrgs = orgs.filter(org => filter === 'all' ? true : org.type === filter ); const tabs = [ { id: 'all', label: 'Alle Organisationen' }, { id: 'City', label: 'Städte' }, { id: 'Guild', label: 'Gilden' }, { id: 'Company', label: 'Firmen' }, ]; return (

Organisationen

Offizielle Fraktionen, Städte und registrierte Gilden.

{tabs.map(tab => ( ))}
{loading ? (
) : ( <>
{filteredOrgs.map(org => (
onSelectOrg(org.id)} />
))}
{filteredOrgs.length === 0 && (

Keine Organisationen gefunden.

)} )}
); }; export default Organizations;