Files
nym/wasm/credentials/internal-dev/index.js
2024-04-09 16:46:49 +01:00

86 lines
2.4 KiB
JavaScript

// Copyright 2020-2023 Nym Technologies SA
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
class WebWorkerClient {
worker = null;
constructor() {
this.worker = new Worker('./worker.js');
this.worker.onmessage = (ev) => {
if (ev.data && ev.data.kind) {
switch (ev.data.kind) {
case 'ReceivedCredential':
const { credential } = ev.data.args;
displayCredential(credential)
break;
}
}
};
}
getCredential = (amount, mnemonic) => {
if (!this.worker) {
console.error('Could not get credential because worker does not exist');
return;
}
this.worker.postMessage({
kind: 'GetCredential',
args: {
amount,
mnemonic
},
});
};
}
let client = null;
async function main() {
client = new WebWorkerClient();
const coconutButton = document.querySelector('#coconut-button');
coconutButton.onclick = function () {
getCredential();
};
}
async function getCredential() {
const amount = document.getElementById('credential-amount').value;
const mnemonic = document.getElementById('mnemonic').value;
await client.getCredential(amount, mnemonic);
}
function displayCredential(credential) {
console.log("got credential", credential)
let timestamp = new Date().toISOString().substr(11, 12);
let credentialDiv = document.createElement('div');
let paragraph = document.createElement('p');
paragraph.setAttribute('style', 'color: blue');
let paragraphContent = document.createTextNode(timestamp + ' 🥥🥥🥥 >>> ' + JSON.stringify(credential));
paragraph.appendChild(paragraphContent);
credentialDiv.appendChild(paragraph);
document.getElementById('output').appendChild(credentialDiv);
}
main();