Skip to content

fix(controller-utils): Fix query function #1447

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

Merged
merged 2 commits into from
Jun 23, 2023
Merged

fix(controller-utils): Fix query function #1447

merged 2 commits into from
Jun 23, 2023

Conversation

Gudahtt
Copy link
Member

@Gudahtt Gudahtt commented Jun 23, 2023

Explanation

The query function was updated in #1266 to use hasProperty has part of an effect to improve the types being used. Unfortunately this had the unexpected affected of breaking this condition because hasProperty doesn't look up the prototype chain, but the method we were checking for was on the prototype. hasProperty is only meant to be used with plain objects.

The condition has been updated to use in, and the tests have been updated to use a more realistic EthQuery mock that has methods as prototypes.

To fix various type errors, an old inlined EthQueryLike type has been replaced by the real EthQuery type. This required adding eth-query as a dependency to the controller utils package.

References

Related to MetaMask/metamask-extension#19735

Changelog

@metamask/controller-utils

  • FIXED: Fix bug where query function failed to call built-in EthQuery methods
  • CHANGED: Add dependencies eth-query and babel-runtime

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 highlighted breaking changes using the "BREAKING" category above as appropriate

@Gudahtt Gudahtt requested a review from a team as a code owner June 23, 2023 18:18
@Gudahtt
Copy link
Member Author

Gudahtt commented Jun 23, 2023

Whoops, a few more type errors to fix. Working on that now.

The `query` function was updated in #1266 to use `hasProperty` has part
of an effect to improve the types being used. Unfortunately this had
the unexpected affected of breaking this condition because
`hasProperty` doesn't look up the prototype chain, but the method we
were checking for was on the prototype. `hasProperty` is only meant to
be used with plain objects.

The condition has been updated to use `in`, and the tests have been
updated to use a more realistic EthQuery mock that has methods as
prototypes.

To fix various type errors, an old inlined EthQueryLike type has been
replaced by the real EthQuery type. This required adding `eth-query` as
a dependency to the controller utils package.
@Gudahtt Gudahtt force-pushed the fix-query-function branch from a2a465b to a9896ab Compare June 23, 2023 18:35
Copy link
Contributor

@danjm danjm left a comment

Choose a reason for hiding this comment

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

LGTM! In addition to code review, I did some manual QA with reference to MetaMask/metamask-extension#19735

@Gudahtt Gudahtt merged commit d2adbe8 into main Jun 23, 2023
@Gudahtt Gudahtt deleted the fix-query-function branch June 23, 2023 19:28
MajorLift pushed a commit that referenced this pull request Oct 11, 2023
The `query` function was updated in #1266 to use `hasProperty` has part
of an effect to improve the types being used. Unfortunately this had
the unexpected affected of breaking this condition because
`hasProperty` doesn't look up the prototype chain, but the method we
were checking for was on the prototype. `hasProperty` is only meant to
be used with plain objects.

The condition has been updated to use `in`, and the tests have been
updated to use a more realistic EthQuery mock that has methods as
prototypes.

To fix various type errors, an old inlined EthQueryLike type has been
replaced by the real EthQuery type. This required adding `eth-query` as
a dependency to the controller utils package.
MajorLift pushed a commit that referenced this pull request Oct 11, 2023
The `query` function was updated in #1266 to use `hasProperty` has part
of an effect to improve the types being used. Unfortunately this had
the unexpected affected of breaking this condition because
`hasProperty` doesn't look up the prototype chain, but the method we
were checking for was on the prototype. `hasProperty` is only meant to
be used with plain objects.

The condition has been updated to use `in`, and the tests have been
updated to use a more realistic EthQuery mock that has methods as
prototypes.

To fix various type errors, an old inlined EthQueryLike type has been
replaced by the real EthQuery type. This required adding `eth-query` as
a dependency to the controller utils package.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants