2024-08-29 14:32:04 +08:00
|
|
|
import { useDeleteMessage, useFeedback } from '@/hooks/chat-hooks';
|
2024-08-28 16:39:21 +08:00
|
|
|
import { useSetModalState } from '@/hooks/common-hooks';
|
2024-08-29 14:32:04 +08:00
|
|
|
import { IRemoveMessageById } from '@/hooks/logic-hooks';
|
2024-08-28 16:39:21 +08:00
|
|
|
import { IFeedbackRequestBody } from '@/interfaces/request/chat';
|
|
|
|
|
import { getMessagePureId } from '@/utils/chat';
|
|
|
|
|
import { useCallback } from 'react';
|
|
|
|
|
|
|
|
|
|
export const useSendFeedback = (messageId: string) => {
|
|
|
|
|
const { visible, hideModal, showModal } = useSetModalState();
|
|
|
|
|
const { feedback, loading } = useFeedback();
|
|
|
|
|
|
|
|
|
|
const onFeedbackOk = useCallback(
|
|
|
|
|
async (params: IFeedbackRequestBody) => {
|
|
|
|
|
const ret = await feedback({
|
|
|
|
|
...params,
|
|
|
|
|
messageId: getMessagePureId(messageId),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (ret === 0) {
|
|
|
|
|
hideModal();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
[feedback, hideModal, messageId],
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
loading,
|
|
|
|
|
onFeedbackOk,
|
|
|
|
|
visible,
|
|
|
|
|
hideModal,
|
|
|
|
|
showModal,
|
|
|
|
|
};
|
|
|
|
|
};
|
2024-08-29 14:32:04 +08:00
|
|
|
|
|
|
|
|
export const useRemoveMessage = (
|
|
|
|
|
messageId: string,
|
2024-08-29 19:06:18 +08:00
|
|
|
removeMessageById?: IRemoveMessageById['removeMessageById'],
|
2024-08-29 14:32:04 +08:00
|
|
|
) => {
|
|
|
|
|
const { deleteMessage, loading } = useDeleteMessage();
|
|
|
|
|
|
|
|
|
|
const onRemoveMessage = useCallback(async () => {
|
|
|
|
|
const pureId = getMessagePureId(messageId);
|
|
|
|
|
if (pureId) {
|
|
|
|
|
const retcode = await deleteMessage(pureId);
|
|
|
|
|
if (retcode === 0) {
|
2024-08-29 19:06:18 +08:00
|
|
|
removeMessageById?.(messageId);
|
2024-08-29 14:32:04 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}, [deleteMessage, messageId, removeMessageById]);
|
|
|
|
|
|
|
|
|
|
return { onRemoveMessage, loading };
|
|
|
|
|
};
|