GuiDownload.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * Copyright 2021-2024 Avaiga Private Limited
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
  5. * the License. You may obtain a copy of the License at
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
  10. * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
  11. * specific language governing permissions and limitations under the License.
  12. */
  13. import React, { useEffect } from "react";
  14. import { createDownloadAction, createSendActionNameAction, FileDownloadProps } from "../../context/taipyReducers";
  15. import { useDispatch, useModule } from "../../utils/hooks";
  16. import { runXHR } from "../../utils/downloads";
  17. interface GuiDownloadProps {
  18. download?: FileDownloadProps;
  19. }
  20. const GuiDownload = ({ download }: GuiDownloadProps) => {
  21. const { name = "", onAction, content } = download || {};
  22. const dispatch = useDispatch();
  23. const module = useModule();
  24. useEffect(() => {
  25. if (content) {
  26. runXHR(undefined, content, name, onAction ? (() => dispatch(createSendActionNameAction("Gui.download", module, onAction, name, content))) : undefined);
  27. dispatch(createDownloadAction());
  28. }
  29. }, [content, name, dispatch, onAction, module]);
  30. return <></>;
  31. };
  32. export default GuiDownload;