Skip to content

Add click-to-navigate support for desktop notifications#9

Open
Lovelady09 wants to merge 6 commits intozquestz:mainfrom
Lovelady09:feature/notification-click-to-navigate
Open

Add click-to-navigate support for desktop notifications#9
Lovelady09 wants to merge 6 commits intozquestz:mainfrom
Lovelady09:feature/notification-click-to-navigate

Conversation

@Lovelady09
Copy link
Contributor

When a desktop notification is clicked, the app now navigates to the relevant content (channel, DM, or news) using the nexus:// URI scheme.

Platform support:

  • Linux: D-Bus actions with notify-rust
  • Windows: Toast activation with tauri-winrt-notification
  • macOS: Basic notifications (click-to-navigate not supported by API)

Changes:

  • Add notifications module with platform-specific implementations
  • Add to_navigation_uri() method to EventContext
  • Add build_navigation_uri() helper for URI construction
  • URL-encode usernames and channels to prevent URI injection
  • Handle IPv6 addresses with proper bracket wrapping
  • Omit default port (7500) from URIs for cleaner links

Event types with navigation support:

  • ChatMessage, ChatMention -> channel
  • UserMessage (DM) -> user's DM tab
  • NewsPost -> news panel
  • ChatJoin, ChatLeave -> channel
  • VoiceJoined, VoiceLeft -> channel (via username context)

When a desktop notification is clicked, the app now navigates to the
relevant content (channel, DM, or news) using the nexus:// URI scheme.

Platform support:
- Linux: D-Bus actions with notify-rust
- Windows: Toast activation with tauri-winrt-notification
- macOS: Basic notifications (click-to-navigate not supported by API)

Changes:
- Add notifications module with platform-specific implementations
- Add to_navigation_uri() method to EventContext
- Add build_navigation_uri() helper for URI construction
- URL-encode usernames and channels to prevent URI injection
- Handle IPv6 addresses with proper bracket wrapping
- Omit default port (7500) from URIs for cleaner links

Event types with navigation support:
- ChatMessage, ChatMention -> channel
- UserMessage (DM) -> user's DM tab
- NewsPost -> news panel
- ChatJoin, ChatLeave -> channel
- VoiceJoined, VoiceLeft -> channel (via username context)
- Add NOTIFICATION_TIMEOUT_MS constant for 5000ms timeout
- Add DBUS_ACTION_DEFAULT and DBUS_ACTION_LABEL constants for D-Bus action identifiers
- Apply constants in linux.rs and mod.rs (macOS fallback)
… constant

- Replace '5-second' in comment with reference to NOTIFICATION_TIMEOUT_MS
- Extract HANDLE_LIFETIME_SECS constant (6) with documentation explaining
  its relationship to NOTIFICATION_TIMEOUT_MS
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.

2 participants