UNPKG

@blockchain-lab-um/masca-connector

Version:

Library for using Masca on the frontend

62 lines (59 loc) 2 kB
import { Masca } from './chunk-4R6F6E23.js'; export { Masca } from './chunk-4R6F6E23.js'; import './chunk-S36CRCIQ.js'; import './chunk-G7G7UPOD.js'; import './chunk-OMAQRS7F.js'; import { availableMethods } from '@blockchain-lab-um/masca-types'; export * from '@blockchain-lab-um/masca-types'; import { ResultObject, isError } from '@blockchain-lab-um/utils'; export * from '@blockchain-lab-um/utils'; // src/masca.json var masca_default = { mascaVersion: "1.4.0" }; var defaultSnapOrigin = "npm:@blockchain-lab-um/masca"; async function enableMasca(address, snapInstallationParams = {}) { const { snapId = defaultSnapOrigin, version = masca_default.mascaVersion, supportedMethods = availableMethods } = snapInstallationParams; const snap = new Masca(snapId, supportedMethods); const provider = snap.providerStore.getCurrentProvider()?.provider; if (!provider) { return ResultObject.error("No provider found"); } try { await provider.request({ method: "wallet_requestSnaps", params: { [snapId]: { version } } }); const api = snap.getMascaApi(); const setAccountRes = await api.setCurrentAccount({ account: address }); if (isError(setAccountRes)) { return ResultObject.error(setAccountRes.error); } const selectedMethodsResult = await api.getSelectedMethod(); if (isError(selectedMethodsResult)) { return ResultObject.error(selectedMethodsResult.error); } const method = selectedMethodsResult.data; if (!supportedMethods.includes(method)) { const switchResult = await api.switchDIDMethod(snap.supportedMethods[0]); if (isError(switchResult)) { return ResultObject.error(switchResult.error); } if (!switchResult.data) { return ResultObject.error("Could not switch to supported DID method"); } } return ResultObject.success(snap); } catch (err) { return ResultObject.error(err.message); } } export { enableMasca };