Closed ttypic closed 2 months ago
The changes introduce a comprehensive chat functionality within the Ably chat system. New interfaces, data classes, and enumerations provide structured management of chat rooms, messages, presence, reactions, typing, and connection states. Enhanced logging and configuration options, alongside error handling mechanisms, improve the robustness of the chat application. A minor adjustment to the code quality tool configuration is also included, allowing for shorter function names.
Files | Change Summary |
---|---|
ChatClient.kt , Connection.kt , ConnectionStatus.kt , EmitsDiscontinuities.kt , ErrorCodes.kt , EventTypes.kt , Headers.kt , LogLevel.kt , Message.kt , Metadata.kt , Occupancy.kt , Presence.kt , Reaction.kt , Room.kt , RoomOptions.kt , RoomReactions.kt , RoomStatus.kt , Typing.kt |
New interfaces and data classes added to manage chat functionalities, including chat client interactions, connection states, message handling, presence updates, typing events, reactions, and room management. Error codes and logging levels defined for improved debugging. |
detekt.yml |
Configuration change to reduce the minimum function name length from 3 to 2 characters, along with a minor formatting adjustment. |
sequenceDiagram
participant User
participant ChatClient
participant Room
participant Messages
participant Presence
participant Typing
User->>ChatClient: Connect to chat
ChatClient->>Room: Join room
Room->>User: Room joined notification
User->>Messages: Send message
Messages->>Room: Relay message
Room->>User: Message received confirmation
User->>Presence: Update presence status
Presence->>Room: Notify presence change
User->>Typing: Start typing
Typing->>Room: Notify typing event
Room->>User: Typing indicator shown
🐇 In a world of chat, so bright and bold,
New features sprout, like carrots of gold.
With messages flying, and typing in sight,
Presence and reactions, all feel just right!
Let's hop and celebrate, with friends by our side,
In this chat-filled garden, we'll take great pride! 🌼
Notable TypeScript-to-Kotlin decisions:
Flow
in the public interface. These listeners will be invoked synchronously with the events they are listening to. This approach makes it easy to provide extension functions for an idiomaticFlow
interface on one hand, and on the other hand, it gives maximum flexibility for SDK users to utilize other reactive libraries like Reactor or RxJava.Any
for now.Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Chores