@txnlab/use-wallet-solid 3.0.0-beta.9 → 3.0.0-rc.2

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/dev.cjs CHANGED
@@ -1,9 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var useWallet$1 = require('@txnlab/use-wallet');
4
3
  var solidStore = require('@tanstack/solid-store');
4
+ var algosdk = require('algosdk');
5
+ var useWallet$1 = require('@txnlab/use-wallet');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
5
8
 
6
- // src/index.tsx
9
+ var algosdk__default = /*#__PURE__*/_interopDefault(algosdk);
7
10
 
8
11
  // ../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js
9
12
  var sharedConfig = {
@@ -694,8 +697,6 @@ var booleans = [
694
697
  "playsInline",
695
698
  ...booleans
696
699
  ]);
697
-
698
- // src/WalletProvider.tsx
699
700
  var WalletContext = createContext();
700
701
  exports.WalletProvider = (props) => {
701
702
  const store = () => props.manager;
@@ -713,7 +714,7 @@ exports.WalletProvider = (props) => {
713
714
  }
714
715
  });
715
716
  };
716
- var useWalletManager = () => {
717
+ exports.useWalletManager = () => {
717
718
  const manager = useContext(WalletContext);
718
719
  if (!manager) {
719
720
  throw new Error("useWalletManager must be used within a WalletProvider");
@@ -721,14 +722,11 @@ var useWalletManager = () => {
721
722
  return manager();
722
723
  };
723
724
  function useWallet() {
724
- const manager = createMemo(() => useWalletManager());
725
- const walletStore = solidStore.useStore(manager().store, (state) => {
726
- return state.wallets;
727
- });
725
+ const manager = createMemo(() => exports.useWalletManager());
726
+ const [algodClient, setAlgodClient] = createSignal(manager().algodClient);
727
+ const walletStore = solidStore.useStore(manager().store, (state) => state.wallets);
728
728
  const walletState = (walletId) => walletStore()[walletId] || null;
729
- const activeWalletId = solidStore.useStore(manager().store, (state) => {
730
- return state.activeWallet;
731
- });
729
+ const activeWalletId = solidStore.useStore(manager().store, (state) => state.activeWallet);
732
730
  const activeWallet = () => manager().getWallet(activeWalletId()) || null;
733
731
  const activeWalletState = () => walletState(activeWalletId());
734
732
  const activeWalletAccounts = () => activeWalletState()?.accounts ?? null;
@@ -737,18 +735,34 @@ function useWallet() {
737
735
  const activeAddress = () => activeAccount()?.address ?? null;
738
736
  const isWalletActive = (walletId) => walletId === activeWalletId();
739
737
  const isWalletConnected = (walletId) => !!walletState(walletId)?.accounts.length || false;
740
- const activeNetworkState = createMemo(() => {
741
- return solidStore.useStore(manager().store, (state) => state.activeNetwork);
742
- });
743
- const activeNetwork = () => activeNetworkState()();
744
- const setActiveNetwork = (network) => manager().setActiveNetwork(network);
745
- const algodClient = createMemo(() => manager().algodClient);
746
- const signTransactions = (txnGroup, indexesToSign, returnGroup) => {
738
+ const activeNetwork = solidStore.useStore(manager().store, (state) => state.activeNetwork);
739
+ const setActiveNetwork = async (networkId) => {
740
+ if (activeNetwork() === networkId) {
741
+ return;
742
+ }
743
+ await manager().disconnect();
744
+ console.info(`[Solid] Creating Algodv2 client for ${networkId}...`);
745
+ const {
746
+ token,
747
+ baseServer,
748
+ port,
749
+ headers
750
+ } = manager().networkConfig[networkId];
751
+ const newClient = new algosdk__default.default.Algodv2(token, baseServer, port, headers);
752
+ setAlgodClient(newClient);
753
+ manager().algodClient = newClient;
754
+ manager().store.setState((state) => ({
755
+ ...state,
756
+ activeNetwork: networkId
757
+ }));
758
+ console.info(`[Solid] \u2705 Active network set to ${networkId}.`);
759
+ };
760
+ const signTransactions = (txnGroup, indexesToSign) => {
747
761
  const wallet = activeWallet();
748
762
  if (!wallet) {
749
763
  throw new Error("No active wallet");
750
764
  }
751
- return wallet.signTransactions(txnGroup, indexesToSign, returnGroup);
765
+ return wallet.signTransactions(txnGroup, indexesToSign);
752
766
  };
753
767
  const transactionSigner = (txnGroup, indexesToSign) => {
754
768
  const wallet = activeWallet();
@@ -771,6 +785,7 @@ function useWallet() {
771
785
  isWalletActive,
772
786
  isWalletConnected,
773
787
  setActiveNetwork,
788
+ setAlgodClient,
774
789
  signTransactions,
775
790
  transactionSigner,
776
791
  wallets: manager().wallets
package/dist/dev.js CHANGED
@@ -1,7 +1,6 @@
1
- export * from '@txnlab/use-wallet';
2
1
  import { useStore } from '@tanstack/solid-store';
3
-
4
- // src/index.tsx
2
+ import algosdk from 'algosdk';
3
+ export * from '@txnlab/use-wallet';
5
4
 
6
5
  // ../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js
7
6
  var sharedConfig = {
@@ -692,8 +691,6 @@ var booleans = [
692
691
  "playsInline",
693
692
  ...booleans
694
693
  ]);
695
-
696
- // src/WalletProvider.tsx
697
694
  var WalletContext = createContext();
698
695
  var WalletProvider = (props) => {
699
696
  const store = () => props.manager;
@@ -720,13 +717,10 @@ var useWalletManager = () => {
720
717
  };
721
718
  function useWallet() {
722
719
  const manager = createMemo(() => useWalletManager());
723
- const walletStore = useStore(manager().store, (state) => {
724
- return state.wallets;
725
- });
720
+ const [algodClient, setAlgodClient] = createSignal(manager().algodClient);
721
+ const walletStore = useStore(manager().store, (state) => state.wallets);
726
722
  const walletState = (walletId) => walletStore()[walletId] || null;
727
- const activeWalletId = useStore(manager().store, (state) => {
728
- return state.activeWallet;
729
- });
723
+ const activeWalletId = useStore(manager().store, (state) => state.activeWallet);
730
724
  const activeWallet = () => manager().getWallet(activeWalletId()) || null;
731
725
  const activeWalletState = () => walletState(activeWalletId());
732
726
  const activeWalletAccounts = () => activeWalletState()?.accounts ?? null;
@@ -735,18 +729,34 @@ function useWallet() {
735
729
  const activeAddress = () => activeAccount()?.address ?? null;
736
730
  const isWalletActive = (walletId) => walletId === activeWalletId();
737
731
  const isWalletConnected = (walletId) => !!walletState(walletId)?.accounts.length || false;
738
- const activeNetworkState = createMemo(() => {
739
- return useStore(manager().store, (state) => state.activeNetwork);
740
- });
741
- const activeNetwork = () => activeNetworkState()();
742
- const setActiveNetwork = (network) => manager().setActiveNetwork(network);
743
- const algodClient = createMemo(() => manager().algodClient);
744
- const signTransactions = (txnGroup, indexesToSign, returnGroup) => {
732
+ const activeNetwork = useStore(manager().store, (state) => state.activeNetwork);
733
+ const setActiveNetwork = async (networkId) => {
734
+ if (activeNetwork() === networkId) {
735
+ return;
736
+ }
737
+ await manager().disconnect();
738
+ console.info(`[Solid] Creating Algodv2 client for ${networkId}...`);
739
+ const {
740
+ token,
741
+ baseServer,
742
+ port,
743
+ headers
744
+ } = manager().networkConfig[networkId];
745
+ const newClient = new algosdk.Algodv2(token, baseServer, port, headers);
746
+ setAlgodClient(newClient);
747
+ manager().algodClient = newClient;
748
+ manager().store.setState((state) => ({
749
+ ...state,
750
+ activeNetwork: networkId
751
+ }));
752
+ console.info(`[Solid] \u2705 Active network set to ${networkId}.`);
753
+ };
754
+ const signTransactions = (txnGroup, indexesToSign) => {
745
755
  const wallet = activeWallet();
746
756
  if (!wallet) {
747
757
  throw new Error("No active wallet");
748
758
  }
749
- return wallet.signTransactions(txnGroup, indexesToSign, returnGroup);
759
+ return wallet.signTransactions(txnGroup, indexesToSign);
750
760
  };
751
761
  const transactionSigner = (txnGroup, indexesToSign) => {
752
762
  const wallet = activeWallet();
@@ -769,10 +779,11 @@ function useWallet() {
769
779
  isWalletActive,
770
780
  isWalletConnected,
771
781
  setActiveNetwork,
782
+ setAlgodClient,
772
783
  signTransactions,
773
784
  transactionSigner,
774
785
  wallets: manager().wallets
775
786
  };
776
787
  }
777
788
 
778
- export { WalletProvider, useWallet };
789
+ export { WalletProvider, useWallet, useWalletManager };
package/dist/dev.jsx CHANGED
@@ -1,5 +1,6 @@
1
1
  // src/index.tsx
2
- export * from "@txnlab/use-wallet";
2
+ import { useStore } from "@tanstack/solid-store";
3
+ import algosdk from "algosdk";
3
4
 
4
5
  // ../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js
5
6
  var sharedConfig = {
@@ -637,7 +638,8 @@ function createProvider(id, options) {
637
638
  var FALLBACK = Symbol("fallback");
638
639
  var SuspenseListContext = createContext();
639
640
 
640
- // src/WalletProvider.tsx
641
+ // src/index.tsx
642
+ export * from "@txnlab/use-wallet";
641
643
  var WalletContext = createContext();
642
644
  var WalletProvider = (props) => {
643
645
  const store = () => props.manager;
@@ -657,18 +659,12 @@ var useWalletManager = () => {
657
659
  }
658
660
  return manager();
659
661
  };
660
-
661
- // src/useWallet.ts
662
- import { useStore } from "@tanstack/solid-store";
663
662
  function useWallet() {
664
663
  const manager = createMemo(() => useWalletManager());
665
- const walletStore = useStore(manager().store, (state) => {
666
- return state.wallets;
667
- });
664
+ const [algodClient, setAlgodClient] = createSignal(manager().algodClient);
665
+ const walletStore = useStore(manager().store, (state) => state.wallets);
668
666
  const walletState = (walletId) => walletStore()[walletId] || null;
669
- const activeWalletId = useStore(manager().store, (state) => {
670
- return state.activeWallet;
671
- });
667
+ const activeWalletId = useStore(manager().store, (state) => state.activeWallet);
672
668
  const activeWallet = () => manager().getWallet(activeWalletId()) || null;
673
669
  const activeWalletState = () => walletState(activeWalletId());
674
670
  const activeWalletAccounts = () => activeWalletState()?.accounts ?? null;
@@ -677,18 +673,29 @@ function useWallet() {
677
673
  const activeAddress = () => activeAccount()?.address ?? null;
678
674
  const isWalletActive = (walletId) => walletId === activeWalletId();
679
675
  const isWalletConnected = (walletId) => !!walletState(walletId)?.accounts.length || false;
680
- const activeNetworkState = createMemo(() => {
681
- return useStore(manager().store, (state) => state.activeNetwork);
682
- });
683
- const activeNetwork = () => activeNetworkState()();
684
- const setActiveNetwork = (network) => manager().setActiveNetwork(network);
685
- const algodClient = createMemo(() => manager().algodClient);
686
- const signTransactions = (txnGroup, indexesToSign, returnGroup) => {
676
+ const activeNetwork = useStore(manager().store, (state) => state.activeNetwork);
677
+ const setActiveNetwork = async (networkId) => {
678
+ if (activeNetwork() === networkId) {
679
+ return;
680
+ }
681
+ await manager().disconnect();
682
+ console.info(`[Solid] Creating Algodv2 client for ${networkId}...`);
683
+ const { token, baseServer, port, headers } = manager().networkConfig[networkId];
684
+ const newClient = new algosdk.Algodv2(token, baseServer, port, headers);
685
+ setAlgodClient(newClient);
686
+ manager().algodClient = newClient;
687
+ manager().store.setState((state) => ({
688
+ ...state,
689
+ activeNetwork: networkId
690
+ }));
691
+ console.info(`[Solid] \u2705 Active network set to ${networkId}.`);
692
+ };
693
+ const signTransactions = (txnGroup, indexesToSign) => {
687
694
  const wallet = activeWallet();
688
695
  if (!wallet) {
689
696
  throw new Error("No active wallet");
690
697
  }
691
- return wallet.signTransactions(txnGroup, indexesToSign, returnGroup);
698
+ return wallet.signTransactions(txnGroup, indexesToSign);
692
699
  };
693
700
  const transactionSigner = (txnGroup, indexesToSign) => {
694
701
  const wallet = activeWallet();
@@ -711,6 +718,7 @@ function useWallet() {
711
718
  isWalletActive,
712
719
  isWalletConnected,
713
720
  setActiveNetwork,
721
+ setAlgodClient,
714
722
  signTransactions,
715
723
  transactionSigner,
716
724
  wallets: manager().wallets
@@ -718,5 +726,6 @@ function useWallet() {
718
726
  }
719
727
  export {
720
728
  WalletProvider,
721
- useWallet
729
+ useWallet,
730
+ useWalletManager
722
731
  };
package/dist/index.cjs CHANGED
@@ -1,9 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var useWallet$1 = require('@txnlab/use-wallet');
4
3
  var solidStore = require('@tanstack/solid-store');
4
+ var algosdk = require('algosdk');
5
+ var useWallet$1 = require('@txnlab/use-wallet');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
5
8
 
6
- // src/index.tsx
9
+ var algosdk__default = /*#__PURE__*/_interopDefault(algosdk);
7
10
 
8
11
  // ../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js
9
12
  var sharedConfig = {
@@ -694,8 +697,6 @@ var booleans = [
694
697
  "playsInline",
695
698
  ...booleans
696
699
  ]);
697
-
698
- // src/WalletProvider.tsx
699
700
  var WalletContext = createContext();
700
701
  exports.WalletProvider = (props) => {
701
702
  const store = () => props.manager;
@@ -712,7 +713,7 @@ exports.WalletProvider = (props) => {
712
713
  }
713
714
  });
714
715
  };
715
- var useWalletManager = () => {
716
+ exports.useWalletManager = () => {
716
717
  const manager = useContext(WalletContext);
717
718
  if (!manager) {
718
719
  throw new Error("useWalletManager must be used within a WalletProvider");
@@ -720,14 +721,11 @@ var useWalletManager = () => {
720
721
  return manager();
721
722
  };
722
723
  function useWallet() {
723
- const manager = createMemo(() => useWalletManager());
724
- const walletStore = solidStore.useStore(manager().store, (state) => {
725
- return state.wallets;
726
- });
724
+ const manager = createMemo(() => exports.useWalletManager());
725
+ const [algodClient, setAlgodClient] = createSignal(manager().algodClient);
726
+ const walletStore = solidStore.useStore(manager().store, (state) => state.wallets);
727
727
  const walletState = (walletId) => walletStore()[walletId] || null;
728
- const activeWalletId = solidStore.useStore(manager().store, (state) => {
729
- return state.activeWallet;
730
- });
728
+ const activeWalletId = solidStore.useStore(manager().store, (state) => state.activeWallet);
731
729
  const activeWallet = () => manager().getWallet(activeWalletId()) || null;
732
730
  const activeWalletState = () => walletState(activeWalletId());
733
731
  const activeWalletAccounts = () => activeWalletState()?.accounts ?? null;
@@ -736,18 +734,32 @@ function useWallet() {
736
734
  const activeAddress = () => activeAccount()?.address ?? null;
737
735
  const isWalletActive = (walletId) => walletId === activeWalletId();
738
736
  const isWalletConnected = (walletId) => !!walletState(walletId)?.accounts.length || false;
739
- const activeNetworkState = createMemo(() => {
740
- return solidStore.useStore(manager().store, (state) => state.activeNetwork);
741
- });
742
- const activeNetwork = () => activeNetworkState()();
743
- const setActiveNetwork = (network) => manager().setActiveNetwork(network);
744
- const algodClient = createMemo(() => manager().algodClient);
745
- const signTransactions = (txnGroup, indexesToSign, returnGroup) => {
737
+ const activeNetwork = solidStore.useStore(manager().store, (state) => state.activeNetwork);
738
+ const setActiveNetwork = async (networkId) => {
739
+ if (activeNetwork() === networkId) {
740
+ return;
741
+ }
742
+ await manager().disconnect();
743
+ const {
744
+ token,
745
+ baseServer,
746
+ port,
747
+ headers
748
+ } = manager().networkConfig[networkId];
749
+ const newClient = new algosdk__default.default.Algodv2(token, baseServer, port, headers);
750
+ setAlgodClient(newClient);
751
+ manager().algodClient = newClient;
752
+ manager().store.setState((state) => ({
753
+ ...state,
754
+ activeNetwork: networkId
755
+ }));
756
+ };
757
+ const signTransactions = (txnGroup, indexesToSign) => {
746
758
  const wallet = activeWallet();
747
759
  if (!wallet) {
748
760
  throw new Error("No active wallet");
749
761
  }
750
- return wallet.signTransactions(txnGroup, indexesToSign, returnGroup);
762
+ return wallet.signTransactions(txnGroup, indexesToSign);
751
763
  };
752
764
  const transactionSigner = (txnGroup, indexesToSign) => {
753
765
  const wallet = activeWallet();
@@ -770,6 +782,7 @@ function useWallet() {
770
782
  isWalletActive,
771
783
  isWalletConnected,
772
784
  setActiveNetwork,
785
+ setAlgodClient,
773
786
  signTransactions,
774
787
  transactionSigner,
775
788
  wallets: manager().wallets
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _txnlab_use_wallet from '@txnlab/use-wallet';
2
- import { WalletManager, WalletId, WalletState, NetworkId, WalletAccount } from '@txnlab/use-wallet';
2
+ import { WalletManager, WalletMetadata, WalletAccount, WalletId, WalletState, NetworkId } from '@txnlab/use-wallet';
3
3
  export * from '@txnlab/use-wallet';
4
4
  import * as solid_js from 'solid-js';
5
5
  import { JSX } from 'solid-js';
@@ -10,12 +10,24 @@ interface WalletProviderProps {
10
10
  children: JSX.Element;
11
11
  }
12
12
  declare const WalletProvider: (props: WalletProviderProps) => JSX.Element;
13
-
13
+ declare const useWalletManager: () => WalletManager;
14
+ interface Wallet {
15
+ id: () => string;
16
+ metadata: () => WalletMetadata;
17
+ accounts: () => WalletAccount[];
18
+ activeAccount: () => WalletAccount | null;
19
+ isConnected: () => boolean;
20
+ isActive: () => boolean;
21
+ connect: (args?: Record<string, any>) => Promise<WalletAccount[]>;
22
+ disconnect: () => Promise<void>;
23
+ setActive: () => void;
24
+ setActiveAccount: (address: string) => void;
25
+ }
14
26
  declare function useWallet(): {
15
27
  activeWalletId: solid_js.Accessor<WalletId | null>;
16
28
  walletStore: solid_js.Accessor<Partial<Record<WalletId, WalletState>>>;
17
29
  algodClient: solid_js.Accessor<algosdk.Algodv2>;
18
- activeNetwork: () => NetworkId;
30
+ activeNetwork: solid_js.Accessor<NetworkId>;
19
31
  activeWallet: () => _txnlab_use_wallet.BaseWallet | null;
20
32
  activeWalletAccounts: () => WalletAccount[] | null;
21
33
  activeWalletAddresses: () => string[] | null;
@@ -24,10 +36,11 @@ declare function useWallet(): {
24
36
  activeAddress: () => string | null;
25
37
  isWalletActive: (walletId: WalletId) => boolean;
26
38
  isWalletConnected: (walletId: WalletId) => boolean;
27
- setActiveNetwork: (network: NetworkId) => void;
28
- signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
39
+ setActiveNetwork: (networkId: NetworkId) => Promise<void>;
40
+ setAlgodClient: solid_js.Setter<algosdk.Algodv2>;
41
+ signTransactions: <T extends algosdk.Transaction[] | Uint8Array[]>(txnGroup: T | T[], indexesToSign?: number[]) => Promise<(Uint8Array | null)[]>;
29
42
  transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
30
43
  wallets: _txnlab_use_wallet.BaseWallet[];
31
44
  };
32
45
 
33
- export { WalletProvider, useWallet };
46
+ export { type Wallet, WalletProvider, useWallet, useWalletManager };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _txnlab_use_wallet from '@txnlab/use-wallet';
2
- import { WalletManager, WalletId, WalletState, NetworkId, WalletAccount } from '@txnlab/use-wallet';
2
+ import { WalletManager, WalletMetadata, WalletAccount, WalletId, WalletState, NetworkId } from '@txnlab/use-wallet';
3
3
  export * from '@txnlab/use-wallet';
4
4
  import * as solid_js from 'solid-js';
5
5
  import { JSX } from 'solid-js';
@@ -10,12 +10,24 @@ interface WalletProviderProps {
10
10
  children: JSX.Element;
11
11
  }
12
12
  declare const WalletProvider: (props: WalletProviderProps) => JSX.Element;
13
-
13
+ declare const useWalletManager: () => WalletManager;
14
+ interface Wallet {
15
+ id: () => string;
16
+ metadata: () => WalletMetadata;
17
+ accounts: () => WalletAccount[];
18
+ activeAccount: () => WalletAccount | null;
19
+ isConnected: () => boolean;
20
+ isActive: () => boolean;
21
+ connect: (args?: Record<string, any>) => Promise<WalletAccount[]>;
22
+ disconnect: () => Promise<void>;
23
+ setActive: () => void;
24
+ setActiveAccount: (address: string) => void;
25
+ }
14
26
  declare function useWallet(): {
15
27
  activeWalletId: solid_js.Accessor<WalletId | null>;
16
28
  walletStore: solid_js.Accessor<Partial<Record<WalletId, WalletState>>>;
17
29
  algodClient: solid_js.Accessor<algosdk.Algodv2>;
18
- activeNetwork: () => NetworkId;
30
+ activeNetwork: solid_js.Accessor<NetworkId>;
19
31
  activeWallet: () => _txnlab_use_wallet.BaseWallet | null;
20
32
  activeWalletAccounts: () => WalletAccount[] | null;
21
33
  activeWalletAddresses: () => string[] | null;
@@ -24,10 +36,11 @@ declare function useWallet(): {
24
36
  activeAddress: () => string | null;
25
37
  isWalletActive: (walletId: WalletId) => boolean;
26
38
  isWalletConnected: (walletId: WalletId) => boolean;
27
- setActiveNetwork: (network: NetworkId) => void;
28
- signTransactions: (txnGroup: algosdk.Transaction[] | algosdk.Transaction[][] | Uint8Array[] | Uint8Array[][], indexesToSign?: number[], returnGroup?: boolean) => Promise<Uint8Array[]>;
39
+ setActiveNetwork: (networkId: NetworkId) => Promise<void>;
40
+ setAlgodClient: solid_js.Setter<algosdk.Algodv2>;
41
+ signTransactions: <T extends algosdk.Transaction[] | Uint8Array[]>(txnGroup: T | T[], indexesToSign?: number[]) => Promise<(Uint8Array | null)[]>;
29
42
  transactionSigner: (txnGroup: algosdk.Transaction[], indexesToSign: number[]) => Promise<Uint8Array[]>;
30
43
  wallets: _txnlab_use_wallet.BaseWallet[];
31
44
  };
32
45
 
33
- export { WalletProvider, useWallet };
46
+ export { type Wallet, WalletProvider, useWallet, useWalletManager };
package/dist/index.js CHANGED
@@ -1,7 +1,6 @@
1
- export * from '@txnlab/use-wallet';
2
1
  import { useStore } from '@tanstack/solid-store';
3
-
4
- // src/index.tsx
2
+ import algosdk from 'algosdk';
3
+ export * from '@txnlab/use-wallet';
5
4
 
6
5
  // ../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js
7
6
  var sharedConfig = {
@@ -692,8 +691,6 @@ var booleans = [
692
691
  "playsInline",
693
692
  ...booleans
694
693
  ]);
695
-
696
- // src/WalletProvider.tsx
697
694
  var WalletContext = createContext();
698
695
  var WalletProvider = (props) => {
699
696
  const store = () => props.manager;
@@ -719,13 +716,10 @@ var useWalletManager = () => {
719
716
  };
720
717
  function useWallet() {
721
718
  const manager = createMemo(() => useWalletManager());
722
- const walletStore = useStore(manager().store, (state) => {
723
- return state.wallets;
724
- });
719
+ const [algodClient, setAlgodClient] = createSignal(manager().algodClient);
720
+ const walletStore = useStore(manager().store, (state) => state.wallets);
725
721
  const walletState = (walletId) => walletStore()[walletId] || null;
726
- const activeWalletId = useStore(manager().store, (state) => {
727
- return state.activeWallet;
728
- });
722
+ const activeWalletId = useStore(manager().store, (state) => state.activeWallet);
729
723
  const activeWallet = () => manager().getWallet(activeWalletId()) || null;
730
724
  const activeWalletState = () => walletState(activeWalletId());
731
725
  const activeWalletAccounts = () => activeWalletState()?.accounts ?? null;
@@ -734,18 +728,32 @@ function useWallet() {
734
728
  const activeAddress = () => activeAccount()?.address ?? null;
735
729
  const isWalletActive = (walletId) => walletId === activeWalletId();
736
730
  const isWalletConnected = (walletId) => !!walletState(walletId)?.accounts.length || false;
737
- const activeNetworkState = createMemo(() => {
738
- return useStore(manager().store, (state) => state.activeNetwork);
739
- });
740
- const activeNetwork = () => activeNetworkState()();
741
- const setActiveNetwork = (network) => manager().setActiveNetwork(network);
742
- const algodClient = createMemo(() => manager().algodClient);
743
- const signTransactions = (txnGroup, indexesToSign, returnGroup) => {
731
+ const activeNetwork = useStore(manager().store, (state) => state.activeNetwork);
732
+ const setActiveNetwork = async (networkId) => {
733
+ if (activeNetwork() === networkId) {
734
+ return;
735
+ }
736
+ await manager().disconnect();
737
+ const {
738
+ token,
739
+ baseServer,
740
+ port,
741
+ headers
742
+ } = manager().networkConfig[networkId];
743
+ const newClient = new algosdk.Algodv2(token, baseServer, port, headers);
744
+ setAlgodClient(newClient);
745
+ manager().algodClient = newClient;
746
+ manager().store.setState((state) => ({
747
+ ...state,
748
+ activeNetwork: networkId
749
+ }));
750
+ };
751
+ const signTransactions = (txnGroup, indexesToSign) => {
744
752
  const wallet = activeWallet();
745
753
  if (!wallet) {
746
754
  throw new Error("No active wallet");
747
755
  }
748
- return wallet.signTransactions(txnGroup, indexesToSign, returnGroup);
756
+ return wallet.signTransactions(txnGroup, indexesToSign);
749
757
  };
750
758
  const transactionSigner = (txnGroup, indexesToSign) => {
751
759
  const wallet = activeWallet();
@@ -768,10 +776,11 @@ function useWallet() {
768
776
  isWalletActive,
769
777
  isWalletConnected,
770
778
  setActiveNetwork,
779
+ setAlgodClient,
771
780
  signTransactions,
772
781
  transactionSigner,
773
782
  wallets: manager().wallets
774
783
  };
775
784
  }
776
785
 
777
- export { WalletProvider, useWallet };
786
+ export { WalletProvider, useWallet, useWalletManager };
package/dist/index.jsx CHANGED
@@ -1,5 +1,6 @@
1
1
  // src/index.tsx
2
- export * from "@txnlab/use-wallet";
2
+ import { useStore } from "@tanstack/solid-store";
3
+ import algosdk from "algosdk";
3
4
 
4
5
  // ../../node_modules/.pnpm/solid-js@1.8.16/node_modules/solid-js/dist/solid.js
5
6
  var sharedConfig = {
@@ -637,7 +638,8 @@ function createProvider(id, options) {
637
638
  var FALLBACK = Symbol("fallback");
638
639
  var SuspenseListContext = createContext();
639
640
 
640
- // src/WalletProvider.tsx
641
+ // src/index.tsx
642
+ export * from "@txnlab/use-wallet";
641
643
  var WalletContext = createContext();
642
644
  var WalletProvider = (props) => {
643
645
  const store = () => props.manager;
@@ -656,18 +658,12 @@ var useWalletManager = () => {
656
658
  }
657
659
  return manager();
658
660
  };
659
-
660
- // src/useWallet.ts
661
- import { useStore } from "@tanstack/solid-store";
662
661
  function useWallet() {
663
662
  const manager = createMemo(() => useWalletManager());
664
- const walletStore = useStore(manager().store, (state) => {
665
- return state.wallets;
666
- });
663
+ const [algodClient, setAlgodClient] = createSignal(manager().algodClient);
664
+ const walletStore = useStore(manager().store, (state) => state.wallets);
667
665
  const walletState = (walletId) => walletStore()[walletId] || null;
668
- const activeWalletId = useStore(manager().store, (state) => {
669
- return state.activeWallet;
670
- });
666
+ const activeWalletId = useStore(manager().store, (state) => state.activeWallet);
671
667
  const activeWallet = () => manager().getWallet(activeWalletId()) || null;
672
668
  const activeWalletState = () => walletState(activeWalletId());
673
669
  const activeWalletAccounts = () => activeWalletState()?.accounts ?? null;
@@ -676,18 +672,27 @@ function useWallet() {
676
672
  const activeAddress = () => activeAccount()?.address ?? null;
677
673
  const isWalletActive = (walletId) => walletId === activeWalletId();
678
674
  const isWalletConnected = (walletId) => !!walletState(walletId)?.accounts.length || false;
679
- const activeNetworkState = createMemo(() => {
680
- return useStore(manager().store, (state) => state.activeNetwork);
681
- });
682
- const activeNetwork = () => activeNetworkState()();
683
- const setActiveNetwork = (network) => manager().setActiveNetwork(network);
684
- const algodClient = createMemo(() => manager().algodClient);
685
- const signTransactions = (txnGroup, indexesToSign, returnGroup) => {
675
+ const activeNetwork = useStore(manager().store, (state) => state.activeNetwork);
676
+ const setActiveNetwork = async (networkId) => {
677
+ if (activeNetwork() === networkId) {
678
+ return;
679
+ }
680
+ await manager().disconnect();
681
+ const { token, baseServer, port, headers } = manager().networkConfig[networkId];
682
+ const newClient = new algosdk.Algodv2(token, baseServer, port, headers);
683
+ setAlgodClient(newClient);
684
+ manager().algodClient = newClient;
685
+ manager().store.setState((state) => ({
686
+ ...state,
687
+ activeNetwork: networkId
688
+ }));
689
+ };
690
+ const signTransactions = (txnGroup, indexesToSign) => {
686
691
  const wallet = activeWallet();
687
692
  if (!wallet) {
688
693
  throw new Error("No active wallet");
689
694
  }
690
- return wallet.signTransactions(txnGroup, indexesToSign, returnGroup);
695
+ return wallet.signTransactions(txnGroup, indexesToSign);
691
696
  };
692
697
  const transactionSigner = (txnGroup, indexesToSign) => {
693
698
  const wallet = activeWallet();
@@ -710,6 +715,7 @@ function useWallet() {
710
715
  isWalletActive,
711
716
  isWalletConnected,
712
717
  setActiveNetwork,
718
+ setAlgodClient,
713
719
  signTransactions,
714
720
  transactionSigner,
715
721
  wallets: manager().wallets
@@ -717,5 +723,6 @@ function useWallet() {
717
723
  }
718
724
  export {
719
725
  WalletProvider,
720
- useWallet
726
+ useWallet,
727
+ useWalletManager
721
728
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@txnlab/use-wallet-solid",
3
- "version": "3.0.0-beta.9",
3
+ "version": "3.0.0-rc.2",
4
4
  "description": "Solid.js library for integrating Algorand wallets into decentralized applications",
5
5
  "author": "Doug Richar <drichar@gmail.com>",
6
6
  "license": "MIT",
@@ -54,7 +54,7 @@
54
54
  ],
55
55
  "dependencies": {
56
56
  "@tanstack/solid-store": "0.4.1",
57
- "@txnlab/use-wallet": "3.0.0-beta.9"
57
+ "@txnlab/use-wallet": "3.0.0-rc.2"
58
58
  },
59
59
  "devDependencies": {
60
60
  "@solidjs/testing-library": "^0.8.5",
@@ -66,16 +66,25 @@
66
66
  },
67
67
  "peerDependencies": {
68
68
  "@blockshake/defly-connect": "^1.1.6",
69
+ "@magic-ext/algorand": "^23.0.2",
70
+ "@perawallet/connect": "^1.3.4",
69
71
  "@perawallet/connect-beta": "^2.0.11",
70
72
  "@walletconnect/modal": "^2.6.2",
71
73
  "@walletconnect/sign-client": "^2.10.2",
72
74
  "algosdk": "^2.7.0",
73
- "lute-connect": "^1.2.0"
75
+ "lute-connect": "^1.2.0",
76
+ "magic-sdk": "^28.0.3"
74
77
  },
75
78
  "peerDependenciesMeta": {
76
79
  "@blockshake/defly-connect": {
77
80
  "optional": true
78
81
  },
82
+ "@magic-ext/algorand": {
83
+ "optional": true
84
+ },
85
+ "@perawallet/connect": {
86
+ "optional": true
87
+ },
79
88
  "@perawallet/connect-beta": {
80
89
  "optional": true
81
90
  },
@@ -87,6 +96,9 @@
87
96
  },
88
97
  "lute-connect": {
89
98
  "optional": true
99
+ },
100
+ "magic-sdk": {
101
+ "optional": true
90
102
  }
91
103
  },
92
104
  "browser": {},