@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
44 lines • 1.58 kB
JavaScript
import { useCallback, useMemo } from 'react';
import { useSharedState } from '../../shared/helpers/useSharedState';
function useUpload(id) {
const {
data,
extend
} = useSharedState(id);
const setFiles = useCallback(files => {
extend({
files
});
}, [extend]);
const setInternalFiles = useCallback(internalFiles => {
extend({
internalFiles
});
}, [extend]);
const files = useMemo(() => (data === null || data === void 0 ? void 0 : data.files) || [], [data === null || data === void 0 ? void 0 : data.files]);
const internalFiles = useMemo(() => (data === null || data === void 0 ? void 0 : data.internalFiles) || [], [data === null || data === void 0 ? void 0 : data.internalFiles]);
const getExistingFile = useCallback(function (file) {
let fileItems = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : files;
return fileItems.find(_ref => {
let {
file: f
} = _ref;
return isFileEqual(file, f);
});
}, [files]);
return {
files,
setFiles,
internalFiles,
setInternalFiles,
getExistingFile
};
}
export const isFileEqual = (fileA, fileB) => {
const compareExistingProperty = function (a, b, property) {
return a && property in a && b && property in b && (a[property] === 0 || b[property] === 0 || a[property] === b[property]);
};
return fileA.name === fileB.name && compareExistingProperty(fileA, fileB, 'size') && compareExistingProperty(fileA, fileB, 'lastModified');
};
export default useUpload;
//# sourceMappingURL=useUpload.js.map