- Add minute/second abbreviations and kotlin.time-based relative time formatter
- Introduce FastPreview and update previews to use AppTheme with dark/dynamic colors
- Refactor attachments preview grid & waveform to use ImmutableList and reduce recompositions
- Tweak message bubble reply styling and swipe-to-reply animation/haptics
- Add Compose Stability Analyzer plugin and enable it in debug builds
- Cache shared images by sha256 and improve share intent/chooser text
- Minor UX polish (e.g., “No views”) and immutability annotations
This commit upgrades the project's build system and refactors the build logic for better maintainability and alignment with modern practices.
The Gradle version has been updated from 8.14.2 to 9.3.0, and the Android Gradle Plugin (AGP) has been upgraded to version 9.0.0. This required migrating the build logic to use the new `com.android.build.api.dsl` interfaces instead of the deprecated `com.android.build.gradle` ones.
Key changes:
- Upgraded Gradle to `9.3.0`.
- Upgraded Android Gradle Plugin to `9.0.0`.
- Updated various dependencies including Kotlin, Compose BOM, Chucker, and serialization.
- Removed the explicit `kotlin-android` plugin application, as it's now handled by AGP.
- Migrated build convention plugins to use the new AGP DSL APIs.
- Commented out the custom APK naming logic in `app/build.gradle.kts`.
- Added new `gradle.properties` flags for build configuration.
- Corrected the namespace in `core/model` from `datastore` to `model`.
This commit performs a general cleanup of the codebase by removing unused dependencies, comments, and functions. It also improves error handling in the build logic.
Key changes:
- Removed a TODO and an inappropriate function `dickPizda` from `Extensions.kt`.
- Removed stale TODO comments from `core/data/build.gradle.kts` and `core/domain/build.gradle.kts`.
- Replaced a `TODO` call with a proper `IllegalArgumentException` in `KotlinAndroid.kt` for better error reporting when encountering unsupported project extensions.
This commit introduces the ability to see how many people have read an outgoing message in a group chat. A "views" count is now displayed in the message options dialog for relevant messages.
- **API & Data Layer:**
- Added `getMessageReadPeers` to `MessagesService` and `MessagesRepository` to fetch users who have read a specific message.
- Introduced `MessagesGetReadPeersResponse` to handle the API response.
- A new URL constant `GET_MESSAGE_READ_PEERS` was added.
- **Domain Layer:**
- A new `GetMessageReadPeersUseCase` is created to provide the view count to the ViewModel.
- The use case is registered in the `DomainModule`.
- **ViewModel:**
- `MessagesHistoryViewModel` now includes `loadMessageReadPeers` to asynchronously fetch and return the view count for a message.
- **UI (Compose):**
- The `MessageOptionsDialog` now displays a "views" count for outgoing chat messages.
- It uses a `LaunchedEffect` to call `loadMessageReadPeers` when the dialog is shown.
- The `visibility` icon has been updated and its XML file renamed to `round_visibility_24px.xml` to follow a consistent naming convention.
- **Refactoring & Minor Fixes:**
- Simplified several `derivedStateOf` usages to direct calculations or property delegates in `MessageBubble.kt` and `MessagesList.kt` for minor performance improvements.
- Renamed `IncomingMessageBubble.kt` and `OutgoingMessageBubble.kt` to `MessageBubbleIncoming.kt` and `MessageBubbleOutgoing.kt` respectively for consistency.
- Removed an unnecessary log statement in `MessagesList.kt`.
This commit introduces the ability to reply to messages.
- **API & Data Layer:**
- Replaced `replyTo` parameter with `forward` in `sendMessage` calls across the data, domain, and repository layers to support the new reply mechanism.
- **ViewModel:**
- Added logic to handle the reply state, including storing the replied message's ID (`replyToCmId`).
- When a message is sent, it now correctly constructs a `forward` JSON object if it is a reply.
- The UI state (`MessagesHistoryScreenState`) is updated to show and hide the reply preview.
- Added a `onReplyCloseClicked` handler to cancel a reply.
- The ViewModel interface was removed, and the implementation class `MessagesHistoryViewModelImpl` is used directly.
- **UI (Compose):**
- A new `ReplyContainer` is displayed above the message input bar when a reply is active.
- The input bar's corner radius animates to integrate with the reply container.
- Added a `FocusRequester` to automatically focus the input field when the reply action is selected.
- Added spacing in the message list to prevent the reply preview from overlapping messages.
- The message options dialog now passes the `messageId` and `cmId` when an option is picked.
* new attachments in messages history - photo, video, audio, file, link
* improve attachments in messages history and adjusted font size for logo's text in auth screen
* audio duration, file preview and url preview are now visible in attachments in messages history screen
* make MessageBubble width adapt to attachments container width
* topbar back icon crossfade animation
* implement rich text for message input
* handle click and long click on attachments
* added click and long click handlers for attachments in message bubbles
* enabled opening photos, files, and links when clicked.
* implemented basic long-click logging for photos.
* handled back press to return to Conversations from other tabs.
* corrected the logic for filtering and selecting video images.
* updated string resources for attachments, including a new "Clip" string.
* make MessageBubble mention text underline on out messages
* Bump VK Api version to 5.238
* Implemented new authorization flow (at the moment, without auto re-requesting token)
* Add support for sticker pack preview attachments
* Bump LongPoll to version 19
* Improved messages handling
* Fixed coloring issues
* Cache improvements
* Archive screen with full functionality
* Recomposition fixes
* Markdown support for messages bubbles
* Adjust app name font size based on screen width
* Navigation related improvements
* Add logout functionality
* pagination in chat fixed
* other fixes and improvements
* fixed visual bug in progress bar in chat history
* Refactor: Enhance conversations and friends features
- In `ConversationsScreen`, removed `isNeedToScrollToTop` and `onScrolledToTop`, and refactored toolbar container color logic. Added `NoItemsView` for empty conversation lists.
- In `MainGraph`, added `onMessageClicked` for navigation to message history.
- In `ApiEvent`, introduced `parseOrNull` for handling unknown event types.
- In `ConversationsViewModel`, removed `scrollToTop` logic and refactored error handling.
- In `FriendsViewModel`, refactored error handling and introduced `onErrorConsumed` and `handleError`.
- In `FriendItem`, added an icon button to initiate sending a message to a friend.
- In `strings.xml`, added or updated strings for session expiration, log out, refreshing, and empty friend lists.
- In `RootScreen`, added `onMessageClicked` for navigating to messages.
- In `FriendsList`, added `onMessageClicked` for handling message clicks.
- In `MainScreen`, removed unused `MutableSharedFlow`.
- In `FriendsScreen`, added support for showing errors, added `onMessageClicked`, and replaced `hazeChild` with `hazeEffect` and `hazeSource`.
- In `FriendsNavigation`, added `onMessageClicked` for handling message clicks.
- In `ConversationsNavigation`, removed the unused `scrollToTopFlow` parameter.
- In `ErrorView`, added text alignment.
- In `NoItemsView`, added support for a button and custom text.
- In `LongPollUpdatesParser`, replaced try-catch with `parseOrNull`.
* Chat creation feature (#138)
* - read indicator, edit status and time for message in messages history
* message sending status
* Bump com.google.guava:guava from 33.3.1-jre to 33.4.0-jre (#97)
* Bump coroutines from 1.9.0 to 1.10.1 (#100)
* some improvements + loading conversation on new message if it is not already in the list
* Bump koin from 4.0.0 to 4.0.1 (#101)
* minor update
---------
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* settings reorganization;
implement long press on emoji button for fast text;
some deprecations fixed;
some typos fixed;
etc
* ability to use more animations (experimental);
fix online friends loading;
conversation avatar in messages history screen;
test second tap on conversations item in bottom bar to scroll to top;
etc
* version up