Skip to content

Commit 71dbfdc

Browse files
committed
fix: test improvements
Signed-off-by: Francisco Javier Ribo Labrador <elribonazo@gmail.com>
1 parent c4804cf commit 71dbfdc

7 files changed

Lines changed: 2507 additions & 24 deletions

File tree

packages/lib/react/package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@
3939
"license": "Apache-2.0",
4040
"keywords": [],
4141
"devDependencies": {
42-
"@hyperledger/identus-sdk": "^8.0.0",
42+
"@hyperledger/identus-sdk": "workspace:*",
43+
"@testing-library/dom": "^10.4.1",
44+
"@testing-library/react": "^16",
4345
"@types/react": "^18",
4446
"@types/react-dom": "^18",
4547
"react": "^18",
@@ -52,8 +54,8 @@
5254
"uuid": "^11.1.0"
5355
},
5456
"peerDependencies": {
57+
"@hyperledger/identus-sdk": "workspace:*",
5558
"react": "^18",
56-
"react-dom": "^18",
57-
"@hyperledger/identus-sdk": "^8.0.0"
59+
"react-dom": "^18"
5860
}
59-
}
61+
}

packages/lib/react/src/provider/Database.tsx

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -325,23 +325,35 @@ export function DatabaseProvider({ children }: { children: React.ReactNode }) {
325325
try {
326326
setState('loading');
327327

328-
if (!pluto) {
329-
const newPluto = await Pluto.create({
328+
// Use existing pluto or create a new one.
329+
// We keep a local reference so we don't depend on the
330+
// stale `pluto` state closure for the queries below.
331+
const db = pluto ?? await (async () => {
332+
const p = await Pluto.create({
330333
dbName: options?.name || "identus",
331334
startOptions: options,
332335
keyRestoration: apollo
333336
});
334-
setPluto(newPluto);
335-
}
337+
setPluto(p);
338+
return p;
339+
})();
340+
341+
// Load features directly using the local `db` reference
342+
const featuresRow = await db.store.query("settings", { selector: { key: FEATURES } });
343+
const featuresValue = featuresRow.length ? featuresRow[0].value : '';
344+
setFeatures(featuresValue.split(','));
345+
346+
// Load wallet directly using the local `db` reference
347+
const walletRow = await db.store.query("settings", { selector: { key: WALLET_NAME } });
348+
const walletName = walletRow.length ? walletRow[0].value : null;
349+
setCurrentWallet(walletName);
336350

337-
await getFeatures();
338-
await getWallet();
339351
setState('loaded');
340352
} catch (error) {
341353
setError(error as Error);
342354
setState('disconnected');
343355
}
344-
}, [pluto, apollo, getFeatures, getWallet]);
356+
}, [pluto, apollo]);
345357

346358
const getCredentials = useCallback(async () => {
347359
if (state === "loaded" && pluto) {

0 commit comments

Comments
 (0)