Refactor client API context to remove per-component optional handling - #548
Open
Pradeep-kumar1202 wants to merge 1 commit into
Open
Refactor client API context to remove per-component optional handling#548Pradeep-kumar1202 wants to merge 1 commit into
Pradeep-kumar1202 wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Refactors
AllApiDataContextNewso components consuming payment data no longer need to repeatedly handleclientDataandsdkConfigDataas optional values.What changed
Replaced the context tuple:
(option<clientResponse>, option<sessions>, option<sdkConfig>)with a single optional context record containing:
clientDatasdkConfigDatasessionTokenDataUpdated
NavigationRouterto create the context value only after both the/clientresponse and SDK configuration are available.Split
ParentPaymentSheetinto:Added two context access patterns:
useDatafor components rendered after required data is available.useOptionalDatafor top-level components that must also render during loading.Updated payment methods, saved payment methods, dynamic fields, hosted checkout, confirm button, redirect flow, and express checkout consumers to use the new context structure.
Removed repeated
Option.map,Option.flatMap, andOption.getOroperations for fields such as:Kept session-token data optional because its failure is non-blocking.
Why
The
/clientresponse and SDK configuration are required before the payment UI can be constructed correctly. Previously, every consumer independently handled their absence and supplied fallback values.This resulted in duplicated optional handling and allowed components to temporarily consume fallback values while the required APIs were still loading.
The new structure handles API-data availability at the rendering boundary and lets dependent components consume the actual response values directly.
Behaviour
Validation
npm run re:checkgit diff --cached --check