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()}
;
}