Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Commit

Permalink
Support rust in StorageManager (#12206)
Browse files Browse the repository at this point in the history
  • Loading branch information
BillCarsonFr authored Feb 1, 2024
1 parent 01f0c66 commit 40ee1bb
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/MatrixClientPeg.ts
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,7 @@ class MatrixClientPegClass implements IMatrixClientPeg {
if (useRustCrypto) {
await this.matrixClient.initRustCrypto();

StorageManager.setCryptoInitialised(true);
// TODO: device dehydration and whathaveyou
return;
}
Expand Down
16 changes: 14 additions & 2 deletions src/utils/StorageManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ limitations under the License.
import { LocalStorageCryptoStore, IndexedDBStore, IndexedDBCryptoStore } from "matrix-js-sdk/src/matrix";
import { logger } from "matrix-js-sdk/src/logger";

import SettingsStore from "../settings/SettingsStore";
import { Features } from "../settings/Settings";

const localStorage = window.localStorage;

// just *accessing* indexedDB throws an exception in firefox with
Expand All @@ -28,7 +31,16 @@ try {

// The JS SDK will add a prefix of "matrix-js-sdk:" to the sync store name.
const SYNC_STORE_NAME = "riot-web-sync";
const CRYPTO_STORE_NAME = "matrix-js-sdk:crypto";
const LEGACY_CRYPTO_STORE_NAME = "matrix-js-sdk:crypto";
const RUST_CRYPTO_STORE_NAME = "matrix-js-sdk::matrix-sdk-crypto";

function cryptoStoreName(): string {
if (SettingsStore.getValue(Features.RustCrypto)) {
return RUST_CRYPTO_STORE_NAME;
} else {
return LEGACY_CRYPTO_STORE_NAME;
}
}

function log(msg: string): void {
logger.log(`StorageManager: ${msg}`);
Expand Down Expand Up @@ -145,7 +157,7 @@ async function checkSyncStore(): Promise<StoreCheck> {
async function checkCryptoStore(): Promise<StoreCheck> {
let exists = false;
try {
exists = await IndexedDBCryptoStore.exists(indexedDB, CRYPTO_STORE_NAME);
exists = await IndexedDBCryptoStore.exists(indexedDB, cryptoStoreName());
log(`Crypto store using IndexedDB contains data? ${exists}`);
return { exists, healthy: true };
} catch (e) {
Expand Down

0 comments on commit 40ee1bb

Please sign in to comment.