2
0

ChannelCreate.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 { IApiResponseChannel } from "../../api/Channel";
  10. import ChannelTypeSelect from "./ChannelTypeSelect";
  11. import LangSelect from "../general/LangSelect";
  12. import { useRef } from "react";
  13. interface IFormData {
  14. name: string;
  15. type: string;
  16. lang: string;
  17. studio: string;
  18. }
  19. interface IWidget {
  20. studio?: string;
  21. onSuccess?: Function;
  22. }
  23. const ChannelCreateWidget = ({ studio, onSuccess }: IWidget) => {
  24. const intl = useIntl();
  25. const formRef = useRef<ProFormInstance | undefined>(undefined);
  26. return (
  27. <ProForm<IFormData>
  28. formRef={formRef}
  29. onFinish={async (values: IFormData) => {
  30. if (typeof studio === "undefined") {
  31. return;
  32. }
  33. values.studio = studio;
  34. const res: IApiResponseChannel = await post(`/v2/channel`, values);
  35. if (res.ok) {
  36. message.success(intl.formatMessage({ id: "flashes.success" }));
  37. if (typeof onSuccess !== "undefined") {
  38. onSuccess();
  39. formRef.current?.resetFields(["name"]);
  40. }
  41. } else {
  42. message.error(res.message);
  43. }
  44. }}
  45. >
  46. <ProForm.Group>
  47. <ProFormText
  48. width="md"
  49. name="name"
  50. required
  51. label={intl.formatMessage({ id: "channel.name" })}
  52. rules={[
  53. {
  54. required: true,
  55. message: intl.formatMessage({
  56. id: "channel.create.message.noname",
  57. }),
  58. },
  59. ]}
  60. />
  61. </ProForm.Group>
  62. <ProForm.Group>
  63. <ChannelTypeSelect />
  64. <LangSelect />
  65. </ProForm.Group>
  66. </ProForm>
  67. );
  68. };
  69. export default ChannelCreateWidget;