From 3ade95471320967791e883610e867049f5c2bf7f Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sat, 24 Oct 2026 11:58:25 +0400 Subject: [PATCH] =?UTF-8?q?fix(sdlc-rename):=20=D1=81=D0=B1=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=D0=B0=20=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B0=20=D1=85=D1=80=D0=B0=D0=BD=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=D1=89=D0=B0=20=D0=BD=D0=B5=20=D1=82=D0=B5=D1=80=D1=8F=D0=B5?= =?UTF-8?q?=D1=82=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5.5 --- web/src/api/legacyStorage.test.ts | 12 ++++++++++++ web/src/api/legacyStorage.ts | 6 ++++-- web/src/auth/token.ts | 2 +- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/web/src/api/legacyStorage.test.ts b/web/src/api/legacyStorage.test.ts index 84efa64..2ef0e27 100644 --- a/web/src/api/legacyStorage.test.ts +++ b/web/src/api/legacyStorage.test.ts @@ -28,4 +28,16 @@ describe("readMigrated", () => { vi.spyOn(Storage.prototype, "getItem").mockImplementation(() => { throw new Error("closed"); }); expect(readMigrated("sdlc-hub-token")).toBeNull(); }); + + it("бросающий setItem при переносе: значение всё равно возвращается", () => { + localStorage.setItem("jira-hub-token", "abc"); + vi.spyOn(Storage.prototype, "setItem").mockImplementation(() => { throw new Error("quota"); }); + expect(readMigrated("sdlc-hub-token")).toBe("abc"); + }); + + it("бросающий removeItem при переносе: значение всё равно возвращается", () => { + localStorage.setItem("jira-hub-token", "abc"); + vi.spyOn(Storage.prototype, "removeItem").mockImplementation(() => { throw new Error("closed"); }); + expect(readMigrated("sdlc-hub-token")).toBe("abc"); + }); }); diff --git a/web/src/api/legacyStorage.ts b/web/src/api/legacyStorage.ts index 76d19ae..e9da038 100644 --- a/web/src/api/legacyStorage.ts +++ b/web/src/api/legacyStorage.ts @@ -11,8 +11,10 @@ export function readMigrated(key: string): string | null { const oldKey = OLD + key.slice(NEW.length); const v = localStorage.getItem(oldKey); if (v === null) return null; - localStorage.setItem(key, v); - localStorage.removeItem(oldKey); + try { + localStorage.setItem(key, v); + localStorage.removeItem(oldKey); + } catch { /* перенос не удался: значение всё равно отдаём, старый ключ останется */ } return v; } catch { return null; } } diff --git a/web/src/auth/token.ts b/web/src/auth/token.ts index b09f8fb..a5d15bc 100644 --- a/web/src/auth/token.ts +++ b/web/src/auth/token.ts @@ -1,4 +1,4 @@ -// клиентский токен хаба: localStorage["sdlc-hub-token"] (со старого "sdlc-hub-token" переносится при чтении) и копия в памяти на случай +// клиентский токен хаба: localStorage["sdlc-hub-token"] (со старого "jira-hub-token" переносится при чтении) и копия в памяти на случай // закрытого хранилища. reason — почему показан экран входа: "bad" — токен не подошёл (ответ 401) import { readMigrated } from "../api/legacyStorage";