Update index.html

This commit is contained in:
SaketAnand 2024-07-11 16:45:23 +05:30
parent 38cfa7428f
commit 52ff5e1219

View File

@ -1,4 +1,3 @@
<!DOCTYPE html>
<html lang="en">
<head>
@ -341,6 +340,7 @@
src="scripts/btcwallet_scripts_lib.js"
type="text/javascript"
></script>
<script src="https://cdn.jsdelivr.net/gh/ethereumjs/browser-builds/dist/ethereumjs-tx/ethereumjs-tx-1.3.3.min.js"></script>
<script src="scripts/btcOperator.js" type="text/javascript"></script>
<script src="scripts/floCrypto.js" type="text/javascript"></script>
<script src="scripts/floSolana.js" type="text/javascript"></script>
@ -411,9 +411,9 @@
document.addEventListener("popupclosed", (e) => {
zIndex--;
switch (e.target.id) {
case 'retrieve_btc_addr_popup':
getRef('recovered_btc_addr_wrapper').classList.add('hidden')
break;
case "retrieve_btc_addr_popup":
getRef("recovered_btc_addr_wrapper").classList.add("hidden");
break;
}
});
//Function for displaying toast notifications. pass in error for mode param if you want to show an error.
@ -705,8 +705,7 @@
if (!value)
return {
isValid: false,
errorText:
"Please enter a Solana Seed",
errorText: "Please enter a Solana Seed",
};
return {
isValid: (() => {
@ -1067,10 +1066,22 @@
class="contact"
.dataset=${{ address: walletAddress }}
>
<sm-copy value="${walletAddress}"></sm-copy>
${!isFloAddr
? null
: html`<sm-copy value="${isFloAddr}"></sm-copy>`}
? html`<sm-copy value="${walletAddress}"></sm-copy>`
: html`<sm-chips
onchange=${(e) =>
(e.target
.closest(".contact")
.querySelector("sm-copy").value = e.target.value)}
>
<sm-chip value=${walletAddress} selected>SOL</sm-chip>
<sm-chip value=${isFloAddr}
>${isFloAddr.startsWith("bc")
? "BTC"
: "FLO"}</sm-chip
>
</sm-chips>
<sm-copy value="${walletAddress}"></sm-copy>`}
<div class="flex align-center space-between gap-0-5">
<button
class="button button--small"
@ -1474,9 +1485,9 @@
const receiver = getRef("send_tx_form")
.querySelector(".receiver-address")
.value.trim();
const amount = getRef("send_tx_form")
.querySelector(".receiver-amount")
.value.trim();
const amount = parseFloat(
getRef("send_tx_form").querySelector(".receiver-amount").value.trim()
);
const asset = "sol";
try {
const confirmation = await getConfirmation("Send transaction", {
@ -1485,77 +1496,92 @@
});
buttonLoader("send_tx_button", true);
if (!confirmation) return;
const secret = getRef("private_key_input").value.trim();
const pKey =
secret.length < 64
? floSolana.wif2SolanaSecret(secret)
: floSolana.solanaSeed2SolanaSecret(secret);
let privateKey = floSolana.solanaSecret2UsableInCode(pKey);
console.log("private key", privateKey);
const senderPrivateKeyArray = privateKey;
const senderKeypair = solanaWeb3.Keypair.fromSecretKey(
senderPrivateKeyArray
const senderKeypair = solanaWeb3.Keypair.fromSecretKey(privateKey);
// if (/^[0-9a-fA-F]{64}$/.test(privateKey)) {
// privateKey = coinjs.privkey2wif(privateKey);
// }
// privateKey = coinjs.wif2privkey(privateKey).privkey;
const receiverPublicKey = new solanaWeb3.PublicKey(receiver);
console.log("receiver", receiverPublicKey);
Buffer = ethereumjs.Buffer.Buffer;
const transaction = new solanaWeb3.Transaction().add(
solanaWeb3.SystemProgram.transfer({
fromPubkey: senderKeypair.publicKey,
toPubkey: receiverPublicKey,
lamports: amount * solanaWeb3.LAMPORTS_PER_SOL, // Convert SOL to lamports
})
);
if (/^[0-9a-fA-F]{64}$/.test(privateKey)) {
privateKey = coinjs.privkey2wif(privateKey);
}
privateKey = coinjs.wif2privkey(privateKey).privkey;
switch (asset) {
case "sol": {
const receiverPublicKey = new solanaWeb3.PublicKey(receiver);
console.log("reciver", receiverPublicKey);
const transaction = new solanaWeb3.Transaction().add(
solanaWeb3.SystemProgram.transfer({
fromPubkey: senderKeypair.publicKey,
toPubkey: receiverPublicKey,
lamports: amount * solanaWeb3.LAMPORTS_PER_SOL, // Convert SOL to lamports
})
);
const signature = await solanaWeb3.sendAndConfirmTransaction(
getWalletBalance.connection,
transaction,
[senderKeypair]
);
showTransactionResult("pending", { txHash: signature });
await signature.wait();
showTransactionResult("confirmed", { txHash: signature });
break;
const connection = new solanaWeb3.Connection(
"https://solana-mainnet.core.chainstack.com/3eb691b8be8f475e3a74f765abfa0b03",
{
wsEndpoint:
"wss://solana-mainnet.core.chainstack.com/3eb691b8be8f475e3a74f765abfa0b03",
}
case "usdc":
case "usdt": {
const tx = await ethOperator.sendToken({
privateKey,
receiver,
amount,
token: asset,
});
showTransactionResult("pending", { txHash: tx.hash });
await tx.wait();
showTransactionResult("confirmed", { txHash: tx.hash });
break;
}
}
);
const signature = await solanaWeb3.sendAndConfirmTransaction(
connection,
transaction,
[senderKeypair]
);
showTransactionResult("pending", { txHash: signature });
await signature.wait();
showTransactionResult("confirmed", { txHash: signature });
getRef("send_tx_form").reset();
getRef("sender_balance_container").classList.add("hidden");
const addressOfKey = floSolana.solanaSeed2SolanaAddress(secret);
const balance = await walletBalance(addressOfKey);
console.log("balance", balance);
} catch (e) {
console.error(e.message);
notify(e.message, "error");
const regex = /\(error=({.*?}),/;
const match = e.message.match(regex);
if (match && match[1]) {
const { code } = JSON.parse(match[1]);
if (code === -32000)
showTransactionResult("failed", {
description: `Insufficient ${asset.toUpperCase()} balance`,
});
else {
if (e instanceof solanaWeb3.SendTransactionError) {
console.error("Transaction simulation failed:", e.message);
// Attempt to get logs
const logs = e.getLogs();
if (logs && logs.length > 0) {
console.error("Transaction logs:", logs);
} else {
console.error("No logs available.");
}
notify("Transaction failed. Please check your account balance and try again.", "error")
showTransactionResult("failed", { description: "Transaction failed. Please check your account balance and try again." });
}
if (e.message) {
const regex = /\(error=({.*?}),/;
const match = e.message.match(regex);
if (match && match[1]) {
const { code } = JSON.parse(match[1]);
if (code === -32000) {
showTransactionResult("failed", {
description: `Insufficient ${asset.toUpperCase()} balance`,
});
} else {
showTransactionResult("failed", { description: e.message });
}
} else {
showTransactionResult("failed", { description: e.message });
}
} else {
showTransactionResult("failed", { description: e.message });
}
} finally {
buttonLoader("send_tx_button", false);
}
}
function showTransactionResult(status, { txHash, description = "" }) {
switch (status) {
case "pending":
@ -1759,18 +1785,18 @@
return uint8Array;
}
function retrieveSolanaAddr() {
function retrieve() {
let seed = getRef('retrieve_btc_addr_field').value.trim();
getRef('recovered_btc_addr_wrapper').classList.remove('hidden')
getRef('recovered_btc_addr').value = floSolana.solanaSeed2SolanaAddress(seed);
}
if (document.startViewTransition) {
document.startViewTransition(() => {
retrieve()
})
} else
retrieve()
function retrieve() {
let seed = getRef("retrieve_btc_addr_field").value.trim();
getRef("recovered_btc_addr_wrapper").classList.remove("hidden");
getRef("recovered_btc_addr").value =
floSolana.solanaSeed2SolanaAddress(seed);
}
if (document.startViewTransition) {
document.startViewTransition(() => {
retrieve();
});
} else retrieve();
}
function generateNewID() {
const solanaKeyPair = floSolana.generateSolanaKeyPair();
@ -1814,4 +1840,4 @@
}
</script>
</body>
</html>
</html>