compat: Value & Amount constructs public for Redux#232
Merged
Conversation
- change protected _picoSats to public _picoSats in Value class - change protected constructor to public constructor in Value class - change private constructor to public constructor in Amount class - enables Immer proxy compatibility for Redux state management - maintains all existing functionality and API surface - allows direct usage in React/Redux applications without type casting
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.
Problem
The
ValueandAmountclasses had protected/private members that prevented them from working with Redux Toolkit's Immer-based state management:protected _picoSats: bigint- Immer proxies couldn't access this propertyprotected constructor()- Immer couldn't create new instances during state updatesProperty '_picoSats' is missing in type 'WritableDraft<Value>'Solution
Made the necessary properties and constructors public to enable Immer proxy compatibility:
protected _picoSats→public _picoSatsprotected constructor()→public constructor()(Value)private constructor()→public constructor()(Amount)Impact
_prefix still signals internal useUsage
The factory methods (
fromBitcoin,fromSats, etc.) remain the recommended way to create instances, but direct construction is now possible for framework compatibility.