btc-wallet 0.5.52-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 +153 -65
- 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 +151 -63
- 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
|
}),
|
@@ -2320,12 +2364,16 @@ var ConnectProvider = ({
|
|
2320
2364
|
name: ((_a = Object.keys(options.aaOptions.accountContracts)) == null ? void 0 : _a[0]) || "BTC",
|
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
|
-
const
|
2324
|
-
|
2325
|
-
|
2367
|
+
const getConnectorId = useCallback7(() => {
|
2368
|
+
var _a2;
|
2369
|
+
if (typeof window === "undefined") {
|
2370
|
+
return "";
|
2371
|
+
}
|
2372
|
+
const id = (_a2 = storageStore()) == null ? void 0 : _a2.get("current-connector-id");
|
2373
|
+
return id != null ? id : "";
|
2326
2374
|
}, []);
|
2327
2375
|
const getConnector = useCallback7(() => {
|
2328
|
-
const connectorId2 =
|
2376
|
+
const connectorId2 = getConnectorId();
|
2329
2377
|
return connectors.find((item) => item.metadata.id === connectorId2);
|
2330
2378
|
}, [connectorId, connectors]);
|
2331
2379
|
const setAccountContract = useCallback7(
|
@@ -2339,8 +2387,11 @@ var ConnectProvider = ({
|
|
2339
2387
|
[options.aaOptions.accountContracts, _setAccountContract]
|
2340
2388
|
);
|
2341
2389
|
useEffect5(() => {
|
2342
|
-
|
2343
|
-
|
2390
|
+
const connectorId2 = getConnectorId();
|
2391
|
+
if (connectorId2) {
|
2392
|
+
setConnectorId(connectorId2);
|
2393
|
+
}
|
2394
|
+
}, [autoConnect, getConnectorId]);
|
2344
2395
|
const evmSupportChainIds = useMemo5(() => {
|
2345
2396
|
var _a2;
|
2346
2397
|
let chainIds = (_a2 = options.aaOptions.accountContracts[accountContract.name]) == null ? void 0 : _a2.filter((item) => item.version === accountContract.version).map((item) => item.chainIds).reduce((a, b) => {
|
@@ -2460,7 +2511,8 @@ var ConnectProvider = ({
|
|
2460
2511
|
}
|
2461
2512
|
}, [connectorId, connectors]);
|
2462
2513
|
const disconnect = useCallback7(() => {
|
2463
|
-
|
2514
|
+
var _a2;
|
2515
|
+
(_a2 = storageStore()) == null ? void 0 : _a2.remove("current-connector-id");
|
2464
2516
|
txConfirmUtils_default.reset();
|
2465
2517
|
if (connector) {
|
2466
2518
|
connector.disconnect();
|
@@ -2649,7 +2701,8 @@ function BtcWalletSelectorContextProvider({
|
|
2649
2701
|
new UnisatConnector(),
|
2650
2702
|
new XverseConnector(),
|
2651
2703
|
new OKXConnector(),
|
2652
|
-
new BitgetConnector()
|
2704
|
+
new BitgetConnector(),
|
2705
|
+
new MagicEdenConnector()
|
2653
2706
|
];
|
2654
2707
|
const walletSelectorContextValue = useMemo6(() => {
|
2655
2708
|
const simpleFn = {};
|
@@ -2888,7 +2941,7 @@ var nearRpcUrls = {
|
|
2888
2941
|
mainnet: [
|
2889
2942
|
"https://near.lava.build",
|
2890
2943
|
"https://rpc.mainnet.near.org",
|
2891
|
-
"https://
|
2944
|
+
"https://mw.rpc.fastnear.com",
|
2892
2945
|
"https://near.drpc.org"
|
2893
2946
|
],
|
2894
2947
|
testnet: ["https://rpc.testnet.near.org"]
|
@@ -3084,36 +3137,37 @@ var STORAGE_KEYS = {
|
|
3084
3137
|
PUBLIC_KEY: "btc-wallet-publickey",
|
3085
3138
|
BTC_PUBLIC_KEY: "btc-wallet-btc-publickey"
|
3086
3139
|
};
|
3140
|
+
var storage3 = storageStore("SATOSHI_WALLET_ACCOUNT");
|
3087
3141
|
var state_default = {
|
3088
3142
|
saveAccount(account) {
|
3089
3143
|
if (!account) {
|
3090
3144
|
this.removeAccount();
|
3091
3145
|
return;
|
3092
3146
|
}
|
3093
|
-
|
3147
|
+
storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.ACCOUNT, account);
|
3094
3148
|
},
|
3095
3149
|
removeAccount() {
|
3096
|
-
|
3150
|
+
storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.ACCOUNT);
|
3097
3151
|
},
|
3098
3152
|
savePublicKey(publicKey) {
|
3099
3153
|
if (!publicKey) {
|
3100
3154
|
this.removePublicKey();
|
3101
3155
|
return;
|
3102
3156
|
}
|
3103
|
-
|
3157
|
+
storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.PUBLIC_KEY, publicKey);
|
3104
3158
|
},
|
3105
3159
|
removePublicKey() {
|
3106
|
-
|
3160
|
+
storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.PUBLIC_KEY);
|
3107
3161
|
},
|
3108
3162
|
saveBtcPublicKey(publicKey) {
|
3109
3163
|
if (!publicKey) {
|
3110
3164
|
this.removeBtcPublicKey();
|
3111
3165
|
return;
|
3112
3166
|
}
|
3113
|
-
|
3167
|
+
storage3 == null ? void 0 : storage3.set(STORAGE_KEYS.BTC_PUBLIC_KEY, publicKey);
|
3114
3168
|
},
|
3115
3169
|
removeBtcPublicKey() {
|
3116
|
-
|
3170
|
+
storage3 == null ? void 0 : storage3.remove(STORAGE_KEYS.BTC_PUBLIC_KEY);
|
3117
3171
|
},
|
3118
3172
|
clear() {
|
3119
3173
|
this.removeAccount();
|
@@ -3129,13 +3183,13 @@ var state_default = {
|
|
3129
3183
|
this.savePublicKey(publicKey);
|
3130
3184
|
},
|
3131
3185
|
getAccount() {
|
3132
|
-
return
|
3186
|
+
return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.ACCOUNT)) || "";
|
3133
3187
|
},
|
3134
3188
|
getPublicKey() {
|
3135
|
-
return
|
3189
|
+
return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.PUBLIC_KEY)) || "";
|
3136
3190
|
},
|
3137
3191
|
getBtcPublicKey() {
|
3138
|
-
return
|
3192
|
+
return (storage3 == null ? void 0 : storage3.get(STORAGE_KEYS.BTC_PUBLIC_KEY)) || "";
|
3139
3193
|
},
|
3140
3194
|
isValid() {
|
3141
3195
|
const account = this.getAccount();
|
@@ -3831,11 +3885,13 @@ function getCsnaAccountId(env) {
|
|
3831
3885
|
});
|
3832
3886
|
}
|
3833
3887
|
function checkDepositDisabledAddress() {
|
3834
|
-
|
3888
|
+
var _a;
|
3889
|
+
const data = (_a = storageStore("SATOSHI_WALLET_XVERSE")) == null ? void 0 : _a.get(
|
3890
|
+
`Mainnet:addresses`
|
3891
|
+
);
|
3835
3892
|
if (!data)
|
3836
3893
|
return;
|
3837
|
-
const
|
3838
|
-
const address = addresses == null ? void 0 : addresses[0];
|
3894
|
+
const address = data == null ? void 0 : data[0];
|
3839
3895
|
if (address.walletType === "ledger" && !["p2wpkh", "p2sh"].includes(address.addressType)) {
|
3840
3896
|
throw new Error("Ledger is only supported for p2wpkh and p2sh address");
|
3841
3897
|
}
|
@@ -3872,7 +3928,7 @@ function executeBTCDepositAndAction(_0) {
|
|
3872
3928
|
throw new Error("Deposit amount or action is required");
|
3873
3929
|
}
|
3874
3930
|
const csna = yield getCsnaAccountId(env);
|
3875
|
-
const depositAmount =
|
3931
|
+
const depositAmount = new Big2(amount || (action == null ? void 0 : action.amount) || 0).round(0, Big2.roundDown).toNumber();
|
3876
3932
|
console.log("depositAmount", depositAmount);
|
3877
3933
|
if (depositAmount <= 0) {
|
3878
3934
|
throw new Error("Invalid deposit amount");
|
@@ -3976,13 +4032,14 @@ function checkSatoshiWhitelist(btcAccountId, env = "mainnet") {
|
|
3976
4032
|
return __async(this, null, function* () {
|
3977
4033
|
if (env !== "mainnet")
|
3978
4034
|
return;
|
3979
|
-
const
|
4035
|
+
const storage5 = storageStore();
|
4036
|
+
const hasShownNotice = storage5 == null ? void 0 : storage5.get("private-mainnet-notice");
|
3980
4037
|
if (!hasShownNotice) {
|
3981
4038
|
Dialog.alert({
|
3982
4039
|
title: "Notice",
|
3983
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"
|
3984
4041
|
});
|
3985
|
-
|
4042
|
+
storage5 == null ? void 0 : storage5.set("private-mainnet-notice", "true");
|
3986
4043
|
}
|
3987
4044
|
if (!btcAccountId)
|
3988
4045
|
return;
|
@@ -4312,7 +4369,13 @@ function uint8ArrayToHex(uint8Array) {
|
|
4312
4369
|
}
|
4313
4370
|
|
4314
4371
|
// src/utils/initWalletButton.ts
|
4315
|
-
|
4372
|
+
var storage4 = storageStore("SATOSHI_WALLET_BUTTON");
|
4373
|
+
function setupWalletButton({
|
4374
|
+
env,
|
4375
|
+
nearWallet,
|
4376
|
+
btcWallet,
|
4377
|
+
walletUrl
|
4378
|
+
}) {
|
4316
4379
|
console.log(`setupWalletButton ${walletUrl || ""}`);
|
4317
4380
|
if (document.getElementById("satoshi-wallet-button")) {
|
4318
4381
|
return;
|
@@ -4335,23 +4398,25 @@ function setupWalletButton(env, wallet, originalWallet, walletUrl) {
|
|
4335
4398
|
closeImageUrl: "https://assets.deltatrade.ai/wallet-assets/wallet-btn-active.png",
|
4336
4399
|
iframe
|
4337
4400
|
});
|
4338
|
-
setupButtonClickHandler(button, iframe,
|
4401
|
+
setupButtonClickHandler(button, iframe, nearWallet, btcWallet);
|
4339
4402
|
}
|
4340
4403
|
function createFloatingButtonWithIframe({
|
4341
4404
|
openImageUrl,
|
4342
4405
|
closeImageUrl,
|
4343
4406
|
iframe
|
4344
4407
|
}) {
|
4408
|
+
var _a;
|
4345
4409
|
const button = document.createElement("img");
|
4346
4410
|
button.id = "satoshi-wallet-button";
|
4347
|
-
const isIframeVisible =
|
4411
|
+
const isIframeVisible = (_a = storage4 == null ? void 0 : storage4.get("visible")) != null ? _a : true;
|
4348
4412
|
button.src = isIframeVisible ? closeImageUrl : openImageUrl;
|
4349
4413
|
iframe.style.display = isIframeVisible ? "block" : "none";
|
4350
4414
|
const windowWidth = window.innerWidth;
|
4351
4415
|
const windowHeight = window.innerHeight;
|
4352
|
-
const savedPosition =
|
4353
|
-
|
4354
|
-
|
4416
|
+
const savedPosition = (storage4 == null ? void 0 : storage4.get("position")) || {
|
4417
|
+
right: "20px",
|
4418
|
+
bottom: "20px"
|
4419
|
+
};
|
4355
4420
|
const right = Math.min(Math.max(20, parseInt(savedPosition.right)), windowWidth - 80);
|
4356
4421
|
const bottom = Math.min(Math.max(20, parseInt(savedPosition.bottom)), windowHeight - 80);
|
4357
4422
|
Object.assign(button.style, {
|
@@ -4447,13 +4512,10 @@ function createFloatingButtonWithIframe({
|
|
4447
4512
|
isDragging = false;
|
4448
4513
|
button.style.cursor = "grab";
|
4449
4514
|
button.style.transition = "transform 0.15s ease";
|
4450
|
-
|
4451
|
-
|
4452
|
-
|
4453
|
-
|
4454
|
-
bottom: button.style.bottom
|
4455
|
-
})
|
4456
|
-
);
|
4515
|
+
storage4 == null ? void 0 : storage4.set("position", {
|
4516
|
+
right: button.style.right,
|
4517
|
+
bottom: button.style.bottom
|
4518
|
+
});
|
4457
4519
|
if (!isDragEvent) {
|
4458
4520
|
handleButtonClick();
|
4459
4521
|
}
|
@@ -4467,7 +4529,7 @@ function createFloatingButtonWithIframe({
|
|
4467
4529
|
const newVisibleState = !isCurrentlyVisible;
|
4468
4530
|
iframe.style.display = newVisibleState ? "block" : "none";
|
4469
4531
|
button.src = newVisibleState ? closeImageUrl : openImageUrl;
|
4470
|
-
|
4532
|
+
storage4 == null ? void 0 : storage4.set("visible", newVisibleState);
|
4471
4533
|
setTimeout(() => {
|
4472
4534
|
if (newVisibleState) {
|
4473
4535
|
iframe.focus();
|
@@ -4481,11 +4543,12 @@ function createIframe({
|
|
4481
4543
|
iframeUrl,
|
4482
4544
|
iframeStyle = {}
|
4483
4545
|
}) {
|
4546
|
+
var _a;
|
4484
4547
|
const iframe = document.createElement("iframe");
|
4485
4548
|
iframe.id = "satoshi-wallet-iframe";
|
4486
4549
|
iframe.allow = "clipboard-read; clipboard-write";
|
4487
4550
|
iframe.src = iframeUrl;
|
4488
|
-
const isVisible =
|
4551
|
+
const isVisible = (_a = storage4 == null ? void 0 : storage4.get("visible")) != null ? _a : true;
|
4489
4552
|
Object.assign(iframe.style, __spreadValues({
|
4490
4553
|
position: "fixed",
|
4491
4554
|
bottom: "90px",
|
@@ -4500,12 +4563,12 @@ function createIframe({
|
|
4500
4563
|
return iframe;
|
4501
4564
|
}
|
4502
4565
|
var currentMessageHandler = null;
|
4503
|
-
function setupButtonClickHandler(button, iframe,
|
4566
|
+
function setupButtonClickHandler(button, iframe, nearWallet, btcWallet) {
|
4504
4567
|
return __async(this, null, function* () {
|
4505
4568
|
var _a;
|
4506
|
-
const accountId = (_a = yield
|
4507
|
-
const originalAccountId =
|
4508
|
-
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();
|
4509
4572
|
console.log({ accountId, originalAccountId, originalPublicKey });
|
4510
4573
|
const iframeSrc = new URL(iframe.src);
|
4511
4574
|
iframeSrc.searchParams.set("origin", window.location.origin);
|
@@ -4514,8 +4577,8 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
|
4514
4577
|
originalPublicKey && iframeSrc.searchParams.set("originalPublicKey", originalPublicKey);
|
4515
4578
|
iframe.src = iframeSrc.toString();
|
4516
4579
|
const actions = {
|
4517
|
-
signAndSendTransaction:
|
4518
|
-
signAndSendTransactions:
|
4580
|
+
signAndSendTransaction: nearWallet.signAndSendTransaction,
|
4581
|
+
signAndSendTransactions: nearWallet.signAndSendTransactions,
|
4519
4582
|
executeBTCDepositAndAction,
|
4520
4583
|
getWithdrawTransaction
|
4521
4584
|
};
|
@@ -4560,6 +4623,7 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
|
4560
4623
|
});
|
4561
4624
|
}
|
4562
4625
|
function removeWalletButton() {
|
4626
|
+
console.log("removeWalletButton");
|
4563
4627
|
const button = document.getElementById("satoshi-wallet-button");
|
4564
4628
|
button == null ? void 0 : button.remove();
|
4565
4629
|
const iframe = document.getElementById("satoshi-wallet-iframe");
|
@@ -4666,7 +4730,12 @@ var BTCWallet = (_0) => __async(void 0, [_0], function* ({
|
|
4666
4730
|
if (btcPublicKey) {
|
4667
4731
|
yield getNearAccountByBtcPublicKey(btcPublicKey);
|
4668
4732
|
removeWalletButton();
|
4669
|
-
setupWalletButton(
|
4733
|
+
setupWalletButton({
|
4734
|
+
env,
|
4735
|
+
nearWallet: wallet,
|
4736
|
+
btcWallet: btcContext,
|
4737
|
+
walletUrl: metadata.walletUrl
|
4738
|
+
});
|
4670
4739
|
}
|
4671
4740
|
} else {
|
4672
4741
|
removeWalletButton();
|
@@ -4909,11 +4978,30 @@ function setupBTCWallet({
|
|
4909
4978
|
import {
|
4910
4979
|
setupModal as _setupModal
|
4911
4980
|
} from "ref-modal-ui";
|
4981
|
+
var subscription;
|
4912
4982
|
function setupWalletSelectorModal(selector, options) {
|
4913
4983
|
if (!selector)
|
4914
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();
|
4915
4992
|
const state = selector.store.getState();
|
4916
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
|
+
});
|
4917
5005
|
if (group.includes("btc")) {
|
4918
5006
|
document.head.appendChild(document.createElement("style")).textContent = `
|
4919
5007
|
#near-wallet-selector-modal .options-list .btc-wallet {
|
@@ -4924,7 +5012,7 @@ function setupWalletSelectorModal(selector, options) {
|
|
4924
5012
|
const modal = _setupModal(selector, options);
|
4925
5013
|
const originalShow = modal.show.bind(modal);
|
4926
5014
|
modal.show = () => __async(this, null, function* () {
|
4927
|
-
const chain = group.length > 1 ? yield openChainModal() : group[0];
|
5015
|
+
const chain = group.length > 1 && showChainGroups ? yield openChainModal() : group[0];
|
4928
5016
|
if (chain === "btc") {
|
4929
5017
|
const module = state.modules.find((module2) => module2.id === "btc-wallet");
|
4930
5018
|
if (module) {
|
@@ -4981,7 +5069,7 @@ function getGroup(state) {
|
|
4981
5069
|
|
4982
5070
|
// src/index.ts
|
4983
5071
|
var getVersion = () => {
|
4984
|
-
return "0.5.
|
5072
|
+
return "0.5.55-beta";
|
4985
5073
|
};
|
4986
5074
|
if (typeof window !== "undefined") {
|
4987
5075
|
window.__BTC_WALLET_VERSION = getVersion();
|