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 where mandatory webhooks are skipped #1249

Merged
merged 4 commits into from
Nov 30, 2023

Conversation

nelsonwittwer
Copy link
Contributor

@nelsonwittwer nelsonwittwer commented Nov 29, 2023

Description

Fixes #1248

We need to still skip registration/unregistration of mandatory webhooks since they are handled in the partner dashboard, but we need to do so in a way that doesn't break the handler.

How has this been tested?

🎩 testing performed for this fix:

Tested on a test app

  • create a new sample app based off of the app template
  • verified mandatory webhooks are processed
Screenshot 2023-11-29 at 4 07 11 PM
  • Am able to subscribe to a new topic
Screenshot 2023-11-29 at 4 05 35 PM - [x] am able to unsubscribe to a new topic - [x] am able to recreate webhooks with the `shopify_app` gem. Added `ShopifyApp::WebhooksManager.recreate_webhooks!(session: current_shopify_session)` at the top of the `ProductsController#count` action and verified in logs recreate worked.

Checklist:

  • My commit message follow the pattern described in here
  • I have performed a self-review of my own code.
  • I have added tests that prove my fix is effective or that my feature works.
  • I have updated the project documentation.
  • I have added a changelog line.

@nelsonwittwer nelsonwittwer requested a review from a team as a code owner November 29, 2023 18:48
params(topic: String).returns(RegisterResult)
end
def mandatory_registration_result(topic)
RegisterResult.new(topic: topic, success: true, body: nil)
Copy link
Contributor

Choose a reason for hiding this comment

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

Would this be confusing to return that the mandatory webhooks are successfully registered, when they have they have not actually been registered? i.e. will this further confuse people into thinking they can register these webhook topics via the API?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Due to an unfortunate coupling of this registry and the async job processor, we still need to add mandatory topics to the @registry. You and I had the same thought, and in my last PR that caused this bug used a similar approach to the one you are suggesting.

We'll still need to add mandatory hooks to the @registry even if we don't explicitly register to them with the API. This is a gross boundary and I'd love to explore streamlining webhook registrations so we don't have to have this silly flow :(

Copy link
Contributor

Choose a reason for hiding this comment

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

I get that we need to add them to the registry currently. But do we need to return that we successfully registered them?

Could we skip pushing them to the array of topics we have registered? Or is there a way to return that they have not been successfully registered?

Copy link
Contributor

Choose a reason for hiding this comment

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

Or do we think removing them from the response of registered topics would break something else?

@nelsonwittwer nelsonwittwer changed the title WIP - refactor where mandatory webhooks are skipped refactor where mandatory webhooks are skipped Nov 29, 2023
@nelsonwittwer nelsonwittwer merged commit 98a3345 into main Nov 30, 2023
7 checks passed
@nelsonwittwer nelsonwittwer deleted the nw/mandatory_webhook_Fix branch November 30, 2023 18:22
garethson pushed a commit to garethson/shopify-api-ruby that referenced this pull request Dec 1, 2023
* refactor where mandatory webhooks are skipped

* changelog

* more explicit mandatory registration result

* lint
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.

Webhooks processing for mandatory webhooks is broken
2 participants