style: 调整重复确认逻辑, 优化使用方法,减少不必要的pending状态

pull/81/head
moonrailgun 3 years ago
parent 3fa0dce579
commit e23ba70973

@ -25,13 +25,15 @@ export function useChatMessageItemAction(
const userInfo = useUserInfo();
const [, handleRecallMessage] = useAsyncRequest(async () => {
await openReconfirmModalP();
await recallMessage(payload._id);
if (await openReconfirmModalP()) {
await recallMessage(payload._id);
}
}, [payload._id]);
const [, handleDeleteMessage] = useAsyncRequest(async () => {
await openReconfirmModalP();
await deleteMessage(payload._id);
if (await openReconfirmModalP()) {
await deleteMessage(payload._id);
}
}, [payload._id]);
const isGroupOwner = groupInfo && groupInfo.owner === userInfo?._id; //

@ -135,7 +135,9 @@ export function closeModal(key?: number): void {
*/
export function openModal(
content: React.ReactNode,
props?: Pick<ModalProps, 'closable' | 'maskClosable'>
props?: Pick<ModalProps, 'closable' | 'maskClosable'> & {
onCloseModal?: () => void;
}
): number {
const key = PortalAdd(
<Modal
@ -144,6 +146,7 @@ export function openModal(
onChangeVisible={(visible) => {
if (visible === false) {
closeModal(key);
props?.onCloseModal?.();
}
}}
>
@ -187,20 +190,27 @@ export function openReconfirmModal(props: OpenReconfirmModalProps) {
{t('确认')}
</Button>
</div>
</ModalWrapper>
</ModalWrapper>,
{
onCloseModal: props.onCancel,
}
);
}
/**
* modal(Promise)
* TODO: pendingpromise
* @example
* if(await openReconfirmModalP()) {
* // do somthing
* }
*/
export function openReconfirmModalP(
props?: Omit<OpenReconfirmModalProps, 'onConfirm'>
) {
return new Promise<void>((resolve) => {
): Promise<boolean> {
return new Promise<boolean>((resolve) => {
openReconfirmModal({
...props,
onConfirm: resolve,
onConfirm: () => resolve(true),
onCancel: () => resolve(false),
});
});
}

Loading…
Cancel
Save