- Implement `VkChannelMessage` domain and data models for channel message attachments
- Add `CHANNEL_MESSAGE` to `AttachmentType` and map it to relevant UI resources and strings
- Refactor `Sticker` and `Gift` composables to accept URL strings instead of domain objects for better decoupling
- Simplify `AppTheme` by removing redundant color animations and passing the color scheme directly to `MaterialExpressiveTheme`
- Update `LoginScreen` to include a theme toggle (classic vs. light) and improve back-button behavior by resetting error states
- Bump VK API version from 5.238 to 5.263
- Adjust layout and padding for sticker and gift attachment previews
- 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 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 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
* Bump haze from 1.1.1 to 1.2.0 (#105)
* Bump org.jetbrains.kotlinx:kotlinx-serialization-json from 1.7.3 to 1.8.0 (#104)
* update gradle wrapper
* Bump agp from 8.7.3 to 8.8.0 (#106)
* Bump com.jraska.module.graph.assertion from 2.7.1 to 2.7.3 (#109)
* Bump haze from 1.2.0 to 1.2.2 (#111)
* Bump koin from 4.0.1 to 4.0.2 (#112)
* little improvement
* Bump kotlin from 2.1.0 to 2.1.10 (#113)
* Bump androidx.compose:compose-bom from 2024.12.01 to 2025.02.00 (#115)
* Bump androidx.navigation:navigation-compose from 2.8.5 to 2.8.7 (#119)
* Bump haze from 1.2.2 to 1.3.1 (#118)
* Bump ksp from 2.1.0-1.0.29 to 2.1.10-1.0.30 (#116)
* Bump agp from 8.8.0 to 8.8.1 (#117)
* Bump com.google.accompanist:accompanist-permissions (#121)
* Rename the app's namespace and applicationId to `dev.meloda.fastvk`, and update the package name in `ACTION_MANAGE_UNKNOWN_APP_SOURCES` intent. Remove unnecessary `onLowMemory` method in the `OnlineService`.
* Bump com.jraska.module.graph.assertion from 2.7.3 to 2.8.0 (#126)
* Bump ksp from 2.1.10-1.0.30 to 2.1.10-1.0.31 (#125)
* Bump haze from 1.3.1 to 1.4.0 (#124)
* Bump agp from 8.8.1 to 8.8.2 (#123)
* Bump androidx.navigation:navigation-compose from 2.8.7 to 2.8.8 (#122)
* Bump haze from 1.4.0 to 1.5.0 (#128)
* Bump agp from 8.8.2 to 8.9.0 (#127)
* Bump androidx.navigation:navigation-compose from 2.8.8 to 2.8.9 (#130)
* Bump androidx.compose:compose-bom from 2025.02.00 to 2025.03.00 (#129)
* revert agp version to 8.8.2
* fix issues with package names
* Bump haze from 1.5.0 to 1.5.1 (#133)
* Bump com.google.guava:guava from 33.4.0-jre to 33.4.5-jre (#132)
* russian translations
* fixes and improvements
---------
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* 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>