Compare commits
1 Commits
v3.2.3
...
react-18-t
| Author | SHA1 | Date | |
|---|---|---|---|
| 5a47c2d3d8 |
@@ -16,7 +16,7 @@ import ListItemIcon from '@mui/material/ListItemIcon'
|
|||||||
import ListItemText from '@mui/material/ListItemText'
|
import ListItemText from '@mui/material/ListItemText'
|
||||||
import Toolbar from '@mui/material/Toolbar'
|
import Toolbar from '@mui/material/Toolbar'
|
||||||
import Typography from '@mui/material/Typography'
|
import Typography from '@mui/material/Typography'
|
||||||
import { grey, red } from '@mui/material/colors'
|
import { grey } from '@mui/material/colors'
|
||||||
import { useMemo, useState } from 'react'
|
import { useMemo, useState } from 'react'
|
||||||
import { Link, Outlet } from 'react-router-dom'
|
import { Link, Outlet } from 'react-router-dom'
|
||||||
import { settingsState } from './atoms/settings'
|
import { settingsState } from './atoms/settings'
|
||||||
@@ -29,7 +29,6 @@ import ThemeToggler from './components/ThemeToggler'
|
|||||||
import { useI18n } from './hooks/useI18n'
|
import { useI18n } from './hooks/useI18n'
|
||||||
import Toaster from './providers/ToasterProvider'
|
import Toaster from './providers/ToasterProvider'
|
||||||
import { useAtomValue } from 'jotai'
|
import { useAtomValue } from 'jotai'
|
||||||
import { getAccentValue } from './utils'
|
|
||||||
|
|
||||||
export default function Layout() {
|
export default function Layout() {
|
||||||
const [open, setOpen] = useState(false)
|
const [open, setOpen] = useState(false)
|
||||||
@@ -41,14 +40,11 @@ export default function Layout() {
|
|||||||
createTheme({
|
createTheme({
|
||||||
palette: {
|
palette: {
|
||||||
mode: settings.theme,
|
mode: settings.theme,
|
||||||
primary: {
|
|
||||||
main: getAccentValue(settings.accent)
|
|
||||||
},
|
|
||||||
background: {
|
background: {
|
||||||
default: settings.theme === 'light' ? grey[50] : '#121212'
|
default: settings.theme === 'light' ? grey[50] : '#121212'
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}), [settings.theme, settings.accent]
|
}), [settings.theme]
|
||||||
)
|
)
|
||||||
|
|
||||||
const toggleDrawer = () => setOpen(state => !state)
|
const toggleDrawer = () => setOpen(state => !state)
|
||||||
|
|||||||
@@ -65,7 +65,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
german:
|
german:
|
||||||
urlInput: Video URL
|
urlInput: Video URL
|
||||||
statusTitle: Status
|
statusTitle: Status
|
||||||
@@ -127,7 +126,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
french:
|
french:
|
||||||
urlInput: URL vidéo de YouTube ou d'un autre service pris en charge
|
urlInput: URL vidéo de YouTube ou d'un autre service pris en charge
|
||||||
statusTitle: Statut
|
statusTitle: Statut
|
||||||
@@ -191,7 +189,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
italian:
|
italian:
|
||||||
urlInput: URL Video (uno per linea)
|
urlInput: URL Video (uno per linea)
|
||||||
statusTitle: Stato
|
statusTitle: Stato
|
||||||
@@ -252,7 +249,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
chinese:
|
chinese:
|
||||||
urlInput: 视频 URL
|
urlInput: 视频 URL
|
||||||
statusTitle: 状态
|
statusTitle: 状态
|
||||||
@@ -314,7 +310,6 @@ languages:
|
|||||||
如果直播已经开始,那么依然可以下载,但是不会记录下载进度。
|
如果直播已经开始,那么依然可以下载,但是不会记录下载进度。
|
||||||
直播开始后,将会转移到下载页面
|
直播开始后,将会转移到下载页面
|
||||||
livestreamExperimentalWarning: 实验性功能,可能存在未知Bug,请谨慎使用
|
livestreamExperimentalWarning: 实验性功能,可能存在未知Bug,请谨慎使用
|
||||||
accentSelect: 'Accent'
|
|
||||||
spanish:
|
spanish:
|
||||||
urlInput: URL de YouTube u otro servicio compatible
|
urlInput: URL de YouTube u otro servicio compatible
|
||||||
statusTitle: Estado
|
statusTitle: Estado
|
||||||
@@ -374,7 +369,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
russian:
|
russian:
|
||||||
urlInput: URL-адрес YouTube или любого другого поддерживаемого сервиса
|
urlInput: URL-адрес YouTube или любого другого поддерживаемого сервиса
|
||||||
statusTitle: Статус
|
statusTitle: Статус
|
||||||
@@ -434,7 +428,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
korean:
|
korean:
|
||||||
urlInput: YouTube나 다른 지원되는 사이트의 URL
|
urlInput: YouTube나 다른 지원되는 사이트의 URL
|
||||||
statusTitle: 상태
|
statusTitle: 상태
|
||||||
@@ -494,7 +487,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
japanese:
|
japanese:
|
||||||
urlInput: YouTubeまたはサポート済み動画のURL
|
urlInput: YouTubeまたはサポート済み動画のURL
|
||||||
statusTitle: 状態
|
statusTitle: 状態
|
||||||
@@ -555,7 +547,6 @@ languages:
|
|||||||
すでに開始されているライブストリームが提供された場合、ダウンロードは継続されますが進行状況は追跡されません。
|
すでに開始されているライブストリームが提供された場合、ダウンロードは継続されますが進行状況は追跡されません。
|
||||||
ライブストリームが開始されると、ダウンロードページに移動されます。
|
ライブストリームが開始されると、ダウンロードページに移動されます。
|
||||||
livestreamExperimentalWarning: この機能は実験的なものです。何かが壊れるかもしれません!
|
livestreamExperimentalWarning: この機能は実験的なものです。何かが壊れるかもしれません!
|
||||||
accentSelect: 'Accent'
|
|
||||||
catalan:
|
catalan:
|
||||||
urlInput: URL de YouTube o d'un altre servei compatible
|
urlInput: URL de YouTube o d'un altre servei compatible
|
||||||
statusTitle: Estat
|
statusTitle: Estat
|
||||||
@@ -615,7 +606,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
ukrainian:
|
ukrainian:
|
||||||
urlInput: URL-адреса YouTube або будь-якого іншого підтримуваного сервісу
|
urlInput: URL-адреса YouTube або будь-якого іншого підтримуваного сервісу
|
||||||
statusTitle: Статус
|
statusTitle: Статус
|
||||||
@@ -675,7 +665,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
polish:
|
polish:
|
||||||
urlInput: Adres URL YouTube lub innej obsługiwanej usługi
|
urlInput: Adres URL YouTube lub innej obsługiwanej usługi
|
||||||
statusTitle: Status
|
statusTitle: Status
|
||||||
@@ -735,7 +724,6 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
swedish:
|
swedish:
|
||||||
urlInput: Videolänk (en per rad)
|
urlInput: Videolänk (en per rad)
|
||||||
statusTitle: Status
|
statusTitle: Status
|
||||||
@@ -801,4 +789,3 @@ languages:
|
|||||||
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
If an already started livestream is provided it will be still downloaded but its progress will not be tracked.
|
||||||
Once started the livestream will be migrated to the downloads page.
|
Once started the livestream will be migrated to the downloads page.
|
||||||
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
livestreamExperimentalWarning: This feature is still experimental. Something might break!
|
||||||
accentSelect: 'Accent'
|
|
||||||
|
|||||||
@@ -26,15 +26,11 @@ export type Language = (typeof languages)[number]
|
|||||||
export type Theme = 'light' | 'dark' | 'system'
|
export type Theme = 'light' | 'dark' | 'system'
|
||||||
export type ThemeNarrowed = 'light' | 'dark'
|
export type ThemeNarrowed = 'light' | 'dark'
|
||||||
|
|
||||||
export const accents = ['default', 'red'] as const
|
|
||||||
export type Accent = (typeof accents)[number]
|
|
||||||
|
|
||||||
export interface SettingsState {
|
export interface SettingsState {
|
||||||
serverAddr: string
|
serverAddr: string
|
||||||
serverPort: number
|
serverPort: number
|
||||||
language: Language
|
language: Language
|
||||||
theme: ThemeNarrowed
|
theme: ThemeNarrowed
|
||||||
accent: Accent
|
|
||||||
cliArgs: string
|
cliArgs: string
|
||||||
formatSelection: boolean
|
formatSelection: boolean
|
||||||
fileRenaming: boolean
|
fileRenaming: boolean
|
||||||
@@ -150,11 +146,7 @@ const themeSelector = atom<ThemeNarrowed>((get) => {
|
|||||||
return 'dark'
|
return 'dark'
|
||||||
}
|
}
|
||||||
return 'light'
|
return 'light'
|
||||||
})
|
}
|
||||||
|
|
||||||
export const accentState = atomWithStorage<Accent>(
|
|
||||||
'accent-color',
|
|
||||||
localStorage.getItem('accent-color') as Accent ?? 'default',
|
|
||||||
)
|
)
|
||||||
|
|
||||||
export const settingsState = atom<SettingsState>((get) => ({
|
export const settingsState = atom<SettingsState>((get) => ({
|
||||||
@@ -162,7 +154,6 @@ export const settingsState = atom<SettingsState>((get) => ({
|
|||||||
serverPort: get(serverPortState),
|
serverPort: get(serverPortState),
|
||||||
language: get(languageState),
|
language: get(languageState),
|
||||||
theme: get(themeSelector),
|
theme: get(themeSelector),
|
||||||
accent: get(accentState),
|
|
||||||
cliArgs: get(latestCliArgumentsState),
|
cliArgs: get(latestCliArgumentsState),
|
||||||
formatSelection: get(formatSelectionState),
|
formatSelection: get(formatSelectionState),
|
||||||
fileRenaming: get(fileRenamingState),
|
fileRenaming: get(fileRenamingState),
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
import { blue, red } from '@mui/material/colors'
|
|
||||||
import { pipe } from 'fp-ts/lib/function'
|
import { pipe } from 'fp-ts/lib/function'
|
||||||
import { Accent } from './atoms/settings'
|
|
||||||
import type { RPCResponse } from "./types"
|
import type { RPCResponse } from "./types"
|
||||||
import { ProcessStatus } from './types'
|
import { ProcessStatus } from './types'
|
||||||
|
|
||||||
@@ -81,15 +79,4 @@ export const base64URLEncode = (s: string) => pipe(
|
|||||||
s => String.fromCodePoint(...new TextEncoder().encode(s)),
|
s => String.fromCodePoint(...new TextEncoder().encode(s)),
|
||||||
btoa,
|
btoa,
|
||||||
encodeURIComponent
|
encodeURIComponent
|
||||||
)
|
)
|
||||||
|
|
||||||
export const getAccentValue = (accent: Accent) => {
|
|
||||||
switch (accent) {
|
|
||||||
case 'default':
|
|
||||||
return blue[700]
|
|
||||||
case 'red':
|
|
||||||
return red[600]
|
|
||||||
default:
|
|
||||||
return blue[700]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -28,11 +28,8 @@ import {
|
|||||||
} from 'rxjs'
|
} from 'rxjs'
|
||||||
import { rpcPollingTimeState } from '../atoms/rpc'
|
import { rpcPollingTimeState } from '../atoms/rpc'
|
||||||
import {
|
import {
|
||||||
Accent,
|
|
||||||
Language,
|
Language,
|
||||||
Theme,
|
Theme,
|
||||||
accentState,
|
|
||||||
accents,
|
|
||||||
appTitleState,
|
appTitleState,
|
||||||
enableCustomArgsState,
|
enableCustomArgsState,
|
||||||
fileRenamingState,
|
fileRenamingState,
|
||||||
@@ -68,7 +65,6 @@ export default function Settings() {
|
|||||||
const [pollingTime, setPollingTime] = useAtom(rpcPollingTimeState)
|
const [pollingTime, setPollingTime] = useAtom(rpcPollingTimeState)
|
||||||
const [language, setLanguage] = useAtom(languageState)
|
const [language, setLanguage] = useAtom(languageState)
|
||||||
const [appTitle, setApptitle] = useAtom(appTitleState)
|
const [appTitle, setApptitle] = useAtom(appTitleState)
|
||||||
const [accent, setAccent] = useAtom(accentState)
|
|
||||||
|
|
||||||
const [theme, setTheme] = useAtom(themeState)
|
const [theme, setTheme] = useAtom(themeState)
|
||||||
|
|
||||||
@@ -252,7 +248,7 @@ export default function Settings() {
|
|||||||
Appearance
|
Appearance
|
||||||
</Typography>
|
</Typography>
|
||||||
<Grid container spacing={2}>
|
<Grid container spacing={2}>
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12} md={6}>
|
||||||
<FormControl fullWidth>
|
<FormControl fullWidth>
|
||||||
<InputLabel>{i18n.t('languageSelect')}</InputLabel>
|
<InputLabel>{i18n.t('languageSelect')}</InputLabel>
|
||||||
<Select
|
<Select
|
||||||
@@ -282,22 +278,6 @@ export default function Settings() {
|
|||||||
</Select>
|
</Select>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
</Grid>
|
</Grid>
|
||||||
<Grid item xs={12} md={6}>
|
|
||||||
<FormControl fullWidth>
|
|
||||||
<InputLabel>{i18n.t('accentSelect')}</InputLabel>
|
|
||||||
<Select
|
|
||||||
defaultValue={accent}
|
|
||||||
label={i18n.t('accentSelect')}
|
|
||||||
onChange={(e) => setAccent(e.target.value as Accent)}
|
|
||||||
>
|
|
||||||
{accents.map((accent) => (
|
|
||||||
<MenuItem key={accent} value={accent}>
|
|
||||||
{capitalize(accent)}
|
|
||||||
</MenuItem>
|
|
||||||
))}
|
|
||||||
</Select>
|
|
||||||
</FormControl>
|
|
||||||
</Grid>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
<Typography variant="h6" color="primary" sx={{ mt: 2, mb: 0.5 }}>
|
<Typography variant="h6" color="primary" sx={{ mt: 2, mb: 0.5 }}>
|
||||||
General download settings
|
General download settings
|
||||||
|
|||||||
@@ -164,7 +164,7 @@ func (s *Service) DeleteTemplate(ctx context.Context, id string) error {
|
|||||||
|
|
||||||
func (s *Service) GetVersion(ctx context.Context) (string, string, error) {
|
func (s *Service) GetVersion(ctx context.Context) (string, string, error) {
|
||||||
//TODO: load from realease properties file, or anything else outside code
|
//TODO: load from realease properties file, or anything else outside code
|
||||||
const CURRENT_RPC_VERSION = "3.2.3"
|
const CURRENT_RPC_VERSION = "3.2.2"
|
||||||
|
|
||||||
result := make(chan string, 1)
|
result := make(chan string, 1)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user