fix(GH-1616): Fix monochrome checks #1632
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.
Platforms affected
Android
Motivation and Context
fixes #1616
Description
cordova-android 12 introduces support for monochrome icons. It was intended for it to be optional.
However due to a faulty check, if you didn't supply the monochrome property, adaptive icons will not be written out.
I've corrected the check. Additionally I added the
dedent
package which is a string template formatter so thatwe can more easily format some of our inline templates to make it easier to read.
I've also added a warning for when the monochrome property is given without the required adaptive properties. Tests were added to assert that icons are written as expected with and without the monochrome property as well as the warning is emitted.
There is one caveat, the warning in practice isn't seen by the user because the CLI ends up kicking out earlier via
https://github.com/apache/cordova-android/blob/master/lib/prepare.js#L666
But I opted to keep it anyway.
Testing
Ran npm test.
Packed and tested locally and observed adaptive icons being written as expected with and without monochrome icon.
Checklist
(platform)
if this change only applies to one platform (e.g.(android)
)