refactor: 保存面板变更

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

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

@ -76,6 +76,25 @@ export async function getGroupBasicInfo(
return data; 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 * 7

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

Loading…
Cancel
Save