@monygroupcorp/micro-web3 1.2.2 → 1.2.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@monygroupcorp/micro-web3",
3
- "version": "1.2.2",
3
+ "version": "1.2.3",
4
4
  "description": "A lean, reusable Web3 toolkit with components for wallet connection, IPFS, and common Web3 UI patterns.",
5
5
  "main": "dist/micro-web3.cjs",
6
6
  "module": "dist/micro-web3.esm.js",
@@ -566,7 +566,58 @@ class WalletService {
566
566
  signer: this.signer
567
567
  };
568
568
  }
569
-
569
+
570
+ /**
571
+ * Programmatically set the connected state.
572
+ * Useful for migrating from manual workarounds or external connection management.
573
+ *
574
+ * @param {Object} state - The connection state to set
575
+ * @param {string} state.address - The connected wallet address
576
+ * @param {Object} state.provider - The raw provider (window.ethereum or similar)
577
+ * @param {Object} [state.ethersProvider] - Optional ethers Web3Provider (created if not provided)
578
+ * @param {Object} [state.signer] - Optional ethers signer (created if not provided)
579
+ * @param {string} [state.walletType='metamask'] - The wallet type identifier
580
+ * @param {boolean} [emitEvent=true] - Whether to emit wallet:connected event
581
+ * @returns {void}
582
+ */
583
+ setConnectedState({ address, provider, ethersProvider, signer, walletType = 'metamask' }, emitEvent = true) {
584
+ if (!address) {
585
+ throw new Error('setConnectedState requires an address');
586
+ }
587
+ if (!provider) {
588
+ throw new Error('setConnectedState requires a provider');
589
+ }
590
+
591
+ // Update internal state
592
+ this.provider = provider;
593
+ this.connectedAddress = address;
594
+ this.connected = true;
595
+ this.selectedWallet = walletType;
596
+
597
+ // Create ethers provider/signer if not provided
598
+ this.ethersProvider = ethersProvider || new ethers.providers.Web3Provider(provider, 'any');
599
+ this.signer = signer || this.ethersProvider.getSigner();
600
+
601
+ // Set up event listeners for the provider
602
+ this.setupEventListeners();
603
+
604
+ // Store wallet type for future auto-reconnect
605
+ localStorage.setItem('ms2fun_lastWallet', walletType);
606
+
607
+ console.log('[WalletService] State set programmatically:', address);
608
+
609
+ // Emit event so UI components update
610
+ if (emitEvent) {
611
+ this.eventBus.emit('wallet:connected', {
612
+ address: this.connectedAddress,
613
+ walletType: this.selectedWallet,
614
+ provider: this.provider,
615
+ ethersProvider: this.ethersProvider,
616
+ signer: this.signer
617
+ });
618
+ }
619
+ }
620
+
570
621
  /**
571
622
  * Handle network changes
572
623
  * @private