@theweave/api
Version:
This package contains the interfaces and contracts that a Holochain app UI needs to implement in order to run as a Tool in a Weave Frame like [Moss](theweave.social#tryit).
27 lines • 1.05 kB
JavaScript
import { decodeHashFromBase64 } from '@holochain/client';
export async function postMessage(request) {
return new Promise((resolve, reject) => {
const channel = new MessageChannel();
const lowercaseB64IdWithPercent = window.location.href.split('#')[1];
const lowercaseB64Id = lowercaseB64IdWithPercent.replace(/%24/g, '$');
const appletHash = decodeHashFromBase64(toOriginalCaseB64(lowercaseB64Id));
const message = {
request,
appletHash,
};
// eslint-disable-next-line no-restricted-globals
top.postMessage(message, '*', [channel.port2]);
channel.port1.onmessage = (m) => {
if (m.data.type === 'success') {
resolve(m.data.result);
}
else if (m.data.type === 'error') {
reject(m.data.error);
}
};
});
}
export function toOriginalCaseB64(input) {
return input.replace(/[a-z]\$/g, (match) => match[0].toUpperCase());
}
//# sourceMappingURL=utils.js.map