Skip to content

Add vendor logos to Okta monitor results#7354

Open
jpople wants to merge 4 commits intomainfrom
jpople/eng-2391/okta-monitor-logos
Open

Add vendor logos to Okta monitor results#7354
jpople wants to merge 4 commits intomainfrom
jpople/eng-2391/okta-monitor-logos

Conversation

@jpople
Copy link
Contributor

@jpople jpople commented Feb 11, 2026

Ticket ENG-2391

Description Of Changes

Adds vendor logos to Okta monitor results UI.

Screenshot 2026-02-10 at 18 07 37

Code Changes

  • Updates getDomain helper method to fail usefully (not all results from Okta monitors have logo URLs)

Steps to Confirm

  1. Create an Okta monitor and run the scan.
  2. View the results screen; should see vendor logos displayed where applicable.

Pre-Merge Checklist

  • Issue requirements met
  • All CI pipelines succeeded
  • CHANGELOG.md updated
    • Add a db-migration This indicates that a change includes a database migration label to the entry if your change includes a DB migration
    • Add a high-risk This issue suggests changes that have a high-probability of breaking existing code label to the entry if your change includes a high-risk change (i.e. potential for performance impact or unexpected regression) that should be flagged
    • Updates unreleased work already in Changelog, no new entry necessary
  • UX feedback:
    • All UX related changes have been reviewed by a designer
    • No UX review needed
  • Followup issues:
    • Followup issues created
    • No followup issues
  • Database migrations:
    • Ensure that your downrev is up to date with the latest revision on main
    • Ensure that your downgrade() migration is correct and works
      • If a downgrade migration is not possible for this change, please call this out in the PR description!
    • No migrations
  • Documentation:
    • Documentation complete, PR opened in fidesdocs
    • Documentation issue created in fidesdocs
    • If there are any new client scopes created as part of the pull request, remember to update public-facing documentation that references our scope registry
    • No documentation updates required

@jpople jpople requested a review from a team as a code owner February 11, 2026 00:11
@jpople jpople requested review from gilluminate and removed request for a team February 11, 2026 00:11
@vercel
Copy link
Contributor

vercel bot commented Feb 11, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
fides-plus-nightly Ready Ready Preview, Comment Feb 11, 2026 0:24am
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
fides-privacy-center Ignored Ignored Feb 11, 2026 0:24am

Request Review

/> */}
<Flex className="ml-2">
{logoUrl && (
<Image
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using an Image here in lieu of an Avatar so oversize images are scaled down and not cropped.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider adding this as a comment in the code

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 11, 2026

Greptile Overview

Greptile Summary

This PR adds vendor logo support to the Okta monitor results UI by deriving a logo URL from staged resource metadata (metadata.vendor_logo_url) and falling back to a Brandfetch icon URL derived from vendor_id/name. It also hardens getDomain by validating parsed hostnames and updates an existing website-logo resolver to catch getDomain errors and return undefined.

The main integration point is InfrastructureSystemListItem, which now attempts to render a vendor logo next to each result item; other existing UI (e.g. connection logos) continues to use the shared getDomain/getBrandIconUrl helpers.

Confidence Score: 3/5

  • This PR is close to mergeable but needs a UI fallback fix for failed logo image loads.
  • Core changes are small and mostly guarded (ConnectionTypeLogo now catches getDomain errors), but InfrastructureSystemListItem renders external images without handling load failures, which will reliably result in broken images for invalid/unreachable logo URLs.
  • clients/admin-ui/src/features/data-discovery-and-detection/action-center/components/InfrastructureSystemListItem.tsx

Important Files Changed

Filename Overview
changelog/7354-okta-vendor-logos.yaml Adds a changelog fragment for Okta monitor vendor logos; no functional issues found.
clients/admin-ui/src/features/common/utils.ts Updates getDomain to validate and throw on invalid domains; behavior change may throw at call sites (some already wrapped), and prior review threads cover signature/regex concerns.
clients/admin-ui/src/features/data-discovery-and-detection/action-center/components/InfrastructureSystemListItem.tsx Adds vendor logo rendering for Okta monitor results; currently uses AntD Image without onError fallback, so broken images will display when remote logo URLs fail.
clients/admin-ui/src/features/datastore-connections/ConnectionTypeLogo.tsx Wraps getDomain usage in try/catch when building website logo URLs, preventing runtime exceptions; change looks safe.

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 files reviewed, 3 comments

Edit Code Review Agent Settings | Greptile

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 11, 2026

Additional Comments (1)

clients/admin-ui/src/features/datastore-connections/ConnectionTypeLogo.tsx
getDomain now throws errors (changed in this PR), but no try-catch here. Will crash on invalid URLs.

      try {
        const domain = getDomain(data.websiteUrl);
        const retinaSize = (size ?? DEFAULT_LOGO_SIZE) * 2;
        const brandIconUrl = getBrandIconUrl(domain, retinaSize);
        return brandIconUrl;
      } catch {
        return undefined;
      }

@jpople
Copy link
Contributor Author

jpople commented Feb 11, 2026

@greptileai

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

4 files reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

Comment on lines +143 to +151
<Flex className="ml-2">
{logoUrl && (
<Image
src={logoUrl}
alt={systemName}
preview={false}
width={36}
/>
)}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Broken vendor logo rendering

logoUrl being defined doesn’t guarantee the image will load (404/CORS/network). Since fidesui’s Image is AntD’s Image (no built-in fallback), this will display a broken image instead of the Settings avatar whenever the remote URL fails. Consider using Avatar with src + icon fallback (as in ConnectionTypeLogo) or track onError to swap to the fallback Avatar.

Comment on lines +153 to +157
<Avatar
shape="square"
size={36}
icon={<Icons.Settings />}
alt={systemName}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a reason we're not using ConnectionTypeLogo here?

src={logoUrl}
alt={systemName}
preview={false}
width={36}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could probably use DEFAULT_LOGO_SIZE here

/> */}
<Flex className="ml-2">
{logoUrl && (
<Image
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

consider adding this as a comment in the code

// Try to extract domain from vendor ID or system name
const domain = getDomain(vendorId);
if (domain) {
return getBrandIconUrl(domain, 72); // 18px * 2 for retina
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return getBrandIconUrl(domain, 72); // 18px * 2 for retina
return getBrandIconUrl(domain, 72); // 36px * 2 for retina

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants