mirror of
https://github.com/neosubhamoy/neodlp.git
synced 2025-12-19 05:02:57 +05:30
(feat): added max download retries option in settings and fixed error status cleanup logic
This commit is contained in:
@@ -56,6 +56,7 @@ export default function App({ children }: { children: React.ReactNode }) {
|
||||
const YTDLP_UPDATE_CHANNEL = useSettingsPageStatesStore(state => state.settings.ytdlp_update_channel);
|
||||
const APP_THEME = useSettingsPageStatesStore(state => state.settings.theme);
|
||||
const MAX_PARALLEL_DOWNLOADS = useSettingsPageStatesStore(state => state.settings.max_parallel_downloads);
|
||||
const MAX_RETRIES = useSettingsPageStatesStore(state => state.settings.max_retries);
|
||||
const DOWNLOAD_DIR = useSettingsPageStatesStore(state => state.settings.download_dir);
|
||||
const PREFER_VIDEO_OVER_PLAYLIST = useSettingsPageStatesStore(state => state.settings.prefer_video_over_playlist);
|
||||
const STRICT_DOWNLOADABILITY_CHECK = useSettingsPageStatesStore(state => state.settings.strict_downloadablity_check);
|
||||
@@ -202,6 +203,8 @@ export default function App({ children }: { children: React.ReactNode }) {
|
||||
selectedFormat,
|
||||
'--no-mtime',
|
||||
'--no-warnings',
|
||||
'--retries',
|
||||
MAX_RETRIES.toString(),
|
||||
];
|
||||
|
||||
if (selectedSubtitles) {
|
||||
@@ -864,11 +867,13 @@ export default function App({ children }: { children: React.ReactNode }) {
|
||||
}
|
||||
}, [isErrored, isErrorExpected, erroredDownloadId, setIsErrored, setIsErrorExpected, setErroredDownloadId]);
|
||||
|
||||
// auto reset isErrorExpected state after 3 seconds
|
||||
// auto reset error states after 3 seconds of expecting an error
|
||||
useEffect(() => {
|
||||
if (isErrorExpected) {
|
||||
const timeoutId = setTimeout(() => {
|
||||
setIsErrored(false);
|
||||
setIsErrorExpected(false);
|
||||
setErroredDownloadId(null);
|
||||
}, 3000);
|
||||
return () => clearTimeout(timeoutId);
|
||||
}
|
||||
|
||||
@@ -73,6 +73,7 @@ export default function SettingsPage() {
|
||||
const ytDlpAutoUpdate = useSettingsPageStatesStore(state => state.settings.ytdlp_auto_update);
|
||||
const appTheme = useSettingsPageStatesStore(state => state.settings.theme);
|
||||
const maxParallelDownloads = useSettingsPageStatesStore(state => state.settings.max_parallel_downloads);
|
||||
const maxRetries = useSettingsPageStatesStore(state => state.settings.max_retries);
|
||||
const preferVideoOverPlaylist = useSettingsPageStatesStore(state => state.settings.prefer_video_over_playlist);
|
||||
const strictDownloadabilityCheck = useSettingsPageStatesStore(state => state.settings.strict_downloadablity_check);
|
||||
const useProxy = useSettingsPageStatesStore(state => state.settings.use_proxy);
|
||||
@@ -424,6 +425,19 @@ export default function SettingsPage() {
|
||||
onCheckedChange={(checked) => saveSettingsKey('strict_downloadablity_check', checked)}
|
||||
/>
|
||||
</div>
|
||||
<div className="max-retries">
|
||||
<h3 className="font-semibold">Max Retries</h3>
|
||||
<p className="text-xs text-muted-foreground mb-3">Set maximum number of retries for a download before giving up</p>
|
||||
<Slider
|
||||
id="max-retries"
|
||||
className="w-[350px] mb-2"
|
||||
value={[maxRetries]}
|
||||
min={1}
|
||||
max={100}
|
||||
onValueChange={(value) => saveSettingsKey('max_retries', value[0])}
|
||||
/>
|
||||
<Label htmlFor="max-retries" className="text-xs text-muted-foreground">(Current: {maxRetries}) (Default: 5, Maximum: 100)</Label>
|
||||
</div>
|
||||
</TabsContent>
|
||||
<TabsContent key="appearance" value="appearance" className="flex flex-col gap-4 min-h-[235px]">
|
||||
<div className="app-theme">
|
||||
|
||||
@@ -126,6 +126,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
|
||||
prefer_video_over_playlist: true,
|
||||
strict_downloadablity_check: false,
|
||||
max_parallel_downloads: 2,
|
||||
max_retries: 5,
|
||||
use_proxy: false,
|
||||
proxy_url: '',
|
||||
use_rate_limit: false,
|
||||
@@ -169,6 +170,7 @@ export const useSettingsPageStatesStore = create<SettingsPageStatesStore>((set)
|
||||
prefer_video_over_playlist: true,
|
||||
strict_downloadablity_check: false,
|
||||
max_parallel_downloads: 2,
|
||||
max_retries: 5,
|
||||
use_proxy: false,
|
||||
proxy_url: '',
|
||||
use_rate_limit: false,
|
||||
|
||||
@@ -9,6 +9,7 @@ export interface Settings {
|
||||
theme: 'dark' | 'light' | 'system';
|
||||
download_dir: string;
|
||||
max_parallel_downloads: number;
|
||||
max_retries: number;
|
||||
prefer_video_over_playlist: boolean;
|
||||
strict_downloadablity_check: boolean;
|
||||
use_proxy: boolean;
|
||||
|
||||
Reference in New Issue
Block a user