feat: move default download directories to desktop
This commit is contained in:
@@ -37,11 +37,11 @@ export const MAX_LINK_ARTIFACT_BYTES = 256 * 1024;
|
||||
export const SPEED_WINDOW_SECONDS = 1;
|
||||
export const CLIPBOARD_POLL_INTERVAL_MS = 2000;
|
||||
|
||||
export const DEFAULT_UPDATE_REPO = "Sucukdeluxe/multi-debrid-downloader";
|
||||
export const ONLINE_BACKUP_API_URL = "https://downloader.24-music.de/backup-api";
|
||||
export const DEFAULT_UPDATE_REPO = "Sucukdeluxe/multi-debrid-downloader";
|
||||
export const ONLINE_BACKUP_API_URL = "https://downloader.24-music.de/backup-api";
|
||||
|
||||
export function defaultSettings(): AppSettings {
|
||||
const baseDir = path.join(os.homedir(), "Downloads", "RealDebrid");
|
||||
const baseDir = path.join(os.homedir(), "Desktop", "Multi-Debrid-Downloader");
|
||||
return {
|
||||
token: "",
|
||||
realDebridUseWebLogin: false,
|
||||
@@ -110,7 +110,7 @@ export function defaultSettings(): AppSettings {
|
||||
hideExtractedItems: true,
|
||||
confirmDeleteSelection: true,
|
||||
backupIncludeDownloads: false,
|
||||
backupIncludeRemoteDiagnostics: false,
|
||||
backupIncludeRemoteDiagnostics: false,
|
||||
notifyUrl: "",
|
||||
notifyMention: "",
|
||||
notifyOnPackageCompleted: false,
|
||||
|
||||
+47
-15
@@ -1,5 +1,6 @@
|
||||
import fs from "node:fs";
|
||||
import fsp from "node:fs/promises";
|
||||
import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { getDebridLinkApiKeyIds } from "../shared/debrid-link-keys";
|
||||
import { getMegaDebridAccountIds } from "../shared/mega-debrid-accounts";
|
||||
@@ -104,6 +105,36 @@ function normalizeAbsoluteDir(value: unknown, fallback: string): string {
|
||||
return path.resolve(text);
|
||||
}
|
||||
|
||||
function samePath(left: unknown, right: string): boolean {
|
||||
const leftText = asText(left);
|
||||
if (!leftText) {
|
||||
return false;
|
||||
}
|
||||
const leftResolved = path.resolve(leftText);
|
||||
const rightResolved = path.resolve(right);
|
||||
return process.platform === "win32"
|
||||
? leftResolved.toLowerCase() === rightResolved.toLowerCase()
|
||||
: leftResolved === rightResolved;
|
||||
}
|
||||
|
||||
function migrateLegacyDefaultDirectories(settings: AppSettings, defaults: AppSettings): AppSettings {
|
||||
const legacyBaseDir = path.join(os.homedir(), "Downloads", "RealDebrid");
|
||||
const legacyExtractDir = path.join(legacyBaseDir, "_entpackt");
|
||||
const legacyMkvLibraryDir = path.join(legacyBaseDir, "_mkv");
|
||||
const isUntouchedLegacyConfiguration = samePath(settings.outputDir, legacyBaseDir)
|
||||
&& samePath(settings.extractDir, legacyExtractDir)
|
||||
&& samePath(settings.mkvLibraryDir, legacyMkvLibraryDir);
|
||||
if (!isUntouchedLegacyConfiguration) {
|
||||
return settings;
|
||||
}
|
||||
return {
|
||||
...settings,
|
||||
outputDir: defaults.outputDir,
|
||||
extractDir: defaults.extractDir,
|
||||
mkvLibraryDir: defaults.mkvLibraryDir
|
||||
};
|
||||
}
|
||||
|
||||
const DEFAULT_COLUMN_ORDER = ["name", "size", "progress", "hoster", "account", "prio", "status", "speed"];
|
||||
const ALL_VALID_COLUMNS = new Set([...DEFAULT_COLUMN_ORDER, "added"]);
|
||||
|
||||
@@ -328,22 +359,23 @@ function normalizeProviderOrder(
|
||||
return result;
|
||||
}
|
||||
|
||||
const DEPRECATED_UPDATE_REPO_NAMES = new Set([
|
||||
"real-debrid-downloader",
|
||||
"multi-debrid-downloader"
|
||||
]);
|
||||
|
||||
function migrateUpdateRepo(raw: string, fallback: string): string {
|
||||
const trimmed = raw.trim();
|
||||
const repoName = trimmed.split("/").filter(Boolean).pop()?.replace(/\.git$/i, "").toLowerCase() || "";
|
||||
if (!trimmed || (DEPRECATED_UPDATE_REPO_NAMES.has(repoName) && trimmed.toLowerCase() !== fallback.toLowerCase())) {
|
||||
return fallback;
|
||||
}
|
||||
const DEPRECATED_UPDATE_REPO_NAMES = new Set([
|
||||
"real-debrid-downloader",
|
||||
"multi-debrid-downloader"
|
||||
]);
|
||||
|
||||
function migrateUpdateRepo(raw: string, fallback: string): string {
|
||||
const trimmed = raw.trim();
|
||||
const repoName = trimmed.split("/").filter(Boolean).pop()?.replace(/\.git$/i, "").toLowerCase() || "";
|
||||
if (!trimmed || (DEPRECATED_UPDATE_REPO_NAMES.has(repoName) && trimmed.toLowerCase() !== fallback.toLowerCase())) {
|
||||
return fallback;
|
||||
}
|
||||
return trimmed;
|
||||
}
|
||||
|
||||
export function normalizeSettings(settings: AppSettings): AppSettings {
|
||||
const defaults = defaultSettings();
|
||||
const directorySettings = migrateLegacyDefaultDirectories(settings, defaults);
|
||||
const currentUsageDay = getProviderUsageDayKey();
|
||||
const megaLogin = asText(settings.megaLogin);
|
||||
const megaPassword = asText(settings.megaPassword);
|
||||
@@ -419,15 +451,15 @@ export function normalizeSettings(settings: AppSettings): AppSettings {
|
||||
providerSecondary: normalizeFallbackProvider(settings.providerSecondary, megaDebridPreferApi, megaDebridApiEnabled, megaDebridWebEnabled),
|
||||
providerTertiary: normalizeFallbackProvider(settings.providerTertiary, megaDebridPreferApi, megaDebridApiEnabled, megaDebridWebEnabled),
|
||||
autoProviderFallback: Boolean(settings.autoProviderFallback),
|
||||
outputDir: normalizeAbsoluteDir(settings.outputDir, defaults.outputDir),
|
||||
outputDir: normalizeAbsoluteDir(directorySettings.outputDir, defaults.outputDir),
|
||||
packageName: asText(settings.packageName),
|
||||
autoExtract: Boolean(settings.autoExtract),
|
||||
autoRename4sf4sj: Boolean(settings.autoRename4sf4sj),
|
||||
keepGermanAudioOnly: Boolean(settings.keepGermanAudioOnly),
|
||||
germanAudioMode: settings.germanAudioMode === "first" ? "first" : "tag",
|
||||
extractDir: normalizeAbsoluteDir(settings.extractDir, defaults.extractDir),
|
||||
extractDir: normalizeAbsoluteDir(directorySettings.extractDir, defaults.extractDir),
|
||||
collectMkvToLibrary: Boolean(settings.collectMkvToLibrary),
|
||||
mkvLibraryDir: normalizeAbsoluteDir(settings.mkvLibraryDir, defaults.mkvLibraryDir),
|
||||
mkvLibraryDir: normalizeAbsoluteDir(directorySettings.mkvLibraryDir, defaults.mkvLibraryDir),
|
||||
createExtractSubfolder: Boolean(settings.createExtractSubfolder),
|
||||
hybridExtract: Boolean(settings.hybridExtract),
|
||||
cleanupMode: settings.cleanupMode,
|
||||
@@ -463,7 +495,7 @@ export function normalizeSettings(settings: AppSettings): AppSettings {
|
||||
hideExtractedItems: settings.hideExtractedItems !== undefined ? Boolean(settings.hideExtractedItems) : defaults.hideExtractedItems,
|
||||
confirmDeleteSelection: settings.confirmDeleteSelection !== undefined ? Boolean(settings.confirmDeleteSelection) : defaults.confirmDeleteSelection,
|
||||
backupIncludeDownloads: settings.backupIncludeDownloads !== undefined ? Boolean(settings.backupIncludeDownloads) : defaults.backupIncludeDownloads,
|
||||
backupIncludeRemoteDiagnostics: settings.backupIncludeRemoteDiagnostics !== undefined ? Boolean(settings.backupIncludeRemoteDiagnostics) : defaults.backupIncludeRemoteDiagnostics,
|
||||
backupIncludeRemoteDiagnostics: settings.backupIncludeRemoteDiagnostics !== undefined ? Boolean(settings.backupIncludeRemoteDiagnostics) : defaults.backupIncludeRemoteDiagnostics,
|
||||
notifyUrl: asText(settings.notifyUrl) || defaults.notifyUrl,
|
||||
notifyMention: asText(settings.notifyMention) || defaults.notifyMention,
|
||||
notifyOnPackageCompleted: settings.notifyOnPackageCompleted !== undefined ? Boolean(settings.notifyOnPackageCompleted) : defaults.notifyOnPackageCompleted,
|
||||
|
||||
Reference in New Issue
Block a user