Синхронизировать регистр логинов и доработать UI каналов

This commit is contained in:
AidarKC
2026-08-19 14:30:29 +04:00
parent e8a4713f6e
commit ce30b77328
29 changed files with 6729 additions and 815 deletions
+17 -4
View File
@@ -8,6 +8,10 @@ const DB_VERSION = 1;
const STORE_SECRETS = 'encrypted-secrets';
const STORE_SESSIONS = 'session-keys';
function normalizeLoginStorageKey(login) {
return String(login || '').trim().toLowerCase();
}
function openDb() {
return new Promise((resolve, reject) => {
const request = indexedDB.open(DB_NAME, DB_VERSION);
@@ -50,15 +54,20 @@ async function get(storeName, key) {
export async function saveEncryptedUserSecrets(login, storagePwd, keys) {
const encrypted = await encryptJsonWithStoragePwd(keys, storagePwd);
const normalizedLogin = normalizeLoginStorageKey(login);
await put(STORE_SECRETS, {
login,
login: normalizedLogin,
encrypted,
updatedAtMs: Date.now(),
});
}
export async function loadEncryptedUserSecrets(login, storagePwd) {
const row = await get(STORE_SECRETS, login);
const normalizedLogin = normalizeLoginStorageKey(login);
let row = await get(STORE_SECRETS, normalizedLogin);
if (!row?.encrypted && normalizedLogin !== String(login || '').trim()) {
row = await get(STORE_SECRETS, String(login || '').trim());
}
if (!row?.encrypted) {
throw new Error('На устройстве нет сохранённых ключей для этого логина');
}
@@ -80,15 +89,19 @@ export async function updateEncryptedUserSecrets(login, storagePwd, updater) {
}
export async function saveSessionMaterial(login, material) {
const normalizedLogin = normalizeLoginStorageKey(login);
await put(STORE_SESSIONS, {
login,
login: normalizedLogin,
...material,
updatedAtMs: Date.now(),
});
}
export async function loadSessionMaterial(login) {
return get(STORE_SESSIONS, login);
const normalizedLogin = normalizeLoginStorageKey(login);
const row = await get(STORE_SESSIONS, normalizedLogin);
if (row || normalizedLogin === String(login || '').trim()) return row;
return get(STORE_SESSIONS, String(login || '').trim());
}
export async function clearClientAuthData() {