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}>
|
2021-07-04 19:49:58 +01:00
|
|
|
{ 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>
|
|
|
|
);
|
|
|
|
}
|