@@ -988,24 +988,31 @@ export class AccountsController extends BaseController<
988
988
#handleOnSnapStateChange( snapState : SnapControllerState ) {
989
989
// only check if snaps changed in status
990
990
const { snaps } = snapState ;
991
- const accounts = this . listMultichainAccounts ( ) . filter (
992
- ( account ) => account . metadata . snap ,
993
- ) ;
994
991
995
- this . update ( ( currentState ) => {
996
- accounts . forEach ( ( account ) => {
997
- const currentAccount =
998
- currentState . internalAccounts . accounts [ account . id ] ;
999
- if ( currentAccount . metadata . snap ) {
1000
- const snapId = currentAccount . metadata . snap . id ;
1001
- const storedSnap : Snap = snaps [ snapId as SnapId ] ;
1002
- if ( storedSnap ) {
1003
- currentAccount . metadata . snap . enabled =
1004
- storedSnap . enabled && ! storedSnap . blocked ;
992
+ const accounts : { id : string ; enabled : boolean } [ ] = [ ] ;
993
+ for ( const account of this . listMultichainAccounts ( ) ) {
994
+ if ( account . metadata . snap ) {
995
+ const snap : Snap = snaps [ account . metadata . snap . id as SnapId ] ;
996
+ const enabled = snap . enabled && ! snap . blocked ;
997
+ const metadata = account . metadata . snap ;
998
+
999
+ if ( metadata . enabled !== enabled ) {
1000
+ accounts . push ( { id : account . id , enabled } ) ;
1001
+ }
1002
+ }
1003
+ }
1004
+
1005
+ if ( accounts . length > 0 ) {
1006
+ this . update ( ( state ) => {
1007
+ for ( const { id, enabled } of accounts ) {
1008
+ const account = state . internalAccounts . accounts [ id ] ;
1009
+
1010
+ if ( account . metadata . snap ) {
1011
+ account . metadata . snap . enabled = enabled ;
1005
1012
}
1006
1013
}
1007
1014
} ) ;
1008
- } ) ;
1015
+ }
1009
1016
}
1010
1017
1011
1018
/**
0 commit comments