Jetpack Compose + Material 3 Expressive#160
Draft
raresvanca wants to merge 41 commits intoslowscript:masterfrom
Draft
Jetpack Compose + Material 3 Expressive#160raresvanca wants to merge 41 commits intoslowscript:masterfrom
raresvanca wants to merge 41 commits intoslowscript:masterfrom
Conversation
* Add compose dependencies * Clean all UI legacy code and files * Add base App
Key Changes: - **Language Migration**: Converted all core models, network services, and utils from Java to Kotlin. - **Architecture**: Introduced `WarpinatorRepository` as the single source of truth, exposing `StateFlow` for Remotes and Transfers. - **Concurrency**: Replaced blocking I/O, Threads, and Timers with Kotlin Coroutines and Flow. - **Service Layer**: Decoupled logic from `MainService`. - Created `RemotesManager` to handle discovery and connection lifecycles. - Created `TransfersManager` to handle active file transfer jobs. - Created `WarpinatorNotificationManager` to handle system notifications. - **Networking**: - Rewrote `Server`, `CertServer`, and `Authenticator` to be coroutine-friendly. - Implemented `RemoteWorker` and `TransferWorker` to handle individual connections and streams. - Updated gRPC service implementation to use Kotlin Coroutine stubs. - **State Management**: - `Remote` and `Transfer` are now immutable data classes. - Added `WarpinatorViewModel` to bridge the Repository to the UI. - Centralized shared preferences logic in `PreferenceManager`. Breaking Changes: - Deleted legacy `MainService` static singleton pattern. - Removed all legacy Java Model and Network classes.
- Now with links for helping users find important pages
- Some basic unit tests for some utility classes to check for regression
- Added auto-scrolling to the latest message in `MessagesPane` when the list is at the top or a new message is sent. - Updated `MessagesPane` top bar to display connection status - Refined message sending logic to ensure it is only enabled when the remote is connected and supports text messages. - Improved `MessageBubble` interaction by isolating the ripple effect to the bubble itself and adding a context menu offset. - Adjusted `DropdownMenuPopup` properties to prevent it from unfocusing the keyboard when opened.
- Updated `ShareDialog` to support menu actions. - Refined the file/text preview section with animated transitions and dynamic horizontal segmented shapes. - Improved the file name display logic to handle multiple URIs with a "more" count. - Filtered the remote device list based on status and text message support.
This update includes: - Added `MessageListItem` component for displaying and interacting with messages. - Added `SendMessageDialog` for composing and sending text messages. - Integrated messages directly into `TransfersPane` based on user preference. - Updated `WarpinatorRepository` and `WarpinatorViewModel` to support clearing individual messages. - Conditional visibility of the standalone messages pane in `HomeScreen`. - Improved FAB menu behavior and connection status card to reflect message counts.
- Notifications for messages - Intent handling for notifications - App navigation to relevant panes - Notification inhibitors for current open remote/message pane - Clearing notifications when a page is open
…op mode - Added keyboard shortcuts and shortcut labels when a keyboard is connected - Add drag-and-drop support for sending files and setting the profile picture - Support Ctrl+Enter to send messages - Enhance list items with hover and focus states to show contextual actions - Adjacent opening of links on large devices - Update the manifest to better handle desktop-style interactions and window resizing
… activity repaint
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.
My testing seem to indicate that this port is done, but additional eyes are appreciated to catch anything that may have been overlooked.
@slowscript if this PR is too large in scope, let me know so I can unfork or split the commits into multiple prs. if not, could you please create a separate branch?
Notes
This Kotlin + coroutines rewrite also seems to improve the performance of transfers. I noticed the average transfer speeds increased by ~5 MB/s in local testing.
Fixes
fixes #158, fixes #134