fix(storage): Fix MD5 calculation #13458
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.
Description of changes
When
isObjectLockEnabled
is set totrue
in configuration, the Amplify library calculates and appendsContentMD5
automatically. However, as a customer discovered, this MD5 calculation was not always being performed correctly and the upload task results in a BadDigest error from the service.Upon investigation, it appears that the category went under a refactor which saw the MD5 calculations utilities be renamed and relocated. However, during this refactor, the implementations intended for web and native were accidentally flipped:
After undoing this switch, the library behaved as expected on Web but the native implementations continued to fail. Upon further deep dive, it was discovered that the
readAsArrayBuffer
gap which necessitated the diverged native path in the first place is only experienced in React Native version < 0.71.This PR:
readAsArrayBuffer
in a try/catch and only invokes thereadAsDataURL
strategy as a fallback if the prior function failsIssue #, if available
#13434
Description of how you validated changes
Validated that MD5 calculation was not working in sample apps prior to changes but now work with the proposed fix for:
readAsArrayBuffer
in its FileReader)Checklist
yarn test
passesBy submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.