Feat/swipe gesture - #410

Merged
coodos merged 4 commits into
mainfrom
feat/swipe-gesture
Nov 11, 2025
Merged

Feat/swipe gesture#410
coodos merged 4 commits into
mainfrom
feat/swipe-gesture

Conversation

@grv-saini-20

@grv-saini-20grv-saini-20 commented Nov 11, 2025

Copy link
Copy Markdown
Collaborator

Description of change

Back gesture added

Issue Number

closes#406

Type of change

  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)

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 a swipe gesture utility and integrated swipe-to-navigate (back) on mobile for intuitive navigation.
  • Chores
    • Enabled process and notification plugins in the app runtime and added the matching mobile permission to support those capabilities.

@grv-saini-20grv-saini-20 self-assigned this Nov 11, 2025
@coderabbitai

coderabbitaiBot commented Nov 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Added a Tauri process plugin and permission, initialized process and notification plugins in the Tauri app builder, implemented a swipe-detection utility and exported it, and attached swipe-to-navigate (history.back on right swipe) to the main layout.

Changes

Cohort / File(s)Summary
Tauri plugin & capabilities
infrastructure/eid-wallet/src-tauri/Cargo.toml, infrastructure/eid-wallet/src-tauri/capabilities/mobile.json, infrastructure/eid-wallet/src-tauri/src/lib.rs
Added dependency tauri-plugin-process = "2" and permission process:default; initialized tauri_plugin_process::init() and tauri_plugin_notification::init() in the Tauri app builder (mobile-specific plugin setup updated).
Swipe utility export
infrastructure/eid-wallet/src/lib/utils/index.ts
Re-exported the new swipe utility (export * from "./swipeGesture").
Swipe utility implementation
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Added swipedetect(el: HTMLElement, callback: (dir: string) => void) — touchstart/touchend-based horizontal swipe detection (thresholds: ~100px horizontal, ≤100px vertical, ≤400ms).
Layout integration
infrastructure/eid-wallet/src/routes/+layout.svelte
Bound a mainWrapper element and attached swipedetect to trigger window.history.back() on right swipe; minor imports/state adjustments to enable swipe-based back navigation.

Sequence Diagram(s)

sequenceDiagram
participant App as Tauri App Builder
participant Plugins as Plugins (process, notification)
participant Layout as +layout.svelte
participant SwipeUtil as swipedetect
participant Browser as Browser History
rect rgba(200,220,255,0.15)
App->>Plugins: init() plugins
Plugins-->>App: initialized
end
rect rgba(200,255,220,0.12)
Layout->>SwipeUtil: attach to mainWrapper (onMount)
SwipeUtil-->>Layout: emits "right" or "left"
alt right swipe
Layout->>Browser: window.history.back()
else left swipe
Layout-->>Layout: no-op
end
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to check:
    • src-tauri/src/lib.rs: plugin initialization placement and cfg-mobile section
    • capabilities/mobile.json: permission formatting and trailing commas
    • utils/swipeGesture.ts: thresholds, event listener cleanup, and touch coordinate logic
    • routes/+layout.svelte: correct attachment/removal and interaction with existing routing/splash logic

Suggested reviewers

  • coodos
  • xPathin

Poem

🐰
I hopped along the app’s smooth track,
Flew a swipe to send you back,
Plugins yawned and kindly stirred,
History leapt at my soft word,
A rabbit grin — navigation knack! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check nameStatusExplanationResolution
Title check❓ InconclusiveThe title 'Feat/swipe gesture' is generic and uses a branch name pattern rather than a clear description of the actual change implemented.Refine the title to clearly describe the feature, e.g., 'Add swipe-to-navigate back gesture' or 'Implement back navigation via swipe gesture'.
Out of Scope Changes check❓ InconclusiveAll changes are focused on swipe gesture implementation: new swipe utility, plugin integration, and capability permissions. One change—adding tauri-plugin-process—may be slightly out of scope if not required for swipe functionality.Clarify whether the tauri-plugin-process dependency is required for the swipe gesture feature or represents an unrelated enhancement.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description check✅ PassedThe description includes key sections but marks both 'New' and 'Update' as change types when only one should apply; the feature appears to be purely new functionality.
Linked Issues check✅ PassedThe PR implements back gesture navigation via swipe detection, directly addressing issue #406's requirement for back navigation when a back button is unavailable.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ 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 feat/swipe-gesture

📜 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 2b58944 and ab27e9a.

📒 Files selected for processing (2)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/src/routes/+layout.svelte
⏰ 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

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

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8e52d4 and b2781d2.

⛔ Files ignored due to path filters (1)
  • infrastructure/eid-wallet/src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • infrastructure/eid-wallet/src-tauri/Cargo.toml (1 hunks)
  • infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/src/lib.rs (3 hunks)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (2 hunks)
🔇 Additional comments (2)
infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (2)

16-17: Verify necessity of process:default permission for swipe gesture feature.

The JSON syntax is correct, and the trailing comma addition on line 16 is properly formatted. However, the process:default permission typically enables execution of external processes/commands on the device. Given that this PR focuses on swipe gesture detection for back navigation, it's unclear why process capability is needed.

Please clarify:

  1. Is the process:default permission actually required for the swipe gesture feature?
  2. If yes, what specific process operations are performed?
  3. If no, this permission should be removed to follow least-privilege security principles.

You may want to review the changes in src-tauri/src/lib.rs and the gesture implementation to confirm the process plugin is actually used by the swipe gesture handler.


8-18: Ensure consistent permission naming and scope.

The permissions array follows Tauri's naming convention (plugin-name:capability-level). Verify that all newly added permissions align with:

  • The declared dependencies in Cargo.toml (ensure tauri-plugin-process = "2" or later is declared)
  • The plugin initialization in src-tauri/src/lib.rs (ensure tauri_plugin_process is registered)
  • Platform-specific requirements (process capability may have different availability/restrictions on iOS vs. Android)

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1)

39-39: Fix reversed swipe direction mapping.

The ternary maps leftward movement (negative distX) to "right" and rightward movement (positive distX) to "left", so the back gesture fires on the wrong swipe.

Apply this diff to swap the labels:

- const dir = distX < 0 ? "right" : "left";+ const dir = distX < 0 ? "left" : "right";
🧹 Nitpick comments (1)
infrastructure/eid-wallet/src/routes/+layout.svelte (1)

441-444: Consider edge-case interference with scrolling.

Attaching swipe detection to the entire scrollable main wrapper may conflict with vertical scrolling or text selection on some devices. If users report issues, consider:

  • Detecting swipes only from the screen edge
  • Adding more restrictive thresholds
  • Excluding swipes that begin on interactive elements
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b2781d2 and 2b58944.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/lib/utils/index.ts (1)

4-4: LGTM!

The export statement correctly re-exports the swipeGesture module.

infrastructure/eid-wallet/src/routes/+layout.svelte (2)

10-10: LGTM!

The import statement correctly brings in the swipedetect utility.


20-20: LGTM!

The state variable is correctly typed for element binding.

infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (2)

6-13: LGTM!

The threshold values are reasonable for detecting intentional swipe gestures while filtering out accidental touches.


15-24: LGTM!

The touchstart handler correctly captures the initial touch position and timestamp.

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Comment threadinfrastructure/eid-wallet/src/routes/+layout.svelte
@coodos
coodos merged commit f50f506 into mainNov 11, 2025
3 checks passed
@coodos
coodos deleted the feat/swipe-gesture branch November 11, 2025 18:35
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.

[Bug] Lack of back functionality in eid wallet

2 participants

@grv-saini-20@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

Feat/swipe gesture - #410

Merged
coodos merged 4 commits into
mainfrom
feat/swipe-gesture
Nov 11, 2025
Merged

Feat/swipe gesture#410
coodos merged 4 commits into
mainfrom
feat/swipe-gesture

Conversation

@grv-saini-20

@grv-saini-20grv-saini-20 commented Nov 11, 2025

Copy link
Copy Markdown
Collaborator

Description of change

Back gesture added

Issue Number

closes#406

Type of change

  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)

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 a swipe gesture utility and integrated swipe-to-navigate (back) on mobile for intuitive navigation.
  • Chores
    • Enabled process and notification plugins in the app runtime and added the matching mobile permission to support those capabilities.

@grv-saini-20grv-saini-20 self-assigned this Nov 11, 2025
@coderabbitai

coderabbitaiBot commented Nov 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Added a Tauri process plugin and permission, initialized process and notification plugins in the Tauri app builder, implemented a swipe-detection utility and exported it, and attached swipe-to-navigate (history.back on right swipe) to the main layout.

Changes

Cohort / File(s)Summary
Tauri plugin & capabilities
infrastructure/eid-wallet/src-tauri/Cargo.toml, infrastructure/eid-wallet/src-tauri/capabilities/mobile.json, infrastructure/eid-wallet/src-tauri/src/lib.rs
Added dependency tauri-plugin-process = "2" and permission process:default; initialized tauri_plugin_process::init() and tauri_plugin_notification::init() in the Tauri app builder (mobile-specific plugin setup updated).
Swipe utility export
infrastructure/eid-wallet/src/lib/utils/index.ts
Re-exported the new swipe utility (export * from "./swipeGesture").
Swipe utility implementation
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Added swipedetect(el: HTMLElement, callback: (dir: string) => void) — touchstart/touchend-based horizontal swipe detection (thresholds: ~100px horizontal, ≤100px vertical, ≤400ms).
Layout integration
infrastructure/eid-wallet/src/routes/+layout.svelte
Bound a mainWrapper element and attached swipedetect to trigger window.history.back() on right swipe; minor imports/state adjustments to enable swipe-based back navigation.

Sequence Diagram(s)

sequenceDiagram
participant App as Tauri App Builder
participant Plugins as Plugins (process, notification)
participant Layout as +layout.svelte
participant SwipeUtil as swipedetect
participant Browser as Browser History
rect rgba(200,220,255,0.15)
App->>Plugins: init() plugins
Plugins-->>App: initialized
end
rect rgba(200,255,220,0.12)
Layout->>SwipeUtil: attach to mainWrapper (onMount)
SwipeUtil-->>Layout: emits "right" or "left"
alt right swipe
Layout->>Browser: window.history.back()
else left swipe
Layout-->>Layout: no-op
end
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to check:
    • src-tauri/src/lib.rs: plugin initialization placement and cfg-mobile section
    • capabilities/mobile.json: permission formatting and trailing commas
    • utils/swipeGesture.ts: thresholds, event listener cleanup, and touch coordinate logic
    • routes/+layout.svelte: correct attachment/removal and interaction with existing routing/splash logic

Suggested reviewers

  • coodos
  • xPathin

Poem

🐰
I hopped along the app’s smooth track,
Flew a swipe to send you back,
Plugins yawned and kindly stirred,
History leapt at my soft word,
A rabbit grin — navigation knack! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check nameStatusExplanationResolution
Title check❓ InconclusiveThe title 'Feat/swipe gesture' is generic and uses a branch name pattern rather than a clear description of the actual change implemented.Refine the title to clearly describe the feature, e.g., 'Add swipe-to-navigate back gesture' or 'Implement back navigation via swipe gesture'.
Out of Scope Changes check❓ InconclusiveAll changes are focused on swipe gesture implementation: new swipe utility, plugin integration, and capability permissions. One change—adding tauri-plugin-process—may be slightly out of scope if not required for swipe functionality.Clarify whether the tauri-plugin-process dependency is required for the swipe gesture feature or represents an unrelated enhancement.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description check✅ PassedThe description includes key sections but marks both 'New' and 'Update' as change types when only one should apply; the feature appears to be purely new functionality.
Linked Issues check✅ PassedThe PR implements back gesture navigation via swipe detection, directly addressing issue #406's requirement for back navigation when a back button is unavailable.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ 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 feat/swipe-gesture

📜 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 2b58944 and ab27e9a.

📒 Files selected for processing (2)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/src/routes/+layout.svelte
⏰ 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

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

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8e52d4 and b2781d2.

⛔ Files ignored due to path filters (1)
  • infrastructure/eid-wallet/src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • infrastructure/eid-wallet/src-tauri/Cargo.toml (1 hunks)
  • infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/src/lib.rs (3 hunks)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (2 hunks)
🔇 Additional comments (2)
infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (2)

16-17: Verify necessity of process:default permission for swipe gesture feature.

The JSON syntax is correct, and the trailing comma addition on line 16 is properly formatted. However, the process:default permission typically enables execution of external processes/commands on the device. Given that this PR focuses on swipe gesture detection for back navigation, it's unclear why process capability is needed.

Please clarify:

  1. Is the process:default permission actually required for the swipe gesture feature?
  2. If yes, what specific process operations are performed?
  3. If no, this permission should be removed to follow least-privilege security principles.

You may want to review the changes in src-tauri/src/lib.rs and the gesture implementation to confirm the process plugin is actually used by the swipe gesture handler.


8-18: Ensure consistent permission naming and scope.

The permissions array follows Tauri's naming convention (plugin-name:capability-level). Verify that all newly added permissions align with:

  • The declared dependencies in Cargo.toml (ensure tauri-plugin-process = "2" or later is declared)
  • The plugin initialization in src-tauri/src/lib.rs (ensure tauri_plugin_process is registered)
  • Platform-specific requirements (process capability may have different availability/restrictions on iOS vs. Android)

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1)

39-39: Fix reversed swipe direction mapping.

The ternary maps leftward movement (negative distX) to "right" and rightward movement (positive distX) to "left", so the back gesture fires on the wrong swipe.

Apply this diff to swap the labels:

- const dir = distX < 0 ? "right" : "left";+ const dir = distX < 0 ? "left" : "right";
🧹 Nitpick comments (1)
infrastructure/eid-wallet/src/routes/+layout.svelte (1)

441-444: Consider edge-case interference with scrolling.

Attaching swipe detection to the entire scrollable main wrapper may conflict with vertical scrolling or text selection on some devices. If users report issues, consider:

  • Detecting swipes only from the screen edge
  • Adding more restrictive thresholds
  • Excluding swipes that begin on interactive elements
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b2781d2 and 2b58944.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/lib/utils/index.ts (1)

4-4: LGTM!

The export statement correctly re-exports the swipeGesture module.

infrastructure/eid-wallet/src/routes/+layout.svelte (2)

10-10: LGTM!

The import statement correctly brings in the swipedetect utility.


20-20: LGTM!

The state variable is correctly typed for element binding.

infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (2)

6-13: LGTM!

The threshold values are reasonable for detecting intentional swipe gestures while filtering out accidental touches.


15-24: LGTM!

The touchstart handler correctly captures the initial touch position and timestamp.

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Comment threadinfrastructure/eid-wallet/src/routes/+layout.svelte
@coodos
coodos merged commit f50f506 into mainNov 11, 2025
3 checks passed
@coodos
coodos deleted the feat/swipe-gesture branch November 11, 2025 18:35
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.

[Bug] Lack of back functionality in eid wallet

2 participants

@grv-saini-20@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

Feat/swipe gesture - #410

Merged
coodos merged 4 commits into
mainfrom
feat/swipe-gesture
Nov 11, 2025
Merged

Feat/swipe gesture#410
coodos merged 4 commits into
mainfrom
feat/swipe-gesture

Conversation

@grv-saini-20

@grv-saini-20grv-saini-20 commented Nov 11, 2025

Copy link
Copy Markdown
Collaborator

Description of change

Back gesture added

Issue Number

closes#406

Type of change

  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)

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 a swipe gesture utility and integrated swipe-to-navigate (back) on mobile for intuitive navigation.
  • Chores
    • Enabled process and notification plugins in the app runtime and added the matching mobile permission to support those capabilities.

@grv-saini-20grv-saini-20 self-assigned this Nov 11, 2025
@coderabbitai

coderabbitaiBot commented Nov 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Added a Tauri process plugin and permission, initialized process and notification plugins in the Tauri app builder, implemented a swipe-detection utility and exported it, and attached swipe-to-navigate (history.back on right swipe) to the main layout.

Changes

Cohort / File(s)Summary
Tauri plugin & capabilities
infrastructure/eid-wallet/src-tauri/Cargo.toml, infrastructure/eid-wallet/src-tauri/capabilities/mobile.json, infrastructure/eid-wallet/src-tauri/src/lib.rs
Added dependency tauri-plugin-process = "2" and permission process:default; initialized tauri_plugin_process::init() and tauri_plugin_notification::init() in the Tauri app builder (mobile-specific plugin setup updated).
Swipe utility export
infrastructure/eid-wallet/src/lib/utils/index.ts
Re-exported the new swipe utility (export * from "./swipeGesture").
Swipe utility implementation
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Added swipedetect(el: HTMLElement, callback: (dir: string) => void) — touchstart/touchend-based horizontal swipe detection (thresholds: ~100px horizontal, ≤100px vertical, ≤400ms).
Layout integration
infrastructure/eid-wallet/src/routes/+layout.svelte
Bound a mainWrapper element and attached swipedetect to trigger window.history.back() on right swipe; minor imports/state adjustments to enable swipe-based back navigation.

Sequence Diagram(s)

sequenceDiagram
participant App as Tauri App Builder
participant Plugins as Plugins (process, notification)
participant Layout as +layout.svelte
participant SwipeUtil as swipedetect
participant Browser as Browser History
rect rgba(200,220,255,0.15)
App->>Plugins: init() plugins
Plugins-->>App: initialized
end
rect rgba(200,255,220,0.12)
Layout->>SwipeUtil: attach to mainWrapper (onMount)
SwipeUtil-->>Layout: emits "right" or "left"
alt right swipe
Layout->>Browser: window.history.back()
else left swipe
Layout-->>Layout: no-op
end
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to check:
    • src-tauri/src/lib.rs: plugin initialization placement and cfg-mobile section
    • capabilities/mobile.json: permission formatting and trailing commas
    • utils/swipeGesture.ts: thresholds, event listener cleanup, and touch coordinate logic
    • routes/+layout.svelte: correct attachment/removal and interaction with existing routing/splash logic

Suggested reviewers

  • coodos
  • xPathin

Poem

🐰
I hopped along the app’s smooth track,
Flew a swipe to send you back,
Plugins yawned and kindly stirred,
History leapt at my soft word,
A rabbit grin — navigation knack! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check nameStatusExplanationResolution
Title check❓ InconclusiveThe title 'Feat/swipe gesture' is generic and uses a branch name pattern rather than a clear description of the actual change implemented.Refine the title to clearly describe the feature, e.g., 'Add swipe-to-navigate back gesture' or 'Implement back navigation via swipe gesture'.
Out of Scope Changes check❓ InconclusiveAll changes are focused on swipe gesture implementation: new swipe utility, plugin integration, and capability permissions. One change—adding tauri-plugin-process—may be slightly out of scope if not required for swipe functionality.Clarify whether the tauri-plugin-process dependency is required for the swipe gesture feature or represents an unrelated enhancement.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description check✅ PassedThe description includes key sections but marks both 'New' and 'Update' as change types when only one should apply; the feature appears to be purely new functionality.
Linked Issues check✅ PassedThe PR implements back gesture navigation via swipe detection, directly addressing issue #406's requirement for back navigation when a back button is unavailable.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ 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 feat/swipe-gesture

📜 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 2b58944 and ab27e9a.

📒 Files selected for processing (2)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/src/routes/+layout.svelte
⏰ 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

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

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8e52d4 and b2781d2.

⛔ Files ignored due to path filters (1)
  • infrastructure/eid-wallet/src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • infrastructure/eid-wallet/src-tauri/Cargo.toml (1 hunks)
  • infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/src/lib.rs (3 hunks)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (2 hunks)
🔇 Additional comments (2)
infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (2)

16-17: Verify necessity of process:default permission for swipe gesture feature.

The JSON syntax is correct, and the trailing comma addition on line 16 is properly formatted. However, the process:default permission typically enables execution of external processes/commands on the device. Given that this PR focuses on swipe gesture detection for back navigation, it's unclear why process capability is needed.

Please clarify:

  1. Is the process:default permission actually required for the swipe gesture feature?
  2. If yes, what specific process operations are performed?
  3. If no, this permission should be removed to follow least-privilege security principles.

You may want to review the changes in src-tauri/src/lib.rs and the gesture implementation to confirm the process plugin is actually used by the swipe gesture handler.


8-18: Ensure consistent permission naming and scope.

The permissions array follows Tauri's naming convention (plugin-name:capability-level). Verify that all newly added permissions align with:

  • The declared dependencies in Cargo.toml (ensure tauri-plugin-process = "2" or later is declared)
  • The plugin initialization in src-tauri/src/lib.rs (ensure tauri_plugin_process is registered)
  • Platform-specific requirements (process capability may have different availability/restrictions on iOS vs. Android)

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1)

39-39: Fix reversed swipe direction mapping.

The ternary maps leftward movement (negative distX) to "right" and rightward movement (positive distX) to "left", so the back gesture fires on the wrong swipe.

Apply this diff to swap the labels:

- const dir = distX < 0 ? "right" : "left";+ const dir = distX < 0 ? "left" : "right";
🧹 Nitpick comments (1)
infrastructure/eid-wallet/src/routes/+layout.svelte (1)

441-444: Consider edge-case interference with scrolling.

Attaching swipe detection to the entire scrollable main wrapper may conflict with vertical scrolling or text selection on some devices. If users report issues, consider:

  • Detecting swipes only from the screen edge
  • Adding more restrictive thresholds
  • Excluding swipes that begin on interactive elements
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b2781d2 and 2b58944.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/lib/utils/index.ts (1)

4-4: LGTM!

The export statement correctly re-exports the swipeGesture module.

infrastructure/eid-wallet/src/routes/+layout.svelte (2)

10-10: LGTM!

The import statement correctly brings in the swipedetect utility.


20-20: LGTM!

The state variable is correctly typed for element binding.

infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (2)

6-13: LGTM!

The threshold values are reasonable for detecting intentional swipe gestures while filtering out accidental touches.


15-24: LGTM!

The touchstart handler correctly captures the initial touch position and timestamp.

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Comment threadinfrastructure/eid-wallet/src/routes/+layout.svelte
@coodos
coodos merged commit f50f506 into mainNov 11, 2025
3 checks passed
@coodos
coodos deleted the feat/swipe-gesture branch November 11, 2025 18:35
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.

[Bug] Lack of back functionality in eid wallet

2 participants

@grv-saini-20@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

Feat/swipe gesture - #410

Merged
coodos merged 4 commits into
mainfrom
feat/swipe-gesture
Nov 11, 2025
Merged

Feat/swipe gesture#410
coodos merged 4 commits into
mainfrom
feat/swipe-gesture

Conversation

@grv-saini-20

@grv-saini-20grv-saini-20 commented Nov 11, 2025

Copy link
Copy Markdown
Collaborator

Description of change

Back gesture added

Issue Number

closes#406

Type of change

  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)

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 a swipe gesture utility and integrated swipe-to-navigate (back) on mobile for intuitive navigation.
  • Chores
    • Enabled process and notification plugins in the app runtime and added the matching mobile permission to support those capabilities.

@grv-saini-20grv-saini-20 self-assigned this Nov 11, 2025
@coderabbitai

coderabbitaiBot commented Nov 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Added a Tauri process plugin and permission, initialized process and notification plugins in the Tauri app builder, implemented a swipe-detection utility and exported it, and attached swipe-to-navigate (history.back on right swipe) to the main layout.

Changes

Cohort / File(s)Summary
Tauri plugin & capabilities
infrastructure/eid-wallet/src-tauri/Cargo.toml, infrastructure/eid-wallet/src-tauri/capabilities/mobile.json, infrastructure/eid-wallet/src-tauri/src/lib.rs
Added dependency tauri-plugin-process = "2" and permission process:default; initialized tauri_plugin_process::init() and tauri_plugin_notification::init() in the Tauri app builder (mobile-specific plugin setup updated).
Swipe utility export
infrastructure/eid-wallet/src/lib/utils/index.ts
Re-exported the new swipe utility (export * from "./swipeGesture").
Swipe utility implementation
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Added swipedetect(el: HTMLElement, callback: (dir: string) => void) — touchstart/touchend-based horizontal swipe detection (thresholds: ~100px horizontal, ≤100px vertical, ≤400ms).
Layout integration
infrastructure/eid-wallet/src/routes/+layout.svelte
Bound a mainWrapper element and attached swipedetect to trigger window.history.back() on right swipe; minor imports/state adjustments to enable swipe-based back navigation.

Sequence Diagram(s)

sequenceDiagram
participant App as Tauri App Builder
participant Plugins as Plugins (process, notification)
participant Layout as +layout.svelte
participant SwipeUtil as swipedetect
participant Browser as Browser History
rect rgba(200,220,255,0.15)
App->>Plugins: init() plugins
Plugins-->>App: initialized
end
rect rgba(200,255,220,0.12)
Layout->>SwipeUtil: attach to mainWrapper (onMount)
SwipeUtil-->>Layout: emits "right" or "left"
alt right swipe
Layout->>Browser: window.history.back()
else left swipe
Layout-->>Layout: no-op
end
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to check:
    • src-tauri/src/lib.rs: plugin initialization placement and cfg-mobile section
    • capabilities/mobile.json: permission formatting and trailing commas
    • utils/swipeGesture.ts: thresholds, event listener cleanup, and touch coordinate logic
    • routes/+layout.svelte: correct attachment/removal and interaction with existing routing/splash logic

Suggested reviewers

  • coodos
  • xPathin

Poem

🐰
I hopped along the app’s smooth track,
Flew a swipe to send you back,
Plugins yawned and kindly stirred,
History leapt at my soft word,
A rabbit grin — navigation knack! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check nameStatusExplanationResolution
Title check❓ InconclusiveThe title 'Feat/swipe gesture' is generic and uses a branch name pattern rather than a clear description of the actual change implemented.Refine the title to clearly describe the feature, e.g., 'Add swipe-to-navigate back gesture' or 'Implement back navigation via swipe gesture'.
Out of Scope Changes check❓ InconclusiveAll changes are focused on swipe gesture implementation: new swipe utility, plugin integration, and capability permissions. One change—adding tauri-plugin-process—may be slightly out of scope if not required for swipe functionality.Clarify whether the tauri-plugin-process dependency is required for the swipe gesture feature or represents an unrelated enhancement.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description check✅ PassedThe description includes key sections but marks both 'New' and 'Update' as change types when only one should apply; the feature appears to be purely new functionality.
Linked Issues check✅ PassedThe PR implements back gesture navigation via swipe detection, directly addressing issue #406's requirement for back navigation when a back button is unavailable.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ 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 feat/swipe-gesture

📜 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 2b58944 and ab27e9a.

📒 Files selected for processing (2)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/src/routes/+layout.svelte
⏰ 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

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

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8e52d4 and b2781d2.

⛔ Files ignored due to path filters (1)
  • infrastructure/eid-wallet/src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • infrastructure/eid-wallet/src-tauri/Cargo.toml (1 hunks)
  • infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/src/lib.rs (3 hunks)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (2 hunks)
🔇 Additional comments (2)
infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (2)

16-17: Verify necessity of process:default permission for swipe gesture feature.

The JSON syntax is correct, and the trailing comma addition on line 16 is properly formatted. However, the process:default permission typically enables execution of external processes/commands on the device. Given that this PR focuses on swipe gesture detection for back navigation, it's unclear why process capability is needed.

Please clarify:

  1. Is the process:default permission actually required for the swipe gesture feature?
  2. If yes, what specific process operations are performed?
  3. If no, this permission should be removed to follow least-privilege security principles.

You may want to review the changes in src-tauri/src/lib.rs and the gesture implementation to confirm the process plugin is actually used by the swipe gesture handler.


8-18: Ensure consistent permission naming and scope.

The permissions array follows Tauri's naming convention (plugin-name:capability-level). Verify that all newly added permissions align with:

  • The declared dependencies in Cargo.toml (ensure tauri-plugin-process = "2" or later is declared)
  • The plugin initialization in src-tauri/src/lib.rs (ensure tauri_plugin_process is registered)
  • Platform-specific requirements (process capability may have different availability/restrictions on iOS vs. Android)

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1)

39-39: Fix reversed swipe direction mapping.

The ternary maps leftward movement (negative distX) to "right" and rightward movement (positive distX) to "left", so the back gesture fires on the wrong swipe.

Apply this diff to swap the labels:

- const dir = distX < 0 ? "right" : "left";+ const dir = distX < 0 ? "left" : "right";
🧹 Nitpick comments (1)
infrastructure/eid-wallet/src/routes/+layout.svelte (1)

441-444: Consider edge-case interference with scrolling.

Attaching swipe detection to the entire scrollable main wrapper may conflict with vertical scrolling or text selection on some devices. If users report issues, consider:

  • Detecting swipes only from the screen edge
  • Adding more restrictive thresholds
  • Excluding swipes that begin on interactive elements
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b2781d2 and 2b58944.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/lib/utils/index.ts (1)

4-4: LGTM!

The export statement correctly re-exports the swipeGesture module.

infrastructure/eid-wallet/src/routes/+layout.svelte (2)

10-10: LGTM!

The import statement correctly brings in the swipedetect utility.


20-20: LGTM!

The state variable is correctly typed for element binding.

infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (2)

6-13: LGTM!

The threshold values are reasonable for detecting intentional swipe gestures while filtering out accidental touches.


15-24: LGTM!

The touchstart handler correctly captures the initial touch position and timestamp.

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Comment threadinfrastructure/eid-wallet/src/routes/+layout.svelte
@coodos
coodos merged commit f50f506 into mainNov 11, 2025
3 checks passed
@coodos
coodos deleted the feat/swipe-gesture branch November 11, 2025 18:35
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.

[Bug] Lack of back functionality in eid wallet

2 participants

@grv-saini-20@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

Feat/swipe gesture - #410

Merged
coodos merged 4 commits into
mainfrom
feat/swipe-gesture
Nov 11, 2025
Merged

Feat/swipe gesture#410
coodos merged 4 commits into
mainfrom
feat/swipe-gesture

Conversation

@grv-saini-20

@grv-saini-20grv-saini-20 commented Nov 11, 2025

Copy link
Copy Markdown
Collaborator

Description of change

Back gesture added

Issue Number

closes#406

Type of change

  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)

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 a swipe gesture utility and integrated swipe-to-navigate (back) on mobile for intuitive navigation.
  • Chores
    • Enabled process and notification plugins in the app runtime and added the matching mobile permission to support those capabilities.

@grv-saini-20grv-saini-20 self-assigned this Nov 11, 2025
@coderabbitai

coderabbitaiBot commented Nov 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Added a Tauri process plugin and permission, initialized process and notification plugins in the Tauri app builder, implemented a swipe-detection utility and exported it, and attached swipe-to-navigate (history.back on right swipe) to the main layout.

Changes

Cohort / File(s)Summary
Tauri plugin & capabilities
infrastructure/eid-wallet/src-tauri/Cargo.toml, infrastructure/eid-wallet/src-tauri/capabilities/mobile.json, infrastructure/eid-wallet/src-tauri/src/lib.rs
Added dependency tauri-plugin-process = "2" and permission process:default; initialized tauri_plugin_process::init() and tauri_plugin_notification::init() in the Tauri app builder (mobile-specific plugin setup updated).
Swipe utility export
infrastructure/eid-wallet/src/lib/utils/index.ts
Re-exported the new swipe utility (export * from "./swipeGesture").
Swipe utility implementation
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Added swipedetect(el: HTMLElement, callback: (dir: string) => void) — touchstart/touchend-based horizontal swipe detection (thresholds: ~100px horizontal, ≤100px vertical, ≤400ms).
Layout integration
infrastructure/eid-wallet/src/routes/+layout.svelte
Bound a mainWrapper element and attached swipedetect to trigger window.history.back() on right swipe; minor imports/state adjustments to enable swipe-based back navigation.

Sequence Diagram(s)

sequenceDiagram
participant App as Tauri App Builder
participant Plugins as Plugins (process, notification)
participant Layout as +layout.svelte
participant SwipeUtil as swipedetect
participant Browser as Browser History
rect rgba(200,220,255,0.15)
App->>Plugins: init() plugins
Plugins-->>App: initialized
end
rect rgba(200,255,220,0.12)
Layout->>SwipeUtil: attach to mainWrapper (onMount)
SwipeUtil-->>Layout: emits "right" or "left"
alt right swipe
Layout->>Browser: window.history.back()
else left swipe
Layout-->>Layout: no-op
end
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to check:
    • src-tauri/src/lib.rs: plugin initialization placement and cfg-mobile section
    • capabilities/mobile.json: permission formatting and trailing commas
    • utils/swipeGesture.ts: thresholds, event listener cleanup, and touch coordinate logic
    • routes/+layout.svelte: correct attachment/removal and interaction with existing routing/splash logic

Suggested reviewers

  • coodos
  • xPathin

Poem

🐰
I hopped along the app’s smooth track,
Flew a swipe to send you back,
Plugins yawned and kindly stirred,
History leapt at my soft word,
A rabbit grin — navigation knack! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check nameStatusExplanationResolution
Title check❓ InconclusiveThe title 'Feat/swipe gesture' is generic and uses a branch name pattern rather than a clear description of the actual change implemented.Refine the title to clearly describe the feature, e.g., 'Add swipe-to-navigate back gesture' or 'Implement back navigation via swipe gesture'.
Out of Scope Changes check❓ InconclusiveAll changes are focused on swipe gesture implementation: new swipe utility, plugin integration, and capability permissions. One change—adding tauri-plugin-process—may be slightly out of scope if not required for swipe functionality.Clarify whether the tauri-plugin-process dependency is required for the swipe gesture feature or represents an unrelated enhancement.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description check✅ PassedThe description includes key sections but marks both 'New' and 'Update' as change types when only one should apply; the feature appears to be purely new functionality.
Linked Issues check✅ PassedThe PR implements back gesture navigation via swipe detection, directly addressing issue #406's requirement for back navigation when a back button is unavailable.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ 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 feat/swipe-gesture

📜 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 2b58944 and ab27e9a.

📒 Files selected for processing (2)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/src/routes/+layout.svelte
⏰ 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

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

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8e52d4 and b2781d2.

⛔ Files ignored due to path filters (1)
  • infrastructure/eid-wallet/src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • infrastructure/eid-wallet/src-tauri/Cargo.toml (1 hunks)
  • infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/src/lib.rs (3 hunks)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (2 hunks)
🔇 Additional comments (2)
infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (2)

16-17: Verify necessity of process:default permission for swipe gesture feature.

The JSON syntax is correct, and the trailing comma addition on line 16 is properly formatted. However, the process:default permission typically enables execution of external processes/commands on the device. Given that this PR focuses on swipe gesture detection for back navigation, it's unclear why process capability is needed.

Please clarify:

  1. Is the process:default permission actually required for the swipe gesture feature?
  2. If yes, what specific process operations are performed?
  3. If no, this permission should be removed to follow least-privilege security principles.

You may want to review the changes in src-tauri/src/lib.rs and the gesture implementation to confirm the process plugin is actually used by the swipe gesture handler.


8-18: Ensure consistent permission naming and scope.

The permissions array follows Tauri's naming convention (plugin-name:capability-level). Verify that all newly added permissions align with:

  • The declared dependencies in Cargo.toml (ensure tauri-plugin-process = "2" or later is declared)
  • The plugin initialization in src-tauri/src/lib.rs (ensure tauri_plugin_process is registered)
  • Platform-specific requirements (process capability may have different availability/restrictions on iOS vs. Android)

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1)

39-39: Fix reversed swipe direction mapping.

The ternary maps leftward movement (negative distX) to "right" and rightward movement (positive distX) to "left", so the back gesture fires on the wrong swipe.

Apply this diff to swap the labels:

- const dir = distX < 0 ? "right" : "left";+ const dir = distX < 0 ? "left" : "right";
🧹 Nitpick comments (1)
infrastructure/eid-wallet/src/routes/+layout.svelte (1)

441-444: Consider edge-case interference with scrolling.

Attaching swipe detection to the entire scrollable main wrapper may conflict with vertical scrolling or text selection on some devices. If users report issues, consider:

  • Detecting swipes only from the screen edge
  • Adding more restrictive thresholds
  • Excluding swipes that begin on interactive elements
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b2781d2 and 2b58944.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/lib/utils/index.ts (1)

4-4: LGTM!

The export statement correctly re-exports the swipeGesture module.

infrastructure/eid-wallet/src/routes/+layout.svelte (2)

10-10: LGTM!

The import statement correctly brings in the swipedetect utility.


20-20: LGTM!

The state variable is correctly typed for element binding.

infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (2)

6-13: LGTM!

The threshold values are reasonable for detecting intentional swipe gestures while filtering out accidental touches.


15-24: LGTM!

The touchstart handler correctly captures the initial touch position and timestamp.

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Comment threadinfrastructure/eid-wallet/src/routes/+layout.svelte
@coodos
coodos merged commit f50f506 into mainNov 11, 2025
3 checks passed
@coodos
coodos deleted the feat/swipe-gesture branch November 11, 2025 18:35
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.

[Bug] Lack of back functionality in eid wallet

2 participants

@grv-saini-20@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

Feat/swipe gesture - #410

Merged
coodos merged 4 commits into
mainfrom
feat/swipe-gesture
Nov 11, 2025
Merged

Feat/swipe gesture#410
coodos merged 4 commits into
mainfrom
feat/swipe-gesture

Conversation

@grv-saini-20

@grv-saini-20grv-saini-20 commented Nov 11, 2025

Copy link
Copy Markdown
Collaborator

Description of change

Back gesture added

Issue Number

closes#406

Type of change

  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)

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 a swipe gesture utility and integrated swipe-to-navigate (back) on mobile for intuitive navigation.
  • Chores
    • Enabled process and notification plugins in the app runtime and added the matching mobile permission to support those capabilities.

@grv-saini-20grv-saini-20 self-assigned this Nov 11, 2025
@coderabbitai

coderabbitaiBot commented Nov 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Added a Tauri process plugin and permission, initialized process and notification plugins in the Tauri app builder, implemented a swipe-detection utility and exported it, and attached swipe-to-navigate (history.back on right swipe) to the main layout.

Changes

Cohort / File(s)Summary
Tauri plugin & capabilities
infrastructure/eid-wallet/src-tauri/Cargo.toml, infrastructure/eid-wallet/src-tauri/capabilities/mobile.json, infrastructure/eid-wallet/src-tauri/src/lib.rs
Added dependency tauri-plugin-process = "2" and permission process:default; initialized tauri_plugin_process::init() and tauri_plugin_notification::init() in the Tauri app builder (mobile-specific plugin setup updated).
Swipe utility export
infrastructure/eid-wallet/src/lib/utils/index.ts
Re-exported the new swipe utility (export * from "./swipeGesture").
Swipe utility implementation
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Added swipedetect(el: HTMLElement, callback: (dir: string) => void) — touchstart/touchend-based horizontal swipe detection (thresholds: ~100px horizontal, ≤100px vertical, ≤400ms).
Layout integration
infrastructure/eid-wallet/src/routes/+layout.svelte
Bound a mainWrapper element and attached swipedetect to trigger window.history.back() on right swipe; minor imports/state adjustments to enable swipe-based back navigation.

Sequence Diagram(s)

sequenceDiagram
participant App as Tauri App Builder
participant Plugins as Plugins (process, notification)
participant Layout as +layout.svelte
participant SwipeUtil as swipedetect
participant Browser as Browser History
rect rgba(200,220,255,0.15)
App->>Plugins: init() plugins
Plugins-->>App: initialized
end
rect rgba(200,255,220,0.12)
Layout->>SwipeUtil: attach to mainWrapper (onMount)
SwipeUtil-->>Layout: emits "right" or "left"
alt right swipe
Layout->>Browser: window.history.back()
else left swipe
Layout-->>Layout: no-op
end
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to check:
    • src-tauri/src/lib.rs: plugin initialization placement and cfg-mobile section
    • capabilities/mobile.json: permission formatting and trailing commas
    • utils/swipeGesture.ts: thresholds, event listener cleanup, and touch coordinate logic
    • routes/+layout.svelte: correct attachment/removal and interaction with existing routing/splash logic

Suggested reviewers

  • coodos
  • xPathin

Poem

🐰
I hopped along the app’s smooth track,
Flew a swipe to send you back,
Plugins yawned and kindly stirred,
History leapt at my soft word,
A rabbit grin — navigation knack! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check nameStatusExplanationResolution
Title check❓ InconclusiveThe title 'Feat/swipe gesture' is generic and uses a branch name pattern rather than a clear description of the actual change implemented.Refine the title to clearly describe the feature, e.g., 'Add swipe-to-navigate back gesture' or 'Implement back navigation via swipe gesture'.
Out of Scope Changes check❓ InconclusiveAll changes are focused on swipe gesture implementation: new swipe utility, plugin integration, and capability permissions. One change—adding tauri-plugin-process—may be slightly out of scope if not required for swipe functionality.Clarify whether the tauri-plugin-process dependency is required for the swipe gesture feature or represents an unrelated enhancement.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description check✅ PassedThe description includes key sections but marks both 'New' and 'Update' as change types when only one should apply; the feature appears to be purely new functionality.
Linked Issues check✅ PassedThe PR implements back gesture navigation via swipe detection, directly addressing issue #406's requirement for back navigation when a back button is unavailable.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ 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 feat/swipe-gesture

📜 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 2b58944 and ab27e9a.

📒 Files selected for processing (2)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/src/routes/+layout.svelte
⏰ 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

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

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8e52d4 and b2781d2.

⛔ Files ignored due to path filters (1)
  • infrastructure/eid-wallet/src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • infrastructure/eid-wallet/src-tauri/Cargo.toml (1 hunks)
  • infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/src/lib.rs (3 hunks)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (2 hunks)
🔇 Additional comments (2)
infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (2)

16-17: Verify necessity of process:default permission for swipe gesture feature.

The JSON syntax is correct, and the trailing comma addition on line 16 is properly formatted. However, the process:default permission typically enables execution of external processes/commands on the device. Given that this PR focuses on swipe gesture detection for back navigation, it's unclear why process capability is needed.

Please clarify:

  1. Is the process:default permission actually required for the swipe gesture feature?
  2. If yes, what specific process operations are performed?
  3. If no, this permission should be removed to follow least-privilege security principles.

You may want to review the changes in src-tauri/src/lib.rs and the gesture implementation to confirm the process plugin is actually used by the swipe gesture handler.


8-18: Ensure consistent permission naming and scope.

The permissions array follows Tauri's naming convention (plugin-name:capability-level). Verify that all newly added permissions align with:

  • The declared dependencies in Cargo.toml (ensure tauri-plugin-process = "2" or later is declared)
  • The plugin initialization in src-tauri/src/lib.rs (ensure tauri_plugin_process is registered)
  • Platform-specific requirements (process capability may have different availability/restrictions on iOS vs. Android)

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1)

39-39: Fix reversed swipe direction mapping.

The ternary maps leftward movement (negative distX) to "right" and rightward movement (positive distX) to "left", so the back gesture fires on the wrong swipe.

Apply this diff to swap the labels:

- const dir = distX < 0 ? "right" : "left";+ const dir = distX < 0 ? "left" : "right";
🧹 Nitpick comments (1)
infrastructure/eid-wallet/src/routes/+layout.svelte (1)

441-444: Consider edge-case interference with scrolling.

Attaching swipe detection to the entire scrollable main wrapper may conflict with vertical scrolling or text selection on some devices. If users report issues, consider:

  • Detecting swipes only from the screen edge
  • Adding more restrictive thresholds
  • Excluding swipes that begin on interactive elements
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b2781d2 and 2b58944.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/lib/utils/index.ts (1)

4-4: LGTM!

The export statement correctly re-exports the swipeGesture module.

infrastructure/eid-wallet/src/routes/+layout.svelte (2)

10-10: LGTM!

The import statement correctly brings in the swipedetect utility.


20-20: LGTM!

The state variable is correctly typed for element binding.

infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (2)

6-13: LGTM!

The threshold values are reasonable for detecting intentional swipe gestures while filtering out accidental touches.


15-24: LGTM!

The touchstart handler correctly captures the initial touch position and timestamp.

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Comment threadinfrastructure/eid-wallet/src/routes/+layout.svelte
@coodos
coodos merged commit f50f506 into mainNov 11, 2025
3 checks passed
@coodos
coodos deleted the feat/swipe-gesture branch November 11, 2025 18:35
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.

[Bug] Lack of back functionality in eid wallet

2 participants

@grv-saini-20@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

Feat/swipe gesture - #410

Merged
coodos merged 4 commits into
mainfrom
feat/swipe-gesture
Nov 11, 2025
Merged

Feat/swipe gesture#410
coodos merged 4 commits into
mainfrom
feat/swipe-gesture

Conversation

@grv-saini-20

@grv-saini-20grv-saini-20 commented Nov 11, 2025

Copy link
Copy Markdown
Collaborator

Description of change

Back gesture added

Issue Number

closes#406

Type of change

  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)

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 a swipe gesture utility and integrated swipe-to-navigate (back) on mobile for intuitive navigation.
  • Chores
    • Enabled process and notification plugins in the app runtime and added the matching mobile permission to support those capabilities.

@grv-saini-20grv-saini-20 self-assigned this Nov 11, 2025
@coderabbitai

coderabbitaiBot commented Nov 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Added a Tauri process plugin and permission, initialized process and notification plugins in the Tauri app builder, implemented a swipe-detection utility and exported it, and attached swipe-to-navigate (history.back on right swipe) to the main layout.

Changes

Cohort / File(s)Summary
Tauri plugin & capabilities
infrastructure/eid-wallet/src-tauri/Cargo.toml, infrastructure/eid-wallet/src-tauri/capabilities/mobile.json, infrastructure/eid-wallet/src-tauri/src/lib.rs
Added dependency tauri-plugin-process = "2" and permission process:default; initialized tauri_plugin_process::init() and tauri_plugin_notification::init() in the Tauri app builder (mobile-specific plugin setup updated).
Swipe utility export
infrastructure/eid-wallet/src/lib/utils/index.ts
Re-exported the new swipe utility (export * from "./swipeGesture").
Swipe utility implementation
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Added swipedetect(el: HTMLElement, callback: (dir: string) => void) — touchstart/touchend-based horizontal swipe detection (thresholds: ~100px horizontal, ≤100px vertical, ≤400ms).
Layout integration
infrastructure/eid-wallet/src/routes/+layout.svelte
Bound a mainWrapper element and attached swipedetect to trigger window.history.back() on right swipe; minor imports/state adjustments to enable swipe-based back navigation.

Sequence Diagram(s)

sequenceDiagram
participant App as Tauri App Builder
participant Plugins as Plugins (process, notification)
participant Layout as +layout.svelte
participant SwipeUtil as swipedetect
participant Browser as Browser History
rect rgba(200,220,255,0.15)
App->>Plugins: init() plugins
Plugins-->>App: initialized
end
rect rgba(200,255,220,0.12)
Layout->>SwipeUtil: attach to mainWrapper (onMount)
SwipeUtil-->>Layout: emits "right" or "left"
alt right swipe
Layout->>Browser: window.history.back()
else left swipe
Layout-->>Layout: no-op
end
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to check:
    • src-tauri/src/lib.rs: plugin initialization placement and cfg-mobile section
    • capabilities/mobile.json: permission formatting and trailing commas
    • utils/swipeGesture.ts: thresholds, event listener cleanup, and touch coordinate logic
    • routes/+layout.svelte: correct attachment/removal and interaction with existing routing/splash logic

Suggested reviewers

  • coodos
  • xPathin

Poem

🐰
I hopped along the app’s smooth track,
Flew a swipe to send you back,
Plugins yawned and kindly stirred,
History leapt at my soft word,
A rabbit grin — navigation knack! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check nameStatusExplanationResolution
Title check❓ InconclusiveThe title 'Feat/swipe gesture' is generic and uses a branch name pattern rather than a clear description of the actual change implemented.Refine the title to clearly describe the feature, e.g., 'Add swipe-to-navigate back gesture' or 'Implement back navigation via swipe gesture'.
Out of Scope Changes check❓ InconclusiveAll changes are focused on swipe gesture implementation: new swipe utility, plugin integration, and capability permissions. One change—adding tauri-plugin-process—may be slightly out of scope if not required for swipe functionality.Clarify whether the tauri-plugin-process dependency is required for the swipe gesture feature or represents an unrelated enhancement.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description check✅ PassedThe description includes key sections but marks both 'New' and 'Update' as change types when only one should apply; the feature appears to be purely new functionality.
Linked Issues check✅ PassedThe PR implements back gesture navigation via swipe detection, directly addressing issue #406's requirement for back navigation when a back button is unavailable.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ 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 feat/swipe-gesture

📜 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 2b58944 and ab27e9a.

📒 Files selected for processing (2)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/src/routes/+layout.svelte
⏰ 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

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

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8e52d4 and b2781d2.

⛔ Files ignored due to path filters (1)
  • infrastructure/eid-wallet/src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • infrastructure/eid-wallet/src-tauri/Cargo.toml (1 hunks)
  • infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/src/lib.rs (3 hunks)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (2 hunks)
🔇 Additional comments (2)
infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (2)

16-17: Verify necessity of process:default permission for swipe gesture feature.

The JSON syntax is correct, and the trailing comma addition on line 16 is properly formatted. However, the process:default permission typically enables execution of external processes/commands on the device. Given that this PR focuses on swipe gesture detection for back navigation, it's unclear why process capability is needed.

Please clarify:

  1. Is the process:default permission actually required for the swipe gesture feature?
  2. If yes, what specific process operations are performed?
  3. If no, this permission should be removed to follow least-privilege security principles.

You may want to review the changes in src-tauri/src/lib.rs and the gesture implementation to confirm the process plugin is actually used by the swipe gesture handler.


8-18: Ensure consistent permission naming and scope.

The permissions array follows Tauri's naming convention (plugin-name:capability-level). Verify that all newly added permissions align with:

  • The declared dependencies in Cargo.toml (ensure tauri-plugin-process = "2" or later is declared)
  • The plugin initialization in src-tauri/src/lib.rs (ensure tauri_plugin_process is registered)
  • Platform-specific requirements (process capability may have different availability/restrictions on iOS vs. Android)

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1)

39-39: Fix reversed swipe direction mapping.

The ternary maps leftward movement (negative distX) to "right" and rightward movement (positive distX) to "left", so the back gesture fires on the wrong swipe.

Apply this diff to swap the labels:

- const dir = distX < 0 ? "right" : "left";+ const dir = distX < 0 ? "left" : "right";
🧹 Nitpick comments (1)
infrastructure/eid-wallet/src/routes/+layout.svelte (1)

441-444: Consider edge-case interference with scrolling.

Attaching swipe detection to the entire scrollable main wrapper may conflict with vertical scrolling or text selection on some devices. If users report issues, consider:

  • Detecting swipes only from the screen edge
  • Adding more restrictive thresholds
  • Excluding swipes that begin on interactive elements
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b2781d2 and 2b58944.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/lib/utils/index.ts (1)

4-4: LGTM!

The export statement correctly re-exports the swipeGesture module.

infrastructure/eid-wallet/src/routes/+layout.svelte (2)

10-10: LGTM!

The import statement correctly brings in the swipedetect utility.


20-20: LGTM!

The state variable is correctly typed for element binding.

infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (2)

6-13: LGTM!

The threshold values are reasonable for detecting intentional swipe gestures while filtering out accidental touches.


15-24: LGTM!

The touchstart handler correctly captures the initial touch position and timestamp.

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Comment threadinfrastructure/eid-wallet/src/routes/+layout.svelte
@coodos
coodos merged commit f50f506 into mainNov 11, 2025
3 checks passed
@coodos
coodos deleted the feat/swipe-gesture branch November 11, 2025 18:35
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.

[Bug] Lack of back functionality in eid wallet

2 participants

@grv-saini-20@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

Feat/swipe gesture - #410

Merged
coodos merged 4 commits into
mainfrom
feat/swipe-gesture
Nov 11, 2025
Merged

Feat/swipe gesture#410
coodos merged 4 commits into
mainfrom
feat/swipe-gesture

Conversation

@grv-saini-20

@grv-saini-20grv-saini-20 commented Nov 11, 2025

Copy link
Copy Markdown
Collaborator

Description of change

Back gesture added

Issue Number

closes#406

Type of change

  • New (a change which implements a new feature)
  • Update (a change which updates existing functionality)

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 a swipe gesture utility and integrated swipe-to-navigate (back) on mobile for intuitive navigation.
  • Chores
    • Enabled process and notification plugins in the app runtime and added the matching mobile permission to support those capabilities.

@grv-saini-20grv-saini-20 self-assigned this Nov 11, 2025
@coderabbitai

coderabbitaiBot commented Nov 11, 2025

Copy link
Copy Markdown
Contributor

Walkthrough

Added a Tauri process plugin and permission, initialized process and notification plugins in the Tauri app builder, implemented a swipe-detection utility and exported it, and attached swipe-to-navigate (history.back on right swipe) to the main layout.

Changes

Cohort / File(s)Summary
Tauri plugin & capabilities
infrastructure/eid-wallet/src-tauri/Cargo.toml, infrastructure/eid-wallet/src-tauri/capabilities/mobile.json, infrastructure/eid-wallet/src-tauri/src/lib.rs
Added dependency tauri-plugin-process = "2" and permission process:default; initialized tauri_plugin_process::init() and tauri_plugin_notification::init() in the Tauri app builder (mobile-specific plugin setup updated).
Swipe utility export
infrastructure/eid-wallet/src/lib/utils/index.ts
Re-exported the new swipe utility (export * from "./swipeGesture").
Swipe utility implementation
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Added swipedetect(el: HTMLElement, callback: (dir: string) => void) — touchstart/touchend-based horizontal swipe detection (thresholds: ~100px horizontal, ≤100px vertical, ≤400ms).
Layout integration
infrastructure/eid-wallet/src/routes/+layout.svelte
Bound a mainWrapper element and attached swipedetect to trigger window.history.back() on right swipe; minor imports/state adjustments to enable swipe-based back navigation.

Sequence Diagram(s)

sequenceDiagram
participant App as Tauri App Builder
participant Plugins as Plugins (process, notification)
participant Layout as +layout.svelte
participant SwipeUtil as swipedetect
participant Browser as Browser History
rect rgba(200,220,255,0.15)
App->>Plugins: init() plugins
Plugins-->>App: initialized
end
rect rgba(200,255,220,0.12)
Layout->>SwipeUtil: attach to mainWrapper (onMount)
SwipeUtil-->>Layout: emits "right" or "left"
alt right swipe
Layout->>Browser: window.history.back()
else left swipe
Layout-->>Layout: no-op
end
end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to check:
    • src-tauri/src/lib.rs: plugin initialization placement and cfg-mobile section
    • capabilities/mobile.json: permission formatting and trailing commas
    • utils/swipeGesture.ts: thresholds, event listener cleanup, and touch coordinate logic
    • routes/+layout.svelte: correct attachment/removal and interaction with existing routing/splash logic

Suggested reviewers

  • coodos
  • xPathin

Poem

🐰
I hopped along the app’s smooth track,
Flew a swipe to send you back,
Plugins yawned and kindly stirred,
History leapt at my soft word,
A rabbit grin — navigation knack! 🎉

Pre-merge checks and finishing touches

❌ Failed checks (2 inconclusive)
Check nameStatusExplanationResolution
Title check❓ InconclusiveThe title 'Feat/swipe gesture' is generic and uses a branch name pattern rather than a clear description of the actual change implemented.Refine the title to clearly describe the feature, e.g., 'Add swipe-to-navigate back gesture' or 'Implement back navigation via swipe gesture'.
Out of Scope Changes check❓ InconclusiveAll changes are focused on swipe gesture implementation: new swipe utility, plugin integration, and capability permissions. One change—adding tauri-plugin-process—may be slightly out of scope if not required for swipe functionality.Clarify whether the tauri-plugin-process dependency is required for the swipe gesture feature or represents an unrelated enhancement.
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description check✅ PassedThe description includes key sections but marks both 'New' and 'Update' as change types when only one should apply; the feature appears to be purely new functionality.
Linked Issues check✅ PassedThe PR implements back gesture navigation via swipe detection, directly addressing issue #406's requirement for back navigation when a back button is unavailable.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
✨ 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 feat/swipe-gesture

📜 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 2b58944 and ab27e9a.

📒 Files selected for processing (2)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • infrastructure/eid-wallet/src/routes/+layout.svelte
⏰ 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

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

❤️ Share

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

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d8e52d4 and b2781d2.

⛔ Files ignored due to path filters (1)
  • infrastructure/eid-wallet/src-tauri/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • infrastructure/eid-wallet/src-tauri/Cargo.toml (1 hunks)
  • infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (1 hunks)
  • infrastructure/eid-wallet/src-tauri/src/lib.rs (3 hunks)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (2 hunks)
🔇 Additional comments (2)
infrastructure/eid-wallet/src-tauri/capabilities/mobile.json (2)

16-17: Verify necessity of process:default permission for swipe gesture feature.

The JSON syntax is correct, and the trailing comma addition on line 16 is properly formatted. However, the process:default permission typically enables execution of external processes/commands on the device. Given that this PR focuses on swipe gesture detection for back navigation, it's unclear why process capability is needed.

Please clarify:

  1. Is the process:default permission actually required for the swipe gesture feature?
  2. If yes, what specific process operations are performed?
  3. If no, this permission should be removed to follow least-privilege security principles.

You may want to review the changes in src-tauri/src/lib.rs and the gesture implementation to confirm the process plugin is actually used by the swipe gesture handler.


8-18: Ensure consistent permission naming and scope.

The permissions array follows Tauri's naming convention (plugin-name:capability-level). Verify that all newly added permissions align with:

  • The declared dependencies in Cargo.toml (ensure tauri-plugin-process = "2" or later is declared)
  • The plugin initialization in src-tauri/src/lib.rs (ensure tauri_plugin_process is registered)
  • Platform-specific requirements (process capability may have different availability/restrictions on iOS vs. Android)

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts Outdated

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1)

39-39: Fix reversed swipe direction mapping.

The ternary maps leftward movement (negative distX) to "right" and rightward movement (positive distX) to "left", so the back gesture fires on the wrong swipe.

Apply this diff to swap the labels:

- const dir = distX < 0 ? "right" : "left";+ const dir = distX < 0 ? "left" : "right";
🧹 Nitpick comments (1)
infrastructure/eid-wallet/src/routes/+layout.svelte (1)

441-444: Consider edge-case interference with scrolling.

Attaching swipe detection to the entire scrollable main wrapper may conflict with vertical scrolling or text selection on some devices. If users report issues, consider:

  • Detecting swipes only from the screen edge
  • Adding more restrictive thresholds
  • Excluding swipes that begin on interactive elements
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b2781d2 and 2b58944.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (3)
  • infrastructure/eid-wallet/src/lib/utils/index.ts (1 hunks)
  • infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (1 hunks)
  • infrastructure/eid-wallet/src/routes/+layout.svelte (4 hunks)
🔇 Additional comments (5)
infrastructure/eid-wallet/src/lib/utils/index.ts (1)

4-4: LGTM!

The export statement correctly re-exports the swipeGesture module.

infrastructure/eid-wallet/src/routes/+layout.svelte (2)

10-10: LGTM!

The import statement correctly brings in the swipedetect utility.


20-20: LGTM!

The state variable is correctly typed for element binding.

infrastructure/eid-wallet/src/lib/utils/swipeGesture.ts (2)

6-13: LGTM!

The threshold values are reasonable for detecting intentional swipe gestures while filtering out accidental touches.


15-24: LGTM!

The touchstart handler correctly captures the initial touch position and timestamp.

Comment threadinfrastructure/eid-wallet/src/lib/utils/swipeGesture.ts
Comment threadinfrastructure/eid-wallet/src/routes/+layout.svelte
@coodos
coodos merged commit f50f506 into mainNov 11, 2025
3 checks passed
@coodos
coodos deleted the feat/swipe-gesture branch November 11, 2025 18:35
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.

[Bug] Lack of back functionality in eid wallet

2 participants

@grv-saini-20@coodos