reorganizing because zx needs to feel special

This commit is contained in:
2022-10-05 08:22:45 -06:00
parent 822ffa6c94
commit d1b40247be
84 changed files with 1 additions and 1 deletions
@@ -0,0 +1,222 @@
// TODO: make this all into top-level calls
import * as ae_compiler from './parasite/ae_compiler.js';
import * as ae_node from './parasite/ae_node.js';
import * as sidekick from '../sidekick_dist/dist_js/sidekick.js';
function
value_of_id
(str : string)
: string
{
// angle bracket jizz is type inference jizz; does not change
// runtime behavior;
//
// https://stackoverflow.com/questions/12989741/the-property-value-does-not-exist-on-value-of-type-htmlelement
return (<HTMLInputElement>document.getElementById(str)).value;
}
// COMPILE
async function
user_clicked_insert
()
: Promise<void>
{
let template_name = value_of_id("template-name");
let template_resp = await fetch(`http://localhost:8001/contract-examples/${template_name}`);
let template_code = await template_resp.text();
// Angle brackets are type inference jizz
//
// https://stackoverflow.com/questions/12989741/the-property-value-does-not-exist-on-value-of-type-htmlelement
(<HTMLInputElement>document.getElementById('the-filename')).value = template_name;
// bang turns off null warning
document.getElementById('the-code')!.innerHTML = template_code;
}
// COMPILE
async function
user_clicked_compile
()
: Promise<void>
{
let code = value_of_id('the-code');
let filename = value_of_id('the-filename');
console.log('code:');
console.log(code);
let response = await ae_compiler.CompileContract(code, filename);
let status_n = response.status;
let status_t = response.statusText;
let result_json = await response.json();
console.log('status_n', status_n);
console.log('status_t', status_t);
console.log('result_t', result_json);
// bang turns off typescript possibly null warning
document.getElementById('compile-result-status')!.innerText = `${status_n} ${status_t}`;
document.getElementById('compile-result-json')!.innerHTML = sidekick.pf(result_json);
}
function
user_clicked_clear
()
: void
{
// bang turns off typescript possibly null warning
document.getElementById('compile-result-status')!.innerText = '';
document.getElementById('compile-result-json')!.innerHTML = '';
}
// ENCODE CALLDATA
async function
user_clicked_encode
()
: Promise<void>
{
let code = value_of_id('the-code');
let filename = value_of_id('the-filename');
let fn_name = value_of_id('EncodeCalldata-function-name');
let fn_args_s = value_of_id('EncodeCalldata-function-args');
let fn_args = JSON.parse(fn_args_s);
let response =
await ae_compiler.EncodeCalldata(code,
filename,
fn_name,
fn_args);
let status_n = response.status;
let status_t = response.statusText;
let result_json = await response.json();
console.log('status_n', status_n);
console.log('status_t', status_t);
console.log('result_t', result_json);
// bang turns off null warnings in tsc
document.getElementById('EncodeCalldata-result-status')!.innerText = `${status_n} ${status_t}`;
document.getElementById('EncodeCalldata-result-json')!.innerHTML = sidekick.pf(result_json);
}
function
user_clicked_encode_clear
()
: void
{
// bang turns off null warnings in tsc
document.getElementById('EncodeCalldata-result-status')!.innerText = '';
document.getElementById('EncodeCalldata-result-json')!.innerText = '';
}
// CONNECT TO SUPERHERO
async function
user_clicked_connect
(skl : sidekick.Skylight)
: Promise<void>
{
let wallet_addr = await sidekick.handshake_def(skl);
// put it in the thing
// bang turns off maybe null typescript warning
document.getElementById('user-wallet-address')!.innerHTML = wallet_addr;
}
async function
user_clicked_create
(skl : sidekick.Skylight)
: Promise<void>
{
// create_contract(whoami : string,
// code : string,
// filename : string,
// init_args : Array<string>)
let whoami = await sidekick.address(skl, sidekick.TIMEOUT_DEF_ADDRESS);
let code = value_of_id('the-code');
let filename = value_of_id('the-filename');
let fn_args_s = value_of_id('deploy-function-args');
let fn_args = JSON.parse(fn_args_s);
let resp = await ae_node.create_contract(whoami, code, filename, fn_args);
let resp_status_n = await resp.status;
let resp_status_t = await resp.statusText;
let resp_json = await resp.json();
// bang tsc null warning jizz
document.getElementById('contract-create-result-status')!.innerText = `${resp_status_n} ${resp_status_t}`;
document.getElementById('contract-create-result-json')!.innerHTML = sidekick.pf(resp_json);
// sign
let tx_base58str = resp_json.tx;
let tx_obj = {tx: tx_base58str};
let result = await sidekick.tx_sign_yes_propagate(skl, tx_obj, sidekick.NETWORK_ID_TESTNET, sidekick.TIMEOUT_DEF_SIGN);
// bang tsc null warning jizz
document.getElementById('superhero-sign-result-json')!.innerHTML = sidekick.pf(result);
// // try to post transaction
// console.log('attempting to post transaction');
// let posttx_resp = await ae_node.PostTransaction(ae_node.URL_TESTNET, {tx: result.signedTransaction});
// let posttx_resp_status_n = await posttx_resp.status;
// let posttx_resp_status_t = await posttx_resp.statusText;
// let posttx_resp_json = await posttx_resp.json();
//
// // fill in boxes
// // bang is tsc null checking warning turn off thing
// document.getElementById('post-transaction-result-status')!.innerHTML = `${posttx_resp_status_n} ${posttx_resp_status_t}`;
// document.getElementById('post-transaction-result-json')!.innerHTML = helpers.pf(posttx_resp_json);
}
// MAIN
async function
main
()
: Promise<void>
{
// bang tsc null warning jizz
// TEMPLATE NAME
document.getElementById('insert-template-button')!.addEventListener('click', user_clicked_insert);
// COMPILE
document.getElementById('compile-button')!.addEventListener('click', user_clicked_compile);
document.getElementById('compile-clear')!.addEventListener('click', user_clicked_clear);
// ENCODE CALLDATA
document.getElementById('EncodeCalldata-button')!.addEventListener('click', user_clicked_encode);
document.getElementById('EncodeCalldata-button-clear')!.addEventListener('click', user_clicked_encode_clear);
// DEPLOY
// this turns on the console logger
sidekick.snoop_console();
let my_skylight = await sidekick.start();
// connect button
document .getElementById('connect-to-superhero')!
.addEventListener('click',
function () { user_clicked_connect(my_skylight) });
// create button
document .getElementById('contract-create-button')!
.addEventListener('click',
function () { user_clicked_create(my_skylight) });
}
main();