Conversation
- Implemented a new tab for federated user connections in UserListScreen. - Added functionality to connect to users on external HushNet nodes using their full address. - Created a FederatedAddress utility class to parse and validate federated addresses. - Enhanced user experience with confirmation dialogs for session creation. - Updated KeyProvider to fetch remote user device keys. - Modified MessageService to include optional user address in message payloads. - Updated macOS project files to support CocoaPods integration. - Added necessary entitlements for network access in macOS app. - Updated dependencies in pubspec.lock for improved compatibility and features.
- Implemented a new SettingsScreen with user information, node settings, and security details. - Added navigation to SettingsScreen from ConversationsScreen. - Enhanced UserListScreen to filter out existing partners based on passed IDs. - Updated NodeService to manage WebSocket connection state and retry logic. - Refactored KeyProvider and SessionService for improved key management and error handling. - Integrated url_launcher package for external link handling across platforms. - Updated generated plugin registrants for Linux, macOS, and Windows to include url_launcher. - Updated pubspec.yaml and pubspec.lock to include url_launcher dependencies.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces support for federated (cross-node) chat sessions in the app, along with UI improvements to distinguish federated chats and various code refactors to support these features. The main changes include updating session creation to handle federated addresses, enhancing the
ChatViewmodel to represent federated chats, updating the user list to prevent duplicate conversations, and improving the UI to clearly indicate external chats.Federation support and session creation:
createSessionfunction now accepts an optionalrecipientUserAddressfor federated users, fetches device keys via a proxy endpoint when needed, and treats HTTP 202 as a successful session initiation. [1] [2] [3] [4]UserDevicemodel adds afromFederatedJsonconstructor to handle federated device formats. [1] [2]Model enhancements for federated chats:
ChatViewnow includes afederatedAddressfield, anisRemotegetter, and logic to parse and serialize this information. [1] [2] [3] [4]PendingSessionincludes theotpkUsedfield, and its parsing is updated to handle empty or missing values. [1] [2] [3]User interface improvements for federated chats:
ConversationsScreen) displays an "ext" badge and the federated address for remote chats, with distinct styling.CocoaPods and iOS build integration:
Podfileand updates.xcconfigfiles to integrate CocoaPods, preparing for dependencies required by federated features. [1] [2] [3]Minor fixes and refactors:
These changes collectively enable seamless support for federated messaging and improve the user experience when interacting with both local and remote users.