diff --git a/CHANGELOG.md b/CHANGELOG.md index 492a626..dc4f481 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 1.0.0-rc.5 +* 🐛 Fix watchAccount method + ## 1.0.0-rc.4 * ✨ reconnect method implemented. diff --git a/example/lib/main.dart b/example/lib/main.dart index ee05585..3f83bf0 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -860,15 +860,20 @@ class _MyAppState extends State { ElevatedButton( onPressed: () async { final watchAccountParameters = wagmi.WatchAccountParameters( - onChange: (accountInfo) => setState(() { - debugPrint('accountInfo changed : $accountInfo'); - if (accountInfo['isConnected'] && - accountInfo['addresses'].length >= 2) { + onChange: (account, prevAccount) => setState(() { + debugPrint( + 'accountInfo new : ${account.address ?? 'unknown'}', + ); + debugPrint( + 'accountInfo prev : ${prevAccount.address ?? 'unknown'}', + ); + + if (account.isConnected && account.address != null) { // show snackbar ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( - 'Account switched to ${accountInfo['address']}', + 'Account switched from ${prevAccount.address} to ${account.address}', ), ), ); diff --git a/example/pubspec.lock b/example/pubspec.lock index 3d3d1e2..497b83a 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -284,18 +284,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.dev" source: hosted - version: "10.0.5" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806" + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "3.0.5" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: @@ -324,18 +324,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.11.1" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.12.0" package_config: dependency: transitive description: @@ -473,10 +473,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.7.2" + version: "0.7.0" typed_data: dependency: transitive description: @@ -609,17 +609,17 @@ packages: dependency: transitive description: name: vm_service - sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d" + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "14.2.5" + version: "14.2.1" wagmi_flutter_web: dependency: "direct main" description: path: ".." relative: true source: path - version: "1.0.0-rc.3" + version: "1.0.0-rc.4" watcher: dependency: transitive description: diff --git a/lib/src/actions/watch_account.dart b/lib/src/actions/watch_account.dart index e2df6ff..31e71f9 100644 --- a/lib/src/actions/watch_account.dart +++ b/lib/src/actions/watch_account.dart @@ -1,10 +1,15 @@ +import 'package:wagmi_flutter_web/src/models/account.dart'; + /// [Documentation API](https://wagmi.sh/core/api/actions/watchAccount) -typedef OnChangeCallback2 = void Function(Map accounts); +typedef OnChangeCallbackWatchAccount = void Function( + Account account, + Account prevAccount, +); class WatchAccountParameters { WatchAccountParameters({required this.onChange}); - final OnChangeCallback2 onChange; + final OnChangeCallbackWatchAccount onChange; } typedef WatchAccountReturnType = void Function(); diff --git a/lib/src/js/actions/watch_account.js.dart b/lib/src/js/actions/watch_account.js.dart index 3c6883c..62b2260 100644 --- a/lib/src/js/actions/watch_account.js.dart +++ b/lib/src/js/actions/watch_account.js.dart @@ -5,7 +5,7 @@ part of '../wagmi.js.dart'; @JS() extension type JSWatchAccountParameters._(JSObject _) implements JSObject { external JSWatchAccountParameters({ - JSFunction onChange, + required JSFunction onChange, }); external JSFunction onChange; @@ -22,10 +22,12 @@ extension JSWatchAccountReturnTypeConversion on JSWatchAccountReturnType { } extension JSWatchAccountParametersConversion on WatchAccountParameters { - // convert dart function to js function - JSWatchAccountParameters get toJS1 => JSWatchAccountParameters( - onChange: ((JSObject accounts) { - onChange(accounts.toMap(deep: false)); + JSWatchAccountParameters get toJSWatchAccount => JSWatchAccountParameters( + onChange: js_util + .allowInterop((JSAccount currentAccount, JSAccount prevAccount) { + final accountDart = currentAccount.toDart; + final prevAccountDart = prevAccount.toDart; + onChange(accountDart, prevAccountDart); }).toJS, ); } diff --git a/lib/src/js/wagmi_core.js.dart b/lib/src/js/wagmi_core.js.dart index b4d617b..db6b2de 100644 --- a/lib/src/js/wagmi_core.js.dart +++ b/lib/src/js/wagmi_core.js.dart @@ -128,7 +128,7 @@ extension type JSWagmiCore(JSObject _) implements JSObject { // watch account external JSPromise watchAccount( JSString configKey, - JSWatchAccountParameters watchChainIdParameters, + JSWatchAccountParameters watchAccountParameters, ); // watch connections diff --git a/lib/src/wagmi_core.dart b/lib/src/wagmi_core.dart index 22fd4f1..e9b8548 100644 --- a/lib/src/wagmi_core.dart +++ b/lib/src/wagmi_core.dart @@ -470,7 +470,7 @@ class Core { final result = await window.wagmiCore .watchAccount( configKey.toJS, - watchAccountParameters.toJS1, + watchAccountParameters.toJSWatchAccount, ) .toDart; return result.toDart; diff --git a/pubspec.yaml b/pubspec.yaml index 1b3c157..2414746 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: wagmi_flutter_web description: "Wagmi JS SDK wrapper for Dart Web" -version: 1.0.0-rc.4 +version: 1.0.0-rc.5 homepage: https://github.com/archethic-foundation/wagmi_flutter_web environment: