fix(sdlc-rename): сбой переноса ключа хранилища не теряет значение
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
ef9ec9f46d
commit
3ade954713
@ -28,4 +28,16 @@ describe("readMigrated", () => {
|
|||||||
vi.spyOn(Storage.prototype, "getItem").mockImplementation(() => { throw new Error("closed"); });
|
vi.spyOn(Storage.prototype, "getItem").mockImplementation(() => { throw new Error("closed"); });
|
||||||
expect(readMigrated("sdlc-hub-token")).toBeNull();
|
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");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@ -11,8 +11,10 @@ export function readMigrated(key: string): string | null {
|
|||||||
const oldKey = OLD + key.slice(NEW.length);
|
const oldKey = OLD + key.slice(NEW.length);
|
||||||
const v = localStorage.getItem(oldKey);
|
const v = localStorage.getItem(oldKey);
|
||||||
if (v === null) return null;
|
if (v === null) return null;
|
||||||
localStorage.setItem(key, v);
|
try {
|
||||||
localStorage.removeItem(oldKey);
|
localStorage.setItem(key, v);
|
||||||
|
localStorage.removeItem(oldKey);
|
||||||
|
} catch { /* перенос не удался: значение всё равно отдаём, старый ключ останется */ }
|
||||||
return v;
|
return v;
|
||||||
} catch { return null; }
|
} catch { return null; }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// клиентский токен хаба: localStorage["sdlc-hub-token"] (со старого "sdlc-hub-token" переносится при чтении) и копия в памяти на случай
|
// клиентский токен хаба: localStorage["sdlc-hub-token"] (со старого "jira-hub-token" переносится при чтении) и копия в памяти на случай
|
||||||
// закрытого хранилища. reason — почему показан экран входа: "bad" — токен не подошёл (ответ 401)
|
// закрытого хранилища. reason — почему показан экран входа: "bad" — токен не подошёл (ответ 401)
|
||||||
import { readMigrated } from "../api/legacyStorage";
|
import { readMigrated } from "../api/legacyStorage";
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user