refactor: 保存面板变更

pull/13/head
moonrailgun 4 years ago
parent 429c5e05c3
commit 44fd3e41cc

@ -61,6 +61,7 @@ export {
createGroupInviteCode,
getGroupBasicInfo,
applyGroupInvite,
modifyGroupField,
} from './model/group';
export type { GroupPanel, GroupInfo, GroupBasicInfo } from './model/group';
export type { ChatMessage } from './model/message';

@ -76,6 +76,25 @@ export async function getGroupBasicInfo(
return data;
}
/**
*
* @param groupId ID
* @param fieldName
* @param fieldValue
*/
type AllowedModifyField = 'name' | 'avatar' | 'panels' | 'roles';
export async function modifyGroupField(
groupId: string,
fieldName: AllowedModifyField,
fieldValue: unknown
) {
await request.post('/api/group/updateGroupField', {
groupId,
fieldName,
fieldValue,
});
}
/**
*
* 7

@ -1,5 +1,12 @@
import React, { useCallback, useState } from 'react';
import { useGroupInfo, GroupPanel as GroupPanelInfo, t } from 'tailchat-shared';
import {
useGroupInfo,
GroupPanel as GroupPanelInfo,
t,
modifyGroupField,
useAsyncRequest,
showToasts,
} from 'tailchat-shared';
import { Button } from 'antd';
import _isEqual from 'lodash/isEqual';
import { GroupPanelTree } from './GroupPanelTree';
@ -16,8 +23,9 @@ export const GroupPanel: React.FC<{
setEditingGroupPanels(newGroupPanels);
}, []);
const handleSave = useCallback(() => {
console.log('editingGroupPanels', editingGroupPanels);
const [{ loading }, handleSave] = useAsyncRequest(async () => {
await modifyGroupField(groupId, 'panels', editingGroupPanels);
showToasts(t('保存成功'), 'success');
}, [editingGroupPanels]);
return (
@ -28,7 +36,7 @@ export const GroupPanel: React.FC<{
/>
{!_isEqual(groupPanels, editingGroupPanels) && (
<Button className="mt-2" onClick={handleSave}>
<Button className="mt-2" loading={loading} onClick={handleSave}>
{t('保存')}
</Button>
)}

Loading…
Cancel
Save