From 65f838a987bb6d3b287509e82fda93936850d751 Mon Sep 17 00:00:00 2001 From: marcobaobao Date: Fri, 6 May 2022 11:08:33 +0200 Subject: [PATCH] Code refactoring and updated dockerfile --- Dockerfile | 10 +++++--- frontend/src/App.tsx | 52 +++++++++++++++++++++++++++++++++------ frontend/src/Settings.tsx | 20 ++++++++++++++- 3 files changed, 71 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index 32a44ec..aa782e9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,11 +8,15 @@ RUN apk update RUN apk add curl wget psmisc python3 ffmpeg COPY . . RUN chmod +x ./fetch-yt-dlp.sh +# install pnpm +RUN npm install -g pnpm # install node dependencies -RUN npm install -RUN npm run build-all +RUN pnpm install +RUN pnpm fetch +RUN pnpm build +RUN pnpm build-server # cleanup -RUN npm remove parcel +RUN pnpm remove parcel RUN rm -rf .parcel-cache # expose and run EXPOSE 3022 diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index b724114..1d7d5cb 100755 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,9 +1,19 @@ -import React, { useEffect } from "react" +import React, { useEffect, useState } from "react" import { ThemeProvider } from "@emotion/react"; -import { Badge, Box, Container, createTheme, CssBaseline, Divider, IconButton, List, ListItemIcon, ListItemText, Snackbar, styled, Toolbar, Typography } from "@mui/material" +import { + Badge, + Box, + createTheme, CssBaseline, + Divider, + IconButton, List, + ListItemIcon, ListItemText, + Toolbar, + Typography, + styled, +} from "@mui/material" import MuiDrawer from '@mui/material/Drawer'; import MuiAppBar, { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar'; -import { ChevronLeft, Dashboard, Menu, Settings as SettingsIcon } from "@mui/icons-material"; +import { ChevronLeft, Dashboard, Menu, Settings as SettingsIcon, SettingsEthernet, Storage } from "@mui/icons-material"; import ListItemButton from '@mui/material/ListItemButton'; import { BrowserRouter as Router, @@ -15,8 +25,7 @@ import Home from "./Home"; import Settings from "./Settings"; import { io } from "socket.io-client"; import { RootState, store } from './stores/store'; -import { Provider, useDispatch, useSelector } from "react-redux"; -import { connected } from "./features/status/statusSlice"; +import { Provider, useSelector } from "react-redux"; const theme = createTheme(); @@ -73,13 +82,22 @@ const Drawer = styled(MuiDrawer, { shouldForwardProp: (prop) => prop !== 'open' ); function AppContent() { - const [open, setOpen] = React.useState(false); + const [open, setOpen] = useState(false); + const [freeDiskSpace, setFreeDiskSpace] = useState(''); + const toggleDrawer = () => { setOpen(!open); }; + const settings = useSelector((state: RootState) => state.settings) const status = useSelector((state: RootState) => state.status) - const dispatch = useDispatch() + + /* Get disk free space */ + useEffect(() => { + socket.on('free-space', (res: string) => { + setFreeDiskSpace(res) + }) + }, []) return ( @@ -113,6 +131,26 @@ function AppContent() { > yt-dlp WebUI + { + freeDiskSpace ? +
+ +  {freeDiskSpace}  +
+ : null + } +
+ +  {settings.serverAddr} +
diff --git a/frontend/src/Settings.tsx b/frontend/src/Settings.tsx index f9bcc78..9240c72 100644 --- a/frontend/src/Settings.tsx +++ b/frontend/src/Settings.tsx @@ -1,4 +1,22 @@ -import { Box, Button, Container, FormControl, FormControlLabel, FormGroup, Grid, InputAdornment, InputLabel, MenuItem, Paper, Select, SelectChangeEvent, Snackbar, Stack, Switch, TextField, Toolbar, Typography } from "@mui/material"; +import { + Button, + Container, + FormControl, + FormControlLabel, + FormGroup, + Grid, + InputAdornment, + InputLabel, + MenuItem, + Paper, + Select, + SelectChangeEvent, + Snackbar, + Stack, + Switch, + TextField, + Typography +} from "@mui/material"; import React, { useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { Socket } from "socket.io-client";