Files
2021-03-04 21:51:20 +08:00

76 lines
2.2 KiB
JavaScript

/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
*/
import { useDispatch, useSelector } from 'common/redux';
import { Button, Collapsible, Divider, Input, Section, Stack } from 'tgui/components';
import { removeChatPage, toggleAcceptedType, updateChatPage } from './actions';
import { MESSAGE_TYPES } from './constants';
import { selectCurrentChatPage } from './selectors';
export const ChatPageSettings = (props, context) => {
const page = useSelector(context, selectCurrentChatPage);
const dispatch = useDispatch(context);
return (
<Section>
<Stack align="center">
<Stack.Item grow={1}>
<Input
fluid
value={page.name}
onChange={(e, value) => dispatch(updateChatPage({
pageId: page.id,
name: value,
}))} />
</Stack.Item>
<Stack.Item>
<Button
icon="times"
color="red"
onClick={() => dispatch(removeChatPage({
pageId: page.id,
}))}>
Remove
</Button>
</Stack.Item>
</Stack>
<Divider />
<Section title="Messages to display" level={2}>
{MESSAGE_TYPES
.filter(typeDef => !typeDef.important && !typeDef.admin)
.map(typeDef => (
<Button.Checkbox
key={typeDef.type}
checked={page.acceptedTypes[typeDef.type]}
onClick={() => dispatch(toggleAcceptedType({
pageId: page.id,
type: typeDef.type,
}))}>
{typeDef.name}
</Button.Checkbox>
))}
<Collapsible
mt={1}
color="transparent"
title="Admin stuff">
{MESSAGE_TYPES
.filter(typeDef => !typeDef.important && typeDef.admin)
.map(typeDef => (
<Button.Checkbox
key={typeDef.type}
checked={page.acceptedTypes[typeDef.type]}
onClick={() => dispatch(toggleAcceptedType({
pageId: page.id,
type: typeDef.type,
}))}>
{typeDef.name}
</Button.Checkbox>
))}
</Collapsible>
</Section>
</Section>
);
};