From 611d90f557140c442e4066e396d8c12ce4c340d3 Mon Sep 17 00:00:00 2001 From: eug-vs Date: Sat, 22 Aug 2020 01:16:23 +0300 Subject: refactor!: rewrite code without react-sage --- src/components/FileUpload/FileUpload.tsx | 4 ++-- src/utils/files.ts | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 src/utils/files.ts (limited to 'src') diff --git a/src/components/FileUpload/FileUpload.tsx b/src/components/FileUpload/FileUpload.tsx index 6a31656..d455f62 100644 --- a/src/components/FileUpload/FileUpload.tsx +++ b/src/components/FileUpload/FileUpload.tsx @@ -1,7 +1,7 @@ import React, { useRef } from 'react'; -import { utils } from 'react-sage'; import Button from '@material-ui/core/Button'; import CloudUpload from '@material-ui/icons/CloudUpload'; +import { getLocalFileUrl } from '../../utils/files'; interface PropTypes { callback: (fileUrl: string, file: File) => void; @@ -15,7 +15,7 @@ const FileUpload: React.FC = ({ callback, children }) => { const files = event.target?.files; if (files?.length) { const file = files[0]; - utils.loadFile(file).then(url => callback(url, file)); + getLocalFileUrl(file).then(url => callback(url, file)); }; }; diff --git a/src/utils/files.ts b/src/utils/files.ts new file mode 100644 index 0000000..98c342c --- /dev/null +++ b/src/utils/files.ts @@ -0,0 +1,15 @@ +export const getLocalFileUrl = (file: File): Promise => { + return new Promise((resolve, reject) => { + const reader = new FileReader(); + + reader.addEventListener('load', () => { + if (typeof reader.result === 'string') resolve(reader.result); + }, false); + + reader.addEventListener('error', () => { + reject(new Error('Error reading the file')) + }, false ); + + if (file) reader.readAsDataURL(file); + }); +}; -- cgit v1.2.3