Skip to content

Fix/vacation calendar user links#384

Merged
fridajac merged 3 commits into
mainfrom
fix/vacation-calendar-user-links
Jul 23, 2026
Merged

Fix/vacation calendar user links#384
fridajac merged 3 commits into
mainfrom
fix/vacation-calendar-user-links

Conversation

@fridajac

@fridajac fridajac commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Hey, I just made a Pull Request!

Fixes broken catalog links in the vacation calendar.

Users are now matched against spec.profile.email instead of metadata.name, which prevents links such as /catalog/default/user/undefined. Resolved users use Backstage EntityRefLink, while users that cannot be resolved remain visible without a broken link.

The catalog lookup is also cursor-paginated for large groups, and email lookups use a map to avoid repeated searches.

Context

Microsoft Graph returns a user's email as scheduleId, but many Backstage catalogs use an LDAP-style username for metadata.name.

Checklist before requesting a review

  • I have performed a self-review of my own code
  • I have verified that the code builds perfectly fine on my local system
  • I have verified that my code follows the style already available in the repository
  • A changeset describing the change and affected packages. (more info)
  • Added or updated documentation
  • Tests for new functionality and regression tests for bug fixes
  • Screenshots attached (for UI changes)

Verification

  • Vacation Calendar plugin tests: 14 passing
  • Plugin linting passes
  • Workspace TypeScript check passes
  • Plugin builds successfully as a local npm archive
  • Axis Backstage runs locally with the new package at http://localhost:3001

Frida Englund added 3 commits July 23, 2026 10:07
…ta.name

Users are now matched by spec.profile.email (case-insensitive) instead of
comparing metadata.name to the email local part. Links use EntityRefLink
for correct catalog URLs. Unresolved users render without a link instead
of navigating to /user/undefined.

Dev fixtures updated to use full email scheduleIds and mount entityRouteRef
so EntityRefLink works in the dev sandbox.
…p map

Catalog fetches now use cursor-paginated queryEntities to support groups
with 500+ users. User-by-email resolution uses a Map for O(1) lookups
instead of scanning the user list per schedule entry.
@fridajac
fridajac requested a review from a team as a code owner July 23, 2026 08:30
@changeset-bot

changeset-bot Bot commented Jul 23, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 3d6ee8d

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@axis-backstage/plugin-vacation-calendar Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@fridajac
fridajac enabled auto-merge (squash) July 23, 2026 08:39
@fridajac
fridajac merged commit e9c8973 into main Jul 23, 2026
8 checks passed
@fridajac
fridajac deleted the fix/vacation-calendar-user-links branch July 23, 2026 08:42
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