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 "Share" and "Open in..." actions to the `PhotoViewScreen`, allowing users to share images via other apps or open them in external viewers.
**Key changes:**
- **PhotoViewer:**
- Added "Share" and "Open in..." options to the `PhotoViewScreen` dropdown menu.
- `PhotoViewViewModel`:
- Implemented `onShareClicked()` and `onOpenInClicked()` to handle these new actions.
- Added `shareRequest` StateFlow to manage image sharing intents.
- Introduced `downloadAndStoreImageToCache()` to download and cache images for sharing.
- `onImageShared()` resets `shareRequest` after sharing.
- Updated `TopBar` to include the new menu items.
- Added string resources for "Open in…" and "Share".
- **Reply UI:**
- `Reply.kt`: Title and summary text now use `TextOverflow.Ellipsis` to prevent long text from breaking the layout.
- **API Model:**
- `MessagesResponse.kt`: Added `MessagesMarkAsImportantResponse` data class to handle the response for marking messages as important.
- **Data Layer:**
- `MessagesRepositoryImpl`: Updated `markAsImportant` to correctly map the API response using `MessagesMarkAsImportantResponse`.
- **Minor:**
- `README.md`: Updated feature checklist for external viewer.
- `ApplicationModule.kt`: Added experimental Coil API opt-in.
* 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 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>
* 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