Skip to content

[Customer Portal MicroApp] fix: guard against invalid user timezone - #1015

Merged
Rashmika998 merged 2 commits into
wso2-open-operations:v2from
2003dinijay:fix/customer-portal-microapp-invalid-timezone
Jul 2, 2026
Merged

[Customer Portal MicroApp] fix: guard against invalid user timezone#1015
Rashmika998 merged 2 commits into
wso2-open-operations:v2from
2003dinijay:fix/customer-portal-microapp-invalid-timezone

Conversation

@2003dinijay

Copy link
Copy Markdown
Contributor

The /me endpoint returns the ServiceNow placeholder "--None--" when a
user has no timezone set. This string passed the nullish check in
useDateTime and crashed dayjs.tz() with RangeError: invalid time zone,
causing every ItemCard on the Support page to hit the error boundary.

useDateTime: validate the timezone via Intl and fall back to the
device timezone when missing or invalid
MeProvider: normalize "--None--" to undefined at the data boundary

…from /me

The /me endpoint returns the ServiceNow placeholder --None-- when a user has no timezone set. This passed the nullish check in useDateTime and crashed dayjs.tz() with RangeError: invalid time zone, breaking the Support page lists. useDateTime now validates the timezone via Intl and falls back to the device timezone; MeProvider normalizes --None-- to undefined at the data boundary.
Copilot AI review requested due to automatic review settings July 2, 2026 11:39
@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@2003dinijay, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 16 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6b9de1e2-cb85-4234-94b3-6cdeff338c5d

📥 Commits

Reviewing files that changed from the base of the PR and between d7e5524 and df3feb8.

📒 Files selected for processing (2)
  • apps/customer-portal/microapp/src/context/me/MeProvider.tsx
  • apps/customer-portal/microapp/src/utils/useDateTime.ts
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR hardens Customer Portal MicroApp date/time formatting against invalid or placeholder timezone values coming from the /me endpoint, preventing dayjs.tz() from throwing and triggering error boundaries on Support page item cards.

Changes:

  • Added timezone validation via Intl.DateTimeFormat and fallback logic in useDateTime.
  • Normalized ServiceNow’s "--None--" timezone placeholder to undefined at the MeProvider boundary.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
apps/customer-portal/microapp/src/utils/useDateTime.ts Adds resolveTimezone() to validate incoming timezone strings and fall back to the device timezone before calling dayjs.tz().
apps/customer-portal/microapp/src/context/me/MeProvider.tsx Normalizes the ServiceNow "--None--" placeholder to undefined when populating the Me context.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread apps/customer-portal/microapp/src/utils/useDateTime.ts Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@Rashmika998
Rashmika998 merged commit 37d0a97 into wso2-open-operations:v2 Jul 2, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants