Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | import { usePostUpdateUserRewardStatusMutation } from '@lib/api/mutations';
import { userRewardStatusEnumToLabel } from '@lib/constants/userReward';
import {
ManageUserRewardResponseDtoRewardStatusEnum,
UpdateUserRewardStatusRequestDto
} from '@uniquegood/realworld-adventure-interface';
import { Button, Form, Select, message } from 'antd';
import React from 'react';
import { styled } from 'styled-components';
type ChangeStatusModalProps = {
prevStatus: ManageUserRewardResponseDtoRewardStatusEnum;
userRewardId: string;
closeModal: () => unknown;
};
export default function ChangeStatusModal({
prevStatus,
userRewardId,
closeModal
}: ChangeStatusModalProps) {
const [form] = Form.useForm();
const { mutateAsync: updateUserRewardStatus } = usePostUpdateUserRewardStatusMutation();
const handleSubmit = async (values: UpdateUserRewardStatusRequestDto) => {
try {
const data = await updateUserRewardStatus({
userRewardId,
values
});
if (data.success) {
message.success('상태가 변경되었습니다.');
closeModal();
}
} catch (e) {
console.error(e);
message.error('상태 변경에 실패했습니다.');
}
};
React.useEffect(() => {
form.setFieldsValue({ status: prevStatus });
}, []);
return (
<Form form={form} onFinish={handleSubmit}>
<Form.Item name="status">
<Select
options={Object.values(ManageUserRewardResponseDtoRewardStatusEnum).map((status) => ({
label: userRewardStatusEnumToLabel[status],
value: status
}))}
/>
</Form.Item>
<Footer>
<Button onClick={closeModal}>닫기</Button>
<Button type="primary" onClick={form.submit}>
확인
</Button>
</Footer>
</Form>
);
}
const Footer = styled.div`
text-align: right;
& > button:first-of-type {
margin-right: 8px;
}
`;
|