GroupCreate.tsx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import { useIntl } from "react-intl";
  2. import {
  3. ProForm,
  4. type ProFormInstance,
  5. ProFormText,
  6. } from "@ant-design/pro-components";
  7. import { message } from "antd";
  8. import { post } from "../../request";
  9. import type { IGroupRequest, IGroupResponse } from "../../api/Group";
  10. import { useRef } from "react";
  11. interface IFormData {
  12. name: string;
  13. }
  14. interface IWidgetGroupCreate {
  15. studio?: string;
  16. onCreate?: Function;
  17. }
  18. const GroupCreateWidget = ({ studio, onCreate }: IWidgetGroupCreate) => {
  19. const intl = useIntl();
  20. const formRef = useRef<ProFormInstance | undefined>(undefined);
  21. return (
  22. <ProForm<IFormData>
  23. formRef={formRef}
  24. onFinish={async (values: IFormData) => {
  25. if (typeof studio === "undefined") {
  26. return;
  27. }
  28. console.log(values);
  29. const res = await post<IGroupRequest, IGroupResponse>(`/v2/group`, {
  30. name: values.name,
  31. studio_name: studio,
  32. });
  33. console.log(res);
  34. if (res.ok) {
  35. message.success(intl.formatMessage({ id: "flashes.success" }));
  36. if (typeof onCreate !== "undefined") {
  37. onCreate();
  38. formRef.current?.resetFields();
  39. }
  40. } else {
  41. message.error(res.message);
  42. }
  43. }}
  44. >
  45. <ProForm.Group>
  46. <ProFormText
  47. width="md"
  48. name="name"
  49. required
  50. label={intl.formatMessage({ id: "channel.name" })}
  51. rules={[
  52. {
  53. required: true,
  54. message: intl.formatMessage({
  55. id: "channel.create.message.noname",
  56. }),
  57. },
  58. ]}
  59. />
  60. </ProForm.Group>
  61. </ProForm>
  62. );
  63. };
  64. export default GroupCreateWidget;