Skip to content

Conversation

@tuna1207
Copy link
Member

@tuna1207 tuna1207 commented Nov 25, 2025

Explanation

This PR update subscription controller submitShieldSubscriptionCryptoApproval method to handle change payment method if subscription already exist.

References

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 communicated my changes to consumers by updating changelogs for packages I've changed, highlighting breaking changes as necessary
  • I've prepared draft pull requests for clients and consumer packages to resolve any breaking changes

Note

Updates Shield crypto-approval flow to update payment method when a subscription exists and validates subscription status before proceeding.

  • Subscription Controller:
    • submitShieldSubscriptionCryptoApproval: Fetches latest subscriptions, detects existing SHIELD subscription, and calls updatePaymentMethod (crypto) with tx data; otherwise starts a new crypto subscription; refreshes state afterward.
    • Validation: Adds #assertValidSubscriptionStateForCryptoApproval to allow only specific SubscriptionStatus values; introduces error SubscriptionNotValidForCryptoApproval and wires SUBSCRIPTION_STATUSES/SubscriptionStatus.
  • Tests:
    • Adds tests for payment-method change path and invalid subscription status; updates mocks to reflect fresh subscription fetch ordering.
  • Changelog:
    • Notes the new behavior for handling payment-method change in crypto approval.

Written by Cursor Bugbot for commit 93c103b. This will update automatically on new commits. Configure here.

@tuna1207 tuna1207 marked this pull request as ready for review November 25, 2025 10:34
@tuna1207 tuna1207 requested review from a team as code owners November 25, 2025 10:34
@tuna1207
Copy link
Member Author

@metamaskbot publish-preview

@github-actions
Copy link
Contributor

Preview builds have been published. See these instructions for more information about preview builds.

Expand for full list of packages and versions.
{
  "@metamask-previews/account-tree-controller": "4.0.0-preview-93c103b6",
  "@metamask-previews/accounts-controller": "35.0.0-preview-93c103b6",
  "@metamask-previews/address-book-controller": "7.0.1-preview-93c103b6",
  "@metamask-previews/analytics-controller": "0.0.0-preview-93c103b6",
  "@metamask-previews/announcement-controller": "8.0.0-preview-93c103b6",
  "@metamask-previews/app-metadata-controller": "2.0.0-preview-93c103b6",
  "@metamask-previews/approval-controller": "8.0.0-preview-93c103b6",
  "@metamask-previews/assets-controllers": "91.0.0-preview-93c103b6",
  "@metamask-previews/base-controller": "9.0.0-preview-93c103b6",
  "@metamask-previews/bridge-controller": "63.1.0-preview-93c103b6",
  "@metamask-previews/bridge-status-controller": "63.0.0-preview-93c103b6",
  "@metamask-previews/build-utils": "3.0.4-preview-93c103b6",
  "@metamask-previews/chain-agnostic-permission": "1.2.2-preview-93c103b6",
  "@metamask-previews/claims-controller": "0.2.0-preview-93c103b6",
  "@metamask-previews/composable-controller": "12.0.0-preview-93c103b6",
  "@metamask-previews/controller-utils": "11.16.0-preview-93c103b6",
  "@metamask-previews/core-backend": "5.0.0-preview-93c103b6",
  "@metamask-previews/delegation-controller": "2.0.0-preview-93c103b6",
  "@metamask-previews/earn-controller": "11.0.0-preview-93c103b6",
  "@metamask-previews/eip-5792-middleware": "2.0.0-preview-93c103b6",
  "@metamask-previews/eip-7702-internal-rpc-middleware": "0.1.0-preview-93c103b6",
  "@metamask-previews/eip1193-permission-middleware": "1.0.2-preview-93c103b6",
  "@metamask-previews/ens-controller": "19.0.0-preview-93c103b6",
  "@metamask-previews/error-reporting-service": "3.0.0-preview-93c103b6",
  "@metamask-previews/eth-block-tracker": "15.0.0-preview-93c103b6",
  "@metamask-previews/eth-json-rpc-middleware": "22.0.0-preview-93c103b6",
  "@metamask-previews/eth-json-rpc-provider": "6.0.0-preview-93c103b6",
  "@metamask-previews/foundryup": "1.0.1-preview-93c103b6",
  "@metamask-previews/gas-fee-controller": "26.0.0-preview-93c103b6",
  "@metamask-previews/gator-permissions-controller": "0.6.0-preview-93c103b6",
  "@metamask-previews/json-rpc-engine": "10.2.0-preview-93c103b6",
  "@metamask-previews/json-rpc-middleware-stream": "8.0.8-preview-93c103b6",
  "@metamask-previews/keyring-controller": "25.0.0-preview-93c103b6",
  "@metamask-previews/logging-controller": "7.0.1-preview-93c103b6",
  "@metamask-previews/message-manager": "14.1.0-preview-93c103b6",
  "@metamask-previews/messenger": "0.3.0-preview-93c103b6",
  "@metamask-previews/multichain-account-service": "4.0.0-preview-93c103b6",
  "@metamask-previews/multichain-api-middleware": "1.2.4-preview-93c103b6",
  "@metamask-previews/multichain-network-controller": "3.0.0-preview-93c103b6",
  "@metamask-previews/multichain-transactions-controller": "7.0.0-preview-93c103b6",
  "@metamask-previews/name-controller": "9.0.0-preview-93c103b6",
  "@metamask-previews/network-controller": "26.0.0-preview-93c103b6",
  "@metamask-previews/network-enablement-controller": "4.0.0-preview-93c103b6",
  "@metamask-previews/notification-services-controller": "21.0.0-preview-93c103b6",
  "@metamask-previews/permission-controller": "12.1.1-preview-93c103b6",
  "@metamask-previews/permission-log-controller": "5.0.0-preview-93c103b6",
  "@metamask-previews/phishing-controller": "16.1.0-preview-93c103b6",
  "@metamask-previews/polling-controller": "16.0.0-preview-93c103b6",
  "@metamask-previews/preferences-controller": "22.0.0-preview-93c103b6",
  "@metamask-previews/profile-sync-controller": "27.0.0-preview-93c103b6",
  "@metamask-previews/rate-limit-controller": "7.0.0-preview-93c103b6",
  "@metamask-previews/remote-feature-flag-controller": "2.0.1-preview-93c103b6",
  "@metamask-previews/sample-controllers": "4.0.0-preview-93c103b6",
  "@metamask-previews/seedless-onboarding-controller": "7.0.0-preview-93c103b6",
  "@metamask-previews/selected-network-controller": "26.0.0-preview-93c103b6",
  "@metamask-previews/shield-controller": "3.0.0-preview-93c103b6",
  "@metamask-previews/signature-controller": "37.0.0-preview-93c103b6",
  "@metamask-previews/subscription-controller": "5.0.0-preview-93c103b6",
  "@metamask-previews/token-search-discovery-controller": "4.0.0-preview-93c103b6",
  "@metamask-previews/transaction-controller": "62.3.0-preview-93c103b6",
  "@metamask-previews/transaction-pay-controller": "10.1.0-preview-93c103b6",
  "@metamask-previews/user-operation-controller": "41.0.0-preview-93c103b6"
}

@chaitanyapotti chaitanyapotti added this pull request to the merge queue Nov 27, 2025
Merged via the queue into main with commit c2f0185 Nov 27, 2025
277 checks passed
@chaitanyapotti chaitanyapotti deleted the feat/handle-shield-change-payment-method-transaction branch November 27, 2025 05:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-shield Transaction Shield team-shield

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants