Chore/eid wallet UI fixes - #917

Merged
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes
Mar 14, 2026
Merged

Chore/eid wallet UI fixes#917
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes

Conversation

@coodos

@coodoscoodos commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

Type of change

  • Update (a change which updates existing functionality)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added support for push notifications displayed while the app is in the foreground.
    • Added "Self-declare instead" option in onboarding when verification fails, allowing users to proceed without verification.
    • Added contact email for support in verification failure messages.
  • Bug Fixes

    • Improved notifications page loading feedback to prevent premature "No notifications" display.
  • Style

    • Minor formatting adjustments.

@coderabbitai

coderabbitaiBot commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@coodos has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 42 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fb069ebb-ab17-4e49-8de1-5f51cf833ffb

📥 Commits

Reviewing files that changed from the base of the PR and between e7b738c and f50d1b9.

📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/lib/stores/notifications.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
📝 Walkthrough

Walkthrough

This PR adds push notification foreground listener support to the eid-wallet application, includes minor formatting adjustments in the control panel, removes automatic scan restart after authentication, and enhances the onboarding verification flow with alternative options and contact information.

Changes

Cohort / File(s)Summary
Control Panel Formatting
infrastructure/control-panel/src/routes/api/references/+server.ts, infrastructure/control-panel/src/routes/visualizer/+page.server.ts
Formatting and whitespace cleanup with no behavioral changes.
Notification Service Implementation
infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Added new listenForForegroundNotifications() method that subscribes to incoming push notifications, filters for push source with non-empty titles, and stores notifications locally with cleanup support.
App Layout & Notification Lifecycle
infrastructure/eid-wallet/src/routes/(app)/+layout.svelte, infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
Integrated foreground notification listener setup/teardown in layout with error handling and added loading state tracking to notifications page to prevent premature "no notifications" display.
Authentication & Scanning Flow
infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts, infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Removed automatic scan restart after successful authentication; added contact email reference and "Self-declare instead" option in Didit verification failure flow for non-upgrade mode.

Sequence Diagram(s)

sequenceDiagram
participant App as App Layout
participant NS as NotificationService
participant PN as Push Notifications
participant Panel as Local Panel
App->>+NS: onMount - listenForForegroundNotifications()
NS->>+PN: Subscribe to notifications (onNotificationReceived)
PN-->>-NS: Setup listener
Note over NS: Listen for push source<br/>with non-empty title
PN->>+NS: Foreground notification received
NS->>NS: Filter & normalize data
NS->>+Panel: addNotification()
Panel-->>-NS: Stored
NS-->>-PN: Processed
Note over App: Component unmounts
App->>+NS: onDestroy
NS->>+PN: Cleanup listener
PN-->>-NS: Unregistered
NS-->>-App: Complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

🐰 Whispers to the wind

Push notifications bloom and flow,
In foreground listeners we now know—
When auth succeeds, the scanner rests,
While onboarding users choose their quests! 📱✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe pull request description is incomplete and lacks critical information required by the template.Provide an issue number, detailed testing approach, and clarify what specific functionality was updated. The description should explain the changes made across the multiple files (NotificationService, layout, notifications page, scan logic, onboarding).
Title check❓ InconclusiveThe title 'Chore/eid wallet UI fixes' is vague and uses generic phrasing ('UI fixes') that doesn't specify which UI issues are addressed or what the main change accomplishes.Replace the generic 'UI fixes' with specific details about the primary changes, such as 'Add foreground notification listener and improve notification loading state' or similar.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/eid-wallet-ui-fixes
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@coderabbitaicoderabbitaiBot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/eid-wallet/src/lib/services/NotificationService.ts`:
- Around line 411-430: The foreground listener in
listenForForegroundNotifications currently always calls addNotification which
can create duplicates because checkAndShowNotifications/sendLocalNotification
also persists pushes; before calling addNotification inside
listenForForegroundNotifications, compute a deterministic dedupe key (preferably
from a stable field in notification.extra like an id or otherwise from
title+body+JSON.stringify(data)) and query the notifications store (or use the
existing addNotification API if it supports a lookup) to see if a notification
with that same key already exists; only call addNotification when no matching
entry is found. Reference: listenForForegroundNotifications, addNotification,
and sendLocalNotification (checkAndShowNotifications flow) to implement the
dedupe check.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eef499dc-880f-45d4-925e-bcf8ab798e8e

📥 Commits

Reviewing files that changed from the base of the PR and between 867f67b and e7b738c.

📒 Files selected for processing (7)
  • infrastructure/control-panel/src/routes/api/references/+server.ts
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/routes/(app)/+layout.svelte
  • infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
💤 Files with no reviewable changes (2)
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts

@coodos
coodos merged commit 496b739 into mainMar 14, 2026
4 checks passed
@coodos
coodos deleted the chore/eid-wallet-ui-fixes branch March 14, 2026 08:57
@coderabbitaicoderabbitaiBot mentioned this pull request Mar 14, 2026
6 tasks
Sign up for freeto 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.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Chore/eid wallet UI fixes - #917

Merged
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes
Mar 14, 2026
Merged

Chore/eid wallet UI fixes#917
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes

Conversation

@coodos

@coodoscoodos commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

Type of change

  • Update (a change which updates existing functionality)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added support for push notifications displayed while the app is in the foreground.
    • Added "Self-declare instead" option in onboarding when verification fails, allowing users to proceed without verification.
    • Added contact email for support in verification failure messages.
  • Bug Fixes

    • Improved notifications page loading feedback to prevent premature "No notifications" display.
  • Style

    • Minor formatting adjustments.

@coderabbitai

coderabbitaiBot commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@coodos has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 42 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fb069ebb-ab17-4e49-8de1-5f51cf833ffb

📥 Commits

Reviewing files that changed from the base of the PR and between e7b738c and f50d1b9.

📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/lib/stores/notifications.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
📝 Walkthrough

Walkthrough

This PR adds push notification foreground listener support to the eid-wallet application, includes minor formatting adjustments in the control panel, removes automatic scan restart after authentication, and enhances the onboarding verification flow with alternative options and contact information.

Changes

Cohort / File(s)Summary
Control Panel Formatting
infrastructure/control-panel/src/routes/api/references/+server.ts, infrastructure/control-panel/src/routes/visualizer/+page.server.ts
Formatting and whitespace cleanup with no behavioral changes.
Notification Service Implementation
infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Added new listenForForegroundNotifications() method that subscribes to incoming push notifications, filters for push source with non-empty titles, and stores notifications locally with cleanup support.
App Layout & Notification Lifecycle
infrastructure/eid-wallet/src/routes/(app)/+layout.svelte, infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
Integrated foreground notification listener setup/teardown in layout with error handling and added loading state tracking to notifications page to prevent premature "no notifications" display.
Authentication & Scanning Flow
infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts, infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Removed automatic scan restart after successful authentication; added contact email reference and "Self-declare instead" option in Didit verification failure flow for non-upgrade mode.

Sequence Diagram(s)

sequenceDiagram
participant App as App Layout
participant NS as NotificationService
participant PN as Push Notifications
participant Panel as Local Panel
App->>+NS: onMount - listenForForegroundNotifications()
NS->>+PN: Subscribe to notifications (onNotificationReceived)
PN-->>-NS: Setup listener
Note over NS: Listen for push source<br/>with non-empty title
PN->>+NS: Foreground notification received
NS->>NS: Filter & normalize data
NS->>+Panel: addNotification()
Panel-->>-NS: Stored
NS-->>-PN: Processed
Note over App: Component unmounts
App->>+NS: onDestroy
NS->>+PN: Cleanup listener
PN-->>-NS: Unregistered
NS-->>-App: Complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

🐰 Whispers to the wind

Push notifications bloom and flow,
In foreground listeners we now know—
When auth succeeds, the scanner rests,
While onboarding users choose their quests! 📱✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe pull request description is incomplete and lacks critical information required by the template.Provide an issue number, detailed testing approach, and clarify what specific functionality was updated. The description should explain the changes made across the multiple files (NotificationService, layout, notifications page, scan logic, onboarding).
Title check❓ InconclusiveThe title 'Chore/eid wallet UI fixes' is vague and uses generic phrasing ('UI fixes') that doesn't specify which UI issues are addressed or what the main change accomplishes.Replace the generic 'UI fixes' with specific details about the primary changes, such as 'Add foreground notification listener and improve notification loading state' or similar.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/eid-wallet-ui-fixes
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@coderabbitaicoderabbitaiBot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/eid-wallet/src/lib/services/NotificationService.ts`:
- Around line 411-430: The foreground listener in
listenForForegroundNotifications currently always calls addNotification which
can create duplicates because checkAndShowNotifications/sendLocalNotification
also persists pushes; before calling addNotification inside
listenForForegroundNotifications, compute a deterministic dedupe key (preferably
from a stable field in notification.extra like an id or otherwise from
title+body+JSON.stringify(data)) and query the notifications store (or use the
existing addNotification API if it supports a lookup) to see if a notification
with that same key already exists; only call addNotification when no matching
entry is found. Reference: listenForForegroundNotifications, addNotification,
and sendLocalNotification (checkAndShowNotifications flow) to implement the
dedupe check.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eef499dc-880f-45d4-925e-bcf8ab798e8e

📥 Commits

Reviewing files that changed from the base of the PR and between 867f67b and e7b738c.

📒 Files selected for processing (7)
  • infrastructure/control-panel/src/routes/api/references/+server.ts
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/routes/(app)/+layout.svelte
  • infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
💤 Files with no reviewable changes (2)
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts

@coodos
coodos merged commit 496b739 into mainMar 14, 2026
4 checks passed
@coodos
coodos deleted the chore/eid-wallet-ui-fixes branch March 14, 2026 08:57
@coderabbitaicoderabbitaiBot mentioned this pull request Mar 14, 2026
6 tasks
Sign up for freeto 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.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Chore/eid wallet UI fixes - #917

Merged
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes
Mar 14, 2026
Merged

Chore/eid wallet UI fixes#917
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes

Conversation

@coodos

@coodoscoodos commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

Type of change

  • Update (a change which updates existing functionality)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added support for push notifications displayed while the app is in the foreground.
    • Added "Self-declare instead" option in onboarding when verification fails, allowing users to proceed without verification.
    • Added contact email for support in verification failure messages.
  • Bug Fixes

    • Improved notifications page loading feedback to prevent premature "No notifications" display.
  • Style

    • Minor formatting adjustments.

@coderabbitai

coderabbitaiBot commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@coodos has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 42 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fb069ebb-ab17-4e49-8de1-5f51cf833ffb

📥 Commits

Reviewing files that changed from the base of the PR and between e7b738c and f50d1b9.

📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/lib/stores/notifications.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
📝 Walkthrough

Walkthrough

This PR adds push notification foreground listener support to the eid-wallet application, includes minor formatting adjustments in the control panel, removes automatic scan restart after authentication, and enhances the onboarding verification flow with alternative options and contact information.

Changes

Cohort / File(s)Summary
Control Panel Formatting
infrastructure/control-panel/src/routes/api/references/+server.ts, infrastructure/control-panel/src/routes/visualizer/+page.server.ts
Formatting and whitespace cleanup with no behavioral changes.
Notification Service Implementation
infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Added new listenForForegroundNotifications() method that subscribes to incoming push notifications, filters for push source with non-empty titles, and stores notifications locally with cleanup support.
App Layout & Notification Lifecycle
infrastructure/eid-wallet/src/routes/(app)/+layout.svelte, infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
Integrated foreground notification listener setup/teardown in layout with error handling and added loading state tracking to notifications page to prevent premature "no notifications" display.
Authentication & Scanning Flow
infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts, infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Removed automatic scan restart after successful authentication; added contact email reference and "Self-declare instead" option in Didit verification failure flow for non-upgrade mode.

Sequence Diagram(s)

sequenceDiagram
participant App as App Layout
participant NS as NotificationService
participant PN as Push Notifications
participant Panel as Local Panel
App->>+NS: onMount - listenForForegroundNotifications()
NS->>+PN: Subscribe to notifications (onNotificationReceived)
PN-->>-NS: Setup listener
Note over NS: Listen for push source<br/>with non-empty title
PN->>+NS: Foreground notification received
NS->>NS: Filter & normalize data
NS->>+Panel: addNotification()
Panel-->>-NS: Stored
NS-->>-PN: Processed
Note over App: Component unmounts
App->>+NS: onDestroy
NS->>+PN: Cleanup listener
PN-->>-NS: Unregistered
NS-->>-App: Complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

🐰 Whispers to the wind

Push notifications bloom and flow,
In foreground listeners we now know—
When auth succeeds, the scanner rests,
While onboarding users choose their quests! 📱✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe pull request description is incomplete and lacks critical information required by the template.Provide an issue number, detailed testing approach, and clarify what specific functionality was updated. The description should explain the changes made across the multiple files (NotificationService, layout, notifications page, scan logic, onboarding).
Title check❓ InconclusiveThe title 'Chore/eid wallet UI fixes' is vague and uses generic phrasing ('UI fixes') that doesn't specify which UI issues are addressed or what the main change accomplishes.Replace the generic 'UI fixes' with specific details about the primary changes, such as 'Add foreground notification listener and improve notification loading state' or similar.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/eid-wallet-ui-fixes
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@coderabbitaicoderabbitaiBot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/eid-wallet/src/lib/services/NotificationService.ts`:
- Around line 411-430: The foreground listener in
listenForForegroundNotifications currently always calls addNotification which
can create duplicates because checkAndShowNotifications/sendLocalNotification
also persists pushes; before calling addNotification inside
listenForForegroundNotifications, compute a deterministic dedupe key (preferably
from a stable field in notification.extra like an id or otherwise from
title+body+JSON.stringify(data)) and query the notifications store (or use the
existing addNotification API if it supports a lookup) to see if a notification
with that same key already exists; only call addNotification when no matching
entry is found. Reference: listenForForegroundNotifications, addNotification,
and sendLocalNotification (checkAndShowNotifications flow) to implement the
dedupe check.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eef499dc-880f-45d4-925e-bcf8ab798e8e

📥 Commits

Reviewing files that changed from the base of the PR and between 867f67b and e7b738c.

📒 Files selected for processing (7)
  • infrastructure/control-panel/src/routes/api/references/+server.ts
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/routes/(app)/+layout.svelte
  • infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
💤 Files with no reviewable changes (2)
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts

@coodos
coodos merged commit 496b739 into mainMar 14, 2026
4 checks passed
@coodos
coodos deleted the chore/eid-wallet-ui-fixes branch March 14, 2026 08:57
@coderabbitaicoderabbitaiBot mentioned this pull request Mar 14, 2026
6 tasks
Sign up for freeto 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.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Chore/eid wallet UI fixes - #917

Merged
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes
Mar 14, 2026
Merged

Chore/eid wallet UI fixes#917
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes

Conversation

@coodos

@coodoscoodos commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

Type of change

  • Update (a change which updates existing functionality)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added support for push notifications displayed while the app is in the foreground.
    • Added "Self-declare instead" option in onboarding when verification fails, allowing users to proceed without verification.
    • Added contact email for support in verification failure messages.
  • Bug Fixes

    • Improved notifications page loading feedback to prevent premature "No notifications" display.
  • Style

    • Minor formatting adjustments.

@coderabbitai

coderabbitaiBot commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@coodos has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 42 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fb069ebb-ab17-4e49-8de1-5f51cf833ffb

📥 Commits

Reviewing files that changed from the base of the PR and between e7b738c and f50d1b9.

📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/lib/stores/notifications.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
📝 Walkthrough

Walkthrough

This PR adds push notification foreground listener support to the eid-wallet application, includes minor formatting adjustments in the control panel, removes automatic scan restart after authentication, and enhances the onboarding verification flow with alternative options and contact information.

Changes

Cohort / File(s)Summary
Control Panel Formatting
infrastructure/control-panel/src/routes/api/references/+server.ts, infrastructure/control-panel/src/routes/visualizer/+page.server.ts
Formatting and whitespace cleanup with no behavioral changes.
Notification Service Implementation
infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Added new listenForForegroundNotifications() method that subscribes to incoming push notifications, filters for push source with non-empty titles, and stores notifications locally with cleanup support.
App Layout & Notification Lifecycle
infrastructure/eid-wallet/src/routes/(app)/+layout.svelte, infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
Integrated foreground notification listener setup/teardown in layout with error handling and added loading state tracking to notifications page to prevent premature "no notifications" display.
Authentication & Scanning Flow
infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts, infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Removed automatic scan restart after successful authentication; added contact email reference and "Self-declare instead" option in Didit verification failure flow for non-upgrade mode.

Sequence Diagram(s)

sequenceDiagram
participant App as App Layout
participant NS as NotificationService
participant PN as Push Notifications
participant Panel as Local Panel
App->>+NS: onMount - listenForForegroundNotifications()
NS->>+PN: Subscribe to notifications (onNotificationReceived)
PN-->>-NS: Setup listener
Note over NS: Listen for push source<br/>with non-empty title
PN->>+NS: Foreground notification received
NS->>NS: Filter & normalize data
NS->>+Panel: addNotification()
Panel-->>-NS: Stored
NS-->>-PN: Processed
Note over App: Component unmounts
App->>+NS: onDestroy
NS->>+PN: Cleanup listener
PN-->>-NS: Unregistered
NS-->>-App: Complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

🐰 Whispers to the wind

Push notifications bloom and flow,
In foreground listeners we now know—
When auth succeeds, the scanner rests,
While onboarding users choose their quests! 📱✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe pull request description is incomplete and lacks critical information required by the template.Provide an issue number, detailed testing approach, and clarify what specific functionality was updated. The description should explain the changes made across the multiple files (NotificationService, layout, notifications page, scan logic, onboarding).
Title check❓ InconclusiveThe title 'Chore/eid wallet UI fixes' is vague and uses generic phrasing ('UI fixes') that doesn't specify which UI issues are addressed or what the main change accomplishes.Replace the generic 'UI fixes' with specific details about the primary changes, such as 'Add foreground notification listener and improve notification loading state' or similar.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/eid-wallet-ui-fixes
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@coderabbitaicoderabbitaiBot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/eid-wallet/src/lib/services/NotificationService.ts`:
- Around line 411-430: The foreground listener in
listenForForegroundNotifications currently always calls addNotification which
can create duplicates because checkAndShowNotifications/sendLocalNotification
also persists pushes; before calling addNotification inside
listenForForegroundNotifications, compute a deterministic dedupe key (preferably
from a stable field in notification.extra like an id or otherwise from
title+body+JSON.stringify(data)) and query the notifications store (or use the
existing addNotification API if it supports a lookup) to see if a notification
with that same key already exists; only call addNotification when no matching
entry is found. Reference: listenForForegroundNotifications, addNotification,
and sendLocalNotification (checkAndShowNotifications flow) to implement the
dedupe check.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eef499dc-880f-45d4-925e-bcf8ab798e8e

📥 Commits

Reviewing files that changed from the base of the PR and between 867f67b and e7b738c.

📒 Files selected for processing (7)
  • infrastructure/control-panel/src/routes/api/references/+server.ts
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/routes/(app)/+layout.svelte
  • infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
💤 Files with no reviewable changes (2)
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts

@coodos
coodos merged commit 496b739 into mainMar 14, 2026
4 checks passed
@coodos
coodos deleted the chore/eid-wallet-ui-fixes branch March 14, 2026 08:57
@coderabbitaicoderabbitaiBot mentioned this pull request Mar 14, 2026
6 tasks
Sign up for freeto 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.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Chore/eid wallet UI fixes - #917

Merged
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes
Mar 14, 2026
Merged

Chore/eid wallet UI fixes#917
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes

Conversation

@coodos

@coodoscoodos commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

Type of change

  • Update (a change which updates existing functionality)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added support for push notifications displayed while the app is in the foreground.
    • Added "Self-declare instead" option in onboarding when verification fails, allowing users to proceed without verification.
    • Added contact email for support in verification failure messages.
  • Bug Fixes

    • Improved notifications page loading feedback to prevent premature "No notifications" display.
  • Style

    • Minor formatting adjustments.

@coderabbitai

coderabbitaiBot commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@coodos has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 42 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fb069ebb-ab17-4e49-8de1-5f51cf833ffb

📥 Commits

Reviewing files that changed from the base of the PR and between e7b738c and f50d1b9.

📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/lib/stores/notifications.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
📝 Walkthrough

Walkthrough

This PR adds push notification foreground listener support to the eid-wallet application, includes minor formatting adjustments in the control panel, removes automatic scan restart after authentication, and enhances the onboarding verification flow with alternative options and contact information.

Changes

Cohort / File(s)Summary
Control Panel Formatting
infrastructure/control-panel/src/routes/api/references/+server.ts, infrastructure/control-panel/src/routes/visualizer/+page.server.ts
Formatting and whitespace cleanup with no behavioral changes.
Notification Service Implementation
infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Added new listenForForegroundNotifications() method that subscribes to incoming push notifications, filters for push source with non-empty titles, and stores notifications locally with cleanup support.
App Layout & Notification Lifecycle
infrastructure/eid-wallet/src/routes/(app)/+layout.svelte, infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
Integrated foreground notification listener setup/teardown in layout with error handling and added loading state tracking to notifications page to prevent premature "no notifications" display.
Authentication & Scanning Flow
infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts, infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Removed automatic scan restart after successful authentication; added contact email reference and "Self-declare instead" option in Didit verification failure flow for non-upgrade mode.

Sequence Diagram(s)

sequenceDiagram
participant App as App Layout
participant NS as NotificationService
participant PN as Push Notifications
participant Panel as Local Panel
App->>+NS: onMount - listenForForegroundNotifications()
NS->>+PN: Subscribe to notifications (onNotificationReceived)
PN-->>-NS: Setup listener
Note over NS: Listen for push source<br/>with non-empty title
PN->>+NS: Foreground notification received
NS->>NS: Filter & normalize data
NS->>+Panel: addNotification()
Panel-->>-NS: Stored
NS-->>-PN: Processed
Note over App: Component unmounts
App->>+NS: onDestroy
NS->>+PN: Cleanup listener
PN-->>-NS: Unregistered
NS-->>-App: Complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

🐰 Whispers to the wind

Push notifications bloom and flow,
In foreground listeners we now know—
When auth succeeds, the scanner rests,
While onboarding users choose their quests! 📱✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe pull request description is incomplete and lacks critical information required by the template.Provide an issue number, detailed testing approach, and clarify what specific functionality was updated. The description should explain the changes made across the multiple files (NotificationService, layout, notifications page, scan logic, onboarding).
Title check❓ InconclusiveThe title 'Chore/eid wallet UI fixes' is vague and uses generic phrasing ('UI fixes') that doesn't specify which UI issues are addressed or what the main change accomplishes.Replace the generic 'UI fixes' with specific details about the primary changes, such as 'Add foreground notification listener and improve notification loading state' or similar.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/eid-wallet-ui-fixes
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@coderabbitaicoderabbitaiBot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/eid-wallet/src/lib/services/NotificationService.ts`:
- Around line 411-430: The foreground listener in
listenForForegroundNotifications currently always calls addNotification which
can create duplicates because checkAndShowNotifications/sendLocalNotification
also persists pushes; before calling addNotification inside
listenForForegroundNotifications, compute a deterministic dedupe key (preferably
from a stable field in notification.extra like an id or otherwise from
title+body+JSON.stringify(data)) and query the notifications store (or use the
existing addNotification API if it supports a lookup) to see if a notification
with that same key already exists; only call addNotification when no matching
entry is found. Reference: listenForForegroundNotifications, addNotification,
and sendLocalNotification (checkAndShowNotifications flow) to implement the
dedupe check.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eef499dc-880f-45d4-925e-bcf8ab798e8e

📥 Commits

Reviewing files that changed from the base of the PR and between 867f67b and e7b738c.

📒 Files selected for processing (7)
  • infrastructure/control-panel/src/routes/api/references/+server.ts
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/routes/(app)/+layout.svelte
  • infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
💤 Files with no reviewable changes (2)
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts

@coodos
coodos merged commit 496b739 into mainMar 14, 2026
4 checks passed
@coodos
coodos deleted the chore/eid-wallet-ui-fixes branch March 14, 2026 08:57
@coderabbitaicoderabbitaiBot mentioned this pull request Mar 14, 2026
6 tasks
Sign up for freeto 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.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Chore/eid wallet UI fixes - #917

Merged
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes
Mar 14, 2026
Merged

Chore/eid wallet UI fixes#917
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes

Conversation

@coodos

@coodoscoodos commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

Type of change

  • Update (a change which updates existing functionality)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added support for push notifications displayed while the app is in the foreground.
    • Added "Self-declare instead" option in onboarding when verification fails, allowing users to proceed without verification.
    • Added contact email for support in verification failure messages.
  • Bug Fixes

    • Improved notifications page loading feedback to prevent premature "No notifications" display.
  • Style

    • Minor formatting adjustments.

@coderabbitai

coderabbitaiBot commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@coodos has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 42 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fb069ebb-ab17-4e49-8de1-5f51cf833ffb

📥 Commits

Reviewing files that changed from the base of the PR and between e7b738c and f50d1b9.

📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/lib/stores/notifications.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
📝 Walkthrough

Walkthrough

This PR adds push notification foreground listener support to the eid-wallet application, includes minor formatting adjustments in the control panel, removes automatic scan restart after authentication, and enhances the onboarding verification flow with alternative options and contact information.

Changes

Cohort / File(s)Summary
Control Panel Formatting
infrastructure/control-panel/src/routes/api/references/+server.ts, infrastructure/control-panel/src/routes/visualizer/+page.server.ts
Formatting and whitespace cleanup with no behavioral changes.
Notification Service Implementation
infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Added new listenForForegroundNotifications() method that subscribes to incoming push notifications, filters for push source with non-empty titles, and stores notifications locally with cleanup support.
App Layout & Notification Lifecycle
infrastructure/eid-wallet/src/routes/(app)/+layout.svelte, infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
Integrated foreground notification listener setup/teardown in layout with error handling and added loading state tracking to notifications page to prevent premature "no notifications" display.
Authentication & Scanning Flow
infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts, infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Removed automatic scan restart after successful authentication; added contact email reference and "Self-declare instead" option in Didit verification failure flow for non-upgrade mode.

Sequence Diagram(s)

sequenceDiagram
participant App as App Layout
participant NS as NotificationService
participant PN as Push Notifications
participant Panel as Local Panel
App->>+NS: onMount - listenForForegroundNotifications()
NS->>+PN: Subscribe to notifications (onNotificationReceived)
PN-->>-NS: Setup listener
Note over NS: Listen for push source<br/>with non-empty title
PN->>+NS: Foreground notification received
NS->>NS: Filter & normalize data
NS->>+Panel: addNotification()
Panel-->>-NS: Stored
NS-->>-PN: Processed
Note over App: Component unmounts
App->>+NS: onDestroy
NS->>+PN: Cleanup listener
PN-->>-NS: Unregistered
NS-->>-App: Complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

🐰 Whispers to the wind

Push notifications bloom and flow,
In foreground listeners we now know—
When auth succeeds, the scanner rests,
While onboarding users choose their quests! 📱✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe pull request description is incomplete and lacks critical information required by the template.Provide an issue number, detailed testing approach, and clarify what specific functionality was updated. The description should explain the changes made across the multiple files (NotificationService, layout, notifications page, scan logic, onboarding).
Title check❓ InconclusiveThe title 'Chore/eid wallet UI fixes' is vague and uses generic phrasing ('UI fixes') that doesn't specify which UI issues are addressed or what the main change accomplishes.Replace the generic 'UI fixes' with specific details about the primary changes, such as 'Add foreground notification listener and improve notification loading state' or similar.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/eid-wallet-ui-fixes
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@coderabbitaicoderabbitaiBot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/eid-wallet/src/lib/services/NotificationService.ts`:
- Around line 411-430: The foreground listener in
listenForForegroundNotifications currently always calls addNotification which
can create duplicates because checkAndShowNotifications/sendLocalNotification
also persists pushes; before calling addNotification inside
listenForForegroundNotifications, compute a deterministic dedupe key (preferably
from a stable field in notification.extra like an id or otherwise from
title+body+JSON.stringify(data)) and query the notifications store (or use the
existing addNotification API if it supports a lookup) to see if a notification
with that same key already exists; only call addNotification when no matching
entry is found. Reference: listenForForegroundNotifications, addNotification,
and sendLocalNotification (checkAndShowNotifications flow) to implement the
dedupe check.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eef499dc-880f-45d4-925e-bcf8ab798e8e

📥 Commits

Reviewing files that changed from the base of the PR and between 867f67b and e7b738c.

📒 Files selected for processing (7)
  • infrastructure/control-panel/src/routes/api/references/+server.ts
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/routes/(app)/+layout.svelte
  • infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
💤 Files with no reviewable changes (2)
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts

@coodos
coodos merged commit 496b739 into mainMar 14, 2026
4 checks passed
@coodos
coodos deleted the chore/eid-wallet-ui-fixes branch March 14, 2026 08:57
@coderabbitaicoderabbitaiBot mentioned this pull request Mar 14, 2026
6 tasks
Sign up for freeto 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.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Chore/eid wallet UI fixes - #917

Merged
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes
Mar 14, 2026
Merged

Chore/eid wallet UI fixes#917
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes

Conversation

@coodos

@coodoscoodos commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

Type of change

  • Update (a change which updates existing functionality)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added support for push notifications displayed while the app is in the foreground.
    • Added "Self-declare instead" option in onboarding when verification fails, allowing users to proceed without verification.
    • Added contact email for support in verification failure messages.
  • Bug Fixes

    • Improved notifications page loading feedback to prevent premature "No notifications" display.
  • Style

    • Minor formatting adjustments.

@coderabbitai

coderabbitaiBot commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@coodos has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 42 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fb069ebb-ab17-4e49-8de1-5f51cf833ffb

📥 Commits

Reviewing files that changed from the base of the PR and between e7b738c and f50d1b9.

📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/lib/stores/notifications.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
📝 Walkthrough

Walkthrough

This PR adds push notification foreground listener support to the eid-wallet application, includes minor formatting adjustments in the control panel, removes automatic scan restart after authentication, and enhances the onboarding verification flow with alternative options and contact information.

Changes

Cohort / File(s)Summary
Control Panel Formatting
infrastructure/control-panel/src/routes/api/references/+server.ts, infrastructure/control-panel/src/routes/visualizer/+page.server.ts
Formatting and whitespace cleanup with no behavioral changes.
Notification Service Implementation
infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Added new listenForForegroundNotifications() method that subscribes to incoming push notifications, filters for push source with non-empty titles, and stores notifications locally with cleanup support.
App Layout & Notification Lifecycle
infrastructure/eid-wallet/src/routes/(app)/+layout.svelte, infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
Integrated foreground notification listener setup/teardown in layout with error handling and added loading state tracking to notifications page to prevent premature "no notifications" display.
Authentication & Scanning Flow
infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts, infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Removed automatic scan restart after successful authentication; added contact email reference and "Self-declare instead" option in Didit verification failure flow for non-upgrade mode.

Sequence Diagram(s)

sequenceDiagram
participant App as App Layout
participant NS as NotificationService
participant PN as Push Notifications
participant Panel as Local Panel
App->>+NS: onMount - listenForForegroundNotifications()
NS->>+PN: Subscribe to notifications (onNotificationReceived)
PN-->>-NS: Setup listener
Note over NS: Listen for push source<br/>with non-empty title
PN->>+NS: Foreground notification received
NS->>NS: Filter & normalize data
NS->>+Panel: addNotification()
Panel-->>-NS: Stored
NS-->>-PN: Processed
Note over App: Component unmounts
App->>+NS: onDestroy
NS->>+PN: Cleanup listener
PN-->>-NS: Unregistered
NS-->>-App: Complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

🐰 Whispers to the wind

Push notifications bloom and flow,
In foreground listeners we now know—
When auth succeeds, the scanner rests,
While onboarding users choose their quests! 📱✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe pull request description is incomplete and lacks critical information required by the template.Provide an issue number, detailed testing approach, and clarify what specific functionality was updated. The description should explain the changes made across the multiple files (NotificationService, layout, notifications page, scan logic, onboarding).
Title check❓ InconclusiveThe title 'Chore/eid wallet UI fixes' is vague and uses generic phrasing ('UI fixes') that doesn't specify which UI issues are addressed or what the main change accomplishes.Replace the generic 'UI fixes' with specific details about the primary changes, such as 'Add foreground notification listener and improve notification loading state' or similar.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/eid-wallet-ui-fixes
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@coderabbitaicoderabbitaiBot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/eid-wallet/src/lib/services/NotificationService.ts`:
- Around line 411-430: The foreground listener in
listenForForegroundNotifications currently always calls addNotification which
can create duplicates because checkAndShowNotifications/sendLocalNotification
also persists pushes; before calling addNotification inside
listenForForegroundNotifications, compute a deterministic dedupe key (preferably
from a stable field in notification.extra like an id or otherwise from
title+body+JSON.stringify(data)) and query the notifications store (or use the
existing addNotification API if it supports a lookup) to see if a notification
with that same key already exists; only call addNotification when no matching
entry is found. Reference: listenForForegroundNotifications, addNotification,
and sendLocalNotification (checkAndShowNotifications flow) to implement the
dedupe check.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eef499dc-880f-45d4-925e-bcf8ab798e8e

📥 Commits

Reviewing files that changed from the base of the PR and between 867f67b and e7b738c.

📒 Files selected for processing (7)
  • infrastructure/control-panel/src/routes/api/references/+server.ts
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/routes/(app)/+layout.svelte
  • infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
💤 Files with no reviewable changes (2)
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts

@coodos
coodos merged commit 496b739 into mainMar 14, 2026
4 checks passed
@coodos
coodos deleted the chore/eid-wallet-ui-fixes branch March 14, 2026 08:57
@coderabbitaicoderabbitaiBot mentioned this pull request Mar 14, 2026
6 tasks
Sign up for freeto 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.

1 participant

@coodos
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Chore/eid wallet UI fixes - #917

Merged
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes
Mar 14, 2026
Merged

Chore/eid wallet UI fixes#917
coodos merged 5 commits into
mainfrom
chore/eid-wallet-ui-fixes

Conversation

@coodos

@coodoscoodos commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Description of change

Issue Number

Type of change

  • Update (a change which updates existing functionality)

How the change has been tested

Change checklist

  • I have ensured that the CI Checks pass locally
  • I have removed any unnecessary logic
  • My code is well documented
  • I have signed my commits
  • My code follows the pattern of the application
  • I have self reviewed my code

Summary by CodeRabbit

  • New Features

    • Added support for push notifications displayed while the app is in the foreground.
    • Added "Self-declare instead" option in onboarding when verification fails, allowing users to proceed without verification.
    • Added contact email for support in verification failure messages.
  • Bug Fixes

    • Improved notifications page loading feedback to prevent premature "No notifications" display.
  • Style

    • Minor formatting adjustments.

@coderabbitai

coderabbitaiBot commented Mar 14, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@coodos has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 42 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: fb069ebb-ab17-4e49-8de1-5f51cf833ffb

📥 Commits

Reviewing files that changed from the base of the PR and between e7b738c and f50d1b9.

📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/lib/stores/notifications.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
📝 Walkthrough

Walkthrough

This PR adds push notification foreground listener support to the eid-wallet application, includes minor formatting adjustments in the control panel, removes automatic scan restart after authentication, and enhances the onboarding verification flow with alternative options and contact information.

Changes

Cohort / File(s)Summary
Control Panel Formatting
infrastructure/control-panel/src/routes/api/references/+server.ts, infrastructure/control-panel/src/routes/visualizer/+page.server.ts
Formatting and whitespace cleanup with no behavioral changes.
Notification Service Implementation
infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Added new listenForForegroundNotifications() method that subscribes to incoming push notifications, filters for push source with non-empty titles, and stores notifications locally with cleanup support.
App Layout & Notification Lifecycle
infrastructure/eid-wallet/src/routes/(app)/+layout.svelte, infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
Integrated foreground notification listener setup/teardown in layout with error handling and added loading state tracking to notifications page to prevent premature "no notifications" display.
Authentication & Scanning Flow
infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts, infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Removed automatic scan restart after successful authentication; added contact email reference and "Self-declare instead" option in Didit verification failure flow for non-upgrade mode.

Sequence Diagram(s)

sequenceDiagram
participant App as App Layout
participant NS as NotificationService
participant PN as Push Notifications
participant Panel as Local Panel
App->>+NS: onMount - listenForForegroundNotifications()
NS->>+PN: Subscribe to notifications (onNotificationReceived)
PN-->>-NS: Setup listener
Note over NS: Listen for push source<br/>with non-empty title
PN->>+NS: Foreground notification received
NS->>NS: Filter & normalize data
NS->>+Panel: addNotification()
Panel-->>-NS: Stored
NS-->>-PN: Processed
Note over App: Component unmounts
App->>+NS: onDestroy
NS->>+PN: Cleanup listener
PN-->>-NS: Unregistered
NS-->>-App: Complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~22 minutes

Possibly related PRs

Suggested reviewers

  • sosweetham

Poem

🐰 Whispers to the wind

Push notifications bloom and flow,
In foreground listeners we now know—
When auth succeeds, the scanner rests,
While onboarding users choose their quests! 📱✨

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check nameStatusExplanationResolution
Description check⚠️ WarningThe pull request description is incomplete and lacks critical information required by the template.Provide an issue number, detailed testing approach, and clarify what specific functionality was updated. The description should explain the changes made across the multiple files (NotificationService, layout, notifications page, scan logic, onboarding).
Title check❓ InconclusiveThe title 'Chore/eid wallet UI fixes' is vague and uses generic phrasing ('UI fixes') that doesn't specify which UI issues are addressed or what the main change accomplishes.Replace the generic 'UI fixes' with specific details about the primary changes, such as 'Add foreground notification listener and improve notification loading state' or similar.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch chore/eid-wallet-ui-fixes
📝 Coding Plan
  • Generate coding plan for human review comments

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 and usage tips.

@coderabbitaicoderabbitaiBot 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@infrastructure/eid-wallet/src/lib/services/NotificationService.ts`:
- Around line 411-430: The foreground listener in
listenForForegroundNotifications currently always calls addNotification which
can create duplicates because checkAndShowNotifications/sendLocalNotification
also persists pushes; before calling addNotification inside
listenForForegroundNotifications, compute a deterministic dedupe key (preferably
from a stable field in notification.extra like an id or otherwise from
title+body+JSON.stringify(data)) and query the notifications store (or use the
existing addNotification API if it supports a lookup) to see if a notification
with that same key already exists; only call addNotification when no matching
entry is found. Reference: listenForForegroundNotifications, addNotification,
and sendLocalNotification (checkAndShowNotifications flow) to implement the
dedupe check.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: eef499dc-880f-45d4-925e-bcf8ab798e8e

📥 Commits

Reviewing files that changed from the base of the PR and between 867f67b and e7b738c.

📒 Files selected for processing (7)
  • infrastructure/control-panel/src/routes/api/references/+server.ts
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts
  • infrastructure/eid-wallet/src/routes/(app)/+layout.svelte
  • infrastructure/eid-wallet/src/routes/(app)/notifications/+page.svelte
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
💤 Files with no reviewable changes (2)
  • infrastructure/control-panel/src/routes/visualizer/+page.server.ts
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/scanLogic.ts

@coodos
coodos merged commit 496b739 into mainMar 14, 2026
4 checks passed
@coodos
coodos deleted the chore/eid-wallet-ui-fixes branch March 14, 2026 08:57
@coderabbitaicoderabbitaiBot mentioned this pull request Mar 14, 2026
6 tasks
Sign up for freeto 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.

1 participant

@coodos