Skip to content

Conversation

sosweetham
Copy link
Member

@sosweetham sosweetham commented Jul 28, 2025

Description of change

adds deep link support to the app

Issue Number

closes #267

Type of change

  • New (a change which implements a new feature)

How the change has been tested

manual;

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 deep link support to the eid-wallet mobile app, enabling the app to handle URLs with the "w3ds" scheme and process authentication requests via deep links.
    • Introduced a Docker Compose configuration for running a PostgreSQL database with persistent storage.
  • Enhancements

    • Updated eid-wallet dependencies and permissions to support deep linking.
    • Improved validation and handling of deep link parameters and QR code scanning in the eid-wallet app.
    • Added support for deep link plugin configuration in Tauri settings.
  • Refactor

    • Renamed user identifier property from username to handle throughout the Pictique platform, affecting types, components, and data structures for consistency.
    • Updated various components and stories in Pictique to use the new handle property.
  • Bug Fixes

    • Ensured proper initialization of the handleContinue function in the eid-wallet verification page to prevent potential runtime errors.
  • Chores

    • Added and updated .gitignore and Prettier configuration files in multiple directories.
    • Updated workspace and project configuration files for improved dependency and formatting management.

@sosweetham sosweetham requested a review from coodos as a code owner July 28, 2025 03:19
Copy link
Contributor

coderabbitai bot commented Jul 28, 2025

Walkthrough

This set of changes introduces deep link support to the EID Wallet application, enabling it to read and process incoming deep link URLs. Supporting configuration, dependency, and code updates are included, alongside unrelated refactors in the Pictique platform (renaming username to handle and adding a property to the User interface), and the addition of formatting and ignore files in other subprojects.

Changes

Cohort / File(s) Change Summary
EID Wallet Deep Link Support
infrastructure/eid-wallet/package.json, infrastructure/eid-wallet/src-tauri/Cargo.toml, infrastructure/eid-wallet/src-tauri/Info.ios.plist, infrastructure/eid-wallet/src-tauri/capabilities/mobile.json, infrastructure/eid-wallet/src-tauri/src/lib.rs, infrastructure/eid-wallet/src-tauri/tauri.conf.json, infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte, infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
Adds deep link plugin dependencies, configures iOS URL scheme, updates capability permissions, initializes the deep link plugin, and implements logic to read and process deep link URLs in the app.
Pictique: username → handle Refactor
platforms/pictique/src/lib/types.ts, platforms/pictique/src/lib/dummyData.ts, platforms/pictique/src/lib/fragments/Message/Message.svelte, platforms/pictique/src/lib/fragments/Message/Message.stories.ts, platforms/pictique/src/lib/fragments/Post/Post.svelte, platforms/pictique/src/lib/fragments/Post/Post.stories.ts, platforms/pictique/src/lib/fragments/PostModal/PostModal.svelte, platforms/pictique/src/lib/fragments/Profile/Profile.svelte, platforms/pictique/src/lib/fragments/SettingsPage/SettingsPage.svelte, platforms/pictique/src/lib/fragments/UserRequest/UserRequest.svelte, platforms/pictique/src/lib/stores/users.ts, platforms/pictique/src/routes/(protected)/discover/+page.svelte, platforms/pictique/src/routes/(protected)/home/+page.svelte, platforms/pictique/src/routes/(protected)/messages/+page.svelte, platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte
Renames all username properties, variables, and props to handle across types, components, and data. Adds ename property to User interface.
Infrastructure and Formatting Files
.gitignore, db.compose.yml, pnpm-workspace.yaml, infrastructure/control-panel/project.inlang/.gitignore, infrastructure/control-panel/biome.json, platforms/group-charter-manager/.prettierignore, platforms/group-charter-manager/.prettierrc.json
Adds or updates ignore/configuration files, introduces a Docker Compose file for PostgreSQL, and updates workspace dependencies.
EID Wallet Auth Page Function Init
infrastructure/eid-wallet/src/routes/(auth)/verify/+page.svelte
Initializes the handleContinue function to a default resolved Promise-returning function.
Pictique: Remove Unused Imports
platforms/pictique/src/routes/(protected)/post/+page.svelte
Removes unused imports related to navigation, settings, and audience.

Sequence Diagram(s)

sequenceDiagram
    participant OS
    participant EIDWalletApp
    participant DeepLinkPlugin

    OS->>EIDWalletApp: Launch app with deep link URL (w3ds://...)
    EIDWalletApp->>DeepLinkPlugin: getCurrent()
    DeepLinkPlugin-->>EIDWalletApp: Return deep link URL(s)
    EIDWalletApp->>EIDWalletApp: Parse and validate deep link
    EIDWalletApp->>EIDWalletApp: Navigate to /scan-qr with deep link params
    EIDWalletApp->>EIDWalletApp: (scan-qr page) Parse method/params from deep link
    EIDWalletApp->>EIDWalletApp: Validate and process method (e.g., auth)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~15 minutes

Assessment against linked issues

Objective Addressed Explanation
EID-W can read what the incoming deep link URL is (#267)

Suggested reviewers

  • coodos

Poem

A rabbit hopped through code so neat,
With deep links now, EID’s complete!
URLs parsed with nimble care,
“Handle” replaces “username” everywhere.
Ignore files tidy, configs set right—
This patch brings joy to every byte!
🐇✨

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 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 9194c4e and efc030d.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (2)
  • platforms/pictique/src/lib/types.ts (1 hunks)
  • platforms/pictique/src/routes/(protected)/messages/+page.svelte (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • platforms/pictique/src/routes/(protected)/messages/+page.svelte
🚧 Files skipped from review as they are similar to previous changes (1)
  • platforms/pictique/src/lib/types.ts
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/deeplinks

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🔭 Outside diff range comments (1)
infrastructure/eid-wallet/src-tauri/Cargo.toml (1)

32-37: Replace the Git SHA with the crates.io release for tauri-plugin-deep-link

We checked and found no v2.4.1 tag in the plugins-workspace repo, but crates.io publishes tauri-plugin-deep-link v2.4.1. To ensure reproducible builds and faster fetches, switch to the crates.io release:

• File: infrastructure/eid-wallet/src-tauri/Cargo.toml (around lines 32–37)

 [target.'cfg(any(target_os = "android", target_os = "ios"))'.dependencies]
 tauri-plugin-barcode-scanner = "2"
 tauri-plugin-biometric = "2.2.0"
 tauri-plugin-crypto-hw = "0.1.0"
-tauri-plugin-deep-link = { git = "https://github.com/sosweetham/plugins-workspace", rev = "0668697" }
+tauri-plugin-deep-link = "2.4.1"

If you still need a Git dependency, you’ll first have to create and push a matching tag in the repository before pinning to it.

🧹 Nitpick comments (4)
db.compose.yml (1)

1-12: Consider pinning the image tag & adding basic hardening

Nice, minimal dev-DB setup. A few tweaks make it more robust without hurting DX:

-        image: postgres:16
+        # Pin minor version for reproducible builds
+        image: postgres:16.3

+        # Keep the service up across Docker restarts
+        restart: unless-stopped
+
+        # Simple readiness probe so dependants can `depends_on` with `condition: service_healthy`
+        healthcheck:
+            test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER"]
+            interval: 10s
+            timeout: 5s
+            retries: 5

Optional, but gives deterministic builds, automatic restart and a ready-signal for other services.
(For secrets: since this is dev only, plain-text creds are fine; for prod move them to a .env/Docker secret.)

index.html (1)

1-1: Add minimal HTML boilerplate & safe-navigation attributes

The file currently contains only a bare anchor tag.
If this is meant to be rendered in a browser (e.g. as a demo page) consider wrapping it in a minimal document structure and, for custom-scheme links, add rel="noopener" (and optionally target="_blank") to avoid the trivial reverse-tab-nabbing issue.

-<a href="w3ds://auth">CLICK ME</a>
+<!doctype html>
+<html lang="en">
+  <head>
+    <meta charset="utf-8" />
+    <title>Deep-link demo</title>
+  </head>
+  <body>
+    <a href="w3ds://auth" rel="noopener">CLICK ME</a>
+  </body>
+</html>
infrastructure/eid-wallet/package.json (1)

30-30: Ensure JS & Rust plugin versions stay in lock-step

@tauri-apps/plugin-deep-link@^2.4.1 matches the latest 2.x line.
After switching the Rust side away from a git-sha (see Cargo.toml comment) keep both ends on the same minor version to avoid ABI mismatches.

infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1)

16-19: Consider removing unused import.

The onOpenUrl function is imported but not used in this component. Consider removing it to keep imports clean, or implement the deep link URL handling if it's intended for this component.

 import {
     getCurrent,
-    onOpenUrl
 } from '@tauri-apps/plugin-deep-link'
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5b46ef1 and 6f2e842.

⛔ Files ignored due to path filters (16)
  • infrastructure/eid-wallet/src-tauri/Cargo.lock is excluded by !**/*.lock
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/AndroidProjectSystem.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/Project.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/codeStyles/codeStyleConfig.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/compiler.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/deploymentTargetSelector.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/deviceManager.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/gradle.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/kotlinc.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/migrations.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/misc.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/runConfigurations.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/.idea/vcs.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/app/src/main/AndroidManifest.xml is excluded by !**/gen/**
  • infrastructure/eid-wallet/src-tauri/gen/android/app/src/main/java/foundation/metastate/eid_wallet/MainActivity.kt is excluded by !**/gen/**
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (10)
  • .gitignore (1 hunks)
  • db.compose.yml (1 hunks)
  • index.html (1 hunks)
  • infrastructure/eid-wallet/package.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/Cargo.toml (1 hunks)
  • infrastructure/eid-wallet/src-tauri/Info.ios.plist (1 hunks)
  • infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/src/lib.rs (1 hunks)
  • infrastructure/eid-wallet/src-tauri/tauri.conf.json (1 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (2 hunks)
🧰 Additional context used
🧠 Learnings (1)
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (2)

Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which uses the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.

Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which introduces the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.

🔇 Additional comments (5)
.gitignore (1)

43-44: Addition looks good – keeps local DB state out of VCS

Ignoring /db/data is the right scope: the compose file remains version-controlled while preventing the (potentially large) PostgreSQL volume from polluting the repo history.
No further action needed.

infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1)

11-12: Permission addition looks good

"deep-link:default" is correctly appended and the JSON remains valid.
No further action required.

infrastructure/eid-wallet/src-tauri/Info.ios.plist (1)

15-24: URL-scheme registration is correct – consider query-allow-list

CFBundleURLTypes setup for w3ds looks correct.
If the app intends to open external w3ds://… links (not just handle being launched), you may also need LSApplicationQueriesSchemes so canOpenURL: calls succeed on iOS ≥ 9.

No change required if you never query; just flagging for completeness.

infrastructure/eid-wallet/src-tauri/tauri.conf.json (1)

27-35: Deep link configuration looks correct.

The plugin configuration properly follows Tauri's deep-link plugin structure with the custom "w3ds" scheme for mobile platforms. The JSON syntax and nesting are correct.

infrastructure/eid-wallet/src-tauri/src/lib.rs (1)

39-39: Plugin initialization follows correct pattern.

The deep link plugin is properly initialized alongside other plugins using the standard Tauri plugin initialization pattern.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5

🧹 Nitpick comments (2)
index.html (1)

2-2: Add missing newline at end of file.

The file should end with a newline character for better compatibility and to follow standard conventions.

 <a href="w3ds://auth?redirect=https://blabsy.w3ds.metastate.foundation/api/auth&session=8854f847-6b80-4df0-bb94-68fb9a756aa4&platform=blabsy">CLICK ME</a>
+
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

73-76: Remove commented code.

Clean up the commented code blocks that are no longer needed.

-            // const url = new URL(urls[0])
-            // console.log(url)
-            // if (url.protocol)
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6f2e842 and f016b45.

📒 Files selected for processing (4)
  • index.html (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (3 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte
🧰 Additional context used
🧠 Learnings (1)
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (3)

Learnt from: Sahil2004
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.

Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which uses the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.

Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which introduces the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🔭 Outside diff range comments (1)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

90-97: Remove duplicate greeting assignment logic.

This greeting assignment logic is duplicated from the nested onMount function above and will override the greeting set by the duplicated logic.

-    const currentHour = new Date().getHours();
-    greeting =
-        currentHour > 17
-            ? "Good Evening"
-            : currentHour > 12
-              ? "Good Afternoon"
-              : "Good Morning";
♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (1)

78-88: Improve URL parsing and error handling for deep links.

The current implementation has the same issues previously identified: manual string splitting is fragile, error logging continues execution, and the approach is not robust for malformed URLs.

Apply the previously suggested fix:

-    const urls = await getCurrent();
-    if (urls && urls.length > 0) {
-        const url = urls[0];
-        const [scheme, ...rest] = url.split("://");
-        const deeplink = rest.join("://");
-        console.log("URL", scheme, deeplink);
-        if (scheme !== "w3ds") {
-            console.error("unsupported url scheme");
-        }
-        goto(`/scan-qr?${deeplink}`);
-    }
+    const urls = await getCurrent();
+    if (urls && urls.length > 0) {
+        try {
+            const urlString = urls[0];
+            const url = new URL(urlString);
+            
+            if (url.protocol !== "w3ds:") {
+                console.error("Unsupported URL scheme:", url.protocol);
+                return;
+            }
+            
+            // Extract the path and search params for navigation
+            const deeplink = urlString.substring(url.protocol.length + 2); // Remove "w3ds://"
+            goto(`/scan-qr?${deeplink}`);
+        } catch (error) {
+            console.error("Invalid deep link URL:", error);
+        }
+    }
🧹 Nitpick comments (1)
platforms/pictique/src/routes/(protected)/post/+page.svelte (1)

44-48: Remove commented code for cleaner codebase.

Since the related imports have been removed and the functionality is no longer needed, consider removing this commented code block entirely rather than leaving it as dead code.

-	<!-- <SettingsTile
-		title="Who can see your posts?"
-		currentStatus={audience.value}
-		onclick={() => goto('/post/audience')}
-	/> -->
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2774776 and 37af899.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (5)
  • infrastructure/eid-wallet/src-tauri/tauri.conf.json (1 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/main/+page.svelte (3 hunks)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (2 hunks)
  • infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1 hunks)
  • platforms/pictique/src/routes/(protected)/post/+page.svelte (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (2)
  • infrastructure/eid-wallet/src-tauri/tauri.conf.json
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte
🧰 Additional context used
🧠 Learnings (1)
infrastructure/eid-wallet/src/routes/(auth)/onboarding/+page.svelte (1)

Learnt from: coodos
PR: #99
File: infrastructure/w3id/tests/w3id.test.ts:48-57
Timestamp: 2025-04-16T18:04:28.983Z
Learning: In test files, suggestions to add defensive coding patterns (like extra null checks) are often unnecessary, as tests are designed to fail explicitly when expectations aren't met. The test in infrastructure/w3id/tests/w3id.test.ts validates that id.logs is an instance of IDLogManager before accessing its repository property.

🔇 Additional comments (1)
platforms/pictique/src/routes/(protected)/post/+page.svelte (1)

2-3: LGTM! Clean import removal.

The removal of unused imports (goto, SettingsTile, audience) properly aligns with the commented out functionality below and reduces unnecessary dependencies.

@sosweetham
Copy link
Member Author

@Sahil2004 can you fix the coderabbit comments

@sosweetham
Copy link
Member Author

@coodos post that you'd have to merge as i cant approve and merge being the author of the pr

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (1)

100-108: Critical: Fragile URL parsing logic persists.

The deep link parsing implementation still uses the fragile string splitting approach that was flagged in previous reviews. This manual parsing is error-prone and doesn't handle edge cases properly.

Apply this refactor to use proper URL parsing APIs:

-    const [_empty, ...rest] = page.url.search.split("?");
-    const methodAndParam = rest.join("?");
-    const [method, ...param] = methodAndParam.split("?");
-    const data = param.join("?");
-    const deeplinkMethodSpecifiers = ["auth"];
-    if (method && !deeplinkMethodSpecifiers.includes(method)) {
-        console.error("Unknown method specifier");
-    }
+    const searchParams = page.url.searchParams;
+    const deepLinkData = page.url.search.substring(1); // Remove leading '?'
+    
+    if (deepLinkData) {
+        const [method, ...paramParts] = deepLinkData.split('?');
+        const deeplinkMethodSpecifiers = ["auth"];
+        if (method && !deeplinkMethodSpecifiers.includes(method)) {
+            console.error("Unknown method specifier:", method);
+            return;
+        }
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0b3a0b1 and a01e90e.

📒 Files selected for processing (1)
  • infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (3 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/routes/(app)/scan-qr/+page.svelte (5)

3-3: LGTM: Import update for page access.

The import change from $app/stores to $app/state is appropriate for accessing the current page URL in the deep link parsing logic.


32-34: LGTM: Explicit typing for state variables.

Adding explicit string | null typing to platform, hostname, and session variables improves type safety and makes the nullable nature of these variables clear.


119-133: LGTM: Platform and session validation added.

The validation for platform name format (alphanumeric with allowed special characters) and UUID format for session is well-implemented and addresses the security concerns raised in previous reviews.


149-149: LGTM: Conditional scanning implementation.

The conditional call to startScan() only when codeScannedDrawerOpen is false properly addresses the previous review concern about unconditional scanning when a deep link is processed.


144-146: LGTM: Deep link processing state management.

Setting codeScannedDrawerOpen = true and scanning = false when a valid deep link is processed correctly prepares the UI state for the authentication flow.

Sahil2004 and others added 8 commits July 30, 2025 14:54
* feat: setup control-panel project, added-colors same as eid-wallet

* feat: group

* fix: separate page added for members

* chore: added dummy data and commented the protection on routes for development purposes.

* feat: added view participants button.

* feat: added participants modal

* feat: group

* feat: group-charter-manager

* feat: added nanoid

* feat: added context menu and the owner or admin status

* feat: added context menu functionality on frontend.

* fix: lock file

* fix: added a edit modal

* chore: renamed to member.

* fix: responsiveness

* fix: responsiveness

* feat: added group settings page.

* fix: role based editing

* feat: show info and not allow edits when not a group admin or owner.

* fix: user role based edit in group info

* fix: edit image with pencil icon

* fix: added a text area

* feat: new group functionality and textarea fixed

* feat: new group functionality and textarea fixed

* feat: added close icon on dialog boxes for accessibility improvement.

* feat: removed save and close button on group settings for non admin or non owner users.

* feat: added add members button.

* feat: added add members component.

* feat: added relevant checks.

* feat: added icons next to owner and admin.

* feat: added new chat button.

* chore: fixed squigglies.

* feat: added new chat flow.

* chore: trimed down the non-required code and made a new next js project group charter manager.

* feat: added working 404 page with some changes.

* feat: fixed and added /dashboard route

* chore: upgraded tailwind v3 to v4 in old group charter

* chore: copied old index.css to new global.css

* chore: added missing dependencies for tailwindcss

* chore: upgraded new charter app's whole codebase to tailwind v4

* chore: moved dashboard page to correct route

* feat: added new charter page

* feat: added single charter page.

* feat: added /charter/:id/edit route

* chore: removed old charter codebase.

* feat: eVoting

* chore: project moved to platforms

* chore: created a new next app and moved the older to the old folder

* chore: moved the old to old dir.

* chore: migrated old project to tailwindcss v4

* feat: added components and other stuff to the new proj.

* feat: added the not found page.

* feat: added homepage.

* feat: added create page.

* feat: added vote/id page.

* chore: remove the old evoting proj.

* feat: add a button, modal for sign charter

* fix: lock file

* fix: lock file

---------

Co-authored-by: Sahil Garg <me.sahil.gg@gmail.com>
Co-authored-by: Merul Dhiman <69296233+coodos@users.noreply.github.com>
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
platforms/group-charter-manager/package.json (1)

10-10: Add an auto-fix variant of the formatting script

prettier --check . only reports problems; when teams adopt Prettier it’s common to pair it with a --write script so contributors can fix issues quickly without having to remember the exact CLI flags each time.

         "lint": "next lint",
         "format": "prettier --check .",
+        "format:fix": "prettier --write ."
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8cf8a9 and a15fc60.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (82)
  • infrastructure/control-panel/.storybook/main.ts (1 hunks)
  • infrastructure/control-panel/.storybook/preview.ts (1 hunks)
  • infrastructure/control-panel/src/app.css (1 hunks)
  • platforms/blabsy/src/components/chat/chat-window.tsx (1 hunks)
  • platforms/group-charter-manager/.prettierignore (1 hunks)
  • platforms/group-charter-manager/.prettierrc.json (1 hunks)
  • platforms/group-charter-manager/eslint.config.mjs (1 hunks)
  • platforms/group-charter-manager/next.config.ts (1 hunks)
  • platforms/group-charter-manager/package.json (1 hunks)
  • platforms/group-charter-manager/postcss.config.mjs (1 hunks)
  • platforms/group-charter-manager/src/app/charter/[id]/edit/page.tsx (17 hunks)
  • platforms/group-charter-manager/src/app/charter/[id]/page.tsx (23 hunks)
  • platforms/group-charter-manager/src/app/create/page.tsx (14 hunks)
  • platforms/group-charter-manager/src/app/globals.css (2 hunks)
  • platforms/group-charter-manager/src/app/layout.tsx (1 hunks)
  • platforms/group-charter-manager/src/app/not-found.tsx (1 hunks)
  • platforms/group-charter-manager/src/app/page.tsx (7 hunks)
  • platforms/group-charter-manager/src/components/charter-card.tsx (3 hunks)
  • platforms/group-charter-manager/src/components/icons/certificate-ribbon.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/layout/navbar.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/member-avatar.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/platform-badge.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/stats-card.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/accordion.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/alert-dialog.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/alert.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/aspect-ratio.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/avatar.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/badge.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/breadcrumb.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/button.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/calendar.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/card.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/carousel.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/chart.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/checkbox.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/collapsible.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/command.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/context-menu.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/dialog.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/drawer.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/dropdown-menu.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/form.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/hover-card.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/input-otp.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/input.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/label.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/menubar.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/navigation-menu.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/pagination.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/popover.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/progress.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/radio-group.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/resizable.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/scroll-area.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/select.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/separator.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/sheet.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/sidebar.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/skeleton.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/slider.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/switch.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/table.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/tabs.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/textarea.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/toast.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/toaster.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/toggle-group.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/toggle.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/ui/tooltip.tsx (1 hunks)
  • platforms/group-charter-manager/src/components/wysiwyg-editor.tsx (1 hunks)
  • platforms/group-charter-manager/src/hooks/use-mobile.tsx (1 hunks)
  • platforms/group-charter-manager/src/hooks/use-toast.ts (8 hunks)
  • platforms/group-charter-manager/src/hooks/useAuth.ts (1 hunks)
  • platforms/group-charter-manager/src/lib/authUtils.ts (1 hunks)
  • platforms/group-charter-manager/src/lib/utils.ts (1 hunks)
  • platforms/group-charter-manager/src/types/index.ts (1 hunks)
  • platforms/group-charter-manager/tsconfig.json (1 hunks)
  • platforms/pictique/src/lib/types.ts (1 hunks)
  • platforms/pictique/src/routes/(protected)/group/[id]/+page.svelte (10 hunks)
  • platforms/pictique/src/routes/(protected)/group/[id]/members/+page.svelte (3 hunks)
  • platforms/pictique/src/routes/(protected)/messages/+page.svelte (1 hunks)
✅ Files skipped from review due to trivial changes (78)
  • platforms/group-charter-manager/src/app/layout.tsx
  • platforms/pictique/src/lib/types.ts
  • platforms/group-charter-manager/next.config.ts
  • platforms/group-charter-manager/src/components/ui/alert.tsx
  • platforms/group-charter-manager/src/components/ui/collapsible.tsx
  • infrastructure/control-panel/src/app.css
  • platforms/group-charter-manager/src/hooks/useAuth.ts
  • platforms/group-charter-manager/.prettierrc.json
  • platforms/group-charter-manager/src/app/globals.css
  • platforms/group-charter-manager/src/components/ui/switch.tsx
  • platforms/group-charter-manager/tsconfig.json
  • platforms/group-charter-manager/postcss.config.mjs
  • platforms/group-charter-manager/src/hooks/use-mobile.tsx
  • platforms/group-charter-manager/src/components/ui/separator.tsx
  • platforms/group-charter-manager/src/components/ui/aspect-ratio.tsx
  • platforms/group-charter-manager/src/components/ui/resizable.tsx
  • platforms/group-charter-manager/src/components/ui/button.tsx
  • infrastructure/control-panel/.storybook/preview.ts
  • platforms/group-charter-manager/src/components/layout/navbar.tsx
  • platforms/group-charter-manager/src/app/not-found.tsx
  • platforms/group-charter-manager/src/app/create/page.tsx
  • platforms/group-charter-manager/src/lib/utils.ts
  • platforms/group-charter-manager/src/components/ui/slider.tsx
  • platforms/pictique/src/routes/(protected)/messages/+page.svelte
  • platforms/group-charter-manager/src/components/ui/hover-card.tsx
  • platforms/group-charter-manager/.prettierignore
  • platforms/group-charter-manager/src/components/ui/skeleton.tsx
  • platforms/group-charter-manager/src/components/ui/pagination.tsx
  • platforms/group-charter-manager/src/components/ui/label.tsx
  • platforms/group-charter-manager/src/components/ui/select.tsx
  • infrastructure/control-panel/.storybook/main.ts
  • platforms/group-charter-manager/src/components/ui/table.tsx
  • platforms/group-charter-manager/src/components/platform-badge.tsx
  • platforms/group-charter-manager/src/components/ui/scroll-area.tsx
  • platforms/group-charter-manager/src/components/ui/accordion.tsx
  • platforms/group-charter-manager/src/components/ui/radio-group.tsx
  • platforms/group-charter-manager/src/components/ui/avatar.tsx
  • platforms/group-charter-manager/src/components/ui/checkbox.tsx
  • platforms/group-charter-manager/src/components/ui/progress.tsx
  • platforms/group-charter-manager/src/components/ui/badge.tsx
  • platforms/group-charter-manager/src/components/ui/toast.tsx
  • platforms/group-charter-manager/src/components/ui/input-otp.tsx
  • platforms/group-charter-manager/src/components/ui/textarea.tsx
  • platforms/group-charter-manager/src/components/wysiwyg-editor.tsx
  • platforms/group-charter-manager/src/components/ui/tabs.tsx
  • platforms/group-charter-manager/src/app/charter/[id]/edit/page.tsx
  • platforms/group-charter-manager/src/components/ui/sheet.tsx
  • platforms/group-charter-manager/src/components/ui/toaster.tsx
  • platforms/group-charter-manager/src/components/ui/toggle.tsx
  • platforms/group-charter-manager/src/components/ui/navigation-menu.tsx
  • platforms/group-charter-manager/eslint.config.mjs
  • platforms/group-charter-manager/src/components/ui/dropdown-menu.tsx
  • platforms/group-charter-manager/src/components/ui/toggle-group.tsx
  • platforms/group-charter-manager/src/components/member-avatar.tsx
  • platforms/group-charter-manager/src/components/ui/form.tsx
  • platforms/pictique/src/routes/(protected)/group/[id]/members/+page.svelte
  • platforms/group-charter-manager/src/components/ui/input.tsx
  • platforms/group-charter-manager/src/components/icons/certificate-ribbon.tsx
  • platforms/group-charter-manager/src/components/stats-card.tsx
  • platforms/group-charter-manager/src/lib/authUtils.ts
  • platforms/group-charter-manager/src/components/ui/drawer.tsx
  • platforms/group-charter-manager/src/components/ui/tooltip.tsx
  • platforms/group-charter-manager/src/components/ui/popover.tsx
  • platforms/group-charter-manager/src/components/ui/context-menu.tsx
  • platforms/group-charter-manager/src/components/ui/card.tsx
  • platforms/group-charter-manager/src/components/ui/alert-dialog.tsx
  • platforms/group-charter-manager/src/app/page.tsx
  • platforms/group-charter-manager/src/components/ui/carousel.tsx
  • platforms/group-charter-manager/src/components/ui/breadcrumb.tsx
  • platforms/group-charter-manager/src/components/ui/calendar.tsx
  • platforms/group-charter-manager/src/components/ui/menubar.tsx
  • platforms/group-charter-manager/src/components/ui/dialog.tsx
  • platforms/group-charter-manager/src/components/ui/command.tsx
  • platforms/group-charter-manager/src/types/index.ts
  • platforms/group-charter-manager/src/components/ui/sidebar.tsx
  • platforms/group-charter-manager/src/components/charter-card.tsx
  • platforms/pictique/src/routes/(protected)/group/[id]/+page.svelte
  • platforms/group-charter-manager/src/components/ui/chart.tsx
🔇 Additional comments (4)
platforms/group-charter-manager/src/hooks/use-toast.ts (1)

1-191: Stylistic improvements look good, but check PR scope.

The conversion from double quotes to single quotes throughout the file improves code consistency and aligns with the broader style standardization effort mentioned in the summary.

However, this file appears unrelated to the PR's stated objective of adding deep link support. Please verify that:

  1. This change was intentionally included in this PR
  2. No deep link-related files are missing from the review
  3. The toast functionality doesn't have a role in deep link handling

Likely an incorrect or invalid review comment.

platforms/group-charter-manager/package.json (1)

45-46: Verify plugin loading with Prettier 3

Prettier 3 no longer autoloads plugins.
Make sure .prettierrc.json explicitly declares:

{
  "plugins": ["prettier-plugin-tailwindcss"]
}

Without this, prettier-plugin-tailwindcss will be ignored and class ordering won’t be enforced.

platforms/group-charter-manager/src/app/charter/[id]/page.tsx (2)

1-951: Inconsistency between PR objectives and file changes.

The PR objectives indicate this pull request adds "deep link support" functionality, but this file contains only stylistic changes (converting double quotes to single quotes). There are no deep link-related imports, components, or logic modifications in this charter detail page.

Please verify if:

  1. This file should contain deep link functionality that's missing
  2. This file was incorrectly included in the deep link PR
  3. The deep link functionality is implemented in other files not shown in this review
#!/bin/bash
# Search for deep link related code in the repository
echo "Searching for deep link related code..."
rg -i "deep.?link|w3ds|url.?scheme" --type ts --type tsx --type js --type jsx -A 3 -B 1

echo -e "\nSearching for URL handling or routing changes..."
rg -i "useRouter|router\.push|href.*://" --type ts --type tsx --type js --type jsx -A 2 -B 1

echo -e "\nSearching for EID-W related code..."
rg -i "eid.?w|eid.wallet" --type ts --type tsx --type js --type jsx -A 2 -B 1

Likely an incorrect or invalid review comment.


1-951: Code formatting changes look consistent.

The quote style conversion from double to single quotes has been applied consistently throughout the file, including:

  • JSX attributes (className, href, etc.)
  • String literals in objects and arrays
  • Import/export statements
  • Template strings and inline text

The formatting appears to align with the new Prettier configuration mentioned in the AI summary.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between eafd5ad and 318ae1f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (8)
  • infrastructure/control-panel/package.json (1 hunks)
  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte (2 hunks)
  • platforms/pictique/src/lib/stores/users.ts (1 hunks)
  • platforms/pictique/src/lib/types.ts (1 hunks)
  • platforms/pictique/src/routes/(protected)/group/[id]/+page.svelte (13 hunks)
  • platforms/pictique/src/routes/(protected)/home/+page.svelte (1 hunks)
  • platforms/pictique/src/routes/(protected)/messages/+page.svelte (2 hunks)
  • platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte (1 hunks)
✅ Files skipped from review due to trivial changes (4)
  • infrastructure/control-panel/package.json
  • platforms/pictique/src/lib/fragments/Profile/Profile.svelte
  • platforms/pictique/src/lib/stores/users.ts
  • platforms/pictique/src/routes/(protected)/home/+page.svelte
🚧 Files skipped from review as they are similar to previous changes (2)
  • platforms/pictique/src/routes/(protected)/messages/+page.svelte
  • platforms/pictique/src/routes/(protected)/group/[id]/+page.svelte
🧰 Additional context used
🧠 Learnings (1)
platforms/pictique/src/lib/types.ts (2)

Learnt from: Sahil2004
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.

Learnt from: pixel-punk-20
PR: #121
File: platforms/metagram/src/stories/Button.svelte:0-0
Timestamp: 2025-05-08T09:02:43.311Z
Learning: The project uses Svelte 5, which uses the new "runes" API including $props() for handling component props instead of the export let syntax from Svelte 3/4.

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: lint
🔇 Additional comments (5)
platforms/pictique/src/routes/(protected)/profile/[id]/+page.svelte (1)

1-143: Inconsistent with stated PR objectives.

The changes in this file relate to user identity standardization (username → handle) for the Pictique platform, but the PR objectives state this is for adding "deep link support" to the "EID-W component". This appears to be a mismatch between the PR description and actual changes.

Likely an incorrect or invalid review comment.

platforms/pictique/src/lib/types.ts (4)

1-117: Inconsistent with stated PR objectives.

Similar to the other file, these changes are related to messaging/chat functionality and user identity standardization for the Pictique platform, not deep link support for EID-W components as stated in the PR objectives.

Likely an incorrect or invalid review comment.


1-1: Quote style consistency.

Good practice to maintain consistent quote styles. The change from single to double quotes aligns with the rest of the file.


60-70: Consistent user identity standardization.

The userProfile type updates correctly reflect the user identity standardization:

  • userIdid (more concise)
  • usernamehandle (consistent with platform terminology)
  • userBiodescription (clearer naming)
  • Added name property (enhanced user data)

This aligns with the retrieved learning about using centralized type definitions from $lib/types.


83-116: Messaging types verification completed.

All new messaging types are correctly imported and used in the messaging components:

  • In platforms/pictique/src/routes/(protected)/messages/+page.svelte
    import type { ChatInfo, Member, MessageInfo, GroupInfo } from '$lib/types';
    let messages = $state<MessageInfo[]>([]);
    • API call typed as <{ chats: ChatInfo[] }>
    let allMembers = $state<Member[]>([]);

The Participant type is referenced within ChatInfo and does not require its own import in this file.

Approving these changes.

@Sahil2004 Sahil2004 self-assigned this Jul 31, 2025
@sosweetham sosweetham merged commit a5ed291 into main Aug 7, 2025
3 of 4 checks passed
@sosweetham sosweetham deleted the feat/deeplinks branch August 7, 2025 08:19
@coderabbitai coderabbitai bot mentioned this pull request Aug 11, 2025
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[feature] EID-W deep link support
4 participants