Skip to content

Feat/swipe gesture#410

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

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

Conversation

@grv-saini-20
Copy link
Collaborator

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

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-20 grv-saini-20 self-assigned this Nov 11, 2025
@grv-saini-20 grv-saini-20 requested a review from coodos as a code owner November 11, 2025 09:24
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 11, 2025

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 name Status Explanation Resolution
Title check ❓ Inconclusive The 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 ❓ Inconclusive All 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 name Status Explanation
Description check ✅ Passed The 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 ✅ Passed The 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 ✅ Passed Docstring 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.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 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)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

♻️ Duplicate comments (1)
infrastructure/eid-wallet/src/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.

@coodos coodos merged commit f50f506 into main Nov 11, 2025
3 checks passed
@coodos coodos deleted the feat/swipe-gesture branch November 11, 2025 18:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] Lack of back functionality in eid wallet

2 participants