Replace Uint8Array.from with new Uint8Array #553
Merged
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.
What's in this pull request?
In the voting app, we ran into an issue on iOS Safari, which threw an error of
TypedArray.from requires its this argument subclass a TypedArray constructor
when trying to initialise aGenesisConfig
. The stack trace traces it back toBufferUtils.fromHex()
.Eventually, the issue was that an external library that was bundled with the app overwrote the browser's native
Uint8Array
constructor with a shim, which triggered the error in Safari.While we will fix it in the voting app by removing this shim, we can also make the Nimiq Core library more resilient to this problem by simply not using
Uint8Array.from()
, but usingnew UintArray()
instead. This PR does exactly that. It does the byte-mapping before handing it to the Uint8Array constructor, avoiding the problem.