web: fix app lock not getting disabled

This commit is contained in:
Abdullah Atta
2024-02-07 19:35:23 +05:00
parent 1b5dc9eb14
commit bd93048aaa
2 changed files with 30 additions and 9 deletions

View File

@@ -113,10 +113,7 @@ class KeyStore {
);
await this.metadataStore.delete(this.keyId);
await this.metadataStore.set<SerializableCredential[]>("credentials", [
...(await this.getCredentials()),
{ id: credential.id, type: credential.type }
]);
await this.setCredential({ id: credential.id, type: credential.type });
this.key = originalKey;
return this;
@@ -128,7 +125,7 @@ class KeyStore {
permanent?: boolean;
}
) {
if (!(await this.isLocked())) return this;
if (!(await this.hasCredential(credential))) return;
const encryptedKey = await this.metadataStore.get<
Cipher<"base64"> | EncryptedData
@@ -147,9 +144,7 @@ class KeyStore {
);
if (options?.permanent) {
for (const credential of await this.getCredentials()) {
await this.metadataStore.delete(this.getCredentialKey(credential));
}
await this.resetCredentials();
await this.storeKey(key);
this.key = undefined;
} else this.key = key;
@@ -228,6 +223,31 @@ class KeyStore {
);
}
public async hasCredential(credential: SerializableCredential) {
const credentials = await this.getCredentials();
const index = credentials.findIndex(
(c) => c.type === credential.type && c.id === credential.id
);
return index > -1;
}
public async resetCredentials() {
for (const credential of await this.getCredentials()) {
await this.metadataStore.delete(this.getCredentialKey(credential));
}
await this.metadataStore.delete("credentials");
}
public async setCredential(credential: SerializableCredential) {
const credentials = await this.getCredentials();
const index = credentials.findIndex(
(c) => c.type === credential.type && c.id === credential.id
);
if (index > -1) return;
credentials.push(credential);
await this.metadataStore.set("credentials", credentials);
}
public async set(name: string, value: string) {
if (await this.isLocked())
throw new Error("Please unlock the key store to set values.");