Feat: Quit from jointed team #3759 (#3797)

### What problem does this PR solve?

Feat: Quit from jointed team #3759

### Type of change


- [x] New Feature (non-breaking change which adds functionality)
This commit is contained in:
balibabu 2024-12-02 15:31:41 +08:00 committed by GitHub
parent 8fba5c4179
commit 976d112280
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 36 additions and 2 deletions

View File

@ -602,6 +602,8 @@ The above is the content you need to summarize.`,
teamMembers: 'Team Members', teamMembers: 'Team Members',
joinedTeams: 'Joined Teams', joinedTeams: 'Joined Teams',
sureDelete: 'Are you sure to remove this member?', sureDelete: 'Are you sure to remove this member?',
quit: 'Quit',
sureQuit: 'Are you sure you want to quit the team you joined?',
}, },
message: { message: {
registered: 'Registered!', registered: 'Registered!',

View File

@ -569,6 +569,8 @@ export default {
teamMembers: '團隊成員', teamMembers: '團隊成員',
joinedTeams: '加入的團隊', joinedTeams: '加入的團隊',
sureDelete: '您確定刪除該成員嗎?', sureDelete: '您確定刪除該成員嗎?',
quit: '退出',
sureQuit: '確定退出加入的團隊嗎?',
}, },
message: { message: {
registered: '註冊成功', registered: '註冊成功',

View File

@ -589,6 +589,8 @@ export default {
teamMembers: '团队成员', teamMembers: '团队成员',
joinedTeams: '加入的团队', joinedTeams: '加入的团队',
sureDelete: '您确定要删除该成员吗?', sureDelete: '您确定要删除该成员吗?',
quit: '退出',
sureQuit: '确定退出加入的团队吗?',
}, },
message: { message: {
registered: '注册成功', registered: '注册成功',

View File

@ -69,3 +69,20 @@ export const useHandleAgreeTenant = () => {
return { handleAgree }; return { handleAgree };
}; };
export const useHandleQuitUser = () => {
const { deleteTenantUser, loading } = useDeleteTenantUser();
const showDeleteConfirm = useShowDeleteConfirm();
const { t } = useTranslation();
const handleQuitTenantUser = (userId: string, tenantId: string) => () => {
showDeleteConfirm({
title: t('setting.sureQuit'),
onOk: async () => {
deleteTenantUser({ userId, tenantId });
},
});
};
return { handleQuitTenantUser, loading };
};

View File

@ -1,16 +1,18 @@
import { useListTenant } from '@/hooks/user-setting-hooks'; import { useFetchUserInfo, useListTenant } from '@/hooks/user-setting-hooks';
import { ITenant } from '@/interfaces/database/user-setting'; import { ITenant } from '@/interfaces/database/user-setting';
import { formatDate } from '@/utils/date'; import { formatDate } from '@/utils/date';
import type { TableProps } from 'antd'; import type { TableProps } from 'antd';
import { Button, Space, Table } from 'antd'; import { Button, Space, Table } from 'antd';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import { TenantRole } from '../constants'; import { TenantRole } from '../constants';
import { useHandleAgreeTenant } from './hooks'; import { useHandleAgreeTenant, useHandleQuitUser } from './hooks';
const TenantTable = () => { const TenantTable = () => {
const { t } = useTranslation(); const { t } = useTranslation();
const { data, loading } = useListTenant(); const { data, loading } = useListTenant();
const { handleAgree } = useHandleAgreeTenant(); const { handleAgree } = useHandleAgreeTenant();
const { data: user } = useFetchUserInfo();
const { handleQuitTenantUser } = useHandleQuitUser();
const columns: TableProps<ITenant>['columns'] = [ const columns: TableProps<ITenant>['columns'] = [
{ {
@ -46,6 +48,15 @@ const TenantTable = () => {
</Button> </Button>
</Space> </Space>
); );
} else if (role === TenantRole.Normal && user.id !== tenant_id) {
return (
<Button
type="link"
onClick={handleQuitTenantUser(user.id, tenant_id)}
>
{t('setting.quit')}
</Button>
);
} }
}, },
}, },