Repository navigation
[BC][R1] Scope the Business Central icon gradient ids to each rendered copy - #102554
NikkiWines merged 3 commits into
Conversation
Web builds give every copy of an SVG file the same ids, and screens that are no longer focused stay mounted with display: none. The gradients of the Business Central mark then resolved to a hidden copy, which the browser does not paint, so only the navy background showed. The icon is now a react-native-svg component that prefixes its gradient ids with useId, like the map marker icons.
Codecov Report✅ Changes either increased or maintained existing code coverage, great job!
|
NikkiWines
left a comment
There was a problem hiding this comment.
LGTM, some small suggestions. But let's also remove assets/images/integrationicons/business-central-icon-square.svg
| import Zoom from '@assets/images/zoom.svg'; | ||
|
|
||
| // This icon is a React component because its gradient ids must be unique to each rendered copy | ||
| import BusinessCentralSquare from '@components/Icon/BusinessCentralSquare'; |
There was a problem hiding this comment.
| import BusinessCentralSquare from '@components/Icon/BusinessCentralSquare'; | |
| import BusinessCentralSquare from '@components/Icon/BusinessCentralSquare'; | |
There was a problem hiding this comment.
(comment below needs a newline above it)
There was a problem hiding this comment.
oxfmt removes blank lines between imports in the same group, so I combined the two comments into one above the group.
|
This one is pretty simple so no need fro a review @daledah 🙇 |
|
@c3024 |
|
@NikkiWines yea, the author checklist has changed yesterday. updated the checklist. thanks! |
Reviewer Checklist
Screenshots/VideosAndroid: HybridAppAndroid: mWeb ChromeiOS: HybridAppiOS: mWeb SafariMacOS: Chrome / Safari
|
|
🚧 NikkiWines has triggered a test Expensify/App build. You can view the workflow run here. |
|
✋ This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release. |
|
🧪🧪 Use the links below to test this adhoc build on Android, iOS, and Web. Happy testing! 🧪🧪
|
|
🚀 Deployed to staging by https://github.com/NikkiWines in version: 9.5.0-0 🚀
|
|
No help site update is needed. This PR fixes a web rendering bug in the Dynamics 365 Business Central icon, and no article text describes that icon or depends on how it renders. |
|
🚀 Deployed to production by https://github.com/Julesssss in version: 9.5.0-5 🚀
Bundle Size Analysis (Sentry): |


Explanation of Change
On web, the Business Central icon next to "…are imported from your Dynamics 365 Business Central settings" on the Tags and Categories pages shows only its navy background after the admin opens the Accounting page first.
Web builds give every copy of an SVG file the same ids, and the Accounting screen stays mounted with
display: noneafter navigating away. The icon's gradients then resolve to the hidden copy on the Accounting screen, which the browser does not paint. Business Central is the only connection icon whose mark is drawn with gradients.This PR turns the icon into a
react-native-svgcomponent that prefixes its gradient ids withuseId, the same way the map marker icons scope their filter ids. Every rendered copy now has its own gradients, so the icon keeps Microsoft's mark unchanged.Fixed Issues
$ tied to #99052
PROPOSAL: N/A
Tests
Offline tests
Same as Tests.
QA Steps
Same as Tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectionAvatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Android: Native
Android: mWeb Chrome
iOS: Native
iOS: mWeb Safari
MacOS: Chrome / Safari