fix: eid wallet link - #403

Merged
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint
Nov 6, 2025
Merged

fix: eid wallet link#403
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint

Conversation

@sosweetham

@sosweethamsosweetham commented Nov 6, 2025

Copy link
Copy Markdown
Member

Description of change

Issue Number

Type of change

  • Breaking (any change that would cause existing functionality to not work as expected)
  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)
  • Docs (changes to the documentation)
  • Chore (refactoring, build scripts or anything else that isn't user-facing)

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

  • Bug Fixes
    • Improved null-safety checks and error handling across key management and authentication flows to prevent runtime errors.
    • Enhanced deep link parsing for QR code scanning with stricter type validation.
  • Chores
    • Updated TypeScript configuration for better code compilation.
    • Refactored internal factory patterns for improved maintainability.

@coderabbitai

coderabbitaiBot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This PR improves type safety, refactors factory patterns, and enhances control flow across the infrastructure. Changes include introducing TypeScript interfaces for structured data (signing, deep links, revealed votes) in the scan-QR page, refactoring KeyManagerFactory with explicit factory method references, narrowing NotificationPayload API types, converting runtime imports to type-only imports, and updating TypeScript compiler options.

Changes

Cohort / File(s)Summary
Type System and Configuration
infrastructure/blindvote/src/core/voting-system.ts, infrastructure/eid-wallet/tsconfig.json
Converted runtime imports to type-only imports; added ES2020 target/module and exclusion list to TypeScript config.
Key Manager Factory
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts
Replaced internal this. references with explicit KeyManagerFactory references; introduced getKeyManagerForContext static method; refactored singleton initialization and isHardwareAvailable logic.
eVault and Notifications
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts, infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Replaced Math.pow with exponentiation operator; removed GraphQLClient timeout option; narrowed NotificationPayload.data type from Record<string, any> to Record<string, unknown>; restructured control flow branches.
Route Type Safety
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Added TypeScript interfaces (SigningData, DeepLinkData, RevealedVoteData); enhanced deep-link handling with typed structure; integrated blind-voting flows with explicit poll/vote data management; improved error handling and UI fieldset structure.
Auth Onboarding
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Replaced non-null assertions with optional chaining in key manager operations; introduced default-initialized function placeholders.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Page as scan-qr Page
participant KeyMgr as KeyManagerFactory
participant API as Poll/Vault API
rect rgb(220, 240, 250)
Note over User,API: Deep Link Signing Flow
User->>Page: Scan deep link (sign type)
Page->>Page: Parse DeepLinkData
Page->>API: Fetch poll details
API-->>Page: Poll config + options
Page->>Page: Set signingData (typed)
Page->>User: Display "Select your vote" UI
User->>Page: Submit vote selection
Page->>KeyMgr: Get key manager for signing
KeyMgr-->>Page: Hardware or software manager
Page->>Page: Sign + encrypt vote
Page->>API: Submit signed vote
API-->>Page: Success
Page->>User: Redirect to redirect_uri
end
rect rgb(240, 250, 240)
Note over User,API: Blind Voting Flow
User->>Page: Trigger blind voting request
Page->>Page: Parse SigningData (typed)
Page->>API: Fetch poll details via platformUrl
API-->>Page: Poll details + options
Page->>Page: Update signingData + pollDetails
Page->>User: Display vote options
User->>Page: Select and confirm vote
Page->>Page: Encrypt + blind vote
Page->>API: Submit blind vote
API-->>Page: Success (voteId, etc.)
Page->>Page: Store revealedVoteData
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • scan-qr/+page.svelte: Most complex file with pervasive type additions (3 new interfaces), deep-link/blind-vote flow interconnections, and UI restructuring. Requires careful tracing of data flow through multiple handlers.
  • KeyManagerFactory.ts: New getKeyManagerForContext method and factory pattern refactoring across multiple access paths; verify singleton initialization consistency.
  • NotificationService.ts: API type narrowing and control flow branch restructuring; ensure failure paths are equivalent to pre-refactor behavior.

Possibly related PRs

Poem

🐰 With types now clear and factories bright,
Deep links and votes aligned just right,
No more loose any, just unknown and care,
The scan-QR flows now structured fair,
From KeyManager to vault, refactored with delight!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check nameStatusExplanationResolution
Description check⚠️ WarningThe PR description is entirely empty—only the template structure is present with no filled-in content regarding issue number, type of change selection, testing details, or specific change descriptions.Complete the description template by specifying the issue number, selecting the type of change, describing how changes were tested, and explaining the rationale for the refactoring work shown in the code changes.
Title check❓ InconclusiveThe PR title 'fix: eid wallet link' is vague and doesn't clearly convey the actual changes made, which involve refactoring imports, factory patterns, type safety improvements, and configuration updates across multiple files.Use a more descriptive title that reflects the primary refactoring goal, such as 'refactor: improve type safety and factory patterns in eid-wallet' or 'chore: update eid-wallet code structure and TypeScript configuration'.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/eid-wallet-lint

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f506144 and 199ce4f.

📒 Files selected for processing (7)
  • infrastructure/blindvote/src/core/voting-system.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (4 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2 hunks)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts (4 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (24 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (4 hunks)
  • infrastructure/eid-wallet/tsconfig.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-06-07T04:59:24.520Z
Learnt from: Sahil2004
Repo: MetaState-Prototype-Project/prototype PR: 193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from `$lib/types` over importing interfaces from component files for better type organization and to avoid circular dependencies.

Applied to files:

  • infrastructure/blindvote/src/core/voting-system.ts
🧬 Code graph analysis (3)
infrastructure/eid-wallet/src/lib/services/NotificationService.ts (1)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2)
  • vault (250-339)
  • vault (341-354)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (1)
infrastructure/web3-adapter/src/index.js (1)
  • delay (242-242)
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (2)
infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1)
  • HardwareKeyManager (14-101)
infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1)
  • SoftwareKeyManager (7-275)

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.

@coodos
coodos marked this pull request as ready for review November 6, 2025 12:45

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

LGTM

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

LGTM

@coodos
coodos merged commit d6bea52 into mainNov 6, 2025
2 of 4 checks passed
@coodos
coodos deleted the fix/eid-wallet-lint branch November 6, 2025 12:50
This was referenced Nov 24, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Jan 8, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 25, 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.

3 participants

@sosweetham@kulmin@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

fix: eid wallet link - #403

Merged
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint
Nov 6, 2025
Merged

fix: eid wallet link#403
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint

Conversation

@sosweetham

@sosweethamsosweetham commented Nov 6, 2025

Copy link
Copy Markdown
Member

Description of change

Issue Number

Type of change

  • Breaking (any change that would cause existing functionality to not work as expected)
  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)
  • Docs (changes to the documentation)
  • Chore (refactoring, build scripts or anything else that isn't user-facing)

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

  • Bug Fixes
    • Improved null-safety checks and error handling across key management and authentication flows to prevent runtime errors.
    • Enhanced deep link parsing for QR code scanning with stricter type validation.
  • Chores
    • Updated TypeScript configuration for better code compilation.
    • Refactored internal factory patterns for improved maintainability.

@coderabbitai

coderabbitaiBot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This PR improves type safety, refactors factory patterns, and enhances control flow across the infrastructure. Changes include introducing TypeScript interfaces for structured data (signing, deep links, revealed votes) in the scan-QR page, refactoring KeyManagerFactory with explicit factory method references, narrowing NotificationPayload API types, converting runtime imports to type-only imports, and updating TypeScript compiler options.

Changes

Cohort / File(s)Summary
Type System and Configuration
infrastructure/blindvote/src/core/voting-system.ts, infrastructure/eid-wallet/tsconfig.json
Converted runtime imports to type-only imports; added ES2020 target/module and exclusion list to TypeScript config.
Key Manager Factory
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts
Replaced internal this. references with explicit KeyManagerFactory references; introduced getKeyManagerForContext static method; refactored singleton initialization and isHardwareAvailable logic.
eVault and Notifications
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts, infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Replaced Math.pow with exponentiation operator; removed GraphQLClient timeout option; narrowed NotificationPayload.data type from Record<string, any> to Record<string, unknown>; restructured control flow branches.
Route Type Safety
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Added TypeScript interfaces (SigningData, DeepLinkData, RevealedVoteData); enhanced deep-link handling with typed structure; integrated blind-voting flows with explicit poll/vote data management; improved error handling and UI fieldset structure.
Auth Onboarding
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Replaced non-null assertions with optional chaining in key manager operations; introduced default-initialized function placeholders.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Page as scan-qr Page
participant KeyMgr as KeyManagerFactory
participant API as Poll/Vault API
rect rgb(220, 240, 250)
Note over User,API: Deep Link Signing Flow
User->>Page: Scan deep link (sign type)
Page->>Page: Parse DeepLinkData
Page->>API: Fetch poll details
API-->>Page: Poll config + options
Page->>Page: Set signingData (typed)
Page->>User: Display "Select your vote" UI
User->>Page: Submit vote selection
Page->>KeyMgr: Get key manager for signing
KeyMgr-->>Page: Hardware or software manager
Page->>Page: Sign + encrypt vote
Page->>API: Submit signed vote
API-->>Page: Success
Page->>User: Redirect to redirect_uri
end
rect rgb(240, 250, 240)
Note over User,API: Blind Voting Flow
User->>Page: Trigger blind voting request
Page->>Page: Parse SigningData (typed)
Page->>API: Fetch poll details via platformUrl
API-->>Page: Poll details + options
Page->>Page: Update signingData + pollDetails
Page->>User: Display vote options
User->>Page: Select and confirm vote
Page->>Page: Encrypt + blind vote
Page->>API: Submit blind vote
API-->>Page: Success (voteId, etc.)
Page->>Page: Store revealedVoteData
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • scan-qr/+page.svelte: Most complex file with pervasive type additions (3 new interfaces), deep-link/blind-vote flow interconnections, and UI restructuring. Requires careful tracing of data flow through multiple handlers.
  • KeyManagerFactory.ts: New getKeyManagerForContext method and factory pattern refactoring across multiple access paths; verify singleton initialization consistency.
  • NotificationService.ts: API type narrowing and control flow branch restructuring; ensure failure paths are equivalent to pre-refactor behavior.

Possibly related PRs

Poem

🐰 With types now clear and factories bright,
Deep links and votes aligned just right,
No more loose any, just unknown and care,
The scan-QR flows now structured fair,
From KeyManager to vault, refactored with delight!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check nameStatusExplanationResolution
Description check⚠️ WarningThe PR description is entirely empty—only the template structure is present with no filled-in content regarding issue number, type of change selection, testing details, or specific change descriptions.Complete the description template by specifying the issue number, selecting the type of change, describing how changes were tested, and explaining the rationale for the refactoring work shown in the code changes.
Title check❓ InconclusiveThe PR title 'fix: eid wallet link' is vague and doesn't clearly convey the actual changes made, which involve refactoring imports, factory patterns, type safety improvements, and configuration updates across multiple files.Use a more descriptive title that reflects the primary refactoring goal, such as 'refactor: improve type safety and factory patterns in eid-wallet' or 'chore: update eid-wallet code structure and TypeScript configuration'.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/eid-wallet-lint

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f506144 and 199ce4f.

📒 Files selected for processing (7)
  • infrastructure/blindvote/src/core/voting-system.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (4 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2 hunks)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts (4 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (24 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (4 hunks)
  • infrastructure/eid-wallet/tsconfig.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-06-07T04:59:24.520Z
Learnt from: Sahil2004
Repo: MetaState-Prototype-Project/prototype PR: 193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from `$lib/types` over importing interfaces from component files for better type organization and to avoid circular dependencies.

Applied to files:

  • infrastructure/blindvote/src/core/voting-system.ts
🧬 Code graph analysis (3)
infrastructure/eid-wallet/src/lib/services/NotificationService.ts (1)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2)
  • vault (250-339)
  • vault (341-354)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (1)
infrastructure/web3-adapter/src/index.js (1)
  • delay (242-242)
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (2)
infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1)
  • HardwareKeyManager (14-101)
infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1)
  • SoftwareKeyManager (7-275)

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.

@coodos
coodos marked this pull request as ready for review November 6, 2025 12:45

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

LGTM

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

LGTM

@coodos
coodos merged commit d6bea52 into mainNov 6, 2025
2 of 4 checks passed
@coodos
coodos deleted the fix/eid-wallet-lint branch November 6, 2025 12:50
This was referenced Nov 24, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Jan 8, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 25, 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.

3 participants

@sosweetham@kulmin@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

fix: eid wallet link - #403

Merged
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint
Nov 6, 2025
Merged

fix: eid wallet link#403
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint

Conversation

@sosweetham

@sosweethamsosweetham commented Nov 6, 2025

Copy link
Copy Markdown
Member

Description of change

Issue Number

Type of change

  • Breaking (any change that would cause existing functionality to not work as expected)
  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)
  • Docs (changes to the documentation)
  • Chore (refactoring, build scripts or anything else that isn't user-facing)

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

  • Bug Fixes
    • Improved null-safety checks and error handling across key management and authentication flows to prevent runtime errors.
    • Enhanced deep link parsing for QR code scanning with stricter type validation.
  • Chores
    • Updated TypeScript configuration for better code compilation.
    • Refactored internal factory patterns for improved maintainability.

@coderabbitai

coderabbitaiBot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This PR improves type safety, refactors factory patterns, and enhances control flow across the infrastructure. Changes include introducing TypeScript interfaces for structured data (signing, deep links, revealed votes) in the scan-QR page, refactoring KeyManagerFactory with explicit factory method references, narrowing NotificationPayload API types, converting runtime imports to type-only imports, and updating TypeScript compiler options.

Changes

Cohort / File(s)Summary
Type System and Configuration
infrastructure/blindvote/src/core/voting-system.ts, infrastructure/eid-wallet/tsconfig.json
Converted runtime imports to type-only imports; added ES2020 target/module and exclusion list to TypeScript config.
Key Manager Factory
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts
Replaced internal this. references with explicit KeyManagerFactory references; introduced getKeyManagerForContext static method; refactored singleton initialization and isHardwareAvailable logic.
eVault and Notifications
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts, infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Replaced Math.pow with exponentiation operator; removed GraphQLClient timeout option; narrowed NotificationPayload.data type from Record<string, any> to Record<string, unknown>; restructured control flow branches.
Route Type Safety
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Added TypeScript interfaces (SigningData, DeepLinkData, RevealedVoteData); enhanced deep-link handling with typed structure; integrated blind-voting flows with explicit poll/vote data management; improved error handling and UI fieldset structure.
Auth Onboarding
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Replaced non-null assertions with optional chaining in key manager operations; introduced default-initialized function placeholders.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Page as scan-qr Page
participant KeyMgr as KeyManagerFactory
participant API as Poll/Vault API
rect rgb(220, 240, 250)
Note over User,API: Deep Link Signing Flow
User->>Page: Scan deep link (sign type)
Page->>Page: Parse DeepLinkData
Page->>API: Fetch poll details
API-->>Page: Poll config + options
Page->>Page: Set signingData (typed)
Page->>User: Display "Select your vote" UI
User->>Page: Submit vote selection
Page->>KeyMgr: Get key manager for signing
KeyMgr-->>Page: Hardware or software manager
Page->>Page: Sign + encrypt vote
Page->>API: Submit signed vote
API-->>Page: Success
Page->>User: Redirect to redirect_uri
end
rect rgb(240, 250, 240)
Note over User,API: Blind Voting Flow
User->>Page: Trigger blind voting request
Page->>Page: Parse SigningData (typed)
Page->>API: Fetch poll details via platformUrl
API-->>Page: Poll details + options
Page->>Page: Update signingData + pollDetails
Page->>User: Display vote options
User->>Page: Select and confirm vote
Page->>Page: Encrypt + blind vote
Page->>API: Submit blind vote
API-->>Page: Success (voteId, etc.)
Page->>Page: Store revealedVoteData
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • scan-qr/+page.svelte: Most complex file with pervasive type additions (3 new interfaces), deep-link/blind-vote flow interconnections, and UI restructuring. Requires careful tracing of data flow through multiple handlers.
  • KeyManagerFactory.ts: New getKeyManagerForContext method and factory pattern refactoring across multiple access paths; verify singleton initialization consistency.
  • NotificationService.ts: API type narrowing and control flow branch restructuring; ensure failure paths are equivalent to pre-refactor behavior.

Possibly related PRs

Poem

🐰 With types now clear and factories bright,
Deep links and votes aligned just right,
No more loose any, just unknown and care,
The scan-QR flows now structured fair,
From KeyManager to vault, refactored with delight!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check nameStatusExplanationResolution
Description check⚠️ WarningThe PR description is entirely empty—only the template structure is present with no filled-in content regarding issue number, type of change selection, testing details, or specific change descriptions.Complete the description template by specifying the issue number, selecting the type of change, describing how changes were tested, and explaining the rationale for the refactoring work shown in the code changes.
Title check❓ InconclusiveThe PR title 'fix: eid wallet link' is vague and doesn't clearly convey the actual changes made, which involve refactoring imports, factory patterns, type safety improvements, and configuration updates across multiple files.Use a more descriptive title that reflects the primary refactoring goal, such as 'refactor: improve type safety and factory patterns in eid-wallet' or 'chore: update eid-wallet code structure and TypeScript configuration'.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/eid-wallet-lint

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f506144 and 199ce4f.

📒 Files selected for processing (7)
  • infrastructure/blindvote/src/core/voting-system.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (4 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2 hunks)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts (4 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (24 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (4 hunks)
  • infrastructure/eid-wallet/tsconfig.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-06-07T04:59:24.520Z
Learnt from: Sahil2004
Repo: MetaState-Prototype-Project/prototype PR: 193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from `$lib/types` over importing interfaces from component files for better type organization and to avoid circular dependencies.

Applied to files:

  • infrastructure/blindvote/src/core/voting-system.ts
🧬 Code graph analysis (3)
infrastructure/eid-wallet/src/lib/services/NotificationService.ts (1)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2)
  • vault (250-339)
  • vault (341-354)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (1)
infrastructure/web3-adapter/src/index.js (1)
  • delay (242-242)
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (2)
infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1)
  • HardwareKeyManager (14-101)
infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1)
  • SoftwareKeyManager (7-275)

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.

@coodos
coodos marked this pull request as ready for review November 6, 2025 12:45

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

LGTM

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

LGTM

@coodos
coodos merged commit d6bea52 into mainNov 6, 2025
2 of 4 checks passed
@coodos
coodos deleted the fix/eid-wallet-lint branch November 6, 2025 12:50
This was referenced Nov 24, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Jan 8, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 25, 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.

3 participants

@sosweetham@kulmin@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

fix: eid wallet link - #403

Merged
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint
Nov 6, 2025
Merged

fix: eid wallet link#403
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint

Conversation

@sosweetham

@sosweethamsosweetham commented Nov 6, 2025

Copy link
Copy Markdown
Member

Description of change

Issue Number

Type of change

  • Breaking (any change that would cause existing functionality to not work as expected)
  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)
  • Docs (changes to the documentation)
  • Chore (refactoring, build scripts or anything else that isn't user-facing)

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

  • Bug Fixes
    • Improved null-safety checks and error handling across key management and authentication flows to prevent runtime errors.
    • Enhanced deep link parsing for QR code scanning with stricter type validation.
  • Chores
    • Updated TypeScript configuration for better code compilation.
    • Refactored internal factory patterns for improved maintainability.

@coderabbitai

coderabbitaiBot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This PR improves type safety, refactors factory patterns, and enhances control flow across the infrastructure. Changes include introducing TypeScript interfaces for structured data (signing, deep links, revealed votes) in the scan-QR page, refactoring KeyManagerFactory with explicit factory method references, narrowing NotificationPayload API types, converting runtime imports to type-only imports, and updating TypeScript compiler options.

Changes

Cohort / File(s)Summary
Type System and Configuration
infrastructure/blindvote/src/core/voting-system.ts, infrastructure/eid-wallet/tsconfig.json
Converted runtime imports to type-only imports; added ES2020 target/module and exclusion list to TypeScript config.
Key Manager Factory
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts
Replaced internal this. references with explicit KeyManagerFactory references; introduced getKeyManagerForContext static method; refactored singleton initialization and isHardwareAvailable logic.
eVault and Notifications
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts, infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Replaced Math.pow with exponentiation operator; removed GraphQLClient timeout option; narrowed NotificationPayload.data type from Record<string, any> to Record<string, unknown>; restructured control flow branches.
Route Type Safety
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Added TypeScript interfaces (SigningData, DeepLinkData, RevealedVoteData); enhanced deep-link handling with typed structure; integrated blind-voting flows with explicit poll/vote data management; improved error handling and UI fieldset structure.
Auth Onboarding
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Replaced non-null assertions with optional chaining in key manager operations; introduced default-initialized function placeholders.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Page as scan-qr Page
participant KeyMgr as KeyManagerFactory
participant API as Poll/Vault API
rect rgb(220, 240, 250)
Note over User,API: Deep Link Signing Flow
User->>Page: Scan deep link (sign type)
Page->>Page: Parse DeepLinkData
Page->>API: Fetch poll details
API-->>Page: Poll config + options
Page->>Page: Set signingData (typed)
Page->>User: Display "Select your vote" UI
User->>Page: Submit vote selection
Page->>KeyMgr: Get key manager for signing
KeyMgr-->>Page: Hardware or software manager
Page->>Page: Sign + encrypt vote
Page->>API: Submit signed vote
API-->>Page: Success
Page->>User: Redirect to redirect_uri
end
rect rgb(240, 250, 240)
Note over User,API: Blind Voting Flow
User->>Page: Trigger blind voting request
Page->>Page: Parse SigningData (typed)
Page->>API: Fetch poll details via platformUrl
API-->>Page: Poll details + options
Page->>Page: Update signingData + pollDetails
Page->>User: Display vote options
User->>Page: Select and confirm vote
Page->>Page: Encrypt + blind vote
Page->>API: Submit blind vote
API-->>Page: Success (voteId, etc.)
Page->>Page: Store revealedVoteData
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • scan-qr/+page.svelte: Most complex file with pervasive type additions (3 new interfaces), deep-link/blind-vote flow interconnections, and UI restructuring. Requires careful tracing of data flow through multiple handlers.
  • KeyManagerFactory.ts: New getKeyManagerForContext method and factory pattern refactoring across multiple access paths; verify singleton initialization consistency.
  • NotificationService.ts: API type narrowing and control flow branch restructuring; ensure failure paths are equivalent to pre-refactor behavior.

Possibly related PRs

Poem

🐰 With types now clear and factories bright,
Deep links and votes aligned just right,
No more loose any, just unknown and care,
The scan-QR flows now structured fair,
From KeyManager to vault, refactored with delight!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check nameStatusExplanationResolution
Description check⚠️ WarningThe PR description is entirely empty—only the template structure is present with no filled-in content regarding issue number, type of change selection, testing details, or specific change descriptions.Complete the description template by specifying the issue number, selecting the type of change, describing how changes were tested, and explaining the rationale for the refactoring work shown in the code changes.
Title check❓ InconclusiveThe PR title 'fix: eid wallet link' is vague and doesn't clearly convey the actual changes made, which involve refactoring imports, factory patterns, type safety improvements, and configuration updates across multiple files.Use a more descriptive title that reflects the primary refactoring goal, such as 'refactor: improve type safety and factory patterns in eid-wallet' or 'chore: update eid-wallet code structure and TypeScript configuration'.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/eid-wallet-lint

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f506144 and 199ce4f.

📒 Files selected for processing (7)
  • infrastructure/blindvote/src/core/voting-system.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (4 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2 hunks)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts (4 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (24 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (4 hunks)
  • infrastructure/eid-wallet/tsconfig.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-06-07T04:59:24.520Z
Learnt from: Sahil2004
Repo: MetaState-Prototype-Project/prototype PR: 193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from `$lib/types` over importing interfaces from component files for better type organization and to avoid circular dependencies.

Applied to files:

  • infrastructure/blindvote/src/core/voting-system.ts
🧬 Code graph analysis (3)
infrastructure/eid-wallet/src/lib/services/NotificationService.ts (1)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2)
  • vault (250-339)
  • vault (341-354)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (1)
infrastructure/web3-adapter/src/index.js (1)
  • delay (242-242)
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (2)
infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1)
  • HardwareKeyManager (14-101)
infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1)
  • SoftwareKeyManager (7-275)

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.

@coodos
coodos marked this pull request as ready for review November 6, 2025 12:45

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

LGTM

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

LGTM

@coodos
coodos merged commit d6bea52 into mainNov 6, 2025
2 of 4 checks passed
@coodos
coodos deleted the fix/eid-wallet-lint branch November 6, 2025 12:50
This was referenced Nov 24, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Jan 8, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 25, 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.

3 participants

@sosweetham@kulmin@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

fix: eid wallet link - #403

Merged
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint
Nov 6, 2025
Merged

fix: eid wallet link#403
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint

Conversation

@sosweetham

@sosweethamsosweetham commented Nov 6, 2025

Copy link
Copy Markdown
Member

Description of change

Issue Number

Type of change

  • Breaking (any change that would cause existing functionality to not work as expected)
  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)
  • Docs (changes to the documentation)
  • Chore (refactoring, build scripts or anything else that isn't user-facing)

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

  • Bug Fixes
    • Improved null-safety checks and error handling across key management and authentication flows to prevent runtime errors.
    • Enhanced deep link parsing for QR code scanning with stricter type validation.
  • Chores
    • Updated TypeScript configuration for better code compilation.
    • Refactored internal factory patterns for improved maintainability.

@coderabbitai

coderabbitaiBot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This PR improves type safety, refactors factory patterns, and enhances control flow across the infrastructure. Changes include introducing TypeScript interfaces for structured data (signing, deep links, revealed votes) in the scan-QR page, refactoring KeyManagerFactory with explicit factory method references, narrowing NotificationPayload API types, converting runtime imports to type-only imports, and updating TypeScript compiler options.

Changes

Cohort / File(s)Summary
Type System and Configuration
infrastructure/blindvote/src/core/voting-system.ts, infrastructure/eid-wallet/tsconfig.json
Converted runtime imports to type-only imports; added ES2020 target/module and exclusion list to TypeScript config.
Key Manager Factory
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts
Replaced internal this. references with explicit KeyManagerFactory references; introduced getKeyManagerForContext static method; refactored singleton initialization and isHardwareAvailable logic.
eVault and Notifications
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts, infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Replaced Math.pow with exponentiation operator; removed GraphQLClient timeout option; narrowed NotificationPayload.data type from Record<string, any> to Record<string, unknown>; restructured control flow branches.
Route Type Safety
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Added TypeScript interfaces (SigningData, DeepLinkData, RevealedVoteData); enhanced deep-link handling with typed structure; integrated blind-voting flows with explicit poll/vote data management; improved error handling and UI fieldset structure.
Auth Onboarding
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Replaced non-null assertions with optional chaining in key manager operations; introduced default-initialized function placeholders.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Page as scan-qr Page
participant KeyMgr as KeyManagerFactory
participant API as Poll/Vault API
rect rgb(220, 240, 250)
Note over User,API: Deep Link Signing Flow
User->>Page: Scan deep link (sign type)
Page->>Page: Parse DeepLinkData
Page->>API: Fetch poll details
API-->>Page: Poll config + options
Page->>Page: Set signingData (typed)
Page->>User: Display "Select your vote" UI
User->>Page: Submit vote selection
Page->>KeyMgr: Get key manager for signing
KeyMgr-->>Page: Hardware or software manager
Page->>Page: Sign + encrypt vote
Page->>API: Submit signed vote
API-->>Page: Success
Page->>User: Redirect to redirect_uri
end
rect rgb(240, 250, 240)
Note over User,API: Blind Voting Flow
User->>Page: Trigger blind voting request
Page->>Page: Parse SigningData (typed)
Page->>API: Fetch poll details via platformUrl
API-->>Page: Poll details + options
Page->>Page: Update signingData + pollDetails
Page->>User: Display vote options
User->>Page: Select and confirm vote
Page->>Page: Encrypt + blind vote
Page->>API: Submit blind vote
API-->>Page: Success (voteId, etc.)
Page->>Page: Store revealedVoteData
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • scan-qr/+page.svelte: Most complex file with pervasive type additions (3 new interfaces), deep-link/blind-vote flow interconnections, and UI restructuring. Requires careful tracing of data flow through multiple handlers.
  • KeyManagerFactory.ts: New getKeyManagerForContext method and factory pattern refactoring across multiple access paths; verify singleton initialization consistency.
  • NotificationService.ts: API type narrowing and control flow branch restructuring; ensure failure paths are equivalent to pre-refactor behavior.

Possibly related PRs

Poem

🐰 With types now clear and factories bright,
Deep links and votes aligned just right,
No more loose any, just unknown and care,
The scan-QR flows now structured fair,
From KeyManager to vault, refactored with delight!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check nameStatusExplanationResolution
Description check⚠️ WarningThe PR description is entirely empty—only the template structure is present with no filled-in content regarding issue number, type of change selection, testing details, or specific change descriptions.Complete the description template by specifying the issue number, selecting the type of change, describing how changes were tested, and explaining the rationale for the refactoring work shown in the code changes.
Title check❓ InconclusiveThe PR title 'fix: eid wallet link' is vague and doesn't clearly convey the actual changes made, which involve refactoring imports, factory patterns, type safety improvements, and configuration updates across multiple files.Use a more descriptive title that reflects the primary refactoring goal, such as 'refactor: improve type safety and factory patterns in eid-wallet' or 'chore: update eid-wallet code structure and TypeScript configuration'.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/eid-wallet-lint

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f506144 and 199ce4f.

📒 Files selected for processing (7)
  • infrastructure/blindvote/src/core/voting-system.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (4 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2 hunks)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts (4 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (24 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (4 hunks)
  • infrastructure/eid-wallet/tsconfig.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-06-07T04:59:24.520Z
Learnt from: Sahil2004
Repo: MetaState-Prototype-Project/prototype PR: 193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from `$lib/types` over importing interfaces from component files for better type organization and to avoid circular dependencies.

Applied to files:

  • infrastructure/blindvote/src/core/voting-system.ts
🧬 Code graph analysis (3)
infrastructure/eid-wallet/src/lib/services/NotificationService.ts (1)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2)
  • vault (250-339)
  • vault (341-354)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (1)
infrastructure/web3-adapter/src/index.js (1)
  • delay (242-242)
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (2)
infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1)
  • HardwareKeyManager (14-101)
infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1)
  • SoftwareKeyManager (7-275)

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.

@coodos
coodos marked this pull request as ready for review November 6, 2025 12:45

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

LGTM

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

LGTM

@coodos
coodos merged commit d6bea52 into mainNov 6, 2025
2 of 4 checks passed
@coodos
coodos deleted the fix/eid-wallet-lint branch November 6, 2025 12:50
This was referenced Nov 24, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Jan 8, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 25, 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.

3 participants

@sosweetham@kulmin@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

fix: eid wallet link - #403

Merged
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint
Nov 6, 2025
Merged

fix: eid wallet link#403
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint

Conversation

@sosweetham

@sosweethamsosweetham commented Nov 6, 2025

Copy link
Copy Markdown
Member

Description of change

Issue Number

Type of change

  • Breaking (any change that would cause existing functionality to not work as expected)
  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)
  • Docs (changes to the documentation)
  • Chore (refactoring, build scripts or anything else that isn't user-facing)

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

  • Bug Fixes
    • Improved null-safety checks and error handling across key management and authentication flows to prevent runtime errors.
    • Enhanced deep link parsing for QR code scanning with stricter type validation.
  • Chores
    • Updated TypeScript configuration for better code compilation.
    • Refactored internal factory patterns for improved maintainability.

@coderabbitai

coderabbitaiBot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This PR improves type safety, refactors factory patterns, and enhances control flow across the infrastructure. Changes include introducing TypeScript interfaces for structured data (signing, deep links, revealed votes) in the scan-QR page, refactoring KeyManagerFactory with explicit factory method references, narrowing NotificationPayload API types, converting runtime imports to type-only imports, and updating TypeScript compiler options.

Changes

Cohort / File(s)Summary
Type System and Configuration
infrastructure/blindvote/src/core/voting-system.ts, infrastructure/eid-wallet/tsconfig.json
Converted runtime imports to type-only imports; added ES2020 target/module and exclusion list to TypeScript config.
Key Manager Factory
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts
Replaced internal this. references with explicit KeyManagerFactory references; introduced getKeyManagerForContext static method; refactored singleton initialization and isHardwareAvailable logic.
eVault and Notifications
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts, infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Replaced Math.pow with exponentiation operator; removed GraphQLClient timeout option; narrowed NotificationPayload.data type from Record<string, any> to Record<string, unknown>; restructured control flow branches.
Route Type Safety
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Added TypeScript interfaces (SigningData, DeepLinkData, RevealedVoteData); enhanced deep-link handling with typed structure; integrated blind-voting flows with explicit poll/vote data management; improved error handling and UI fieldset structure.
Auth Onboarding
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Replaced non-null assertions with optional chaining in key manager operations; introduced default-initialized function placeholders.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Page as scan-qr Page
participant KeyMgr as KeyManagerFactory
participant API as Poll/Vault API
rect rgb(220, 240, 250)
Note over User,API: Deep Link Signing Flow
User->>Page: Scan deep link (sign type)
Page->>Page: Parse DeepLinkData
Page->>API: Fetch poll details
API-->>Page: Poll config + options
Page->>Page: Set signingData (typed)
Page->>User: Display "Select your vote" UI
User->>Page: Submit vote selection
Page->>KeyMgr: Get key manager for signing
KeyMgr-->>Page: Hardware or software manager
Page->>Page: Sign + encrypt vote
Page->>API: Submit signed vote
API-->>Page: Success
Page->>User: Redirect to redirect_uri
end
rect rgb(240, 250, 240)
Note over User,API: Blind Voting Flow
User->>Page: Trigger blind voting request
Page->>Page: Parse SigningData (typed)
Page->>API: Fetch poll details via platformUrl
API-->>Page: Poll details + options
Page->>Page: Update signingData + pollDetails
Page->>User: Display vote options
User->>Page: Select and confirm vote
Page->>Page: Encrypt + blind vote
Page->>API: Submit blind vote
API-->>Page: Success (voteId, etc.)
Page->>Page: Store revealedVoteData
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • scan-qr/+page.svelte: Most complex file with pervasive type additions (3 new interfaces), deep-link/blind-vote flow interconnections, and UI restructuring. Requires careful tracing of data flow through multiple handlers.
  • KeyManagerFactory.ts: New getKeyManagerForContext method and factory pattern refactoring across multiple access paths; verify singleton initialization consistency.
  • NotificationService.ts: API type narrowing and control flow branch restructuring; ensure failure paths are equivalent to pre-refactor behavior.

Possibly related PRs

Poem

🐰 With types now clear and factories bright,
Deep links and votes aligned just right,
No more loose any, just unknown and care,
The scan-QR flows now structured fair,
From KeyManager to vault, refactored with delight!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check nameStatusExplanationResolution
Description check⚠️ WarningThe PR description is entirely empty—only the template structure is present with no filled-in content regarding issue number, type of change selection, testing details, or specific change descriptions.Complete the description template by specifying the issue number, selecting the type of change, describing how changes were tested, and explaining the rationale for the refactoring work shown in the code changes.
Title check❓ InconclusiveThe PR title 'fix: eid wallet link' is vague and doesn't clearly convey the actual changes made, which involve refactoring imports, factory patterns, type safety improvements, and configuration updates across multiple files.Use a more descriptive title that reflects the primary refactoring goal, such as 'refactor: improve type safety and factory patterns in eid-wallet' or 'chore: update eid-wallet code structure and TypeScript configuration'.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/eid-wallet-lint

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f506144 and 199ce4f.

📒 Files selected for processing (7)
  • infrastructure/blindvote/src/core/voting-system.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (4 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2 hunks)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts (4 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (24 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (4 hunks)
  • infrastructure/eid-wallet/tsconfig.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-06-07T04:59:24.520Z
Learnt from: Sahil2004
Repo: MetaState-Prototype-Project/prototype PR: 193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from `$lib/types` over importing interfaces from component files for better type organization and to avoid circular dependencies.

Applied to files:

  • infrastructure/blindvote/src/core/voting-system.ts
🧬 Code graph analysis (3)
infrastructure/eid-wallet/src/lib/services/NotificationService.ts (1)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2)
  • vault (250-339)
  • vault (341-354)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (1)
infrastructure/web3-adapter/src/index.js (1)
  • delay (242-242)
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (2)
infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1)
  • HardwareKeyManager (14-101)
infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1)
  • SoftwareKeyManager (7-275)

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.

@coodos
coodos marked this pull request as ready for review November 6, 2025 12:45

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

LGTM

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

LGTM

@coodos
coodos merged commit d6bea52 into mainNov 6, 2025
2 of 4 checks passed
@coodos
coodos deleted the fix/eid-wallet-lint branch November 6, 2025 12:50
This was referenced Nov 24, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Jan 8, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 25, 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.

3 participants

@sosweetham@kulmin@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

fix: eid wallet link - #403

Merged
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint
Nov 6, 2025
Merged

fix: eid wallet link#403
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint

Conversation

@sosweetham

@sosweethamsosweetham commented Nov 6, 2025

Copy link
Copy Markdown
Member

Description of change

Issue Number

Type of change

  • Breaking (any change that would cause existing functionality to not work as expected)
  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)
  • Docs (changes to the documentation)
  • Chore (refactoring, build scripts or anything else that isn't user-facing)

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

  • Bug Fixes
    • Improved null-safety checks and error handling across key management and authentication flows to prevent runtime errors.
    • Enhanced deep link parsing for QR code scanning with stricter type validation.
  • Chores
    • Updated TypeScript configuration for better code compilation.
    • Refactored internal factory patterns for improved maintainability.

@coderabbitai

coderabbitaiBot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This PR improves type safety, refactors factory patterns, and enhances control flow across the infrastructure. Changes include introducing TypeScript interfaces for structured data (signing, deep links, revealed votes) in the scan-QR page, refactoring KeyManagerFactory with explicit factory method references, narrowing NotificationPayload API types, converting runtime imports to type-only imports, and updating TypeScript compiler options.

Changes

Cohort / File(s)Summary
Type System and Configuration
infrastructure/blindvote/src/core/voting-system.ts, infrastructure/eid-wallet/tsconfig.json
Converted runtime imports to type-only imports; added ES2020 target/module and exclusion list to TypeScript config.
Key Manager Factory
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts
Replaced internal this. references with explicit KeyManagerFactory references; introduced getKeyManagerForContext static method; refactored singleton initialization and isHardwareAvailable logic.
eVault and Notifications
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts, infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Replaced Math.pow with exponentiation operator; removed GraphQLClient timeout option; narrowed NotificationPayload.data type from Record<string, any> to Record<string, unknown>; restructured control flow branches.
Route Type Safety
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Added TypeScript interfaces (SigningData, DeepLinkData, RevealedVoteData); enhanced deep-link handling with typed structure; integrated blind-voting flows with explicit poll/vote data management; improved error handling and UI fieldset structure.
Auth Onboarding
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Replaced non-null assertions with optional chaining in key manager operations; introduced default-initialized function placeholders.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Page as scan-qr Page
participant KeyMgr as KeyManagerFactory
participant API as Poll/Vault API
rect rgb(220, 240, 250)
Note over User,API: Deep Link Signing Flow
User->>Page: Scan deep link (sign type)
Page->>Page: Parse DeepLinkData
Page->>API: Fetch poll details
API-->>Page: Poll config + options
Page->>Page: Set signingData (typed)
Page->>User: Display "Select your vote" UI
User->>Page: Submit vote selection
Page->>KeyMgr: Get key manager for signing
KeyMgr-->>Page: Hardware or software manager
Page->>Page: Sign + encrypt vote
Page->>API: Submit signed vote
API-->>Page: Success
Page->>User: Redirect to redirect_uri
end
rect rgb(240, 250, 240)
Note over User,API: Blind Voting Flow
User->>Page: Trigger blind voting request
Page->>Page: Parse SigningData (typed)
Page->>API: Fetch poll details via platformUrl
API-->>Page: Poll details + options
Page->>Page: Update signingData + pollDetails
Page->>User: Display vote options
User->>Page: Select and confirm vote
Page->>Page: Encrypt + blind vote
Page->>API: Submit blind vote
API-->>Page: Success (voteId, etc.)
Page->>Page: Store revealedVoteData
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • scan-qr/+page.svelte: Most complex file with pervasive type additions (3 new interfaces), deep-link/blind-vote flow interconnections, and UI restructuring. Requires careful tracing of data flow through multiple handlers.
  • KeyManagerFactory.ts: New getKeyManagerForContext method and factory pattern refactoring across multiple access paths; verify singleton initialization consistency.
  • NotificationService.ts: API type narrowing and control flow branch restructuring; ensure failure paths are equivalent to pre-refactor behavior.

Possibly related PRs

Poem

🐰 With types now clear and factories bright,
Deep links and votes aligned just right,
No more loose any, just unknown and care,
The scan-QR flows now structured fair,
From KeyManager to vault, refactored with delight!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check nameStatusExplanationResolution
Description check⚠️ WarningThe PR description is entirely empty—only the template structure is present with no filled-in content regarding issue number, type of change selection, testing details, or specific change descriptions.Complete the description template by specifying the issue number, selecting the type of change, describing how changes were tested, and explaining the rationale for the refactoring work shown in the code changes.
Title check❓ InconclusiveThe PR title 'fix: eid wallet link' is vague and doesn't clearly convey the actual changes made, which involve refactoring imports, factory patterns, type safety improvements, and configuration updates across multiple files.Use a more descriptive title that reflects the primary refactoring goal, such as 'refactor: improve type safety and factory patterns in eid-wallet' or 'chore: update eid-wallet code structure and TypeScript configuration'.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/eid-wallet-lint

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f506144 and 199ce4f.

📒 Files selected for processing (7)
  • infrastructure/blindvote/src/core/voting-system.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (4 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2 hunks)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts (4 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (24 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (4 hunks)
  • infrastructure/eid-wallet/tsconfig.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-06-07T04:59:24.520Z
Learnt from: Sahil2004
Repo: MetaState-Prototype-Project/prototype PR: 193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from `$lib/types` over importing interfaces from component files for better type organization and to avoid circular dependencies.

Applied to files:

  • infrastructure/blindvote/src/core/voting-system.ts
🧬 Code graph analysis (3)
infrastructure/eid-wallet/src/lib/services/NotificationService.ts (1)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2)
  • vault (250-339)
  • vault (341-354)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (1)
infrastructure/web3-adapter/src/index.js (1)
  • delay (242-242)
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (2)
infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1)
  • HardwareKeyManager (14-101)
infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1)
  • SoftwareKeyManager (7-275)

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.

@coodos
coodos marked this pull request as ready for review November 6, 2025 12:45

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

LGTM

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

LGTM

@coodos
coodos merged commit d6bea52 into mainNov 6, 2025
2 of 4 checks passed
@coodos
coodos deleted the fix/eid-wallet-lint branch November 6, 2025 12:50
This was referenced Nov 24, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Jan 8, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 25, 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.

3 participants

@sosweetham@kulmin@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

fix: eid wallet link - #403

Merged
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint
Nov 6, 2025
Merged

fix: eid wallet link#403
coodos merged 2 commits into
mainfrom
fix/eid-wallet-lint

Conversation

@sosweetham

@sosweethamsosweetham commented Nov 6, 2025

Copy link
Copy Markdown
Member

Description of change

Issue Number

Type of change

  • Breaking (any change that would cause existing functionality to not work as expected)
  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)
  • Fix (a change which fixes an issue)
  • Docs (changes to the documentation)
  • Chore (refactoring, build scripts or anything else that isn't user-facing)

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

  • Bug Fixes
    • Improved null-safety checks and error handling across key management and authentication flows to prevent runtime errors.
    • Enhanced deep link parsing for QR code scanning with stricter type validation.
  • Chores
    • Updated TypeScript configuration for better code compilation.
    • Refactored internal factory patterns for improved maintainability.

@coderabbitai

coderabbitaiBot commented Nov 6, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

This PR improves type safety, refactors factory patterns, and enhances control flow across the infrastructure. Changes include introducing TypeScript interfaces for structured data (signing, deep links, revealed votes) in the scan-QR page, refactoring KeyManagerFactory with explicit factory method references, narrowing NotificationPayload API types, converting runtime imports to type-only imports, and updating TypeScript compiler options.

Changes

Cohort / File(s)Summary
Type System and Configuration
infrastructure/blindvote/src/core/voting-system.ts, infrastructure/eid-wallet/tsconfig.json
Converted runtime imports to type-only imports; added ES2020 target/module and exclusion list to TypeScript config.
Key Manager Factory
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts
Replaced internal this. references with explicit KeyManagerFactory references; introduced getKeyManagerForContext static method; refactored singleton initialization and isHardwareAvailable logic.
eVault and Notifications
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts, infrastructure/eid-wallet/src/lib/services/NotificationService.ts
Replaced Math.pow with exponentiation operator; removed GraphQLClient timeout option; narrowed NotificationPayload.data type from Record<string, any> to Record<string, unknown>; restructured control flow branches.
Route Type Safety
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Added TypeScript interfaces (SigningData, DeepLinkData, RevealedVoteData); enhanced deep-link handling with typed structure; integrated blind-voting flows with explicit poll/vote data management; improved error handling and UI fieldset structure.
Auth Onboarding
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
Replaced non-null assertions with optional chaining in key manager operations; introduced default-initialized function placeholders.

Sequence Diagram(s)

sequenceDiagram
participant User
participant Page as scan-qr Page
participant KeyMgr as KeyManagerFactory
participant API as Poll/Vault API
rect rgb(220, 240, 250)
Note over User,API: Deep Link Signing Flow
User->>Page: Scan deep link (sign type)
Page->>Page: Parse DeepLinkData
Page->>API: Fetch poll details
API-->>Page: Poll config + options
Page->>Page: Set signingData (typed)
Page->>User: Display "Select your vote" UI
User->>Page: Submit vote selection
Page->>KeyMgr: Get key manager for signing
KeyMgr-->>Page: Hardware or software manager
Page->>Page: Sign + encrypt vote
Page->>API: Submit signed vote
API-->>Page: Success
Page->>User: Redirect to redirect_uri
end
rect rgb(240, 250, 240)
Note over User,API: Blind Voting Flow
User->>Page: Trigger blind voting request
Page->>Page: Parse SigningData (typed)
Page->>API: Fetch poll details via platformUrl
API-->>Page: Poll details + options
Page->>Page: Update signingData + pollDetails
Page->>User: Display vote options
User->>Page: Select and confirm vote
Page->>Page: Encrypt + blind vote
Page->>API: Submit blind vote
API-->>Page: Success (voteId, etc.)
Page->>Page: Store revealedVoteData
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

  • scan-qr/+page.svelte: Most complex file with pervasive type additions (3 new interfaces), deep-link/blind-vote flow interconnections, and UI restructuring. Requires careful tracing of data flow through multiple handlers.
  • KeyManagerFactory.ts: New getKeyManagerForContext method and factory pattern refactoring across multiple access paths; verify singleton initialization consistency.
  • NotificationService.ts: API type narrowing and control flow branch restructuring; ensure failure paths are equivalent to pre-refactor behavior.

Possibly related PRs

Poem

🐰 With types now clear and factories bright,
Deep links and votes aligned just right,
No more loose any, just unknown and care,
The scan-QR flows now structured fair,
From KeyManager to vault, refactored with delight!

Pre-merge checks and finishing touches

❌ Failed checks (1 warning, 1 inconclusive)
Check nameStatusExplanationResolution
Description check⚠️ WarningThe PR description is entirely empty—only the template structure is present with no filled-in content regarding issue number, type of change selection, testing details, or specific change descriptions.Complete the description template by specifying the issue number, selecting the type of change, describing how changes were tested, and explaining the rationale for the refactoring work shown in the code changes.
Title check❓ InconclusiveThe PR title 'fix: eid wallet link' is vague and doesn't clearly convey the actual changes made, which involve refactoring imports, factory patterns, type safety improvements, and configuration updates across multiple files.Use a more descriptive title that reflects the primary refactoring goal, such as 'refactor: improve type safety and factory patterns in eid-wallet' or 'chore: update eid-wallet code structure and TypeScript configuration'.
✅ Passed checks (1 passed)
Check nameStatusExplanation
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch fix/eid-wallet-lint

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f506144 and 199ce4f.

📒 Files selected for processing (7)
  • infrastructure/blindvote/src/core/voting-system.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (4 hunks)
  • infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2 hunks)
  • infrastructure/eid-wallet/src/lib/services/NotificationService.ts (4 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (24 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (4 hunks)
  • infrastructure/eid-wallet/tsconfig.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-06-07T04:59:24.520Z
Learnt from: Sahil2004
Repo: MetaState-Prototype-Project/prototype PR: 193
File: platforms/metagram/src/lib/store/store.svelte.ts:0-0
Timestamp: 2025-06-07T04:59:24.520Z
Learning: In the MetaState prototype project, prefer using centralized type definitions from `$lib/types` over importing interfaces from component files for better type organization and to avoid circular dependencies.

Applied to files:

  • infrastructure/blindvote/src/core/voting-system.ts
🧬 Code graph analysis (3)
infrastructure/eid-wallet/src/lib/services/NotificationService.ts (1)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (2)
  • vault (250-339)
  • vault (341-354)
infrastructure/eid-wallet/src/lib/global/controllers/evault.ts (1)
infrastructure/web3-adapter/src/index.js (1)
  • delay (242-242)
infrastructure/eid-wallet/src/lib/crypto/KeyManagerFactory.ts (2)
infrastructure/eid-wallet/src/lib/crypto/HardwareKeyManager.ts (1)
  • HardwareKeyManager (14-101)
infrastructure/eid-wallet/src/lib/crypto/SoftwareKeyManager.ts (1)
  • SoftwareKeyManager (7-275)

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.

@coodos
coodos marked this pull request as ready for review November 6, 2025 12:45

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

LGTM

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

LGTM

@coodos
coodos merged commit d6bea52 into mainNov 6, 2025
2 of 4 checks passed
@coodos
coodos deleted the fix/eid-wallet-lint branch November 6, 2025 12:50
This was referenced Nov 24, 2025
@coderabbitaicoderabbitaiBot mentioned this pull request Jan 8, 2026
6 tasks
@coderabbitaicoderabbitaiBot mentioned this pull request Feb 25, 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.

3 participants

@sosweetham@kulmin@coodos