Update index.html
This commit is contained in:
parent
38cfa7428f
commit
52ff5e1219
176
index.html
176
index.html
@ -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>
|
||||
Loading…
Reference in New Issue
Block a user