btc-wallet 0.5.53-beta → 0.5.55-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/README.md +20 -15
- package/dist/core/setupModal.d.ts +7 -1
- package/dist/index.js +142 -60
- package/dist/index.js.map +3 -3
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/initWalletButton.d.ts +7 -1
- package/esm/index.js +140 -58
- package/esm/index.js.map +3 -3
- package/package.json +1 -1
package/dist/utils/index.d.ts
CHANGED
@@ -11,3 +11,13 @@ export declare function retryOperation<T>(operation: () => Promise<T> | T, shoul
|
|
11
11
|
}): Promise<T>;
|
12
12
|
export declare function toHex(originalString: string): string;
|
13
13
|
export declare function isMobile(): boolean;
|
14
|
+
export declare function safeJSONParse<T>(str: string): T | undefined;
|
15
|
+
export declare function safeJSONStringify(obj: any): string | undefined;
|
16
|
+
export declare function storageStore(namespace?: string, options?: {
|
17
|
+
storage?: Storage;
|
18
|
+
}): {
|
19
|
+
set(key: string, value: any): void;
|
20
|
+
get<T>(key: string): T | undefined;
|
21
|
+
remove(key: string): void;
|
22
|
+
clearAll: () => void;
|
23
|
+
} | undefined;
|
@@ -1,9 +1,15 @@
|
|
1
1
|
import type { Wallet } from '@near-wallet-selector/core';
|
2
2
|
import { type ENV } from '../config';
|
3
|
+
interface setupWalletButtonOptions {
|
4
|
+
env: ENV;
|
5
|
+
nearWallet: Wallet;
|
6
|
+
btcWallet?: OriginalWallet;
|
7
|
+
walletUrl?: string;
|
8
|
+
}
|
3
9
|
interface OriginalWallet {
|
4
10
|
account: string | undefined;
|
5
11
|
getPublicKey: () => Promise<string | undefined>;
|
6
12
|
}
|
7
|
-
export declare function setupWalletButton(env
|
13
|
+
export declare function setupWalletButton({ env, nearWallet, btcWallet, walletUrl, }: setupWalletButtonOptions): void;
|
8
14
|
export declare function removeWalletButton(): void;
|
9
15
|
export {};
|
package/esm/index.js
CHANGED
@@ -164,6 +164,51 @@ function isMobile() {
|
|
164
164
|
}
|
165
165
|
return false;
|
166
166
|
}
|
167
|
+
function safeJSONParse(str) {
|
168
|
+
try {
|
169
|
+
return JSON.parse(str);
|
170
|
+
} catch (e) {
|
171
|
+
console.error("safeJSONParse", e);
|
172
|
+
return void 0;
|
173
|
+
}
|
174
|
+
}
|
175
|
+
function safeJSONStringify(obj) {
|
176
|
+
try {
|
177
|
+
return JSON.stringify(obj);
|
178
|
+
} catch (e) {
|
179
|
+
console.error("safeJSONStringify", e);
|
180
|
+
return void 0;
|
181
|
+
}
|
182
|
+
}
|
183
|
+
function storageStore(namespace, options) {
|
184
|
+
if (typeof window === "undefined")
|
185
|
+
return;
|
186
|
+
const _namespace = namespace || "SATOSHI_WALLET_DEFAULT";
|
187
|
+
const storage5 = (options == null ? void 0 : options.storage) || (window == null ? void 0 : window.localStorage);
|
188
|
+
const namespaceKey = (key) => {
|
189
|
+
return _namespace + ":" + key;
|
190
|
+
};
|
191
|
+
return {
|
192
|
+
set(key, value) {
|
193
|
+
const _value = safeJSONStringify(value);
|
194
|
+
_value ? storage5.setItem(namespaceKey(key), _value) : storage5.removeItem(namespaceKey(key));
|
195
|
+
},
|
196
|
+
get(key) {
|
197
|
+
const _value = storage5.getItem(namespaceKey(key));
|
198
|
+
return _value ? safeJSONParse(_value) : void 0;
|
199
|
+
},
|
200
|
+
remove(key) {
|
201
|
+
storage5.removeItem(namespaceKey(key));
|
202
|
+
},
|
203
|
+
clearAll: function clearAll() {
|
204
|
+
for (const key in storage5) {
|
205
|
+
if (key.startsWith(namespace + ":")) {
|
206
|
+
storage5.removeItem(key);
|
207
|
+
}
|
208
|
+
}
|
209
|
+
}
|
210
|
+
};
|
211
|
+
}
|
167
212
|
|
168
213
|
// src/utils/Dialog.ts
|
169
214
|
var Dialog = class {
|
@@ -706,6 +751,7 @@ import EventEmitter from "events";
|
|
706
751
|
var xverse_default = "data:image/png;base64,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";
|
707
752
|
|
708
753
|
// src/connector/xverse.ts
|
754
|
+
var storage = storageStore("SATOSHI_WALLET_XVERSE");
|
709
755
|
var _network, _event;
|
710
756
|
var XverseConnector = class extends BaseConnector {
|
711
757
|
constructor() {
|
@@ -731,7 +777,7 @@ var XverseConnector = class extends BaseConnector {
|
|
731
777
|
walletType
|
732
778
|
}));
|
733
779
|
console.log("\u{1F680} ~ XverseConnector ~ loadAccounts ~ res:", addresses);
|
734
|
-
|
780
|
+
storage == null ? void 0 : storage.set(`${network}:addresses`, addresses);
|
735
781
|
return addresses;
|
736
782
|
});
|
737
783
|
__privateGet(this, _event).setMaxListeners(100);
|
@@ -766,9 +812,9 @@ var XverseConnector = class extends BaseConnector {
|
|
766
812
|
}
|
767
813
|
getAddresses() {
|
768
814
|
return __async(this, null, function* () {
|
769
|
-
const data =
|
815
|
+
const data = storage == null ? void 0 : storage.get(`${__privateGet(this, _network)}:addresses`);
|
770
816
|
if (data) {
|
771
|
-
return
|
817
|
+
return data;
|
772
818
|
}
|
773
819
|
return [];
|
774
820
|
});
|
@@ -853,8 +899,7 @@ var XverseConnector = class extends BaseConnector {
|
|
853
899
|
});
|
854
900
|
}
|
855
901
|
disconnect() {
|
856
|
-
|
857
|
-
localStorage.removeItem("btc-connect-xverse-addresses-Testnet");
|
902
|
+
storage == null ? void 0 : storage.remove(`${__privateGet(this, _network)}:addresses`);
|
858
903
|
}
|
859
904
|
};
|
860
905
|
_network = new WeakMap();
|
@@ -867,6 +912,7 @@ import EventEmitter2 from "events";
|
|
867
912
|
var magicEden_default = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADYAAAAgCAYAAABZyotbAAADGklEQVR42sVYTW7aQBT+ZsZk0yy8jWoqIxWK1E16A3KDcoLACRqkGKFugE0VAVLgBElOQHqC0BPUm0q0EMVVoWxZNCsYv25MlR/AY2O73xKZefO9ed+b7w0DgFm+ZrquPCdCAYAOwAbQM0btS0SIaa5aJ6AEIhPR49Ge2SxfM6Urb0B4Fowx1nj5o9WMhpTVJ8J7xA3OKsb3VpdNs9YFAaVN30VBbpqr1omogWQwXyxeZDhhexaJqDHNVetho8zyNTNBUgCga9qfQ+5pCnGQuzMbunTlDf4DuOqHYcjtpe7P12k3XjAnPe4MeJC/BCH3+431YZt249KXEPwIANgka1HgnPg0lFm+Zkopv6qU+aasAzQImPSfy+V+N+M05gCghQnrnRw2kfN0pYdPPOlCiObB8MyJXWOqZTnNVesR6EqXUt7cmQ09cWLryE2yVsm/tTOHXLensLyZSt33Q7eQMBpbpznO+dUmB/ME74xR255kTy8BdqywetcYtSqJntjDk5NS3vmRIqKmMWrbALBYLE88f+e3+kmYO1SF2ADRYJAed/6VacbpzoUQRTDmqCTu1+vTQqTEiKhJRDsaYeYIIcpPfz0YnjmC8yMAc4Vyr0deiulxp7ELOSK3vKl1HwzPHCIqKixTCNIllTUWlhwRNdPjztZy1jTNQcQI1DxCkHukq40uRckoM2flKmLpit5Gy2F19RSulEoXuuuiEtuJreCN3+Wwunr2VKBQzq9uW9eJ3GPbyKnoSnUAJRc9v3KO/II2Ru1LIUQGoCsANmO4BlD220iAAdRO37ZPwuxN27X7eOUWaO7aS92fk6+umCMEL4bdVySWKgjUBlDmCMGPdhlbtCRJeQOogl5Il1LWJ1kryPJfhBCDVTISJSal7CsOoDqCPyuUpJTOJGsVjVHbTqwUJ1mrBOAw5jAmgH7SGjtOKI45efvx0JfYcrlvRxKOJfsMx33mrUEQf7bdPeBzMpSYY3z7ZHMAlfXzkJrXU26/QnRVhspdsfKU7EEbvgBQ8Ehe7/r8taXdFzy96WBMj+ycQLbrUm9l5f4C3RupufZdcK8AAAAASUVORK5CYII=";
|
868
913
|
|
869
914
|
// src/connector/magicEden.ts
|
915
|
+
var storage2 = storageStore("SATOSHI_WALLET_MAGICEDEN");
|
870
916
|
var _network2, _event2;
|
871
917
|
var MagicEdenConnector = class extends BaseConnector {
|
872
918
|
constructor() {
|
@@ -900,7 +946,7 @@ var MagicEdenConnector = class extends BaseConnector {
|
|
900
946
|
};
|
901
947
|
getAddress(getAddressOptions).catch((error) => reject(error));
|
902
948
|
});
|
903
|
-
|
949
|
+
storage2 == null ? void 0 : storage2.set(`${network}:addresses`, addresses);
|
904
950
|
return addresses;
|
905
951
|
});
|
906
952
|
__privateGet(this, _event2).setMaxListeners(100);
|
@@ -927,10 +973,9 @@ var MagicEdenConnector = class extends BaseConnector {
|
|
927
973
|
if (!this.isReady()) {
|
928
974
|
throw new Error(`${this.metadata.name} is not install!`);
|
929
975
|
}
|
930
|
-
const data =
|
976
|
+
const data = storage2 == null ? void 0 : storage2.get(`${__privateGet(this, _network2)}:addresses`);
|
931
977
|
if (data) {
|
932
|
-
|
933
|
-
return addresses.map((item) => item.address);
|
978
|
+
return data.map((item) => item.address);
|
934
979
|
} else {
|
935
980
|
return [];
|
936
981
|
}
|
@@ -941,10 +986,9 @@ var MagicEdenConnector = class extends BaseConnector {
|
|
941
986
|
if (!this.isReady()) {
|
942
987
|
throw new Error(`${this.metadata.name} is not install!`);
|
943
988
|
}
|
944
|
-
const data =
|
989
|
+
const data = storage2 == null ? void 0 : storage2.get(`${__privateGet(this, _network2)}:addresses`);
|
945
990
|
if (data) {
|
946
|
-
|
947
|
-
return addresses[0].publicKey;
|
991
|
+
return data[0].publicKey;
|
948
992
|
} else {
|
949
993
|
return "";
|
950
994
|
}
|
@@ -1057,8 +1101,7 @@ var MagicEdenConnector = class extends BaseConnector {
|
|
1057
1101
|
});
|
1058
1102
|
}
|
1059
1103
|
disconnect() {
|
1060
|
-
|
1061
|
-
localStorage.removeItem("btc-connect-magicEden-addresses-Testnet");
|
1104
|
+
storage2 == null ? void 0 : storage2.remove(`${__privateGet(this, _network2)}:addresses`);
|
1062
1105
|
}
|
1063
1106
|
};
|
1064
1107
|
_network2 = new WeakMap();
|
@@ -1152,13 +1195,14 @@ var useConnector = () => {
|
|
1152
1195
|
const { connectors, setConnectorId } = useConnectProvider();
|
1153
1196
|
const connect = useCallback2(
|
1154
1197
|
(connectorId) => __async(void 0, null, function* () {
|
1198
|
+
var _a;
|
1155
1199
|
const connector = connectors.find((item) => item.metadata.id === connectorId);
|
1156
1200
|
if (!connector) {
|
1157
1201
|
throw new Error(`connector id ${connectorId} not found`);
|
1158
1202
|
}
|
1159
1203
|
const accounts = yield connector.requestAccounts();
|
1160
1204
|
if (accounts.length > 0) {
|
1161
|
-
|
1205
|
+
(_a = storageStore()) == null ? void 0 : _a.set("current-connector-id", connector.metadata.id);
|
1162
1206
|
setConnectorId(connector.metadata.id);
|
1163
1207
|
}
|
1164
1208
|
}),
|
@@ -2321,10 +2365,11 @@ var ConnectProvider = ({
|
|
2321
2365
|
version: ((_c = options.aaOptions.accountContracts[((_b = Object.keys(options.aaOptions.accountContracts)) == null ? void 0 : _b[0]) || "BTC"]) == null ? void 0 : _c[0].version) || "1.0.0"
|
2322
2366
|
});
|
2323
2367
|
const getConnectorId = useCallback7(() => {
|
2368
|
+
var _a2;
|
2324
2369
|
if (typeof window === "undefined") {
|
2325
2370
|
return "";
|
2326
2371
|
}
|
2327
|
-
const id =
|
2372
|
+
const id = (_a2 = storageStore()) == null ? void 0 : _a2.get("current-connector-id");
|
2328
2373
|
return id != null ? id : "";
|
2329
2374
|
}, []);
|
2330
2375
|
const getConnector = useCallback7(() => {
|
@@ -2466,7 +2511,8 @@ var ConnectProvider = ({
|
|
2466
2511
|
}
|
2467
2512
|
}, [connectorId, connectors]);
|
2468
2513
|
const disconnect = useCallback7(() => {
|
2469
|
-
|
2514
|
+
var _a2;
|
2515
|
+
(_a2 = storageStore()) == null ? void 0 : _a2.remove("current-connector-id");
|
2470
2516
|
txConfirmUtils_default.reset();
|
2471
2517
|
if (connector) {
|
2472
2518
|
connector.disconnect();
|
@@ -2655,7 +2701,8 @@ function BtcWalletSelectorContextProvider({
|
|
2655
2701
|
new UnisatConnector(),
|
2656
2702
|
new XverseConnector(),
|
2657
2703
|
new OKXConnector(),
|
2658
|
-
new BitgetConnector()
|
2704
|
+
new BitgetConnector(),
|
2705
|
+
new MagicEdenConnector()
|
2659
2706
|
];
|
2660
2707
|
const walletSelectorContextValue = useMemo6(() => {
|
2661
2708
|
const simpleFn = {};
|
@@ -2894,7 +2941,7 @@ var nearRpcUrls = {
|
|
2894
2941
|
mainnet: [
|
2895
2942
|
"https://near.lava.build",
|
2896
2943
|
"https://rpc.mainnet.near.org",
|
2897
|
-
"https://
|
2944
|
+
"https://mw.rpc.fastnear.com",
|
2898
2945
|
"https://near.drpc.org"
|
2899
2946
|
],
|
2900
2947
|
testnet: ["https://rpc.testnet.near.org"]
|
@@ -3090,36 +3137,37 @@ var STORAGE_KEYS = {
|
|
3090
3137
|
PUBLIC_KEY: "btc-wallet-publickey",
|
3091
3138
|
BTC_PUBLIC_KEY: "btc-wallet-btc-publickey"
|
3092
3139
|
};
|
3140
|
+
var storage3 = storageStore("SATOSHI_WALLET_ACCOUNT");
|
3093
3141
|
var state_default = {
|
3094
3142
|
saveAccount(account) {
|
3095
3143
|
if (!account) {
|
3096
3144
|
this.removeAccount();
|
3097
3145
|
return;
|
3098
3146
|
}
|
3099
|
-
|
3147
|
+
storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.ACCOUNT, account);
|
3100
3148
|
},
|
3101
3149
|
removeAccount() {
|
3102
|
-
|
3150
|
+
storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.ACCOUNT);
|
3103
3151
|
},
|
3104
3152
|
savePublicKey(publicKey) {
|
3105
3153
|
if (!publicKey) {
|
3106
3154
|
this.removePublicKey();
|
3107
3155
|
return;
|
3108
3156
|
}
|
3109
|
-
|
3157
|
+
storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.PUBLIC_KEY, publicKey);
|
3110
3158
|
},
|
3111
3159
|
removePublicKey() {
|
3112
|
-
|
3160
|
+
storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.PUBLIC_KEY);
|
3113
3161
|
},
|
3114
3162
|
saveBtcPublicKey(publicKey) {
|
3115
3163
|
if (!publicKey) {
|
3116
3164
|
this.removeBtcPublicKey();
|
3117
3165
|
return;
|
3118
3166
|
}
|
3119
|
-
|
3167
|
+
storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.BTC_PUBLIC_KEY, publicKey);
|
3120
3168
|
},
|
3121
3169
|
removeBtcPublicKey() {
|
3122
|
-
|
3170
|
+
storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.BTC_PUBLIC_KEY);
|
3123
3171
|
},
|
3124
3172
|
clear() {
|
3125
3173
|
this.removeAccount();
|
@@ -3135,13 +3183,13 @@ var state_default = {
|
|
3135
3183
|
this.savePublicKey(publicKey);
|
3136
3184
|
},
|
3137
3185
|
getAccount() {
|
3138
|
-
return
|
3186
|
+
return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.ACCOUNT)) || "";
|
3139
3187
|
},
|
3140
3188
|
getPublicKey() {
|
3141
|
-
return
|
3189
|
+
return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.PUBLIC_KEY)) || "";
|
3142
3190
|
},
|
3143
3191
|
getBtcPublicKey() {
|
3144
|
-
return
|
3192
|
+
return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.BTC_PUBLIC_KEY)) || "";
|
3145
3193
|
},
|
3146
3194
|
isValid() {
|
3147
3195
|
const account = this.getAccount();
|
@@ -3837,11 +3885,13 @@ function getCsnaAccountId(env) {
|
|
3837
3885
|
});
|
3838
3886
|
}
|
3839
3887
|
function checkDepositDisabledAddress() {
|
3840
|
-
|
3888
|
+
var _a;
|
3889
|
+
const data = (_a = storageStore("SATOSHI_WALLET_XVERSE")) == null ? void 0 : _a.get(
|
3890
|
+
`Mainnet:addresses`
|
3891
|
+
);
|
3841
3892
|
if (!data)
|
3842
3893
|
return;
|
3843
|
-
const
|
3844
|
-
const address = addresses == null ? void 0 : addresses[0];
|
3894
|
+
const address = data == null ? void 0 : data[0];
|
3845
3895
|
if (address.walletType === "ledger" && !["p2wpkh", "p2sh"].includes(address.addressType)) {
|
3846
3896
|
throw new Error("Ledger is only supported for p2wpkh and p2sh address");
|
3847
3897
|
}
|
@@ -3878,7 +3928,7 @@ function executeBTCDepositAndAction(_0) {
|
|
3878
3928
|
throw new Error("Deposit amount or action is required");
|
3879
3929
|
}
|
3880
3930
|
const csna = yield getCsnaAccountId(env);
|
3881
|
-
const depositAmount =
|
3931
|
+
const depositAmount = new Big2(amount || (action == null ? void 0 : action.amount) || 0).round(0, Big2.roundDown).toNumber();
|
3882
3932
|
console.log("depositAmount", depositAmount);
|
3883
3933
|
if (depositAmount <= 0) {
|
3884
3934
|
throw new Error("Invalid deposit amount");
|
@@ -3982,13 +4032,14 @@ function checkSatoshiWhitelist(btcAccountId, env = "mainnet") {
|
|
3982
4032
|
return __async(this, null, function* () {
|
3983
4033
|
if (env !== "mainnet")
|
3984
4034
|
return;
|
3985
|
-
const
|
4035
|
+
const storage5 = storageStore();
|
4036
|
+
const hasShownNotice = storage5 == null ? void 0 : storage5.get("private-mainnet-notice");
|
3986
4037
|
if (!hasShownNotice) {
|
3987
4038
|
Dialog.alert({
|
3988
4039
|
title: "Notice",
|
3989
4040
|
message: "You are currently using Satoshi Private Mainnet. This is a private version for testing. Please try a small amount of assets in Ramp"
|
3990
4041
|
});
|
3991
|
-
|
4042
|
+
storage5 == null ? void 0 : storage5.set("private-mainnet-notice", "true");
|
3992
4043
|
}
|
3993
4044
|
if (!btcAccountId)
|
3994
4045
|
return;
|
@@ -4318,7 +4369,13 @@ function uint8ArrayToHex(uint8Array) {
|
|
4318
4369
|
}
|
4319
4370
|
|
4320
4371
|
// src/utils/initWalletButton.ts
|
4321
|
-
|
4372
|
+
var storage4 = storageStore("SATOSHI_WALLET_BUTTON");
|
4373
|
+
function setupWalletButton({
|
4374
|
+
env,
|
4375
|
+
nearWallet,
|
4376
|
+
btcWallet,
|
4377
|
+
walletUrl
|
4378
|
+
}) {
|
4322
4379
|
console.log(`setupWalletButton ${walletUrl || ""}`);
|
4323
4380
|
if (document.getElementById("satoshi-wallet-button")) {
|
4324
4381
|
return;
|
@@ -4341,23 +4398,25 @@ function setupWalletButton(env, wallet, originalWallet, walletUrl) {
|
|
4341
4398
|
closeImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn-active.png",
|
4342
4399
|
iframe
|
4343
4400
|
});
|
4344
|
-
setupButtonClickHandler(button, iframe,
|
4401
|
+
setupButtonClickHandler(button, iframe, nearWallet, btcWallet);
|
4345
4402
|
}
|
4346
4403
|
function createFloatingButtonWithIframe({
|
4347
4404
|
openImageUrl,
|
4348
4405
|
closeImageUrl,
|
4349
4406
|
iframe
|
4350
4407
|
}) {
|
4408
|
+
var _a;
|
4351
4409
|
const button = document.createElement("img");
|
4352
4410
|
button.id = "satoshi-wallet-button";
|
4353
|
-
const isIframeVisible =
|
4411
|
+
const isIframeVisible = (_a = storage4 == null ? void 0 : storage4.get("visible")) != null ? _a : true;
|
4354
4412
|
button.src = isIframeVisible ? closeImageUrl : openImageUrl;
|
4355
4413
|
iframe.style.display = isIframeVisible ? "block" : "none";
|
4356
4414
|
const windowWidth = window.innerWidth;
|
4357
4415
|
const windowHeight = window.innerHeight;
|
4358
|
-
const savedPosition =
|
4359
|
-
|
4360
|
-
|
4416
|
+
const savedPosition = (storage4 == null ? void 0 : storage4.get("position")) || {
|
4417
|
+
right: "20px",
|
4418
|
+
bottom: "20px"
|
4419
|
+
};
|
4361
4420
|
const right = Math.min(Math.max(20, parseInt(savedPosition.right)), windowWidth - 80);
|
4362
4421
|
const bottom = Math.min(Math.max(20, parseInt(savedPosition.bottom)), windowHeight - 80);
|
4363
4422
|
Object.assign(button.style, {
|
@@ -4453,13 +4512,10 @@ function createFloatingButtonWithIframe({
|
|
4453
4512
|
isDragging = false;
|
4454
4513
|
button.style.cursor = "grab";
|
4455
4514
|
button.style.transition = "transform 0.15s ease";
|
4456
|
-
|
4457
|
-
|
4458
|
-
|
4459
|
-
|
4460
|
-
bottom: button.style.bottom
|
4461
|
-
})
|
4462
|
-
);
|
4515
|
+
storage4 == null ? void 0 : storage4.set("position", {
|
4516
|
+
right: button.style.right,
|
4517
|
+
bottom: button.style.bottom
|
4518
|
+
});
|
4463
4519
|
if (!isDragEvent) {
|
4464
4520
|
handleButtonClick();
|
4465
4521
|
}
|
@@ -4473,7 +4529,7 @@ function createFloatingButtonWithIframe({
|
|
4473
4529
|
const newVisibleState = !isCurrentlyVisible;
|
4474
4530
|
iframe.style.display = newVisibleState ? "block" : "none";
|
4475
4531
|
button.src = newVisibleState ? closeImageUrl : openImageUrl;
|
4476
|
-
|
4532
|
+
storage4 == null ? void 0 : storage4.set("visible", newVisibleState);
|
4477
4533
|
setTimeout(() => {
|
4478
4534
|
if (newVisibleState) {
|
4479
4535
|
iframe.focus();
|
@@ -4487,11 +4543,12 @@ function createIframe({
|
|
4487
4543
|
iframeUrl,
|
4488
4544
|
iframeStyle = {}
|
4489
4545
|
}) {
|
4546
|
+
var _a;
|
4490
4547
|
const iframe = document.createElement("iframe");
|
4491
4548
|
iframe.id = "satoshi-wallet-iframe";
|
4492
4549
|
iframe.allow = "clipboard-read; clipboard-write";
|
4493
4550
|
iframe.src = iframeUrl;
|
4494
|
-
const isVisible =
|
4551
|
+
const isVisible = (_a = storage4 == null ? void 0 : storage4.get("visible")) != null ? _a : true;
|
4495
4552
|
Object.assign(iframe.style, __spreadValues({
|
4496
4553
|
position: "fixed",
|
4497
4554
|
bottom: "90px",
|
@@ -4506,12 +4563,12 @@ function createIframe({
|
|
4506
4563
|
return iframe;
|
4507
4564
|
}
|
4508
4565
|
var currentMessageHandler = null;
|
4509
|
-
function setupButtonClickHandler(button, iframe,
|
4566
|
+
function setupButtonClickHandler(button, iframe, nearWallet, btcWallet) {
|
4510
4567
|
return __async(this, null, function* () {
|
4511
4568
|
var _a;
|
4512
|
-
const accountId = (_a = yield
|
4513
|
-
const originalAccountId =
|
4514
|
-
const originalPublicKey = yield
|
4569
|
+
const accountId = (_a = yield nearWallet == null ? void 0 : nearWallet.getAccounts()) == null ? void 0 : _a[0].accountId;
|
4570
|
+
const originalAccountId = btcWallet == null ? void 0 : btcWallet.account;
|
4571
|
+
const originalPublicKey = yield btcWallet == null ? void 0 : btcWallet.getPublicKey();
|
4515
4572
|
console.log({ accountId, originalAccountId, originalPublicKey });
|
4516
4573
|
const iframeSrc = new URL(iframe.src);
|
4517
4574
|
iframeSrc.searchParams.set("origin", window.location.origin);
|
@@ -4520,8 +4577,8 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
|
4520
4577
|
originalPublicKey && iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
|
4521
4578
|
iframe.src = iframeSrc.toString();
|
4522
4579
|
const actions = {
|
4523
|
-
signAndSendTransaction:
|
4524
|
-
signAndSendTransactions:
|
4580
|
+
signAndSendTransaction: nearWallet.signAndSendTransaction,
|
4581
|
+
signAndSendTransactions: nearWallet.signAndSendTransactions,
|
4525
4582
|
executeBTCDepositAndAction,
|
4526
4583
|
getWithdrawTransaction
|
4527
4584
|
};
|
@@ -4566,6 +4623,7 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
|
4566
4623
|
});
|
4567
4624
|
}
|
4568
4625
|
function removeWalletButton() {
|
4626
|
+
console.log("removeWalletButton");
|
4569
4627
|
const button = document.getElementById("satoshi-wallet-button");
|
4570
4628
|
button == null ? void 0 : button.remove();
|
4571
4629
|
const iframe = document.getElementById("satoshi-wallet-iframe");
|
@@ -4672,7 +4730,12 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4672
4730
|
if (btcPublicKey) {
|
4673
4731
|
yield getNearAccountByBtcPublicKey(btcPublicKey);
|
4674
4732
|
removeWalletButton();
|
4675
|
-
setupWalletButton(
|
4733
|
+
setupWalletButton({
|
4734
|
+
env,
|
4735
|
+
nearWallet: wallet,
|
4736
|
+
btcWallet: btcContext,
|
4737
|
+
walletUrl: metadata.walletUrl
|
4738
|
+
});
|
4676
4739
|
}
|
4677
4740
|
} else {
|
4678
4741
|
removeWalletButton();
|
@@ -4915,11 +4978,30 @@ function setupBTCWallet({
|
|
4915
4978
|
import {
|
4916
4979
|
setupModal as _setupModal
|
4917
4980
|
} from "ref-modal-ui";
|
4981
|
+
var subscription;
|
4918
4982
|
function setupWalletSelectorModal(selector, options) {
|
4919
4983
|
if (!selector)
|
4920
4984
|
throw new Error("selector is required");
|
4985
|
+
const {
|
4986
|
+
showChainGroups = true,
|
4987
|
+
showWalletUIForNearAccount = true,
|
4988
|
+
env = "mainnet",
|
4989
|
+
walletUrl
|
4990
|
+
} = options;
|
4991
|
+
subscription == null ? void 0 : subscription.unsubscribe();
|
4921
4992
|
const state = selector.store.getState();
|
4922
4993
|
const group = getGroup(state);
|
4994
|
+
subscription = selector.store.observable.subscribe((state2) => {
|
4995
|
+
const walletId = state2.selectedWalletId;
|
4996
|
+
console.log("setupWalletSelectorModal walletId", walletId);
|
4997
|
+
if (!walletId)
|
4998
|
+
removeWalletButton();
|
4999
|
+
if (showWalletUIForNearAccount && walletId !== "btc-wallet") {
|
5000
|
+
selector.wallet().then((wallet) => {
|
5001
|
+
setupWalletButton({ env, nearWallet: wallet, walletUrl });
|
5002
|
+
});
|
5003
|
+
}
|
5004
|
+
});
|
4923
5005
|
if (group.includes("btc")) {
|
4924
5006
|
document.head.appendChild(document.createElement("style")).textContent = `
|
4925
5007
|
#near-wallet-selector-modal .options-list .btc-wallet {
|
@@ -4930,7 +5012,7 @@ function setupWalletSelectorModal(selector, options) {
|
|
4930
5012
|
const modal = _setupModal(selector, options);
|
4931
5013
|
const originalShow = modal.show.bind(modal);
|
4932
5014
|
modal.show = () => __async(this, null, function* () {
|
4933
|
-
const chain = group.length > 1 ? yield openChainModal() : group[0];
|
5015
|
+
const chain = group.length > 1 && showChainGroups ? yield openChainModal() : group[0];
|
4934
5016
|
if (chain === "btc") {
|
4935
5017
|
const module = state.modules.find((module2) => module2.id === "btc-wallet");
|
4936
5018
|
if (module) {
|
@@ -4987,7 +5069,7 @@ function getGroup(state) {
|
|
4987
5069
|
|
4988
5070
|
// src/index.ts
|
4989
5071
|
var getVersion = () => {
|
4990
|
-
return "0.5.
|
5072
|
+
return "0.5.55-beta";
|
4991
5073
|
};
|
4992
5074
|
if (typeof window !== "undefined") {
|
4993
5075
|
window.__BTC_WALLET_VERSION = getVersion();
|