btc-wallet 0.5.1-beta → 0.5.3-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/btcUtils.d.ts +8 -0
- package/dist/index.js +239 -237
- package/dist/index.js.map +4 -4
- package/esm/index.js +239 -237
- package/esm/index.js.map +4 -4
- package/package.json +1 -1
package/dist/core/btcUtils.d.ts
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
import type { ENV } from '../config';
|
2
2
|
import type { FinalExecutionOutcome, Transaction } from '@near-wallet-selector/core';
|
3
|
+
export declare function getConfig(env: ENV): Promise<{
|
4
|
+
base_url: string;
|
5
|
+
token: string;
|
6
|
+
accountContractId: string;
|
7
|
+
bridgeContractId: string;
|
8
|
+
walletUrl: string;
|
9
|
+
bridgeUrl: string;
|
10
|
+
}>;
|
3
11
|
export interface AccountInfo {
|
4
12
|
nonce: string;
|
5
13
|
gas_token: Record<string, string>;
|
package/dist/index.js
CHANGED
@@ -99,6 +99,7 @@ __export(src_exports, {
|
|
99
99
|
getAccountInfo: () => getAccountInfo,
|
100
100
|
getBtcBalance: () => getBtcBalance,
|
101
101
|
getBtcGasPrice: () => getBtcGasPrice,
|
102
|
+
getConfig: () => getConfig,
|
102
103
|
getCsnaAccountId: () => getCsnaAccountId,
|
103
104
|
getDepositAmount: () => getDepositAmount,
|
104
105
|
getNBTCBalance: () => getNBTCBalance,
|
@@ -2925,7 +2926,7 @@ var walletConfig = {
|
|
2925
2926
|
token: "nbtc.toalice.near",
|
2926
2927
|
accountContractId: "acc.toalice.near",
|
2927
2928
|
bridgeContractId: "brg.toalice.near",
|
2928
|
-
walletUrl: "
|
2929
|
+
walletUrl: "https://wallet-stg.satoshibridge.top",
|
2929
2930
|
bridgeUrl: "https://old.ramp.satos.network"
|
2930
2931
|
},
|
2931
2932
|
mainnet: {
|
@@ -2951,231 +2952,8 @@ var btcRpcUrls = {
|
|
2951
2952
|
testnet: "https://mempool.space/testnet/api"
|
2952
2953
|
};
|
2953
2954
|
|
2954
|
-
// src/
|
2955
|
-
|
2956
|
-
console.log("setupWalletButton");
|
2957
|
-
if (document.getElementById("satoshi-wallet-button")) {
|
2958
|
-
return;
|
2959
|
-
}
|
2960
|
-
const iframe = createIframe({
|
2961
|
-
iframeUrl: walletConfig[env].walletUrl,
|
2962
|
-
iframeStyle: { width: "400px", height: "650px" }
|
2963
|
-
});
|
2964
|
-
iframe.addEventListener("mouseenter", () => {
|
2965
|
-
var _a;
|
2966
|
-
if (document.activeElement !== iframe) {
|
2967
|
-
(_a = document.activeElement) == null ? void 0 : _a.setAttribute("tabindex", "null");
|
2968
|
-
setTimeout(() => {
|
2969
|
-
iframe.focus();
|
2970
|
-
}, 0);
|
2971
|
-
}
|
2972
|
-
});
|
2973
|
-
const button = createFloatingButtonWithIframe({
|
2974
|
-
openImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn.png",
|
2975
|
-
closeImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn-active.png",
|
2976
|
-
iframe
|
2977
|
-
});
|
2978
|
-
setupButtonClickHandler(button, iframe, wallet, originalWallet);
|
2979
|
-
}
|
2980
|
-
function createFloatingButtonWithIframe({
|
2981
|
-
openImageUrl,
|
2982
|
-
closeImageUrl,
|
2983
|
-
iframe
|
2984
|
-
}) {
|
2985
|
-
const button = document.createElement("img");
|
2986
|
-
button.id = "satoshi-wallet-button";
|
2987
|
-
const isIframeVisible = localStorage.getItem("btc-wallet-iframe-visible") === "true";
|
2988
|
-
button.src = isIframeVisible ? closeImageUrl : openImageUrl;
|
2989
|
-
iframe.style.display = isIframeVisible ? "block" : "none";
|
2990
|
-
const windowWidth = window.innerWidth;
|
2991
|
-
const windowHeight = window.innerHeight;
|
2992
|
-
const savedPosition = JSON.parse(
|
2993
|
-
localStorage.getItem("btc-wallet-button-position") || '{"right": "20px", "bottom": "20px"}'
|
2994
|
-
);
|
2995
|
-
const right = Math.min(Math.max(20, parseInt(savedPosition.right)), windowWidth - 80);
|
2996
|
-
const bottom = Math.min(Math.max(20, parseInt(savedPosition.bottom)), windowHeight - 80);
|
2997
|
-
Object.assign(button.style, {
|
2998
|
-
position: "fixed",
|
2999
|
-
bottom: `${bottom}px`,
|
3000
|
-
right: `${right}px`,
|
3001
|
-
zIndex: "100000",
|
3002
|
-
width: "60px",
|
3003
|
-
height: "60px",
|
3004
|
-
borderRadius: "50%",
|
3005
|
-
cursor: "grab",
|
3006
|
-
transition: "transform 0.15s ease",
|
3007
|
-
userSelect: "none"
|
3008
|
-
});
|
3009
|
-
document.body.appendChild(button);
|
3010
|
-
updateIframePosition(iframe, right, bottom, windowWidth, windowHeight);
|
3011
|
-
let isDragging = false;
|
3012
|
-
let startX = 0;
|
3013
|
-
let startY = 0;
|
3014
|
-
let initialRight = 0;
|
3015
|
-
let initialBottom = 0;
|
3016
|
-
let dragStartTime = 0;
|
3017
|
-
button.addEventListener("mousedown", (e) => {
|
3018
|
-
isDragging = true;
|
3019
|
-
startX = e.clientX;
|
3020
|
-
startY = e.clientY;
|
3021
|
-
initialRight = parseInt(button.style.right);
|
3022
|
-
initialBottom = parseInt(button.style.bottom);
|
3023
|
-
dragStartTime = Date.now();
|
3024
|
-
button.style.cursor = "grabbing";
|
3025
|
-
button.style.transition = "none";
|
3026
|
-
e.preventDefault();
|
3027
|
-
});
|
3028
|
-
document.addEventListener("mousemove", (e) => {
|
3029
|
-
if (!isDragging)
|
3030
|
-
return;
|
3031
|
-
const deltaX = startX - e.clientX;
|
3032
|
-
const deltaY = startY - e.clientY;
|
3033
|
-
let newRight = initialRight + deltaX;
|
3034
|
-
let newBottom = initialBottom + deltaY;
|
3035
|
-
newRight = Math.min(Math.max(20, newRight), windowWidth - 80);
|
3036
|
-
newBottom = Math.min(Math.max(20, newBottom), windowHeight - 80);
|
3037
|
-
const snapThreshold = 20;
|
3038
|
-
const buttonLeft = windowWidth - newRight - 60;
|
3039
|
-
if (buttonLeft < snapThreshold) {
|
3040
|
-
newRight = windowWidth - 80;
|
3041
|
-
} else if (buttonLeft > windowWidth - snapThreshold - 60) {
|
3042
|
-
newRight = 20;
|
3043
|
-
}
|
3044
|
-
if (newBottom < snapThreshold) {
|
3045
|
-
newBottom = 20;
|
3046
|
-
} else if (newBottom > windowHeight - snapThreshold - 60) {
|
3047
|
-
newBottom = windowHeight - 80;
|
3048
|
-
}
|
3049
|
-
button.style.right = `${newRight}px`;
|
3050
|
-
button.style.bottom = `${newBottom}px`;
|
3051
|
-
updateIframePosition(iframe, newRight, newBottom, windowWidth, windowHeight);
|
3052
|
-
});
|
3053
|
-
document.addEventListener("mouseup", () => {
|
3054
|
-
if (!isDragging)
|
3055
|
-
return;
|
3056
|
-
const dragEndTime = Date.now();
|
3057
|
-
const isDragEvent = dragEndTime - dragStartTime > 200;
|
3058
|
-
isDragging = false;
|
3059
|
-
button.style.cursor = "grab";
|
3060
|
-
button.style.transition = "transform 0.15s ease";
|
3061
|
-
localStorage.setItem(
|
3062
|
-
"btc-wallet-button-position",
|
3063
|
-
JSON.stringify({
|
3064
|
-
right: button.style.right,
|
3065
|
-
bottom: button.style.bottom
|
3066
|
-
})
|
3067
|
-
);
|
3068
|
-
if (!isDragEvent) {
|
3069
|
-
handleButtonClick();
|
3070
|
-
}
|
3071
|
-
});
|
3072
|
-
const handleButtonClick = () => {
|
3073
|
-
const isCurrentlyVisible = iframe.style.display === "block";
|
3074
|
-
button.style.transform = "scale(0.8)";
|
3075
|
-
setTimeout(() => {
|
3076
|
-
button.style.transform = "scale(1)";
|
3077
|
-
}, 150);
|
3078
|
-
const newVisibleState = !isCurrentlyVisible;
|
3079
|
-
iframe.style.display = newVisibleState ? "block" : "none";
|
3080
|
-
button.src = newVisibleState ? closeImageUrl : openImageUrl;
|
3081
|
-
localStorage.setItem("btc-wallet-iframe-visible", String(newVisibleState));
|
3082
|
-
setTimeout(() => {
|
3083
|
-
if (newVisibleState) {
|
3084
|
-
iframe.focus();
|
3085
|
-
}
|
3086
|
-
}, 0);
|
3087
|
-
};
|
3088
|
-
button.onclick = null;
|
3089
|
-
return button;
|
3090
|
-
}
|
3091
|
-
function createIframe({
|
3092
|
-
iframeUrl,
|
3093
|
-
iframeStyle = {}
|
3094
|
-
}) {
|
3095
|
-
const iframe = document.createElement("iframe");
|
3096
|
-
iframe.id = "satoshi-wallet-iframe";
|
3097
|
-
iframe.allow = "clipboard-read; clipboard-write";
|
3098
|
-
iframe.src = iframeUrl;
|
3099
|
-
const isVisible = localStorage.getItem("btc-wallet-iframe-visible") === "true";
|
3100
|
-
Object.assign(iframe.style, __spreadValues({
|
3101
|
-
position: "fixed",
|
3102
|
-
bottom: "90px",
|
3103
|
-
right: "20px",
|
3104
|
-
zIndex: "100000",
|
3105
|
-
boxShadow: "0 0 10px rgba(0, 0, 0, 0.1)",
|
3106
|
-
borderRadius: "10px",
|
3107
|
-
display: isVisible ? "block" : "none",
|
3108
|
-
border: "none"
|
3109
|
-
}, iframeStyle));
|
3110
|
-
document.body.appendChild(iframe);
|
3111
|
-
return iframe;
|
3112
|
-
}
|
3113
|
-
function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
3114
|
-
return __async(this, null, function* () {
|
3115
|
-
var _a;
|
3116
|
-
const accountId = (_a = yield wallet == null ? void 0 : wallet.getAccounts()) == null ? void 0 : _a[0].accountId;
|
3117
|
-
const originalAccountId = originalWallet.account;
|
3118
|
-
const originalPublicKey = yield originalWallet.getPublicKey();
|
3119
|
-
console.log({ accountId, originalAccountId, originalPublicKey });
|
3120
|
-
const iframeSrc = new URL(iframe.src);
|
3121
|
-
iframeSrc.searchParams.set("origin", window.location.origin);
|
3122
|
-
accountId && iframeSrc.searchParams.set("accountId", accountId);
|
3123
|
-
originalAccountId && iframeSrc.searchParams.set("originalAccountId", originalAccountId);
|
3124
|
-
originalPublicKey && iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
|
3125
|
-
iframe.src = iframeSrc.toString();
|
3126
|
-
window.addEventListener("message", (event) => __async(this, null, function* () {
|
3127
|
-
var _a2, _b;
|
3128
|
-
if (event.origin !== iframeSrc.origin)
|
3129
|
-
return;
|
3130
|
-
const { action, requestId, data } = event.data;
|
3131
|
-
if (action === "signAndSendTransaction") {
|
3132
|
-
console.log("signAndSendTransaction message", event.data);
|
3133
|
-
try {
|
3134
|
-
const result = yield wallet.signAndSendTransaction(data);
|
3135
|
-
console.log("signAndSendTransaction result", result);
|
3136
|
-
(_a2 = event.source) == null ? void 0 : _a2.postMessage(
|
3137
|
-
{
|
3138
|
-
requestId,
|
3139
|
-
data,
|
3140
|
-
success: true
|
3141
|
-
},
|
3142
|
-
{ targetOrigin: event.origin }
|
3143
|
-
);
|
3144
|
-
} catch (error) {
|
3145
|
-
console.error("signAndSendTransaction error", error);
|
3146
|
-
(_b = event.source) == null ? void 0 : _b.postMessage(
|
3147
|
-
{
|
3148
|
-
requestId,
|
3149
|
-
error: error.message,
|
3150
|
-
success: false
|
3151
|
-
},
|
3152
|
-
{ targetOrigin: event.origin }
|
3153
|
-
);
|
3154
|
-
}
|
3155
|
-
}
|
3156
|
-
}));
|
3157
|
-
});
|
3158
|
-
}
|
3159
|
-
function removeWalletButton() {
|
3160
|
-
const button = document.getElementById("satoshi-wallet-button");
|
3161
|
-
button == null ? void 0 : button.remove();
|
3162
|
-
const iframe = document.getElementById("satoshi-wallet-iframe");
|
3163
|
-
iframe == null ? void 0 : iframe.remove();
|
3164
|
-
}
|
3165
|
-
function updateIframePosition(iframe, buttonRight, buttonBottom, windowWidth, windowHeight) {
|
3166
|
-
const iframeWidth = parseInt(iframe.style.width);
|
3167
|
-
const iframeHeight = parseInt(iframe.style.height);
|
3168
|
-
let iframeRight = buttonRight;
|
3169
|
-
let iframeBottom = buttonBottom + 70;
|
3170
|
-
if (iframeRight + iframeWidth > windowWidth - 20) {
|
3171
|
-
iframeRight = Math.max(20, windowWidth - iframeWidth - 20);
|
3172
|
-
}
|
3173
|
-
if (iframeBottom + iframeHeight > windowHeight - 20) {
|
3174
|
-
iframeBottom = Math.max(20, buttonBottom - iframeHeight - 10);
|
3175
|
-
}
|
3176
|
-
iframe.style.right = `${iframeRight}px`;
|
3177
|
-
iframe.style.bottom = `${iframeBottom}px`;
|
3178
|
-
}
|
2955
|
+
// src/core/btcUtils.ts
|
2956
|
+
var import_big = __toESM(require("big.js"), 1);
|
3179
2957
|
|
3180
2958
|
// src/utils/nearUtils.ts
|
3181
2959
|
var import_near_api_js = require("near-api-js");
|
@@ -3239,12 +3017,6 @@ function pollTransactionStatuses(network, hashes) {
|
|
3239
3017
|
});
|
3240
3018
|
}
|
3241
3019
|
|
3242
|
-
// src/core/setupBTCWallet.ts
|
3243
|
-
var import_big2 = __toESM(require("big.js"), 1);
|
3244
|
-
|
3245
|
-
// src/core/btcUtils.ts
|
3246
|
-
var import_big = __toESM(require("big.js"), 1);
|
3247
|
-
|
3248
3020
|
// src/utils/request.ts
|
3249
3021
|
var cache = /* @__PURE__ */ new Map();
|
3250
3022
|
var defaultCacheTimeout = 3e3;
|
@@ -3447,11 +3219,10 @@ var NBTC_STORAGE_DEPOSIT_AMOUNT = "3000";
|
|
3447
3219
|
var GAS_LIMIT = "50000000000000";
|
3448
3220
|
var NEW_ACCOUNT_MIN_DEPOSIT_AMOUNT = "1000";
|
3449
3221
|
function getBtcProvider() {
|
3450
|
-
|
3451
|
-
if (typeof window === "undefined" || !window.btcContext && !((_a = window.top) == null ? void 0 : _a.btcContext)) {
|
3222
|
+
if (typeof window === "undefined" || !window.btcContext) {
|
3452
3223
|
throw new Error("BTC Provider is not initialized.");
|
3453
3224
|
}
|
3454
|
-
return window.btcContext
|
3225
|
+
return window.btcContext;
|
3455
3226
|
}
|
3456
3227
|
function getNetwork() {
|
3457
3228
|
return __async(this, null, function* () {
|
@@ -3514,7 +3285,6 @@ function checkGasTokenDebt(accountInfo, env, autoDeposit) {
|
|
3514
3285
|
return;
|
3515
3286
|
const config = yield getConfig(env);
|
3516
3287
|
const transferAmount = hasDebtArrears ? debtAmount : relayerFeeAmount;
|
3517
|
-
console.log("get_account:", accountInfo);
|
3518
3288
|
const action = {
|
3519
3289
|
receiver_id: config.accountContractId,
|
3520
3290
|
amount: transferAmount.toString(),
|
@@ -3925,7 +3695,239 @@ function uint8ArrayToHex(uint8Array) {
|
|
3925
3695
|
return Array.from(uint8Array).map((byte) => byte.toString(16).padStart(2, "0")).join("");
|
3926
3696
|
}
|
3927
3697
|
|
3698
|
+
// src/utils/initWalletButton.ts
|
3699
|
+
function setupWalletButton(env, wallet, originalWallet) {
|
3700
|
+
console.log("setupWalletButton");
|
3701
|
+
if (document.getElementById("satoshi-wallet-button")) {
|
3702
|
+
return;
|
3703
|
+
}
|
3704
|
+
const iframe = createIframe({
|
3705
|
+
iframeUrl: walletConfig[env].walletUrl,
|
3706
|
+
iframeStyle: { width: "400px", height: "650px" }
|
3707
|
+
});
|
3708
|
+
iframe.addEventListener("mouseenter", () => {
|
3709
|
+
var _a;
|
3710
|
+
if (document.activeElement !== iframe) {
|
3711
|
+
(_a = document.activeElement) == null ? void 0 : _a.setAttribute("tabindex", "null");
|
3712
|
+
setTimeout(() => {
|
3713
|
+
iframe.focus();
|
3714
|
+
}, 0);
|
3715
|
+
}
|
3716
|
+
});
|
3717
|
+
const button = createFloatingButtonWithIframe({
|
3718
|
+
openImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn.png",
|
3719
|
+
closeImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn-active.png",
|
3720
|
+
iframe
|
3721
|
+
});
|
3722
|
+
setupButtonClickHandler(button, iframe, wallet, originalWallet);
|
3723
|
+
}
|
3724
|
+
function createFloatingButtonWithIframe({
|
3725
|
+
openImageUrl,
|
3726
|
+
closeImageUrl,
|
3727
|
+
iframe
|
3728
|
+
}) {
|
3729
|
+
const button = document.createElement("img");
|
3730
|
+
button.id = "satoshi-wallet-button";
|
3731
|
+
const isIframeVisible = localStorage.getItem("btc-wallet-iframe-visible") === "true";
|
3732
|
+
button.src = isIframeVisible ? closeImageUrl : openImageUrl;
|
3733
|
+
iframe.style.display = isIframeVisible ? "block" : "none";
|
3734
|
+
const windowWidth = window.innerWidth;
|
3735
|
+
const windowHeight = window.innerHeight;
|
3736
|
+
const savedPosition = JSON.parse(
|
3737
|
+
localStorage.getItem("btc-wallet-button-position") || '{"right": "20px", "bottom": "20px"}'
|
3738
|
+
);
|
3739
|
+
const right = Math.min(Math.max(20, parseInt(savedPosition.right)), windowWidth - 80);
|
3740
|
+
const bottom = Math.min(Math.max(20, parseInt(savedPosition.bottom)), windowHeight - 80);
|
3741
|
+
Object.assign(button.style, {
|
3742
|
+
position: "fixed",
|
3743
|
+
bottom: `${bottom}px`,
|
3744
|
+
right: `${right}px`,
|
3745
|
+
zIndex: "100000",
|
3746
|
+
width: "60px",
|
3747
|
+
height: "60px",
|
3748
|
+
borderRadius: "50%",
|
3749
|
+
cursor: "grab",
|
3750
|
+
transition: "transform 0.15s ease",
|
3751
|
+
userSelect: "none"
|
3752
|
+
});
|
3753
|
+
document.body.appendChild(button);
|
3754
|
+
updateIframePosition(iframe, right, bottom, windowWidth, windowHeight);
|
3755
|
+
let isDragging = false;
|
3756
|
+
let startX = 0;
|
3757
|
+
let startY = 0;
|
3758
|
+
let initialRight = 0;
|
3759
|
+
let initialBottom = 0;
|
3760
|
+
let dragStartTime = 0;
|
3761
|
+
button.addEventListener("mousedown", (e) => {
|
3762
|
+
isDragging = true;
|
3763
|
+
startX = e.clientX;
|
3764
|
+
startY = e.clientY;
|
3765
|
+
initialRight = parseInt(button.style.right);
|
3766
|
+
initialBottom = parseInt(button.style.bottom);
|
3767
|
+
dragStartTime = Date.now();
|
3768
|
+
button.style.cursor = "grabbing";
|
3769
|
+
button.style.transition = "none";
|
3770
|
+
e.preventDefault();
|
3771
|
+
});
|
3772
|
+
document.addEventListener("mousemove", (e) => {
|
3773
|
+
if (!isDragging)
|
3774
|
+
return;
|
3775
|
+
const deltaX = startX - e.clientX;
|
3776
|
+
const deltaY = startY - e.clientY;
|
3777
|
+
let newRight = initialRight + deltaX;
|
3778
|
+
let newBottom = initialBottom + deltaY;
|
3779
|
+
newRight = Math.min(Math.max(20, newRight), windowWidth - 80);
|
3780
|
+
newBottom = Math.min(Math.max(20, newBottom), windowHeight - 80);
|
3781
|
+
const snapThreshold = 20;
|
3782
|
+
const buttonLeft = windowWidth - newRight - 60;
|
3783
|
+
if (buttonLeft < snapThreshold) {
|
3784
|
+
newRight = windowWidth - 80;
|
3785
|
+
} else if (buttonLeft > windowWidth - snapThreshold - 60) {
|
3786
|
+
newRight = 20;
|
3787
|
+
}
|
3788
|
+
if (newBottom < snapThreshold) {
|
3789
|
+
newBottom = 20;
|
3790
|
+
} else if (newBottom > windowHeight - snapThreshold - 60) {
|
3791
|
+
newBottom = windowHeight - 80;
|
3792
|
+
}
|
3793
|
+
button.style.right = `${newRight}px`;
|
3794
|
+
button.style.bottom = `${newBottom}px`;
|
3795
|
+
updateIframePosition(iframe, newRight, newBottom, windowWidth, windowHeight);
|
3796
|
+
});
|
3797
|
+
document.addEventListener("mouseup", () => {
|
3798
|
+
if (!isDragging)
|
3799
|
+
return;
|
3800
|
+
const dragEndTime = Date.now();
|
3801
|
+
const isDragEvent = dragEndTime - dragStartTime > 200;
|
3802
|
+
isDragging = false;
|
3803
|
+
button.style.cursor = "grab";
|
3804
|
+
button.style.transition = "transform 0.15s ease";
|
3805
|
+
localStorage.setItem(
|
3806
|
+
"btc-wallet-button-position",
|
3807
|
+
JSON.stringify({
|
3808
|
+
right: button.style.right,
|
3809
|
+
bottom: button.style.bottom
|
3810
|
+
})
|
3811
|
+
);
|
3812
|
+
if (!isDragEvent) {
|
3813
|
+
handleButtonClick();
|
3814
|
+
}
|
3815
|
+
});
|
3816
|
+
const handleButtonClick = () => {
|
3817
|
+
const isCurrentlyVisible = iframe.style.display === "block";
|
3818
|
+
button.style.transform = "scale(0.8)";
|
3819
|
+
setTimeout(() => {
|
3820
|
+
button.style.transform = "scale(1)";
|
3821
|
+
}, 150);
|
3822
|
+
const newVisibleState = !isCurrentlyVisible;
|
3823
|
+
iframe.style.display = newVisibleState ? "block" : "none";
|
3824
|
+
button.src = newVisibleState ? closeImageUrl : openImageUrl;
|
3825
|
+
localStorage.setItem("btc-wallet-iframe-visible", String(newVisibleState));
|
3826
|
+
setTimeout(() => {
|
3827
|
+
if (newVisibleState) {
|
3828
|
+
iframe.focus();
|
3829
|
+
}
|
3830
|
+
}, 0);
|
3831
|
+
};
|
3832
|
+
button.onclick = null;
|
3833
|
+
return button;
|
3834
|
+
}
|
3835
|
+
function createIframe({
|
3836
|
+
iframeUrl,
|
3837
|
+
iframeStyle = {}
|
3838
|
+
}) {
|
3839
|
+
const iframe = document.createElement("iframe");
|
3840
|
+
iframe.id = "satoshi-wallet-iframe";
|
3841
|
+
iframe.allow = "clipboard-read; clipboard-write";
|
3842
|
+
iframe.src = iframeUrl;
|
3843
|
+
const isVisible = localStorage.getItem("btc-wallet-iframe-visible") === "true";
|
3844
|
+
Object.assign(iframe.style, __spreadValues({
|
3845
|
+
position: "fixed",
|
3846
|
+
bottom: "90px",
|
3847
|
+
right: "20px",
|
3848
|
+
zIndex: "100000",
|
3849
|
+
boxShadow: "0 0 10px rgba(0, 0, 0, 0.1)",
|
3850
|
+
borderRadius: "10px",
|
3851
|
+
display: isVisible ? "block" : "none",
|
3852
|
+
border: "none"
|
3853
|
+
}, iframeStyle));
|
3854
|
+
document.body.appendChild(iframe);
|
3855
|
+
return iframe;
|
3856
|
+
}
|
3857
|
+
function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
3858
|
+
return __async(this, null, function* () {
|
3859
|
+
var _a;
|
3860
|
+
const accountId = (_a = yield wallet == null ? void 0 : wallet.getAccounts()) == null ? void 0 : _a[0].accountId;
|
3861
|
+
const originalAccountId = originalWallet.account;
|
3862
|
+
const originalPublicKey = yield originalWallet.getPublicKey();
|
3863
|
+
console.log({ accountId, originalAccountId, originalPublicKey });
|
3864
|
+
const iframeSrc = new URL(iframe.src);
|
3865
|
+
iframeSrc.searchParams.set("origin", window.location.origin);
|
3866
|
+
accountId && iframeSrc.searchParams.set("accountId", accountId);
|
3867
|
+
originalAccountId && iframeSrc.searchParams.set("originalAccountId", originalAccountId);
|
3868
|
+
originalPublicKey && iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
|
3869
|
+
iframe.src = iframeSrc.toString();
|
3870
|
+
const actions = {
|
3871
|
+
signAndSendTransaction: wallet.signAndSendTransaction,
|
3872
|
+
executeBTCDepositAndAction
|
3873
|
+
};
|
3874
|
+
window.addEventListener("message", (event) => __async(this, null, function* () {
|
3875
|
+
var _a2, _b;
|
3876
|
+
if (event.origin !== iframeSrc.origin)
|
3877
|
+
return;
|
3878
|
+
const { action, requestId, data } = event.data;
|
3879
|
+
try {
|
3880
|
+
const actionFn = actions[action];
|
3881
|
+
if (!actionFn)
|
3882
|
+
return;
|
3883
|
+
console.log("handleWalletAction", action, event.data);
|
3884
|
+
const result = yield actionFn(data);
|
3885
|
+
console.log("handleWalletAction result", action, result);
|
3886
|
+
(_a2 = event.source) == null ? void 0 : _a2.postMessage(
|
3887
|
+
{
|
3888
|
+
requestId,
|
3889
|
+
data,
|
3890
|
+
success: true
|
3891
|
+
},
|
3892
|
+
{ targetOrigin: event.origin }
|
3893
|
+
);
|
3894
|
+
} catch (error) {
|
3895
|
+
console.error("handleWalletAction error", action, error);
|
3896
|
+
(_b = event.source) == null ? void 0 : _b.postMessage(
|
3897
|
+
{
|
3898
|
+
requestId,
|
3899
|
+
error: error.message,
|
3900
|
+
success: false
|
3901
|
+
},
|
3902
|
+
{ targetOrigin: event.origin }
|
3903
|
+
);
|
3904
|
+
}
|
3905
|
+
}));
|
3906
|
+
});
|
3907
|
+
}
|
3908
|
+
function removeWalletButton() {
|
3909
|
+
const button = document.getElementById("satoshi-wallet-button");
|
3910
|
+
button == null ? void 0 : button.remove();
|
3911
|
+
const iframe = document.getElementById("satoshi-wallet-iframe");
|
3912
|
+
iframe == null ? void 0 : iframe.remove();
|
3913
|
+
}
|
3914
|
+
function updateIframePosition(iframe, buttonRight, buttonBottom, windowWidth, windowHeight) {
|
3915
|
+
const iframeWidth = parseInt(iframe.style.width);
|
3916
|
+
const iframeHeight = parseInt(iframe.style.height);
|
3917
|
+
let iframeRight = buttonRight;
|
3918
|
+
let iframeBottom = buttonBottom + 70;
|
3919
|
+
if (iframeRight + iframeWidth > windowWidth - 20) {
|
3920
|
+
iframeRight = Math.max(20, windowWidth - iframeWidth - 20);
|
3921
|
+
}
|
3922
|
+
if (iframeBottom + iframeHeight > windowHeight - 20) {
|
3923
|
+
iframeBottom = Math.max(20, buttonBottom - iframeHeight - 10);
|
3924
|
+
}
|
3925
|
+
iframe.style.right = `${iframeRight}px`;
|
3926
|
+
iframe.style.bottom = `${iframeBottom}px`;
|
3927
|
+
}
|
3928
|
+
|
3928
3929
|
// src/core/setupBTCWallet.ts
|
3930
|
+
var import_big2 = __toESM(require("big.js"), 1);
|
3929
3931
|
var { transfer, functionCall } = import_transactions.actionCreators;
|
3930
3932
|
var STORAGE_KEYS = {
|
3931
3933
|
ACCOUNT: "btc-wallet-account",
|
@@ -4438,7 +4440,7 @@ function setupBTCWallet({
|
|
4438
4440
|
|
4439
4441
|
// src/index.ts
|
4440
4442
|
var getVersion = () => {
|
4441
|
-
return "0.5.
|
4443
|
+
return "0.5.3-beta";
|
4442
4444
|
};
|
4443
4445
|
if (typeof window !== "undefined") {
|
4444
4446
|
window.__BTC_WALLET_VERSION = getVersion();
|