diff --git a/client/shared/i18n/langs/en-US/translation.json b/client/shared/i18n/langs/en-US/translation.json index 75740032..704d86f8 100644 --- a/client/shared/i18n/langs/en-US/translation.json +++ b/client/shared/i18n/langs/en-US/translation.json @@ -1,4 +1,5 @@ { + "k10416951": "Unable to remove everyone permission", "k1096add": "Create permanent invite code", "k10c018fe": "Teamwork", "k1141d649": "Version update", @@ -95,6 +96,7 @@ "k58a85592": "Is not a valid plugin configuration", "k5ab727ca": "This invitation will expire on <2><0>{{date}}", "k5bb71ad7": "Installed", + "k5be1a5b0": "Delete role group", "k5bec387": "Unable to get group information", "k5d2a6631": "Allow to manage channels", "k5f91e72c": "Built Plugins", @@ -178,6 +180,7 @@ "ka39b3032": "1 day", "ka49ec177": "Input somthing", "ka4cebef8": "New Role", + "ka4dac521": "Are you sure you want to delete role {{name}}?", "ka50c7408": "Please enter the JSON information manually, if you are not sure what you are doing, please do not use this function", "ka5616453": "Mute {{length}}, expected until {{until}}", "ka5d64ee9": "Choose the following template and start creating your own group!", diff --git a/client/shared/i18n/langs/zh-CN/translation.json b/client/shared/i18n/langs/zh-CN/translation.json index 9f39cf50..d6c587bb 100644 --- a/client/shared/i18n/langs/zh-CN/translation.json +++ b/client/shared/i18n/langs/zh-CN/translation.json @@ -1,4 +1,5 @@ { + "k10416951": "无法删除所有人权限", "k1096add": "创建永久邀请码", "k10c018fe": "工作协同", "k1141d649": "更新版本", @@ -95,6 +96,7 @@ "k58a85592": "不是一个合法的插件配置", "k5ab727ca": "该邀请将于 <2><0>{{date}} 过期", "k5bb71ad7": "已安装", + "k5be1a5b0": "删除身份组", "k5bec387": "无法获取到群组信息", "k5d2a6631": "允许管理频道", "k5f91e72c": "内置插件", @@ -178,6 +180,7 @@ "ka39b3032": "1天", "ka49ec177": "输入一些什么", "ka4cebef8": "新身份组", + "ka4dac521": "确认要删除角色 {{name}} 么?", "ka50c7408": "请手动输入JSON信息,如果你不明确你在做什么请不要使用该功能", "ka5616453": "禁言 {{length}}, 预计到 {{until}} 为止", "ka5d64ee9": "选择以下模板, 开始创建属于自己的群组吧!", diff --git a/client/web/src/components/modals/GroupDetail/Role/index.tsx b/client/web/src/components/modals/GroupDetail/Role/index.tsx index e6e74f9a..b7271097 100644 --- a/client/web/src/components/modals/GroupDetail/Role/index.tsx +++ b/client/web/src/components/modals/GroupDetail/Role/index.tsx @@ -30,6 +30,7 @@ export const GroupRole: React.FC = React.memo((props) => { handleCreateRole, handleSavePermission, handleChangeRoleName, + handleDeleteRole, } = useRoleActions(groupId, roleId); return ( @@ -70,6 +71,7 @@ export const GroupRole: React.FC = React.memo((props) => { )} diff --git a/client/web/src/components/modals/GroupDetail/Role/tabs/summary.tsx b/client/web/src/components/modals/GroupDetail/Role/tabs/summary.tsx index 4959c629..45d74824 100644 --- a/client/web/src/components/modals/GroupDetail/Role/tabs/summary.tsx +++ b/client/web/src/components/modals/GroupDetail/Role/tabs/summary.tsx @@ -1,16 +1,31 @@ +import { DevContainer } from '@/components/DevContainer'; import { DefaultFullModalInputEditorRender, FullModalField, } from '@/components/FullModal/Field'; +import { openReconfirmModal } from '@/components/Modal'; +import { Button } from 'antd'; import React from 'react'; -import { model, t } from 'tailchat-shared'; +import { model, t, useMemoizedFn } from 'tailchat-shared'; interface RoleSummaryProps { currentRoleInfo: model.group.GroupRole; onChangeRoleName: (roleName: string) => void; + onDeleteRole: () => Promise; } +// 权限概述 export const RoleSummary: React.FC = React.memo((props) => { - // 权限概述 + const { currentRoleInfo } = props; + + const handleDeleteRole = useMemoizedFn(() => { + openReconfirmModal({ + title: t('确认要删除角色 {{name}} 么?', { + name: currentRoleInfo.name, + }), + onConfirm: () => props.onDeleteRole(), + }); + }); + return (
= React.memo((props) => { renderEditor={DefaultFullModalInputEditorRender} onSave={props.onChangeRoleName} /> + + + +
); }); diff --git a/client/web/src/components/modals/GroupDetail/Role/useRoleActions.ts b/client/web/src/components/modals/GroupDetail/Role/useRoleActions.ts index de8b8fcf..7c19d1b8 100644 --- a/client/web/src/components/modals/GroupDetail/Role/useRoleActions.ts +++ b/client/web/src/components/modals/GroupDetail/Role/useRoleActions.ts @@ -53,10 +53,21 @@ export function useRoleActions( [groupId, roleId] ); + const [{ loading: loading4 }, handleDeleteRole] = + useAsyncRequest(async () => { + if (roleId === AllPermission) { + throw new Error(t('无法删除所有人权限')); + } + + await model.group.deleteGroupRole(groupId, roleId); + showSuccessToasts(); + }, [groupId, roleId]); + return { - loading: loading1 || loading2 || loading3, + loading: loading1 || loading2 || loading3 || loading4, handleCreateRole, handleSavePermission, handleChangeRoleName, + handleDeleteRole, }; }