Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: Simplify Engine constructor #7091

Merged
merged 2 commits into from
Aug 31, 2023
Merged

Conversation

Gudahtt
Copy link
Member

@Gudahtt Gudahtt commented Aug 31, 2023

Development & PR Process

  1. Follow MetaMask Mobile Coding Standards
  2. Add release-xx label to identify the PR slated for a upcoming release (will be used in release discussion)
  3. Add needs-dev-review label when work is completed
  4. Add the appropiate QA label when dev review is completed
    • needs-qa: PR requires manual QA.
    • No QA/E2E only: PR does not require any manual QA effort. Prior to merging, ensure that you have successful end-to-end test runs in Bitrise.
    • Spot check on release build: PR does not require feature QA but needs non-automated verification. In the description section, provide test scenarios. Add screenshots, and or recordings of what was tested.
  5. Add QA Passed label when QA has signed off (Only required if the PR was labeled with needs-qa)
  6. Add your team's label, i.e. label starting with team- (or external-contributor label if your not a MetaMask employee)

Description

The Engine class is riddled with type errors, which has been making the controller updates difficult. In attempting to address these errors, one of the first obstacles was the conditional constructor. The types for the class would be a lot simpler if we could assume that certain properties were always initialized, but the condition prevents that.

The condition was meant to ensure that only one global Engine instance was ever constructed. This check has been moved to the init function at the end of the file instead. This has the same effect, as that function is the only place the Engine class is constructed (it's not exported). This is much easier for TypeScript to understand.

Issue

This relates to https://github.com/MetaMask/mobile-planning/issues/1015

Checklist

  • There is a related GitHub issue
  • Tests are included if applicable
  • Any added code is fully documented

@Gudahtt Gudahtt added needs-dev-review PR needs reviews from other engineers (in order to receive required approvals) team-mobile-platform labels Aug 31, 2023
@Gudahtt Gudahtt marked this pull request as ready for review August 31, 2023 12:33
@Gudahtt Gudahtt requested a review from a team as a code owner August 31, 2023 12:33
@Gudahtt
Copy link
Member Author

Gudahtt commented Aug 31, 2023

For reviewers, I'd strongly recommend using the "Hide whitespace" option in the diff view. Most of the changes are due to the constructor indentation change.

@codecov-commenter
Copy link

codecov-commenter commented Aug 31, 2023

Codecov Report

Patch coverage: 66.30% and project coverage change: -0.01% ⚠️

Comparison is base (61d1eb3) 32.83% compared to head (b6739b5) 32.82%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #7091      +/-   ##
==========================================
- Coverage   32.83%   32.82%   -0.01%     
==========================================
  Files        1001     1001              
  Lines       26709    26706       -3     
  Branches     2096     2095       -1     
==========================================
- Hits         8769     8766       -3     
  Misses      17524    17524              
  Partials      416      416              
Files Changed Coverage Δ
app/core/Engine.ts 57.21% <66.30%> (-0.63%) ⬇️

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Gudahtt
Copy link
Member Author

Gudahtt commented Aug 31, 2023

The Engine class is riddled with type errors, which has been making the
controller updates difficult. In attempting to address these errors,
one of the first obstacles was the conditional constructor. The types
for the class would be a lot simpler if we could assume that certain
properties were always initialized, but the condition prevents that.

The condition was meant to ensure that only one global Engine instance
was ever constructed. This check has been moved to the `init` function
at the end of the file instead. This has the same effect, as that
function is the only place the Engine class is constructed (it's not
exported). This is much easier for TypeScript to understand.

This relates to MetaMask/mobile-planning#1015
@Gudahtt Gudahtt force-pushed the simplify-engine-constructor branch from bfa2b63 to cd35edf Compare August 31, 2023 17:33
@github-actions
Copy link
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@sonarcloud
Copy link

sonarcloud bot commented Aug 31, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

91.7% 91.7% Coverage
0.0% 0.0% Duplication

warning The version of Java (11.0.20) you have used to run this analysis is deprecated and we will stop accepting it soon. Please update to at least Java 17.
Read more here

Copy link
Contributor

@Cal-L Cal-L left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Cal-L Cal-L added No QA Needed/E2E Only Apply this label when your PR does not need any QA effort. and removed needs-dev-review PR needs reviews from other engineers (in order to receive required approvals) labels Aug 31, 2023
@Gudahtt Gudahtt merged commit 49b007c into main Aug 31, 2023
13 checks passed
@Gudahtt Gudahtt deleted the simplify-engine-constructor branch August 31, 2023 19:55
@github-actions github-actions bot locked and limited conversation to collaborators Aug 31, 2023
@metamaskbot metamaskbot added the release-7.7.0 Issue or pull request that will be included in release 7.7.0 label Aug 31, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
No QA Needed/E2E Only Apply this label when your PR does not need any QA effort. release-7.7.0 Issue or pull request that will be included in release 7.7.0 team-mobile-platform
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants