Skip to content

Commit

Permalink
Add: Add a useDownload hook
Browse files Browse the repository at this point in the history
The useDownload hook in conjunction with the Download component should
replace the withDownload HOC in future.
  • Loading branch information
bjoernricks committed Jun 6, 2024
1 parent f781093 commit 17c66e9
Showing 1 changed file with 37 additions and 0 deletions.
37 changes: 37 additions & 0 deletions src/web/components/form/useDownload.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/* SPDX-FileCopyrightText: 2024 Greenbone AG
*
* SPDX-License-Identifier: AGPL-3.0-or-later
*/

import {useRef, useCallback} from 'react';

import logger from 'gmp/log';

import {hasValue} from 'gmp/utils/identity';

const log = logger.getLogger('web.components.form.useDownload');

/**
* Hook to download a file
*
* Should be used in combination with the Download component
*
* @returns Array of downloadRef and download function
*/
const useDownload = () => {
const downloadRef = useRef(null);

const download = useCallback(({filename, data, mimetype}) => {
if (!hasValue(downloadRef.current)) {
log.warn('Download ref not set.');
return;
}

downloadRef.current.setFilename(filename);
downloadRef.current.setData(data, mimetype);
downloadRef.current.download();
}, []);
return [downloadRef, download];
};

export default useDownload;

0 comments on commit 17c66e9

Please sign in to comment.