Skip to content

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

Merged
Gudahtt merged 2 commits intomainfrom
fix-query-function
Jun 23, 2023
Merged

fix(controller-utils): Fix query function#1447
Gudahtt merged 2 commits intomainfrom
fix-query-function

Conversation

@Gudahtt
Copy link
Copy Markdown
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
Copy Markdown
Member Author

Gudahtt commented Jun 23, 2023

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

Comment thread packages/controller-utils/src/util.ts Outdated
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
Copy Markdown
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
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