import {React, Strings} from "modules"; const {useState, useCallback, useMemo} = React; const badge =
; export default function ServerCard({server, joined, join, navigateTo, defaultAvatar}) { const [isError, setError] = useState(false); const handleError = useCallback(() => { setError(true); }, []); const [hasJoined, setJoined] = useState(joined); const doJoin = useCallback(async () => { if (hasJoined) return navigateTo(server.identifier); setJoined("joining"); const didJoin = await join(server.identifier, server.nativeJoin); setJoined(didJoin); }, [hasJoined, join, navigateTo, server.identifier, server.nativeJoin]); const defaultIcon = useMemo(() => defaultAvatar(), [defaultAvatar]); const currentIcon = !server.iconUrl || isError ? defaultIcon : server.iconUrl; const addedDate = new Date(server.insertDate * 1000); // Convert from unix timestamp const buttonText = typeof(hasJoined) == "string" ? `${Strings.PublicServers.joining}...` : hasJoined ? Strings.PublicServers.joined : Strings.PublicServers.join; return
{server.pinned && badge}
{server.name}
{hasJoined &&
{buttonText}
}
{server.description}
{server.members.toLocaleString()} Members
Added {addedDate.toLocaleDateString()}
; }