revite/src/pages/settings/server/Members.tsx

35 lines
1 KiB
TypeScript
Raw Normal View History

2021-07-01 18:54:11 +02:00
import styles from './Panes.module.scss';
2021-06-19 22:37:12 +01:00
import { useEffect, useState } from "preact/hooks";
import { Servers } from "revolt.js/dist/api/objects";
import { useForceUpdate, useUsers } from "../../../context/revoltjs/hooks";
interface Props {
server: Servers.Server;
}
2021-07-01 17:36:34 +01:00
// ! FIXME: bad code :)
2021-06-19 22:37:12 +01:00
export function Members({ server }: Props) {
const [members, setMembers] = useState<Servers.Member[] | undefined>(undefined);
2021-07-01 17:36:34 +01:00
2021-06-19 22:37:12 +01:00
const ctx = useForceUpdate();
const users = useUsers(members?.map(x => x._id.user) ?? [], ctx);
useEffect(() => {
ctx.client.servers.members.fetchMembers(server._id)
.then(members => setMembers(members))
}, [ ]);
return (
2021-07-01 18:54:11 +02:00
<div className={styles.members}>
<div className={styles.subtitle}>
{ members?.length ?? 0 } Members
2021-07-01 18:54:11 +02:00
</div>
{ members && members.length > 0 && users?.map(x => x &&
<div className={styles.member}>
<div>@{x.username}</div>
</div>)
}
2021-06-19 22:37:12 +01:00
</div>
);
}