diff --git a/package-lock.json b/package-lock.json index 81666d6..a56e6d5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "real-debrid-downloader", - "version": "2.0.1", + "version": "2.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "real-debrid-downloader", - "version": "2.0.1", + "version": "2.0.2", "license": "MIT", "dependencies": { "adm-zip": "0.6.0", diff --git a/package.json b/package.json index df6db55..f3403e0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "real-debrid-downloader", - "version": "2.0.1", + "version": "2.0.2", "description": "Desktop downloader", "main": "build/main/main/main.js", "author": "Sucukdeluxe", diff --git a/src/main/storage.ts b/src/main/storage.ts index 97cc306..8350deb 100644 --- a/src/main/storage.ts +++ b/src/main/storage.ts @@ -328,15 +328,17 @@ function normalizeProviderOrder( return result; } -const DEPRECATED_UPDATE_REPOS = new Set([ - "sucukdeluxe/real-debrid-downloader" -]); - -function migrateUpdateRepo(raw: string, fallback: string): string { - const trimmed = raw.trim(); - if (!trimmed || DEPRECATED_UPDATE_REPOS.has(trimmed.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; } diff --git a/tests/storage.test.ts b/tests/storage.test.ts index a4ba8ff..a78626d 100644 --- a/tests/storage.test.ts +++ b/tests/storage.test.ts @@ -71,7 +71,7 @@ describe("settings storage", () => { expect(loaded.allDebridToken).toBe("all-token"); }); - it("normalizes invalid enum and numeric values", () => { + it("normalizes invalid enum and numeric values", () => { const normalized = normalizeSettings({ ...defaultSettings(), providerPrimary: "invalid-provider" as unknown as AppSettings["providerPrimary"], @@ -105,10 +105,21 @@ describe("settings storage", () => { expect(normalized.outputDir).toBe(defaultSettings().outputDir); expect(normalized.extractDir).toBe(defaultSettings().extractDir); expect(normalized.mkvLibraryDir).toBe(defaultSettings().mkvLibraryDir); - expect(normalized.updateRepo).toBe(defaultSettings().updateRepo); - }); - - it("normalizes malformed persisted config on load", () => { + expect(normalized.updateRepo).toBe(defaultSettings().updateRepo); + }); + + it("migrates the previous private update repository to the public release repository", () => { + for (const updateRepo of [ + "legacy-owner/real-debrid-downloader", + "legacy-owner/multi-debrid-downloader", + "legacy-owner/real-debrid-downloader.git" + ]) { + const normalized = normalizeSettings({ ...defaultSettings(), updateRepo }); + expect(normalized.updateRepo).toBe(defaultSettings().updateRepo); + } + }); + + it("normalizes malformed persisted config on load", () => { const dir = fs.mkdtempSync(path.join(os.tmpdir(), "rd-store-")); tempDirs.push(dir); const paths = createStoragePaths(dir);