From b037c041f4ed313de69caa0b73d555ae6ebfa882 Mon Sep 17 00:00:00 2001 From: marcobaobao Date: Sat, 24 Sep 2022 12:53:36 +0200 Subject: [PATCH] first proposal download path selection --- frontend/src/Home.tsx | 74 +++++++++++++++++++++-------- server/src/core/Process.ts | 6 +++ server/src/core/downloader.ts | 8 +++- server/src/interfaces/IPayload.d.ts | 1 + server/src/main.ts | 13 ++++- server/src/utils/directoryUtils.ts | 62 ++++++++++++++++++++++++ server/src/utils/logger.ts | 4 +- 7 files changed, 144 insertions(+), 24 deletions(-) create mode 100644 server/src/utils/directoryUtils.ts diff --git a/frontend/src/Home.tsx b/frontend/src/Home.tsx index ee6e3ab..a64d6b1 100644 --- a/frontend/src/Home.tsx +++ b/frontend/src/Home.tsx @@ -5,10 +5,13 @@ import { ButtonGroup, CircularProgress, Container, + FormControl, Grid, IconButton, InputAdornment, + MenuItem, Paper, + Select, Snackbar, styled, TextField, @@ -44,6 +47,9 @@ export default function Home({ socket }: Props) { const [pickedAudioFormat, setPickedAudioFormat] = useState(''); const [pickedBestFormat, setPickedBestFormat] = useState(''); + const [downloadPath, setDownloadPath] = useState(0); + const [availableDownloadPaths, setAvailableDownloadPaths] = useState([]); + const [url, setUrl] = useState(''); const [workingUrl, setWorkingUrl] = useState(''); const [showBackdrop, setShowBackdrop] = useState(false); @@ -106,6 +112,14 @@ export default function Home({ socket }: Props) { }) }, []) + useEffect(() => { + fetch(`${window.location.protocol}//${settings.serverAddr}:${settings.serverPort}/tree`) + .then(res => res.json()) + .then(data => { + setAvailableDownloadPaths(data.flat) + }) + }, []) + /* -------------------- component functions -------------------- */ /** @@ -119,6 +133,7 @@ export default function Home({ socket }: Props) { socket.emit('send-url', { url: immediate || url || workingUrl, + path: availableDownloadPaths[downloadPath], params: settings.cliArgs.toString() + toFormatArgs(codes), }) setUrl('') @@ -211,25 +226,44 @@ export default function Home({ socket }: Props) { flexDirection: 'column', }} > - - - - ), - }} - /> + + + + + + ), + }} + /> + + + + + + +