perf: optimize the update group configuration interaction under low-speed network

pull/146/head
moonrailgun 2 years ago
parent b3d80c4ef0
commit 13d32afb48

@ -10,6 +10,9 @@ export const groupConfigNames = [
// 隐藏群组成员标识位 // 隐藏群组成员标识位
'hideGroupMemberDiscriminator', 'hideGroupMemberDiscriminator',
// 禁止从群组中发起私信
'disableCreateConverseFromGroup',
// 群组背景图 // 群组背景图
'groupBackgroundImage', 'groupBackgroundImage',
] as const; ] as const;

@ -75,6 +75,27 @@ const groupSlice = createSlice({
}; };
} }
}, },
updateGroupConfig(
state,
action: PayloadAction<{
groupId: string;
configName: string;
configValue: any;
}>
) {
const { groupId, configName, configValue } = action.payload;
const groupInfo = state.groups[groupId];
if (groupInfo) {
state.groups[groupId] = {
...groupInfo,
config: {
...(groupInfo.config ?? {}),
[configName]: configValue,
},
};
}
},
}, },
}); });

@ -1,9 +1,11 @@
import React from 'react'; import React from 'react';
import { import {
groupActions,
model, model,
showSuccessToasts, showSuccessToasts,
t, t,
UploadFileResult, UploadFileResult,
useAppDispatch,
useAsyncRequest, useAsyncRequest,
useGroupInfo, useGroupInfo,
} from 'tailchat-shared'; } from 'tailchat-shared';
@ -21,10 +23,18 @@ export const GroupConfig: React.FC<{
}> = React.memo((props) => { }> = React.memo((props) => {
const groupId = props.groupId; const groupId = props.groupId;
const groupInfo = useGroupInfo(groupId); const groupInfo = useGroupInfo(groupId);
const dispatch = useAppDispatch();
const [{ loading }, handleModifyConfig] = useAsyncRequest( const [{ loading }, handleModifyConfig] = useAsyncRequest(
async (configName: model.group.GroupConfigNames, configValue: any) => { async (configName: model.group.GroupConfigNames, configValue: any) => {
await model.group.modifyGroupConfig(groupId, configName, configValue); await model.group.modifyGroupConfig(groupId, configName, configValue);
dispatch(
groupActions.updateGroupConfig({
groupId,
configName,
configValue,
})
);
showSuccessToasts(); showSuccessToasts();
}, },
[groupId] [groupId]

Loading…
Cancel
Save