chore(js-ts): Convert transaction reducer and action module to TypeScript#968
Open
devin-ai-integration[bot] wants to merge 1 commit into
Open
chore(js-ts): Convert transaction reducer and action module to TypeScript#968devin-ai-integration[bot] wants to merge 1 commit into
devin-ai-integration[bot] wants to merge 1 commit into
Conversation
Co-Authored-By: Wes Convery <2wconvery@gmail.com>
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
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
Workstream 4: types the
transactionreducer + its action module and removestransaction: anyfromRootState.The reducer state is modeled to match the
transactionStateshape already declared inapp/core/GasPolling/types.ts(the de-facto consumer contract). Key modeling decision: the nestedtransactionobject mixes representations —getTxData()producesBNamounts while callers likesetTransactionValue(maxTransactionValueHex)anddappTransactionspass hexstring/BN— so amount fields are typedstring | BN:SecurityAlertResponseis imported fromBlockaidBanner.types(not@metamask/transaction-controller) because that is the type the consumers (TransactionBlockaidBanner,ppom-util,confirmTransactionselector) actually use.Action module now exports a discriminated-union
TransactionAction(incl. aRehydrateActionso theREHYDRATEcase type-checks) with typed creators.Cascade fixes (consumers previously hidden behind
any)selectors/confirmTransaction.ts: guardid === undefinedbefore indexingsecurityAlertResponses.lib/ppom/ppom-util.ts:transactionId as string(matches existing cast in the same file).AssetOverview.tsx/WalletActions.tsx: cast asset args toSelectedAsset(getEther()is JSDoc-typedobject;TokenIneedsas unknown as).AccountInfoCard,BrowserTab,Confirm,TransactionBlockaidBanner): aligntransactionmocks with the typed shape (selectedAsset: {}) or cast legacy-shaped fixtures.Validation
yarn tsc— 0 errorsyarn lint(changed files) — 0 errorsyarn jeston reducer + all cascade-affected suites — 13 suites / 102 tests passPre-existing fork CI failures (
yarn install404 on the deadaprock/react-native-tcpgit dep, CLABot, label bots) are unrelated to this change.Link to Devin session: https://app.devin.ai/sessions/150060d9c6a14a1b9ee04e5a407b3f8b
Requested by: @WesternConcrete
Devin Review