Skip to content

Commit e0a8a4b

Browse files
authored
fix: perps not reconnecting on account switch (MetaMask#22068)
<!-- Please submit this PR as a draft initially. Do not mark it as "Ready for review" until the template has been completely filled out, and PR status checks have passed at least once. --> ## **Description** This PR introduces a change that keeps the Perps redux subscription active throughout the app lifecycle. This ensures that things like `reconnectWithNewContext()` gets triggered automatically when things like account switches get called. We were noticing that this reconnection was regressing on some [PerpsTab](MetaMask#22044) refactoring for full page scroll, so this should help mitigate this type of regression. I don't think this will introduce any major performance regression. The Redux subscription is pretty lightweight, and I think we can keep it alive throughout the app lifecycle. Worth reviewing with @abretonc7s here though. ## **Changelog** <!-- If this PR is not End-User-Facing and should not show up in the CHANGELOG, you can choose to either: 1. Write `CHANGELOG entry: null` 2. Label with `no-changelog` If this PR is End-User-Facing, please write a short User-Facing description in the past tense like: `CHANGELOG entry: Added a new tab for users to see their NFTs` `CHANGELOG entry: Fixed a bug that was causing some NFTs to flicker` (This helps the Release Engineer do their job more quickly and accurately) --> CHANGELOG entry: Maintain Perps redux state monitoring throughout app lifecycle ## **Related issues** Fixes: ## **Manual testing steps** ```gherkin Feature: my feature name Scenario: user [verb for user action] Given [describe expected initial app state] When user [verb for user action] Then [describe expected outcome] ``` ## **Screenshots/Recordings** <!-- If applicable, add screenshots and/or recordings to visualize the before and after of your change. --> ### **Before** <!-- [screenshots/recordings] --> ### **After** <!-- [screenshots/recordings] --> ## **Pre-merge author checklist** - [x] I’ve followed [MetaMask Contributor Docs](https://github.com/MetaMask/contributor-docs) and [MetaMask Mobile Coding Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/CODING_GUIDELINES.md). - [x] I've completed the PR template to the best of my ability - [x] I’ve included tests if applicable - [x] I’ve documented my code using [JSDoc](https://jsdoc.app/) format if applicable - [x] I’ve applied the right labels on the PR (see [labeling guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guidelines/LABELING_GUIDELINES.md)). Not required for external contributors. ## **Pre-merge reviewer checklist** - [ ] I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed). - [ ] I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > Keeps Perps Redux monitoring active by eliminating `cleanupStateMonitoring()` during disconnect/grace paths and only cleaning preloaded subscriptions. > > - **PerpsConnectionManager (`app/components/UI/Perps/services/PerpsConnectionManager.ts`)**: > - **Disconnection flow**: > - Remove calls to `cleanupStateMonitoring()` during actual/grace-period disconnection. > - Keep Redux monitoring active even when disconnecting or not connected. > - Continue cleaning only preloaded subscriptions via `cleanupPreloadedSubscriptions()`. > - **Grace period handling**: > - Drop redundant else-branches that previously cleaned up monitoring when not connected. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 7b92699. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY -->
1 parent a68cbf9 commit e0a8a4b

1 file changed

Lines changed: 0 additions & 9 deletions

File tree

app/components/UI/Perps/services/PerpsConnectionManager.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -260,9 +260,6 @@ class PerpsConnectionManagerClass {
260260
// Clean up preloaded subscriptions
261261
this.cleanupPreloadedSubscriptions();
262262

263-
// Clean up state monitoring when leaving Perps
264-
this.cleanupStateMonitoring();
265-
266263
// Reset state before disconnecting to prevent race conditions
267264
this.isConnected = false;
268265
this.isInitialized = false;
@@ -286,9 +283,6 @@ class PerpsConnectionManagerClass {
286283
})();
287284

288285
await this.disconnectPromise;
289-
} else {
290-
// Even if not connected, clean up monitoring when leaving Perps
291-
this.cleanupStateMonitoring();
292286
}
293287
} else {
294288
DevLogger.log(
@@ -819,9 +813,6 @@ class PerpsConnectionManagerClass {
819813
'PerpsConnectionManager: Starting grace period before disconnection',
820814
);
821815
this.scheduleGracePeriodDisconnection();
822-
} else {
823-
// Even if not connected, clean up monitoring when leaving Perps
824-
this.cleanupStateMonitoring();
825816
}
826817
}
827818
}

0 commit comments

Comments
 (0)