import { UpdateForumSettingsMessageComposer } from '@nitrots/nitro-renderer'; import { FC, useCallback, useState } from 'react'; import { LocalizeText, SendMessageComposer } from '../../../../api'; import { Button, Column, Flex, Text } from '../../../../common'; import { ExtendedForumData } from '@nitrots/nitro-renderer'; // Permission levels: 0 = EVERYONE, 1 = MEMBERS, 2 = ADMINS, 3 = OWNER const PERMISSION_EVERYONE = 0; const PERMISSION_MEMBERS = 1; const PERMISSION_ADMINS = 2; const PERMISSION_OWNER = 3; interface GroupForumSettingsViewProps { groupId: number; forumData: ExtendedForumData; onBack: () => void; } export const GroupForumSettingsView: FC = props => { const { groupId = 0, forumData = null, onBack = null } = props; const effectiveGroupId = forumData?.groupId || groupId; const [ readPermission, setReadPermission ] = useState(forumData?.readPermissions ?? PERMISSION_EVERYONE); const [ postMessagePermission, setPostMessagePermission ] = useState(forumData?.postMessagePermissions ?? PERMISSION_MEMBERS); const [ postThreadPermission, setPostThreadPermission ] = useState(forumData?.postThreadPermissions ?? PERMISSION_MEMBERS); const [ moderatePermission, setModeratePermission ] = useState(forumData?.moderatePermissions ?? PERMISSION_ADMINS); const saveSettings = useCallback(() => { SendMessageComposer(new UpdateForumSettingsMessageComposer( effectiveGroupId, readPermission, postMessagePermission, postThreadPermission, moderatePermission )); onBack(); }, [ effectiveGroupId, readPermission, postMessagePermission, postThreadPermission, moderatePermission, onBack ]); const getPermissionOptions = (includeOwner: boolean = false) => { const options = [ { value: PERMISSION_EVERYONE, label: LocalizeText('groupforum.permissions.option_all') }, { value: PERMISSION_MEMBERS, label: LocalizeText('groupforum.permissions.option_group_members') }, { value: PERMISSION_ADMINS, label: LocalizeText('groupforum.permissions.option_group_admins') } ]; if(includeOwner) { options.push({ value: PERMISSION_OWNER, label: LocalizeText('groupforum.permissions.option_owner') }); } return options; }; return ( « { LocalizeText('groupforum.view.back') } { LocalizeText('groupforum.settings.window_title') } { LocalizeText('groupforum.permissions.read_label') } { LocalizeText('groupforum.permissions.post_message_label') } { LocalizeText('groupforum.permissions.post_thread_label') } { LocalizeText('groupforum.permissions.moderate_label') } ); };