@pushchain/ui-kit 5.1.1 → 5.2.0-alpha.1
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/CHANGELOG.md +18 -0
- package/package.json +3 -2
- package/src/lib/components/LoginModal/index.js +20 -19
- package/src/lib/components/LoginModal/index.js.map +1 -1
- package/src/lib/components/LoginModal/useSmartModalPosition.js +1 -2
- package/src/lib/components/LoginModal/useSmartModalPosition.js.map +1 -1
- package/src/lib/components/PushUniversalAccountButton/index.js +9 -8
- package/src/lib/components/PushUniversalAccountButton/index.js.map +1 -1
- package/src/lib/components/PushWalletToast/index.js +2 -2
- package/src/lib/components/PushWalletToast/index.js.map +1 -1
- package/src/lib/components/common/Button.js +1 -4
- package/src/lib/components/common/Button.js.map +1 -1
- package/src/lib/constants/index.d.ts +3 -0
- package/src/lib/constants/index.js +3 -0
- package/src/lib/constants/index.js.map +1 -1
- package/src/lib/context/PushChainContext.d.ts +34 -0
- package/src/lib/context/PushChainContext.js +139 -0
- package/src/lib/context/PushChainContext.js.map +1 -0
- package/src/lib/context/WalletContext.js +154 -150
- package/src/lib/context/WalletContext.js.map +1 -1
- package/src/lib/helpers/txnAuthGuard.js +16 -17
- package/src/lib/helpers/txnAuthGuard.js.map +1 -1
- package/src/lib/hooks/useAppMetadata.js +1 -1
- package/src/lib/hooks/useAppMetadata.js.map +1 -1
- package/src/lib/hooks/usePushChainClient.d.ts +1 -2
- package/src/lib/hooks/usePushChainClient.js +5 -112
- package/src/lib/hooks/usePushChainClient.js.map +1 -1
- package/src/lib/polyfills/index.d.ts +0 -4
- package/src/lib/polyfills/index.js +14 -11
- package/src/lib/polyfills/index.js.map +1 -1
- package/src/lib/providers/PushWalletProvider.js +30 -6
- package/src/lib/providers/PushWalletProvider.js.map +1 -1
- package/src/lib/providers/waap/initWaap.d.ts +2 -0
- package/src/lib/providers/waap/initWaap.js +16 -0
- package/src/lib/providers/waap/initWaap.js.map +1 -0
- package/src/lib/providers/waap/useWaapAuth.d.ts +13 -0
- package/src/lib/providers/waap/useWaapAuth.js +68 -0
- package/src/lib/providers/waap/useWaapAuth.js.map +1 -0
- package/src/lib/providers/waap/waap.config.d.ts +4 -0
- package/src/lib/providers/waap/waap.config.js +62 -0
- package/src/lib/providers/waap/waap.config.js.map +1 -0
- package/src/lib/providers/waap/waapEvents.d.ts +7 -0
- package/src/lib/providers/waap/waapEvents.js +44 -0
- package/src/lib/providers/waap/waapEvents.js.map +1 -0
- package/src/lib/providers/waap/waapProvider.d.ts +8 -0
- package/src/lib/providers/waap/waapProvider.js +142 -0
- package/src/lib/providers/waap/waapProvider.js.map +1 -0
- package/src/lib/providers/walletProviders/BaseWalletProvider.js +3 -0
- package/src/lib/providers/walletProviders/BaseWalletProvider.js.map +1 -1
- package/src/lib/providers/walletProviders/WalletProviderRegistry.js +3 -4
- package/src/lib/providers/walletProviders/WalletProviderRegistry.js.map +1 -1
- package/src/lib/providers/walletProviders/ethereum/chains.js +4 -1
- package/src/lib/providers/walletProviders/ethereum/chains.js.map +1 -1
- package/src/lib/providers/walletProviders/ethereum/metamask.js +183 -183
- package/src/lib/providers/walletProviders/ethereum/metamask.js.map +1 -1
- package/src/lib/providers/walletProviders/ethereum/rabby.js +157 -156
- package/src/lib/providers/walletProviders/ethereum/rabby.js.map +1 -1
- package/src/lib/providers/walletProviders/ethereum/walletConnect.js +155 -157
- package/src/lib/providers/walletProviders/ethereum/walletConnect.js.map +1 -1
- package/src/lib/providers/walletProviders/ethereum/zerion.js +157 -156
- package/src/lib/providers/walletProviders/ethereum/zerion.js.map +1 -1
- package/src/lib/providers/walletProviders/solana/phantom.js +210 -215
- package/src/lib/providers/walletProviders/solana/phantom.js.map +1 -1
- package/src/lib/providers/walletProviders/utils/eip6963.js +2 -4
- package/src/lib/providers/walletProviders/utils/eip6963.js.map +1 -1
- package/src/lib/styles/token.js +5 -1
- package/src/lib/styles/token.js.map +1 -1
|
@@ -12,6 +12,9 @@ const WalletProviderRegistry_1 = require("../providers/walletProviders/WalletPro
|
|
|
12
12
|
const PushWalletToast_1 = require("../components/PushWalletToast");
|
|
13
13
|
const LoginModal_1 = require("../components/LoginModal");
|
|
14
14
|
const WalletContextMap_1 = require("./WalletContextMap");
|
|
15
|
+
const useWaapAuth_1 = require("../providers/waap/useWaapAuth");
|
|
16
|
+
const waapProvider_1 = require("../providers/waap/waapProvider");
|
|
17
|
+
const PushChainContext_1 = require("./PushChainContext");
|
|
15
18
|
exports.WalletContext = (0, react_1.createContext)(null);
|
|
16
19
|
const WalletContextProvider = ({ children, config, app, themeMode = constants_1.PushUI.CONSTANTS.THEME.DARK, themeOverrides, }) => {
|
|
17
20
|
const [universalAccount, setUniversalAccount] = (0, react_1.useState)(null);
|
|
@@ -23,7 +26,6 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
23
26
|
const [connectionStatus, setConnectionStatus] = (0, react_1.useState)(types_1.ConnectionStatus.NOT_CONNECTED);
|
|
24
27
|
const [externalWallet, setExternalWallet] = (0, react_1.useState)(null); // to connect with external wallet
|
|
25
28
|
const [progress, setProgress] = (0, react_1.useState)(null);
|
|
26
|
-
const signatureResolverRef = (0, react_1.useRef)(null);
|
|
27
29
|
const upgradeResolverRef = (0, react_1.useRef)(null);
|
|
28
30
|
const pushChainClientRef = (0, react_1.useRef)(null);
|
|
29
31
|
const setPushChainClient = (client) => {
|
|
@@ -31,25 +33,32 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
31
33
|
};
|
|
32
34
|
const [modalAppData, setModalAppData] = (0, react_1.useState)(app
|
|
33
35
|
? {
|
|
34
|
-
title: app
|
|
35
|
-
logoURL: app
|
|
36
|
-
description: app
|
|
36
|
+
title: app?.title,
|
|
37
|
+
logoURL: app?.logoUrl,
|
|
38
|
+
description: app?.description,
|
|
37
39
|
}
|
|
38
40
|
: undefined);
|
|
39
41
|
const [walletAppData, setWalletAppData] = (0, react_1.useState)(app
|
|
40
42
|
? {
|
|
41
|
-
title: app
|
|
42
|
-
logoURL: app
|
|
43
|
-
description: app
|
|
43
|
+
title: app?.title,
|
|
44
|
+
logoURL: app?.logoUrl,
|
|
45
|
+
description: app?.description,
|
|
44
46
|
}
|
|
45
47
|
: undefined);
|
|
46
48
|
const [activeTriggerId, setActiveTriggerId] = (0, react_1.useState)();
|
|
49
|
+
const { loginWithWaapSocial } = (0, useWaapAuth_1.useWaapAuth)();
|
|
47
50
|
const toggleButtonRefs = react_1.default.useRef({});
|
|
48
51
|
const updateModalAppData = (newData) => {
|
|
49
|
-
setModalAppData((prevData) => (
|
|
52
|
+
setModalAppData((prevData) => ({
|
|
53
|
+
...prevData,
|
|
54
|
+
...newData,
|
|
55
|
+
}));
|
|
50
56
|
};
|
|
51
57
|
const updateWalletAppData = (newData) => {
|
|
52
|
-
setWalletAppData((prevData) => (
|
|
58
|
+
setWalletAppData((prevData) => ({
|
|
59
|
+
...prevData,
|
|
60
|
+
...newData,
|
|
61
|
+
}));
|
|
53
62
|
};
|
|
54
63
|
const handleConnectToPushWallet = () => {
|
|
55
64
|
setWalletVisibility(true);
|
|
@@ -65,13 +74,15 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
65
74
|
};
|
|
66
75
|
sendMessageToPushWallet({
|
|
67
76
|
type: constants_1.APP_TO_WALLET_ACTION.WALLET_CONFIG,
|
|
68
|
-
data:
|
|
77
|
+
data: {
|
|
78
|
+
...walletConfig,
|
|
79
|
+
},
|
|
69
80
|
});
|
|
70
81
|
};
|
|
71
82
|
const handleUserLogOutEvent = () => {
|
|
72
83
|
if (externalWallet) {
|
|
73
84
|
const providerReceived = WalletProviderRegistry_1.walletRegistry.getProvider(externalWallet.providerName);
|
|
74
|
-
providerReceived
|
|
85
|
+
providerReceived?.disconnect();
|
|
75
86
|
}
|
|
76
87
|
setConnectionStatus(types_1.ConnectionStatus.NOT_CONNECTED);
|
|
77
88
|
setUniversalAccount(null);
|
|
@@ -80,13 +91,12 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
80
91
|
setIframeLoading(true);
|
|
81
92
|
setExternalWallet(null);
|
|
82
93
|
setIsReadOnly(false);
|
|
83
|
-
localStorage.removeItem(`walletInfo_${
|
|
94
|
+
localStorage.removeItem(`walletInfo_${config?.uid || 'default'}`);
|
|
84
95
|
document.body.style.overflow = '';
|
|
85
96
|
};
|
|
86
97
|
// sending events to wallet from dapp
|
|
87
98
|
const sendMessageToPushWallet = (message) => {
|
|
88
|
-
|
|
89
|
-
if ((_a = iframeRef === null || iframeRef === void 0 ? void 0 : iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow) {
|
|
99
|
+
if (iframeRef?.current?.contentWindow) {
|
|
90
100
|
try {
|
|
91
101
|
iframeRef.current.contentWindow.postMessage(message, constants_1.WALLET_CONFIG_URL[config.network]);
|
|
92
102
|
}
|
|
@@ -114,9 +124,9 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
114
124
|
if (response.account) {
|
|
115
125
|
setUniversalAccount(response.account);
|
|
116
126
|
}
|
|
117
|
-
localStorage.setItem(`walletInfo_${
|
|
127
|
+
localStorage.setItem(`walletInfo_${config?.uid || 'default'}`, JSON.stringify({
|
|
118
128
|
account: response.account,
|
|
119
|
-
uid:
|
|
129
|
+
uid: config?.uid || 'default'
|
|
120
130
|
}));
|
|
121
131
|
};
|
|
122
132
|
const handleAppConnectionRejection = () => {
|
|
@@ -124,13 +134,13 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
124
134
|
setUniversalAccount(null);
|
|
125
135
|
};
|
|
126
136
|
// Connect external wallet
|
|
127
|
-
const handleExternalWalletConnection = (data) =>
|
|
137
|
+
const handleExternalWalletConnection = async (data) => {
|
|
128
138
|
try {
|
|
129
139
|
const providerReceived = WalletProviderRegistry_1.walletRegistry.getProvider(data.provider);
|
|
130
140
|
if (!providerReceived) {
|
|
131
141
|
return;
|
|
132
142
|
}
|
|
133
|
-
const walletInfo =
|
|
143
|
+
const walletInfo = await providerReceived.connect(data.chain);
|
|
134
144
|
setConnectionStatus(types_1.ConnectionStatus.CONNECTED);
|
|
135
145
|
setMinimiseWallet(true);
|
|
136
146
|
const result = core_1.PushChain.utils.account.fromChainAgnostic(walletInfo.caipAddress);
|
|
@@ -140,14 +150,17 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
140
150
|
providerName: data.provider,
|
|
141
151
|
chainType: data.chain,
|
|
142
152
|
};
|
|
143
|
-
localStorage.setItem(`walletInfo_${
|
|
153
|
+
localStorage.setItem(`walletInfo_${config?.uid || 'default'}`, JSON.stringify({
|
|
144
154
|
wallet: connectedWallet,
|
|
145
|
-
uid:
|
|
155
|
+
uid: config?.uid || 'default'
|
|
146
156
|
}));
|
|
147
157
|
setExternalWallet(connectedWallet);
|
|
148
158
|
sendMessageToPushWallet({
|
|
149
159
|
type: constants_1.APP_TO_WALLET_ACTION.CONNECTION_STATUS,
|
|
150
|
-
data:
|
|
160
|
+
data: {
|
|
161
|
+
status: 'successful',
|
|
162
|
+
...connectedWallet,
|
|
163
|
+
},
|
|
151
164
|
});
|
|
152
165
|
}
|
|
153
166
|
catch (error) {
|
|
@@ -160,9 +173,9 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
160
173
|
});
|
|
161
174
|
throw new Error('Failed to connect to provider');
|
|
162
175
|
}
|
|
163
|
-
}
|
|
176
|
+
};
|
|
164
177
|
// handles external wallet signature request
|
|
165
|
-
const handleExternalWalletSignRequest = (data) =>
|
|
178
|
+
const handleExternalWalletSignRequest = async (data) => {
|
|
166
179
|
if (!externalWallet) {
|
|
167
180
|
throw new Error('No External wallet connected');
|
|
168
181
|
}
|
|
@@ -171,15 +184,16 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
171
184
|
if (!providerReceived) {
|
|
172
185
|
throw new Error('Provider not found');
|
|
173
186
|
}
|
|
174
|
-
|
|
187
|
+
await providerReceived.switchNetwork?.(externalWallet.chainType);
|
|
188
|
+
const signature = await providerReceived.signMessage(data);
|
|
175
189
|
return signature;
|
|
176
190
|
}
|
|
177
191
|
catch (error) {
|
|
178
192
|
console.log('Error in generating signature', error);
|
|
179
193
|
throw new Error('Signature request failed');
|
|
180
194
|
}
|
|
181
|
-
}
|
|
182
|
-
const handleExternalWalletSignTransactionRequest = (data) =>
|
|
195
|
+
};
|
|
196
|
+
const handleExternalWalletSignTransactionRequest = async (data) => {
|
|
183
197
|
if (!externalWallet) {
|
|
184
198
|
throw new Error('No External wallet connected');
|
|
185
199
|
}
|
|
@@ -188,15 +202,16 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
188
202
|
if (!providerReceived) {
|
|
189
203
|
throw new Error('Provider not found');
|
|
190
204
|
}
|
|
191
|
-
|
|
205
|
+
await providerReceived.switchNetwork?.(externalWallet.chainType);
|
|
206
|
+
const signature = await providerReceived.signAndSendTransaction(data);
|
|
192
207
|
return signature;
|
|
193
208
|
}
|
|
194
209
|
catch (error) {
|
|
195
210
|
console.log('Error in generating signature', error);
|
|
196
211
|
throw new Error('Signature request failed');
|
|
197
212
|
}
|
|
198
|
-
}
|
|
199
|
-
const handleExternalWalletSignTypedDataRequest = (data) =>
|
|
213
|
+
};
|
|
214
|
+
const handleExternalWalletSignTypedDataRequest = async (data) => {
|
|
200
215
|
if (!externalWallet) {
|
|
201
216
|
throw new Error('No External wallet connected');
|
|
202
217
|
}
|
|
@@ -205,124 +220,118 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
205
220
|
if (!providerReceived) {
|
|
206
221
|
throw new Error('Provider not found');
|
|
207
222
|
}
|
|
208
|
-
|
|
223
|
+
await providerReceived.switchNetwork?.(externalWallet.chainType);
|
|
224
|
+
const signature = await providerReceived.signTypedData(data);
|
|
209
225
|
return signature;
|
|
210
226
|
}
|
|
211
227
|
catch (error) {
|
|
212
228
|
console.log('Error in generating signature', error);
|
|
213
229
|
throw new Error('Signature request failed');
|
|
214
230
|
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
if (signatureResolverRef.current) {
|
|
220
|
-
reject(new Error('Another sign request is already in progress'));
|
|
221
|
-
return;
|
|
222
|
-
}
|
|
223
|
-
setMinimiseWallet(false);
|
|
224
|
-
signatureResolverRef.current = {
|
|
225
|
-
success: (response) => {
|
|
226
|
-
resolve(response.signature);
|
|
227
|
-
signatureResolverRef.current = null; // Clean up
|
|
228
|
-
setMinimiseWallet(true);
|
|
229
|
-
},
|
|
230
|
-
error: (response) => {
|
|
231
|
-
signatureResolverRef.current = null; // Clean up
|
|
232
|
-
reject(new Error('Signature request failed'));
|
|
233
|
-
setMinimiseWallet(true);
|
|
234
|
-
},
|
|
235
|
-
};
|
|
236
|
-
// Send the sign request to the wallet tab
|
|
231
|
+
};
|
|
232
|
+
const handleSocialConnection = async () => {
|
|
233
|
+
const result = await loginWithWaapSocial();
|
|
234
|
+
if (!result) {
|
|
237
235
|
sendMessageToPushWallet({
|
|
238
|
-
type: constants_1.APP_TO_WALLET_ACTION.
|
|
239
|
-
data
|
|
236
|
+
type: constants_1.APP_TO_WALLET_ACTION.SOCIAL_CONNECTION_STATUS,
|
|
237
|
+
data: {
|
|
238
|
+
error: true,
|
|
239
|
+
},
|
|
240
240
|
});
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
;
|
|
244
|
+
const w = await core_1.PushChain.utils.account.convertExecutorToOriginAccount(result.address);
|
|
245
|
+
if (!w.account)
|
|
246
|
+
return;
|
|
247
|
+
sendMessageToPushWallet({
|
|
248
|
+
type: constants_1.APP_TO_WALLET_ACTION.SOCIAL_CONNECTION_STATUS,
|
|
249
|
+
data: {
|
|
250
|
+
account: w.account,
|
|
251
|
+
},
|
|
241
252
|
});
|
|
242
253
|
};
|
|
243
|
-
const
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
reject(new Error('Another sign request is already in progress'));
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
setMinimiseWallet(false);
|
|
250
|
-
signatureResolverRef.current = {
|
|
251
|
-
success: (response) => {
|
|
252
|
-
resolve(response.signature);
|
|
253
|
-
signatureResolverRef.current = null; // Clean up
|
|
254
|
-
setMinimiseWallet(true);
|
|
255
|
-
},
|
|
256
|
-
error: (response) => {
|
|
257
|
-
signatureResolverRef.current = null; // Clean up
|
|
258
|
-
reject(new Error('Signature request failed'));
|
|
259
|
-
setMinimiseWallet(true);
|
|
260
|
-
},
|
|
261
|
-
};
|
|
262
|
-
// Send the sign request to the wallet tab
|
|
254
|
+
const handleSocialSignAndSendMessage = async (message) => {
|
|
255
|
+
try {
|
|
256
|
+
const signature = await (0, waapProvider_1.waapSignMessage)(message);
|
|
263
257
|
sendMessageToPushWallet({
|
|
264
|
-
type: constants_1.APP_TO_WALLET_ACTION.
|
|
265
|
-
data,
|
|
258
|
+
type: constants_1.APP_TO_WALLET_ACTION.SIGN_MESSAGE,
|
|
259
|
+
data: { signature },
|
|
266
260
|
});
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
setMinimiseWallet(false);
|
|
276
|
-
signatureResolverRef.current = {
|
|
277
|
-
success: (response) => {
|
|
278
|
-
resolve(response.signature);
|
|
279
|
-
signatureResolverRef.current = null; // Clean up
|
|
280
|
-
setMinimiseWallet(true);
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
sendMessageToPushWallet({
|
|
264
|
+
type: constants_1.APP_TO_WALLET_ACTION.ERROR,
|
|
265
|
+
data: {
|
|
266
|
+
error: error,
|
|
281
267
|
},
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
const handleSocialSignAndSendTransaction = async (txn) => {
|
|
272
|
+
try {
|
|
273
|
+
const signature = await (0, waapProvider_1.waapSignAndSendTransaction)(txn);
|
|
274
|
+
sendMessageToPushWallet({
|
|
275
|
+
type: constants_1.WALLET_TO_APP_ACTION.SIGN_TRANSACTION,
|
|
276
|
+
data: { signature },
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
sendMessageToPushWallet({
|
|
281
|
+
type: constants_1.WALLET_TO_APP_ACTION.ERROR,
|
|
282
|
+
data: {
|
|
283
|
+
error: error,
|
|
286
284
|
},
|
|
287
|
-
};
|
|
288
|
-
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
const handleSocialSignTypedData = async (typedData) => {
|
|
289
|
+
try {
|
|
290
|
+
const signature = await (0, waapProvider_1.waapSignTypedData)(typedData);
|
|
289
291
|
sendMessageToPushWallet({
|
|
290
|
-
type: constants_1.
|
|
291
|
-
data,
|
|
292
|
+
type: constants_1.WALLET_TO_APP_ACTION.SIGN_TYPED_DATA,
|
|
293
|
+
data: { signature },
|
|
292
294
|
});
|
|
293
|
-
}
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
sendMessageToPushWallet({
|
|
298
|
+
type: constants_1.WALLET_TO_APP_ACTION.ERROR,
|
|
299
|
+
data: {
|
|
300
|
+
error: error,
|
|
301
|
+
},
|
|
302
|
+
});
|
|
303
|
+
}
|
|
294
304
|
};
|
|
295
|
-
|
|
296
|
-
const handleSignMessage = (data) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
305
|
+
const handleSignMessage = async (data) => {
|
|
297
306
|
let signature;
|
|
298
307
|
if (externalWallet) {
|
|
299
|
-
signature =
|
|
308
|
+
signature = await handleExternalWalletSignRequest(data);
|
|
300
309
|
}
|
|
301
310
|
else {
|
|
302
|
-
signature =
|
|
311
|
+
signature = await (0, waapProvider_1.waapSignMessage)(data);
|
|
303
312
|
}
|
|
304
313
|
return signature;
|
|
305
|
-
}
|
|
306
|
-
const handleSignAndSendTransaction = (data) =>
|
|
314
|
+
};
|
|
315
|
+
const handleSignAndSendTransaction = async (data) => {
|
|
307
316
|
let signature;
|
|
308
317
|
if (externalWallet) {
|
|
309
|
-
signature =
|
|
318
|
+
signature = await handleExternalWalletSignTransactionRequest(data);
|
|
310
319
|
}
|
|
311
320
|
else {
|
|
312
|
-
signature =
|
|
321
|
+
signature = await (0, waapProvider_1.waapSignAndSendTransaction)(data);
|
|
313
322
|
}
|
|
314
323
|
return signature;
|
|
315
|
-
}
|
|
316
|
-
const handleSignTypedData = (data) =>
|
|
324
|
+
};
|
|
325
|
+
const handleSignTypedData = async (data) => {
|
|
317
326
|
let signature;
|
|
318
327
|
if (externalWallet) {
|
|
319
|
-
signature =
|
|
328
|
+
signature = await handleExternalWalletSignTypedDataRequest(data);
|
|
320
329
|
}
|
|
321
330
|
else {
|
|
322
|
-
signature =
|
|
331
|
+
signature = await (0, waapProvider_1.waapSignTypedData)(data);
|
|
323
332
|
}
|
|
324
333
|
return signature;
|
|
325
|
-
}
|
|
334
|
+
};
|
|
326
335
|
const getAuthWindowConfig = () => {
|
|
327
336
|
// Calculate the screen width and height
|
|
328
337
|
const screenWidth = window.screen.width;
|
|
@@ -367,13 +376,13 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
367
376
|
}, 100000);
|
|
368
377
|
});
|
|
369
378
|
};
|
|
370
|
-
const checkAndShowUpgradeIfNeeded = (pushChainClient) =>
|
|
379
|
+
const checkAndShowUpgradeIfNeeded = async (pushChainClient) => {
|
|
371
380
|
setPushChainClient(pushChainClient);
|
|
372
381
|
if (!pushChainClient) {
|
|
373
382
|
return false;
|
|
374
383
|
}
|
|
375
384
|
try {
|
|
376
|
-
|
|
385
|
+
await pushChainClient.accountStatusReady;
|
|
377
386
|
if (!pushChainClient.isReadMode && pushChainClient.accountStatus.uea.loaded && pushChainClient.accountStatus.uea.requiresUpgrade) {
|
|
378
387
|
setMinimiseWallet(false);
|
|
379
388
|
sendMessageToPushWallet({
|
|
@@ -403,33 +412,30 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
403
412
|
console.error('Error checking upgrade status:', error);
|
|
404
413
|
return false;
|
|
405
414
|
}
|
|
406
|
-
}
|
|
415
|
+
};
|
|
407
416
|
const handleUpgradeAccountSuccess = () => {
|
|
408
|
-
var _a;
|
|
409
417
|
setMinimiseWallet(true);
|
|
410
418
|
// Resolve any pending upgrade promise
|
|
411
|
-
if (
|
|
419
|
+
if (upgradeResolverRef.current?.success) {
|
|
412
420
|
upgradeResolverRef.current.success();
|
|
413
421
|
upgradeResolverRef.current = null;
|
|
414
422
|
}
|
|
415
423
|
};
|
|
416
424
|
const handleUpgradeAccountError = (error) => {
|
|
417
|
-
var _a;
|
|
418
425
|
setMinimiseWallet(true);
|
|
419
426
|
// Reject any pending upgrade promise
|
|
420
|
-
if (
|
|
427
|
+
if (upgradeResolverRef.current?.error) {
|
|
421
428
|
upgradeResolverRef.current.error(error instanceof Error ? error : new Error('Upgrade failed'));
|
|
422
429
|
upgradeResolverRef.current = null;
|
|
423
430
|
}
|
|
424
431
|
};
|
|
425
|
-
const handleUpgradeAccount = () =>
|
|
426
|
-
var _a;
|
|
432
|
+
const handleUpgradeAccount = async () => {
|
|
427
433
|
const pushChainClient = pushChainClientRef.current;
|
|
428
434
|
if (!pushChainClient) {
|
|
429
435
|
throw new Error('PushChain client not initialized');
|
|
430
436
|
}
|
|
431
437
|
try {
|
|
432
|
-
|
|
438
|
+
await pushChainClient.upgradeAccount({
|
|
433
439
|
progressHook: (progress) => {
|
|
434
440
|
setProgress(progress);
|
|
435
441
|
if (progress.id === progress_hook_types_1.PROGRESS_HOOK.UEA_MIG_9901) {
|
|
@@ -452,20 +458,19 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
452
458
|
data: { success: false, error: error instanceof Error ? error.message : 'Upgrade failed' },
|
|
453
459
|
});
|
|
454
460
|
// Reject the upgrade promise
|
|
455
|
-
if (
|
|
461
|
+
if (upgradeResolverRef.current?.error) {
|
|
456
462
|
upgradeResolverRef.current.error(error instanceof Error ? error : new Error('Upgrade failed'));
|
|
457
463
|
}
|
|
458
464
|
}
|
|
459
|
-
}
|
|
465
|
+
};
|
|
460
466
|
(0, react_1.useEffect)(() => {
|
|
461
|
-
|
|
462
|
-
const walletInfo = localStorage.getItem(`walletInfo_${(config === null || config === void 0 ? void 0 : config.uid) || 'default'}`);
|
|
467
|
+
const walletInfo = localStorage.getItem(`walletInfo_${config?.uid || 'default'}`);
|
|
463
468
|
const walletData = walletInfo ? JSON.parse(walletInfo) : null;
|
|
464
469
|
if (!walletData)
|
|
465
470
|
return;
|
|
466
|
-
if (walletData.uid !==
|
|
471
|
+
if (walletData.uid !== config?.uid)
|
|
467
472
|
return;
|
|
468
|
-
if (
|
|
473
|
+
if (walletData?.wallet && walletData.wallet?.providerName) {
|
|
469
474
|
setUniversalAccount(core_1.PushChain.utils.account.fromChainAgnostic(walletData.wallet.address));
|
|
470
475
|
setExternalWallet(walletData.wallet);
|
|
471
476
|
}
|
|
@@ -485,25 +490,33 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
485
490
|
if (externalWallet) {
|
|
486
491
|
sendMessageToPushWallet({
|
|
487
492
|
type: constants_1.APP_TO_WALLET_ACTION.READ_ONLY_CONNECTION_STATUS,
|
|
488
|
-
data:
|
|
493
|
+
data: {
|
|
494
|
+
status: 'successful',
|
|
495
|
+
...externalWallet,
|
|
496
|
+
},
|
|
489
497
|
});
|
|
490
498
|
}
|
|
491
499
|
else if (universalAccount) {
|
|
492
500
|
sendMessageToPushWallet({
|
|
493
501
|
type: constants_1.APP_TO_WALLET_ACTION.READ_ONLY_CONNECTION_STATUS,
|
|
494
|
-
data:
|
|
502
|
+
data: {
|
|
503
|
+
status: 'successful',
|
|
504
|
+
...universalAccount,
|
|
505
|
+
},
|
|
495
506
|
});
|
|
496
507
|
}
|
|
497
508
|
}, [isIframeLoading, externalWallet]);
|
|
498
509
|
(0, react_1.useEffect)(() => {
|
|
499
510
|
const messageHandler = (event) => {
|
|
500
|
-
|
|
501
|
-
if (((_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow) !== event.source)
|
|
511
|
+
if (iframeRef.current?.contentWindow !== event.source)
|
|
502
512
|
return;
|
|
503
513
|
switch (event.data.type) {
|
|
504
514
|
case constants_1.WALLET_TO_APP_ACTION.CONNECT_EXTERNAL_WALLET:
|
|
505
515
|
handleExternalWalletConnection(event.data.data);
|
|
506
516
|
break;
|
|
517
|
+
case constants_1.WALLET_TO_APP_ACTION.CONNECT_SOCIAL:
|
|
518
|
+
handleSocialConnection();
|
|
519
|
+
break;
|
|
507
520
|
case constants_1.WALLET_TO_APP_ACTION.IS_LOGGED_IN:
|
|
508
521
|
handleIsLoggedInAction();
|
|
509
522
|
break;
|
|
@@ -513,27 +526,18 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
513
526
|
case constants_1.WALLET_TO_APP_ACTION.APP_CONNECTION_REJECTED:
|
|
514
527
|
handleAppConnectionRejection();
|
|
515
528
|
break;
|
|
516
|
-
case constants_1.
|
|
517
|
-
|
|
518
|
-
(_c = (_b = signatureResolverRef === null || signatureResolverRef === void 0 ? void 0 : signatureResolverRef.current) === null || _b === void 0 ? void 0 : _b.success) === null || _c === void 0 ? void 0 : _c.call(_b, event.data.data);
|
|
519
|
-
}
|
|
529
|
+
case constants_1.APP_TO_WALLET_ACTION.SIGN_MESSAGE:
|
|
530
|
+
handleSocialSignAndSendMessage(event.data.data);
|
|
520
531
|
break;
|
|
521
|
-
case constants_1.
|
|
522
|
-
|
|
523
|
-
(_e = (_d = signatureResolverRef === null || signatureResolverRef === void 0 ? void 0 : signatureResolverRef.current) === null || _d === void 0 ? void 0 : _d.success) === null || _e === void 0 ? void 0 : _e.call(_d, event.data.data);
|
|
524
|
-
}
|
|
532
|
+
case constants_1.APP_TO_WALLET_ACTION.SIGN_TRANSACTION:
|
|
533
|
+
handleSocialSignAndSendTransaction(event.data.data);
|
|
525
534
|
break;
|
|
526
|
-
case constants_1.
|
|
527
|
-
|
|
528
|
-
(_g = (_f = signatureResolverRef === null || signatureResolverRef === void 0 ? void 0 : signatureResolverRef.current) === null || _f === void 0 ? void 0 : _f.success) === null || _g === void 0 ? void 0 : _g.call(_f, event.data.data);
|
|
529
|
-
}
|
|
535
|
+
case constants_1.APP_TO_WALLET_ACTION.SIGN_TYPED_DATA:
|
|
536
|
+
handleSocialSignTypedData(event.data.data);
|
|
530
537
|
break;
|
|
531
538
|
case constants_1.WALLET_TO_APP_ACTION.IS_LOGGED_OUT:
|
|
532
539
|
handleUserLogOutEvent();
|
|
533
540
|
break;
|
|
534
|
-
case constants_1.WALLET_TO_APP_ACTION.ERROR:
|
|
535
|
-
(_j = (_h = signatureResolverRef === null || signatureResolverRef === void 0 ? void 0 : signatureResolverRef.current) === null || _h === void 0 ? void 0 : _h.error) === null || _j === void 0 ? void 0 : _j.call(_h, event.data.data);
|
|
536
|
-
break;
|
|
537
541
|
case constants_1.WALLET_TO_APP_ACTION.CLOSE_IFRAME:
|
|
538
542
|
if (universalAccount)
|
|
539
543
|
setMinimiseWallet(true);
|
|
@@ -556,8 +560,8 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
556
560
|
window.addEventListener('message', messageHandler);
|
|
557
561
|
return () => window.removeEventListener('message', messageHandler);
|
|
558
562
|
}, [universalAccount]);
|
|
559
|
-
const WalletContext = (0, WalletContextMap_1.getWalletContext)(
|
|
560
|
-
return ((0, jsx_runtime_1.
|
|
563
|
+
const WalletContext = (0, WalletContextMap_1.getWalletContext)(config?.uid || 'default');
|
|
564
|
+
return ((0, jsx_runtime_1.jsx)(WalletContext.Provider, { value: {
|
|
561
565
|
app,
|
|
562
566
|
config,
|
|
563
567
|
connectionStatus,
|
|
@@ -586,7 +590,7 @@ const WalletContextProvider = ({ children, config, app, themeMode = constants_1.
|
|
|
586
590
|
setActiveTriggerId,
|
|
587
591
|
toggleButtonRefs,
|
|
588
592
|
connectionType: externalWallet ? 'external' : 'social',
|
|
589
|
-
}, children: [(0, jsx_runtime_1.jsx)(LoginModal_1.LoginModal, { iframeRef: iframeRef, themeMode: themeMode, modalAppData: modalAppData, isWalletVisible: isWalletVisible, isIframeLoading: isIframeLoading, setIframeLoading: setIframeLoading, sendWalletConfig: sendWalletConfig, config: config, universalAccount: universalAccount, isWalletMinimised: isWalletMinimised, setMinimiseWallet: setMinimiseWallet, handleUserLogOutEvent: handleUserLogOutEvent, sendMessageToPushWallet: sendMessageToPushWallet, isReadOnly: isReadOnly, toggleButtonRefs: toggleButtonRefs, activeTriggerId: activeTriggerId }), progress && ((0, jsx_runtime_1.jsx)(PushWalletToast_1.PushWalletToast, { progress: progress, setProgress: setProgress })), children] }));
|
|
593
|
+
}, children: (0, jsx_runtime_1.jsxs)(PushChainContext_1.PushChainProvider, { uid: config?.uid || 'default', universalAccount: universalAccount, handleSignMessage: handleSignMessage, handleSignAndSendTransaction: handleSignAndSendTransaction, handleSignTypedData: handleSignTypedData, handleExternalWalletConnection: handleExternalWalletConnection, requestPushWalletConnection: requestPushWalletConnection, config: config, setProgress: setProgress, isReadOnly: isReadOnly, setIsReadOnly: setIsReadOnly, checkAndShowUpgradeIfNeeded: checkAndShowUpgradeIfNeeded, children: [(0, jsx_runtime_1.jsx)(LoginModal_1.LoginModal, { iframeRef: iframeRef, themeMode: themeMode, modalAppData: modalAppData, isWalletVisible: isWalletVisible, isIframeLoading: isIframeLoading, setIframeLoading: setIframeLoading, sendWalletConfig: sendWalletConfig, config: config, universalAccount: universalAccount, isWalletMinimised: isWalletMinimised, setMinimiseWallet: setMinimiseWallet, handleUserLogOutEvent: handleUserLogOutEvent, sendMessageToPushWallet: sendMessageToPushWallet, isReadOnly: isReadOnly, toggleButtonRefs: toggleButtonRefs, activeTriggerId: activeTriggerId }), progress && ((0, jsx_runtime_1.jsx)(PushWalletToast_1.PushWalletToast, { progress: progress, setProgress: setProgress })), children] }) }));
|
|
590
594
|
};
|
|
591
595
|
exports.WalletContextProvider = WalletContextProvider;
|
|
592
596
|
//# sourceMappingURL=WalletContext.js.map
|