thirdweb 5.77.0 → 5.79.0-nightly-f91f6310e9396918d0ffc5217eeb4a44cef0b8c8-20241215000412
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/cjs/exports/react.js +11 -2
- package/dist/cjs/exports/react.js.map +1 -1
- package/dist/cjs/exports/react.native.js +4 -1
- package/dist/cjs/exports/react.native.js.map +1 -1
- package/dist/cjs/exports/wallets/in-app.js +2 -1
- package/dist/cjs/exports/wallets/in-app.js.map +1 -1
- package/dist/cjs/exports/wallets/in-app.native.js +2 -1
- package/dist/cjs/exports/wallets/in-app.native.js.map +1 -1
- package/dist/cjs/exports/wallets.js +2 -1
- package/dist/cjs/exports/wallets.js.map +1 -1
- package/dist/cjs/exports/wallets.native.js +2 -1
- package/dist/cjs/exports/wallets.native.js.map +1 -1
- package/dist/cjs/extensions/prebuilts/deploy-published.js +22 -16
- package/dist/cjs/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/cjs/react/native/hooks/wallets/useUnlinkProfile.js +58 -0
- package/dist/cjs/react/native/hooks/wallets/useUnlinkProfile.js.map +1 -0
- package/dist/cjs/react/web/hooks/wallets/useUnlinkProfile.js +58 -0
- package/dist/cjs/react/web/hooks/wallets/useUnlinkProfile.js.map +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js +22 -6
- package/dist/cjs/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/MediaRenderer/useResolvedMediaType.js +1 -1
- package/dist/cjs/react/web/ui/MediaRenderer/useResolvedMediaType.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Chain/icon.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Chain/name.js +15 -11
- package/dist/cjs/react/web/ui/prebuilt/Chain/name.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Chain/provider.js.map +1 -1
- package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js +79 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js +105 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js.map +1 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js +47 -0
- package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js.map +1 -0
- package/dist/cjs/react/web/wallets/in-app/CountrySelector.js +11 -10
- package/dist/cjs/react/web/wallets/in-app/CountrySelector.js.map +1 -1
- package/dist/cjs/react/web/wallets/in-app/InputSelectionUI.js +3 -1
- package/dist/cjs/react/web/wallets/in-app/InputSelectionUI.js.map +1 -1
- package/dist/cjs/react/web/wallets/in-app/supported-sms-countries.js.map +1 -1
- package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -1
- package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/in-app/core/authentication/linkAccount.js +31 -0
- package/dist/cjs/wallets/in-app/core/authentication/linkAccount.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/auth/index.js +30 -3
- package/dist/cjs/wallets/in-app/native/auth/index.js.map +1 -1
- package/dist/cjs/wallets/in-app/native/native-connector.js +8 -0
- package/dist/cjs/wallets/in-app/native/native-connector.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/lib/auth/index.js +30 -0
- package/dist/cjs/wallets/in-app/web/lib/auth/index.js.map +1 -1
- package/dist/cjs/wallets/in-app/web/lib/web-connector.js +8 -0
- package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
- package/dist/esm/exports/react.js +5 -0
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/exports/react.native.js +1 -0
- package/dist/esm/exports/react.native.js.map +1 -1
- package/dist/esm/exports/wallets/in-app.js +1 -1
- package/dist/esm/exports/wallets/in-app.js.map +1 -1
- package/dist/esm/exports/wallets/in-app.native.js +1 -1
- package/dist/esm/exports/wallets/in-app.native.js.map +1 -1
- package/dist/esm/exports/wallets.js +1 -1
- package/dist/esm/exports/wallets.js.map +1 -1
- package/dist/esm/exports/wallets.native.js +1 -1
- package/dist/esm/exports/wallets.native.js.map +1 -1
- package/dist/esm/extensions/prebuilts/deploy-published.js +22 -16
- package/dist/esm/extensions/prebuilts/deploy-published.js.map +1 -1
- package/dist/esm/react/native/hooks/wallets/useUnlinkProfile.js +55 -0
- package/dist/esm/react/native/hooks/wallets/useUnlinkProfile.js.map +1 -0
- package/dist/esm/react/web/hooks/wallets/useUnlinkProfile.js +55 -0
- package/dist/esm/react/web/hooks/wallets/useUnlinkProfile.js.map +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js +22 -6
- package/dist/esm/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.js.map +1 -1
- package/dist/esm/react/web/ui/MediaRenderer/useResolvedMediaType.js +1 -1
- package/dist/esm/react/web/ui/MediaRenderer/useResolvedMediaType.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Chain/icon.js +1 -1
- package/dist/esm/react/web/ui/prebuilt/Chain/icon.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Chain/name.js +14 -11
- package/dist/esm/react/web/ui/prebuilt/Chain/name.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Chain/provider.js +1 -0
- package/dist/esm/react/web/ui/prebuilt/Chain/provider.js.map +1 -1
- package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js +75 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/name.js +100 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/name.js.map +1 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js +42 -0
- package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js.map +1 -0
- package/dist/esm/react/web/wallets/in-app/CountrySelector.js +10 -10
- package/dist/esm/react/web/wallets/in-app/CountrySelector.js.map +1 -1
- package/dist/esm/react/web/wallets/in-app/InputSelectionUI.js +4 -2
- package/dist/esm/react/web/wallets/in-app/InputSelectionUI.js.map +1 -1
- package/dist/esm/react/web/wallets/in-app/supported-sms-countries.js.map +1 -1
- package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +1 -1
- package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/in-app/core/authentication/linkAccount.js +30 -0
- package/dist/esm/wallets/in-app/core/authentication/linkAccount.js.map +1 -1
- package/dist/esm/wallets/in-app/native/auth/index.js +29 -3
- package/dist/esm/wallets/in-app/native/auth/index.js.map +1 -1
- package/dist/esm/wallets/in-app/native/native-connector.js +9 -1
- package/dist/esm/wallets/in-app/native/native-connector.js.map +1 -1
- package/dist/esm/wallets/in-app/web/lib/auth/index.js +29 -0
- package/dist/esm/wallets/in-app/web/lib/auth/index.js.map +1 -1
- package/dist/esm/wallets/in-app/web/lib/web-connector.js +9 -1
- package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
- package/dist/types/exports/react.d.ts +4 -0
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/exports/react.native.d.ts +1 -0
- package/dist/types/exports/react.native.d.ts.map +1 -1
- package/dist/types/exports/wallets/in-app.d.ts +3 -2
- package/dist/types/exports/wallets/in-app.d.ts.map +1 -1
- package/dist/types/exports/wallets/in-app.native.d.ts +3 -2
- package/dist/types/exports/wallets/in-app.native.d.ts.map +1 -1
- package/dist/types/exports/wallets.d.ts +3 -2
- package/dist/types/exports/wallets.d.ts.map +1 -1
- package/dist/types/exports/wallets.native.d.ts +3 -2
- package/dist/types/exports/wallets.native.d.ts.map +1 -1
- package/dist/types/extensions/prebuilts/deploy-published.d.ts.map +1 -1
- package/dist/types/react/native/hooks/wallets/useUnlinkProfile.d.ts +34 -0
- package/dist/types/react/native/hooks/wallets/useUnlinkProfile.d.ts.map +1 -0
- package/dist/types/react/web/hooks/wallets/useUnlinkProfile.d.ts +34 -0
- package/dist/types/react/web/hooks/wallets/useUnlinkProfile.d.ts.map +1 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts +10 -1
- package/dist/types/react/web/ui/prebuilt/Chain/name.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts +1 -0
- package/dist/types/react/web/ui/prebuilt/Chain/provider.d.ts.map +1 -1
- package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts +81 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts +111 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts.map +1 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts +41 -0
- package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts.map +1 -0
- package/dist/types/react/web/wallets/in-app/CountrySelector.d.ts +2 -0
- package/dist/types/react/web/wallets/in-app/CountrySelector.d.ts.map +1 -1
- package/dist/types/react/web/wallets/in-app/InputSelectionUI.d.ts +2 -0
- package/dist/types/react/web/wallets/in-app/InputSelectionUI.d.ts.map +1 -1
- package/dist/types/react/web/wallets/in-app/supported-sms-countries.d.ts +946 -5
- package/dist/types/react/web/wallets/in-app/supported-sms-countries.d.ts.map +1 -1
- package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/ecosystem/types.d.ts +5 -0
- package/dist/types/wallets/ecosystem/types.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/authentication/linkAccount.d.ts +13 -0
- package/dist/types/wallets/in-app/core/authentication/linkAccount.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/authentication/types.d.ts +5 -0
- package/dist/types/wallets/in-app/core/authentication/types.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/interfaces/connector.d.ts +1 -0
- package/dist/types/wallets/in-app/core/interfaces/connector.d.ts.map +1 -1
- package/dist/types/wallets/in-app/core/wallet/types.d.ts +8 -3
- package/dist/types/wallets/in-app/core/wallet/types.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/auth/index.d.ts +27 -4
- package/dist/types/wallets/in-app/native/auth/index.d.ts.map +1 -1
- package/dist/types/wallets/in-app/native/native-connector.d.ts +4 -3
- package/dist/types/wallets/in-app/native/native-connector.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/lib/auth/index.d.ts +27 -1
- package/dist/types/wallets/in-app/web/lib/auth/index.d.ts.map +1 -1
- package/dist/types/wallets/in-app/web/lib/web-connector.d.ts +4 -3
- package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/exports/react.native.ts +1 -0
- package/src/exports/react.ts +15 -0
- package/src/exports/wallets/in-app.native.ts +7 -0
- package/src/exports/wallets/in-app.ts +7 -0
- package/src/exports/wallets.native.ts +7 -0
- package/src/exports/wallets.ts +7 -0
- package/src/extensions/prebuilts/deploy-published.ts +27 -20
- package/src/react/core/hooks/wallets/useAddConnectedWallet.test.tsx +52 -0
- package/src/react/core/hooks/wallets/useConnect.test.tsx +105 -0
- package/src/react/core/hooks/wallets/useSetActiveWallet.test.tsx +53 -0
- package/src/react/native/hooks/wallets/useUnlinkProfile.test.tsx +75 -0
- package/src/react/native/hooks/wallets/useUnlinkProfile.ts +62 -0
- package/src/react/web/hooks/wallets/useUnlinkProfile.test.tsx +75 -0
- package/src/react/web/hooks/wallets/useUnlinkProfile.ts +62 -0
- package/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.test.tsx +25 -0
- package/src/react/web/ui/ConnectWallet/screens/LinkedProfilesScreen.tsx +86 -44
- package/src/react/web/ui/MediaRenderer/useResolvedMediaType.ts +1 -1
- package/src/react/web/ui/prebuilt/Chain/icon.tsx +1 -1
- package/src/react/web/ui/prebuilt/Chain/name.test.tsx +19 -1
- package/src/react/web/ui/prebuilt/Chain/name.tsx +19 -13
- package/src/react/web/ui/prebuilt/Chain/provider.tsx +1 -0
- package/src/react/web/ui/prebuilt/Wallet/icon.test.tsx +30 -0
- package/src/react/web/ui/prebuilt/Wallet/icon.tsx +120 -0
- package/src/react/web/ui/prebuilt/Wallet/name.test.tsx +55 -0
- package/src/react/web/ui/prebuilt/Wallet/name.tsx +164 -0
- package/src/react/web/ui/prebuilt/Wallet/provider.test.tsx +61 -0
- package/src/react/web/ui/prebuilt/Wallet/provider.tsx +65 -0
- package/src/react/web/wallets/in-app/CountrySelector.test.tsx +45 -0
- package/src/react/web/wallets/in-app/CountrySelector.tsx +16 -13
- package/src/react/web/wallets/in-app/InputSelectionUI.test.tsx +45 -0
- package/src/react/web/wallets/in-app/InputSelectionUI.tsx +8 -2
- package/src/react/web/wallets/in-app/supported-sms-countries.ts +3 -1
- package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +3 -0
- package/src/version.ts +1 -1
- package/src/wallets/ecosystem/types.ts +5 -0
- package/src/wallets/in-app/core/authentication/linkAccount.test.ts +160 -0
- package/src/wallets/in-app/core/authentication/linkAccount.ts +49 -0
- package/src/wallets/in-app/core/authentication/types.ts +6 -0
- package/src/wallets/in-app/core/interfaces/connector.ts +1 -0
- package/src/wallets/in-app/core/wallet/types.ts +12 -8
- package/src/wallets/in-app/native/auth/index.ts +31 -3
- package/src/wallets/in-app/native/native-connector.ts +11 -0
- package/src/wallets/in-app/web/lib/auth/index.ts +31 -0
- package/src/wallets/in-app/web/lib/web-connector.ts +11 -0
- package/src/wallets/manager/connection-manager.test.ts +133 -133
@@ -199,157 +199,157 @@ describe.runIf(process.env.TW_SECRET_KEY)("Connection Manager", () => {
|
|
199
199
|
const definedChain = manager.activeWalletChainStore.getValue();
|
200
200
|
expect(definedChain).toEqual(newChain);
|
201
201
|
});
|
202
|
-
});
|
203
|
-
|
204
|
-
describe("handleSmartWalletConnection", () => {
|
205
|
-
let client: ThirdwebClient;
|
206
|
-
let eoaWallet: Wallet;
|
207
|
-
let smartWalletOptions: SmartWalletOptions;
|
208
202
|
|
209
|
-
|
210
|
-
client
|
211
|
-
eoaWallet
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
client,
|
230
|
-
smartWalletOptions,
|
231
|
-
onWalletDisconnect,
|
232
|
-
);
|
233
|
-
|
234
|
-
expect(smartWallet.getAccount()).toBeTruthy();
|
235
|
-
|
236
|
-
expect(eoaWallet.subscribe).toHaveBeenCalledWith(
|
237
|
-
"disconnect",
|
238
|
-
expect.any(Function),
|
239
|
-
);
|
240
|
-
});
|
241
|
-
|
242
|
-
it("should call onWalletDisconnect when EOA wallet disconnects", async () => {
|
243
|
-
const onWalletDisconnect = vi.fn();
|
244
|
-
const smartWallet = await handleSmartWalletConnection(
|
245
|
-
eoaWallet,
|
246
|
-
client,
|
247
|
-
smartWalletOptions,
|
248
|
-
onWalletDisconnect,
|
249
|
-
);
|
203
|
+
describe("handleSmartWalletConnection", () => {
|
204
|
+
let client: ThirdwebClient;
|
205
|
+
let eoaWallet: Wallet;
|
206
|
+
let smartWalletOptions: SmartWalletOptions;
|
207
|
+
|
208
|
+
beforeEach(() => {
|
209
|
+
client = TEST_CLIENT;
|
210
|
+
eoaWallet = {
|
211
|
+
id: "eoa-wallet-id",
|
212
|
+
getAccount: vi.fn().mockReturnValue(TEST_ACCOUNT_A),
|
213
|
+
subscribe: vi.fn().mockReturnValue(vi.fn()),
|
214
|
+
disconnect: vi.fn(),
|
215
|
+
switchChain: vi.fn(),
|
216
|
+
getChain: vi.fn().mockReturnValue(sepolia),
|
217
|
+
getConfig: vi.fn(),
|
218
|
+
} as unknown as Wallet;
|
219
|
+
smartWalletOptions = {
|
220
|
+
chain: sepolia,
|
221
|
+
} as SmartWalletOptions;
|
222
|
+
});
|
250
223
|
|
251
|
-
|
252
|
-
|
253
|
-
|
224
|
+
it("should connect a smart wallet and subscribe to disconnect event", async () => {
|
225
|
+
const onWalletDisconnect = vi.fn();
|
226
|
+
const smartWallet = await handleSmartWalletConnection(
|
227
|
+
eoaWallet,
|
228
|
+
client,
|
229
|
+
smartWalletOptions,
|
230
|
+
onWalletDisconnect,
|
231
|
+
);
|
254
232
|
|
255
|
-
|
256
|
-
});
|
233
|
+
expect(smartWallet.getAccount()).toBeTruthy();
|
257
234
|
|
258
|
-
|
259
|
-
|
235
|
+
expect(eoaWallet.subscribe).toHaveBeenCalledWith(
|
236
|
+
"disconnect",
|
237
|
+
expect.any(Function),
|
238
|
+
);
|
239
|
+
});
|
260
240
|
|
261
|
-
|
262
|
-
|
241
|
+
it("should call onWalletDisconnect when EOA wallet disconnects", async () => {
|
242
|
+
const onWalletDisconnect = vi.fn();
|
243
|
+
const smartWallet = await handleSmartWalletConnection(
|
263
244
|
eoaWallet,
|
264
245
|
client,
|
265
246
|
smartWalletOptions,
|
266
|
-
|
267
|
-
)
|
268
|
-
).rejects.toThrow("Cannot set a wallet without an account as active");
|
269
|
-
});
|
270
|
-
});
|
247
|
+
onWalletDisconnect,
|
248
|
+
);
|
271
249
|
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
let wallet: Wallet;
|
250
|
+
// biome-ignore lint/suspicious/noExplicitAny: Mocked function
|
251
|
+
const disconnectCallback = (eoaWallet.subscribe as any).mock.calls[0][1];
|
252
|
+
disconnectCallback();
|
276
253
|
|
277
|
-
|
278
|
-
|
279
|
-
getItem: vi.fn(),
|
280
|
-
setItem: vi.fn(),
|
281
|
-
removeItem: vi.fn(),
|
282
|
-
};
|
283
|
-
client = TEST_CLIENT;
|
284
|
-
wallet = {
|
285
|
-
id: "wallet-id",
|
286
|
-
getAccount: vi.fn().mockReturnValue(null), // Simulate wallet without an account
|
287
|
-
subscribe: vi.fn(),
|
288
|
-
disconnect: vi.fn(),
|
289
|
-
switchChain: vi.fn(),
|
290
|
-
getChain: vi.fn().mockReturnValue(sepolia),
|
291
|
-
getConfig: vi.fn(),
|
292
|
-
} as unknown as Wallet;
|
293
|
-
});
|
294
|
-
|
295
|
-
it("should throw an error if trying to set a wallet without an account as active", async () => {
|
296
|
-
const manager = createConnectionManager(storage);
|
254
|
+
expect(onWalletDisconnect).toHaveBeenCalledWith(smartWallet);
|
255
|
+
});
|
297
256
|
|
298
|
-
|
299
|
-
|
300
|
-
|
257
|
+
it("should throw an error if EOA wallet has no account", async () => {
|
258
|
+
eoaWallet.getAccount = vi.fn().mockReturnValue(null);
|
259
|
+
|
260
|
+
await expect(
|
261
|
+
handleSmartWalletConnection(
|
262
|
+
eoaWallet,
|
263
|
+
client,
|
264
|
+
smartWalletOptions,
|
265
|
+
vi.fn(),
|
266
|
+
),
|
267
|
+
).rejects.toThrow("Cannot set a wallet without an account as active");
|
268
|
+
});
|
301
269
|
});
|
302
270
|
|
303
|
-
|
304
|
-
|
271
|
+
describe("Connection Manager Error Handling", () => {
|
272
|
+
let storage: AsyncStorage;
|
273
|
+
let client: ThirdwebClient;
|
274
|
+
let wallet: Wallet;
|
275
|
+
|
276
|
+
beforeEach(() => {
|
277
|
+
storage = {
|
278
|
+
getItem: vi.fn(),
|
279
|
+
setItem: vi.fn(),
|
280
|
+
removeItem: vi.fn(),
|
281
|
+
};
|
282
|
+
client = TEST_CLIENT;
|
283
|
+
wallet = {
|
284
|
+
id: "wallet-id",
|
285
|
+
getAccount: vi.fn().mockReturnValue(null), // Simulate wallet without an account
|
286
|
+
subscribe: vi.fn(),
|
287
|
+
disconnect: vi.fn(),
|
288
|
+
switchChain: vi.fn(),
|
289
|
+
getChain: vi.fn().mockReturnValue(sepolia),
|
290
|
+
getConfig: vi.fn(),
|
291
|
+
} as unknown as Wallet;
|
292
|
+
});
|
305
293
|
|
306
|
-
|
307
|
-
|
308
|
-
);
|
309
|
-
});
|
310
|
-
});
|
294
|
+
it("should throw an error if trying to set a wallet without an account as active", async () => {
|
295
|
+
const manager = createConnectionManager(storage);
|
311
296
|
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
let account: Account;
|
297
|
+
await expect(manager.setActiveWallet(wallet)).rejects.toThrow(
|
298
|
+
"Cannot set a wallet without an account as active",
|
299
|
+
);
|
300
|
+
});
|
317
301
|
|
318
|
-
|
319
|
-
|
320
|
-
getItem: vi.fn(),
|
321
|
-
setItem: vi.fn(),
|
322
|
-
removeItem: vi.fn(),
|
323
|
-
};
|
324
|
-
client = TEST_CLIENT;
|
325
|
-
account = TEST_ACCOUNT_A;
|
326
|
-
wallet = {
|
327
|
-
id: "wallet-id",
|
328
|
-
getAccount: vi.fn().mockReturnValue(account),
|
329
|
-
subscribe: vi.fn().mockReturnValue(vi.fn()),
|
330
|
-
disconnect: vi.fn(),
|
331
|
-
switchChain: vi.fn(),
|
332
|
-
getChain: vi.fn().mockReturnValue(sepolia),
|
333
|
-
getConfig: vi.fn(),
|
334
|
-
} as unknown as Wallet;
|
335
|
-
});
|
302
|
+
it("should throw an error if handleConnection is called with a wallet without an account", async () => {
|
303
|
+
const manager = createConnectionManager(storage);
|
336
304
|
|
337
|
-
|
338
|
-
|
305
|
+
await expect(
|
306
|
+
manager.handleConnection(wallet, { client }),
|
307
|
+
).rejects.toThrow("Cannot set a wallet without an account as active");
|
308
|
+
});
|
309
|
+
});
|
339
310
|
|
340
|
-
|
311
|
+
describe("Connection Manager Event Subscriptions", () => {
|
312
|
+
let storage: AsyncStorage;
|
313
|
+
let client: ThirdwebClient;
|
314
|
+
let wallet: Wallet;
|
315
|
+
let account: Account;
|
316
|
+
|
317
|
+
beforeEach(() => {
|
318
|
+
storage = {
|
319
|
+
getItem: vi.fn(),
|
320
|
+
setItem: vi.fn(),
|
321
|
+
removeItem: vi.fn(),
|
322
|
+
};
|
323
|
+
client = TEST_CLIENT;
|
324
|
+
account = TEST_ACCOUNT_A;
|
325
|
+
wallet = {
|
326
|
+
id: "wallet-id",
|
327
|
+
getAccount: vi.fn().mockReturnValue(account),
|
328
|
+
subscribe: vi.fn().mockReturnValue(vi.fn()),
|
329
|
+
disconnect: vi.fn(),
|
330
|
+
switchChain: vi.fn(),
|
331
|
+
getChain: vi.fn().mockReturnValue(sepolia),
|
332
|
+
getConfig: vi.fn(),
|
333
|
+
} as unknown as Wallet;
|
334
|
+
});
|
341
335
|
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
336
|
+
it("should subscribe to accountChanged, chainChanged, and disconnect events", async () => {
|
337
|
+
const manager = createConnectionManager(storage);
|
338
|
+
|
339
|
+
await manager.handleConnection(wallet, { client });
|
340
|
+
|
341
|
+
expect(wallet.subscribe).toHaveBeenCalledWith(
|
342
|
+
"accountChanged",
|
343
|
+
expect.any(Function),
|
344
|
+
);
|
345
|
+
expect(wallet.subscribe).toHaveBeenCalledWith(
|
346
|
+
"chainChanged",
|
347
|
+
expect.any(Function),
|
348
|
+
);
|
349
|
+
expect(wallet.subscribe).toHaveBeenCalledWith(
|
350
|
+
"disconnect",
|
351
|
+
expect.any(Function),
|
352
|
+
);
|
353
|
+
});
|
354
354
|
});
|
355
355
|
});
|