@blockchain-lab-um/masca-connector
Version:
Library for using Masca on the frontend
62 lines (59 loc) • 2 kB
JavaScript
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 };