-
Notifications
You must be signed in to change notification settings - Fork 560
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: add possibility to use own handling of onerror which will not en… #453
base: master
Are you sure you want to change the base?
fix: add possibility to use own handling of onerror which will not en… #453
Conversation
…d up in the exception
👋 @misino 💖 Thanks for opening this pull request! 💖 Please follow the contributing guidelines. And we use semantic commit messages to streamline the release process. Examples of commit messages with semantic prefixes:
Things that will help get your PR across the finish line:
We get a lot of pull requests on this repo, so please be patient and we will get back to you as soon as we can. |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #453 +/- ##
==========================================
+ Coverage 62.93% 63.10% +0.17%
==========================================
Files 10 10
Lines 580 580
Branches 143 143
==========================================
+ Hits 365 366 +1
Misses 151 151
+ Partials 64 63 -1 ☔ View full report in Codecov by Sentry. |
83c890a
to
3b6fd62
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review:
Summary:
This refactor significantly improves the error handling mechanism within the resourceToDataURL
function. By replacing the inline async error handling with a more structured approach, it leverages a reusable error handler function. This change enhances code readability, maintainability, and reduces redundancy.
Positives:
- Improved Readability: The introduction of
options.onImageErrorHandler
makes the code more modular and easier to understand. - Code Reusability: The error handler can be reused across different parts of the application, promoting DRY (Don't Repeat Yourself) principles.
- Error Handling Enhancement: The structured try-catch block ensures that errors are caught and processed consistently.
Suggestions for Improvement:
- Test Coverage: The added line PNG image rendering as blank on IOS 13 view option #66 is not covered by tests. To ensure robustness, consider adding test cases that trigger this error handler to verify its functionality.
- Documentation: Adding comments or documentation about the
options.onImageErrorHandler
would help other developers understand its purpose and usage more quickly. - Fallback Mechanism: In the absence of
options.onImageErrorHandler
, you might want to ensure there's a default error handling mechanism to prevent potential runtime errors ifonImageErrorHandler
is not provided.
Code Snippet for Additional Tests:
describe('Error Handling in resourceToDataURL', () => {
it('should call the onImageErrorHandler when an error occurs', async () => {
const mockHandler = jest.fn();
const options = {
onImageErrorHandler: mockHandler,
};
// Assuming resourceToDataURL is the function being tested
await resourceToDataURL('invalid_url', options);
expect(mockHandler).toHaveBeenCalled();
});
it('should reject with an error if no onImageErrorHandler is provided', async () => {
const options = {};
await expect(resourceToDataURL('invalid_url', options)).rejects.toThrow('Image failed to load');
});
});
Great job on the refactor! With these minor improvements, the codebase will be even more robust and maintainable.
…d up in the exception
Description
Motivation and Context
We had a problem with generating an image when html contained pictures with src pointing to a domain which doesn't allow CORS.
This change is about possibility to specify own onerror callback which don't need to make whole image generation fail.
Types of changes
Self Check before Merge