From 600475f6033b46f1f3b1a75ecd622215c2c0bdb6 Mon Sep 17 00:00:00 2001 From: marcobaobao Date: Thu, 19 Oct 2023 12:12:26 +0200 Subject: [PATCH] removed buffer polyfill, rewrite with js web standards --- frontend/package.json | 21 +++++------ frontend/src/components/DownloadDialog.tsx | 42 +++++++++------------- frontend/src/views/Archive.tsx | 7 ++-- server/handlers/archive.go | 14 ++++---- 4 files changed, 39 insertions(+), 45 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 3cc29c2..17f489e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -17,22 +17,19 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-helmet": "^6.1.0", - "react-router-dom": "^6.13.0", + "react-router-dom": "^6.17.0", "recoil": "^0.7.7", - "rxjs": "^7.8.1", - "uuid": "^9.0.0" + "rxjs": "^7.8.1" }, "devDependencies": { "@modyfi/vite-plugin-yaml": "^1.0.4", - "@types/node": "^20.3.1", - "@types/react": "^18.2.13", - "@types/react-dom": "^18.2.6", - "@types/react-helmet": "^6.1.6", + "@types/node": "^20.8.7", + "@types/react": "^18.2.29", + "@types/react-dom": "^18.2.14", + "@types/react-helmet": "^6.1.8", "@types/react-router-dom": "^5.3.3", - "@types/uuid": "^9.0.2", - "@vitejs/plugin-react-swc": "^3.3.2", - "buffer": "^6.0.3", - "typescript": "^5.1.3", - "vite": "^4.4.7" + "@vitejs/plugin-react-swc": "^3.4.0", + "typescript": "^5.2.2", + "vite": "^4.5.0" } } \ No newline at end of file diff --git a/frontend/src/components/DownloadDialog.tsx b/frontend/src/components/DownloadDialog.tsx index 18618a6..c2a0e5e 100644 --- a/frontend/src/components/DownloadDialog.tsx +++ b/frontend/src/components/DownloadDialog.tsx @@ -14,8 +14,7 @@ import { MenuItem, Paper, Select, - TextField, - styled + TextField } from '@mui/material' import AppBar from '@mui/material/AppBar' import Dialog from '@mui/material/Dialog' @@ -23,7 +22,6 @@ import Slide from '@mui/material/Slide' import Toolbar from '@mui/material/Toolbar' import Typography from '@mui/material/Typography' import { TransitionProps } from '@mui/material/transitions' -import { Buffer } from 'buffer' import { forwardRef, useMemo, @@ -32,6 +30,7 @@ import { useTransition } from 'react' import { useRecoilState, useRecoilValue } from 'recoil' +import { downloadTemplateState } from '../atoms/downloadTemplate' import { settingsState } from '../atoms/settings' import { availableDownloadPathsState, connectedState } from '../atoms/status' import FormatsGrid from '../components/FormatsGrid' @@ -40,7 +39,6 @@ import { useRPC } from '../hooks/useRPC' import { CliArguments } from '../lib/argsParser' import type { DLMetadata } from '../types' import { isValidURL, toFormatArgs } from '../utils' -import { downloadTemplateState } from '../atoms/downloadTemplate' const Transition = forwardRef(function Transition( props: TransitionProps & { @@ -169,19 +167,18 @@ export default function DownloadDialog({ localStorage.setItem("last-input-args", e.target.value) } - const parseUrlListFile = (event: any) => { - const urlList = event.target.files - const reader = new FileReader() - reader.addEventListener('load', $event => { - const base64 = $event.target?.result!.toString().split(',')[1] - Buffer.from(base64!, 'base64') - .toString() - .trimEnd() - .split('\n') - .filter(_url => isValidURL(_url)) - .forEach(_url => sendUrl(_url)) - }) - reader.readAsDataURL(urlList[0]) + const parseUrlListFile = async (e: React.ChangeEvent) => { + const files = e.currentTarget.files + if (!files || files.length < 1) { + return + } + + const file = await files[0].text() + + file + .split('\n') + .filter(u => isValidURL(u)) + .forEach(u => sendUrl(u)) } const resetInput = () => { @@ -191,12 +188,6 @@ export default function DownloadDialog({ } } - /* -------------------- styled components -------------------- */ - - const Input = styled('input')({ - display: 'none', - }) - return (