Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import { useEffect, useState } from "preact/hooks";
import Button from "../../../components/ui/Button";
import { Servers } from "revolt.js/dist/api/objects";
import Checkbox from "../../../components/ui/Checkbox";
import { ServerPermission } from "revolt.js/dist/api/permissions";
interface Props {
server: Servers.Server;
}
export function Roles({ server }: Props) {
const [ selected, setSelected ] = useState('default');
const roles = server.roles ?? {};
const keys = [ 'default', ...Object.keys(roles) ];
const defaultRole = { name: 'Default', permissions: server.default_permissions };
const selectedRole: Servers.Role = selected === 'default' ? defaultRole : roles[selected];
if (!selectedRole) {
useEffect(() => setSelected('default'), [ ]);
return null;
}
return (
<div>
<h2>select role</h2>
{ keys
.map(id => {
let role: Servers.Role = id === 'default' ? defaultRole : roles[id];
return (
<Checkbox checked={selected === id} onChange={selected => selected && setSelected(id)}>
{ role.name }
</Checkbox>
)
})
}
<Button disabled={selected === 'default'} error onClick={() => {}}>delete role</Button>
<h2>permmissions</h2>
{ Object.keys(ServerPermission)
.map(perm => {
let value = ServerPermission[perm as keyof typeof ServerPermission];
return (
<Checkbox checked={(selectedRole.permissions[0] & value) > 0} onChange={() => {}}>
{ perm }
</Checkbox>
)
})
}
</div>
);
}