You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat!: move SnapPlatformWatcher in SnapAccountService + add :ensureReady and use it in MultichainAccountService (MetaMask#8715)
## Explanation
Now that we have a central place for Snap accounts logic, we can move
the `SnapPlatformWatcher` so we can use it (with an action) on the
`MultichainAccountService`.
Also adding a new `:ensureReady(snapId)` action that will be improved in
the future to make sure everything is ready when interacting with an
account management Snap (migration, platform is ready, keyring is ready,
etc...)
## References
N/A
## Checklist
- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/core/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/core/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them
<!-- CURSOR_SUMMARY -->
---
> [!NOTE]
> **Medium Risk**
> Introduces breaking messenger/API changes around Snap readiness (new
required `SnapAccountService:ensureReady`, removed
`MultichainAccountService:ensureCanUseSnapPlatform`), which can break
consumers and affect Snap-based account operations if integration is
incomplete.
>
> **Overview**
> **Moves Snap platform readiness checks out of
`@metamask/multichain-account-service` and into
`@metamask/snap-account-service`.** `SnapAccountService` now owns
`SnapPlatformWatcher`, adds a new
`SnapAccountService:ensureReady(snapId)` messenger action, and exposes
config for onboarding gating and Snap-keyring wait timeout.
>
> **Updates multichain Snap providers to use the new readiness flow.**
`MultichainAccountService` drops its `ensureCanUseSnapPlatform`
method/action and related config/types, and
`SnapAccountProvider.ensureCanUseSnapPlatform()` is renamed to
`ensureReady()` and now calls `SnapAccountService:ensureReady`. Tests,
messenger policies, dependency graph, and package deps/tsconfig
references are updated accordingly.
>
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
c41e954. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->
Copy file name to clipboardExpand all lines: packages/multichain-account-service/CHANGELOG.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
+
### Changed
11
+
12
+
-**BREAKING:** The service messenger now requires the `SnapAccountService:ensureReady` action to be declared ([#8715](https://github.com/MetaMask/core/pull/8715))
13
+
-**BREAKING:** Delegate Snap platform readiness to `@metamask/snap-account-service` ([#8715](https://github.com/MetaMask/core/pull/8715))
14
+
- Removed `MultichainAccountService.ensureCanUseSnapPlatform()` method and the corresponding `MultichainAccountService:ensureCanUseSnapPlatform` messenger action.
15
+
- Removed the `MultichainAccountServiceEnsureCanUseSnapPlatformAction` type export.
16
+
- Removed `MultichainAccountServiceOptions.ensureOnboardingComplete`. Configure it via `SnapAccountService`'s `config.snapPlatformWatcher.ensureOnboardingComplete` instead.
17
+
- Removed `MultichainAccountServiceConfig.snapPlatformWatcher` and the `SnapPlatformWatcherConfig` type export. Configure the keyring-wait timeout via `SnapAccountService`'s `config.snapPlatformWatcher.snapKeyringWaitTimeoutMs` instead.
18
+
- The service messenger no longer needs `SnapController:getState` or `SnapController:stateChange`.
19
+
-**BREAKING:** Rename `SnapAccountProvider.ensureCanUseSnapPlatform()` to `ensureReady()` ([#8715](https://github.com/MetaMask/core/pull/8715))
0 commit comments