All Types

io.getstream.chat.android.livedata.utils.Call2
io.getstream.chat.android.livedata.utils.CallImpl2
(extensions in package io.getstream.chat.android.livedata)
io.getstream.chat.android.client.models.Channel
io.getstream.chat.android.livedata.dao.ChannelConfigDao
io.getstream.chat.android.livedata.entity.ChannelConfigEntity
io.getstream.chat.android.livedata.repository.ChannelConfigRepository

The channel config repository stores all channel configs in room as well as in memory Call channelConfigRepository.load to load all configs into memory

io.getstream.chat.android.livedata.controller.ChannelController

The Channel Controller exposes convenient livedata objects to build your chat interface It automatically handles the incoming events and keeps users, messages, reactions, channel information up to date automatically Offline storage is also handled using Room

io.getstream.chat.android.livedata.controller.ChannelControllerImpl
io.getstream.chat.android.livedata.dao.ChannelDao
io.getstream.chat.android.livedata.ChannelData

A class that only stores the channel data and not all the other channel state Using this prevents code bugs and issues caused by confusing the channel data vs the full channel object

io.getstream.chat.android.livedata.entity.ChannelEntity

ChannelStateEntity stores both the channel information as well as references to all of the channel's state

io.getstream.chat.android.livedata.entity.ChannelEntityPair
io.getstream.chat.android.livedata.repository.ChannelRepository
io.getstream.chat.android.livedata.utils.ChannelUnreadCountLiveData
io.getstream.chat.android.livedata.entity.ChannelUserReadEntity

Efficiently store the channel user read info

io.getstream.chat.android.livedata.ChatDatabase
io.getstream.chat.android.livedata.ChatDomain

The ChatDomain is the main entry point for all livedata & offline operations on chat

io.getstream.chat.android.livedata.ChatDomainImpl

The Chat Repository exposes livedata objects to make it easier to build your chat UI. It intercepts the various low level events to ensure data stays in sync. Offline storage is handled using Room

(extensions in package io.getstream.chat.android.livedata)
io.getstream.chat.android.client.errors.ChatError
(extensions in package io.getstream.chat.android.livedata)
io.getstream.chat.android.client.events.ChatEvent
io.getstream.chat.android.livedata.ChatNotificationConfigOffline

Extend the ChatNotificationConfig to start the sync worker when receiving new messages This ensures that offline storage is up to date as soon as you open the app

io.getstream.chat.android.livedata.converter.ConfigConverter
io.getstream.chat.android.livedata.usecase.CreateChannel
io.getstream.chat.android.livedata.usecase.CreateChannelImpl
io.getstream.chat.android.livedata.converter.DateConverter
io.getstream.chat.android.livedata.utils.DefaultRetryPolicy
io.getstream.chat.android.livedata.usecase.DeleteMessage
io.getstream.chat.android.livedata.usecase.DeleteMessageImpl
io.getstream.chat.android.livedata.usecase.DeleteReaction
io.getstream.chat.android.livedata.usecase.DeleteReactionImpl
io.getstream.chat.android.livedata.usecase.EditMessage
io.getstream.chat.android.livedata.usecase.EditMessageImpl
io.getstream.chat.android.livedata.utils.Event

Used as a wrapper for data that is exposed via a LiveData that represents an event.

io.getstream.chat.android.livedata.EventHandlerImpl
io.getstream.chat.android.livedata.utils.EventObserver

An Observer for Events, simplifying the pattern of checking if the Event's content has already been handled.

io.getstream.chat.android.livedata.converter.ExtraDataConverter
io.getstream.chat.android.livedata.converter.FilterObjectConverter
io.getstream.chat.android.livedata.usecase.GetThread
io.getstream.chat.android.livedata.usecase.GetThreadImpl
io.getstream.chat.android.livedata.usecase.GetTotalUnreadCount
io.getstream.chat.android.livedata.usecase.GetTotalUnreadCountImpl
io.getstream.chat.android.livedata.usecase.GetUnreadChannelCount
io.getstream.chat.android.livedata.usecase.GetUnreadChannelCountImpl
io.getstream.chat.android.livedata.usecase.HideChannel
io.getstream.chat.android.livedata.usecase.HideChannelImpl
io.getstream.chat.android.livedata.usecase.Keystroke
io.getstream.chat.android.livedata.usecase.KeystrokeImpl
io.getstream.chat.android.livedata.converter.ListConverter
io.getstream.chat.android.livedata.usecase.LoadOlderMessages
io.getstream.chat.android.livedata.usecase.LoadOlderMessagesImpl
io.getstream.chat.android.livedata.converter.MapConverter
io.getstream.chat.android.livedata.usecase.MarkRead
io.getstream.chat.android.livedata.usecase.MarkReadImpl
io.getstream.chat.android.livedata.entity.MemberEntity

Efficiently store the member data

(extensions in package io.getstream.chat.android.livedata)
io.getstream.chat.android.client.models.Message
io.getstream.chat.android.livedata.dao.MessageDao
io.getstream.chat.android.livedata.entity.MessageEntity

The Message Entity. Text and attachments are the most commonly used fields.

io.getstream.chat.android.livedata.repository.MessageRepository
io.getstream.chat.android.livedata.request.QueryChannelPaginationRequest
io.getstream.chat.android.livedata.usecase.QueryChannels
io.getstream.chat.android.livedata.controller.QueryChannelsController

The QueryChannelsController is a small helper to show a list of channels

io.getstream.chat.android.livedata.controller.QueryChannelsControllerImpl
io.getstream.chat.android.livedata.dao.QueryChannelsDao
io.getstream.chat.android.livedata.entity.QueryChannelsEntity
io.getstream.chat.android.livedata.usecase.QueryChannelsImpl
io.getstream.chat.android.livedata.usecase.QueryChannelsLoadMore
io.getstream.chat.android.livedata.usecase.QueryChannelsLoadMoreImpl
io.getstream.chat.android.livedata.request.QueryChannelsPaginationRequest

Paginate query channels on the queryChannels repo Similar to QueryChannelsRequest but without the watch, filter and sort params Since those are provided by the QueryChannelsRepo

io.getstream.chat.android.livedata.repository.QueryChannelsRepository
io.getstream.chat.android.livedata.converter.QuerySortConverter

QuerySort can be null so we need to handle that here

io.getstream.chat.android.livedata.dao.ReactionDao
io.getstream.chat.android.livedata.entity.ReactionEntity

The ReactionEntity

io.getstream.chat.android.livedata.repository.ReactionRepository

We don't do any caching on reactions since usage is infrequent

io.getstream.chat.android.livedata.usecase.ReplayEventsForActiveChannels
io.getstream.chat.android.livedata.usecase.ReplayEventsForActiveChannelsImpl
io.getstream.chat.android.livedata.repository.RepositoryHelper
io.getstream.chat.android.livedata.utils.RetryPolicy

When creating a channel, adding a reaction or sending any temporary error will trigger the retry policy The retry policy interface exposes 2 methods

io.getstream.chat.android.livedata.usecase.SendMessage
io.getstream.chat.android.livedata.usecase.SendMessageImpl
io.getstream.chat.android.livedata.usecase.SendReaction
io.getstream.chat.android.livedata.usecase.SendReactionImpl
io.getstream.chat.android.livedata.converter.SetConverter
io.getstream.chat.android.livedata.usecase.ShowChannel
io.getstream.chat.android.livedata.usecase.ShowChannelImpl
io.getstream.chat.android.livedata.usecase.StopTyping
io.getstream.chat.android.livedata.usecase.StopTypingImpl
io.getstream.chat.android.livedata.dao.SyncStateDao
io.getstream.chat.android.livedata.entity.SyncStateEntity
io.getstream.chat.android.livedata.repository.SyncStateRepository
io.getstream.chat.android.livedata.converter.SyncStatusConverter
io.getstream.chat.android.livedata.worker.SyncWorker
io.getstream.chat.android.livedata.controller.ThreadController

The threadController exposes livedata for a thread

io.getstream.chat.android.livedata.controller.ThreadControllerImpl
io.getstream.chat.android.livedata.usecase.ThreadLoadMore
io.getstream.chat.android.livedata.usecase.ThreadLoadMoreImpl
io.getstream.chat.android.livedata.usecase.UseCaseHelper
io.getstream.chat.android.livedata.dao.UserDao
io.getstream.chat.android.livedata.entity.UserEntity

The UserEntity, id is a required field All other fields are optional and can be null

io.getstream.chat.android.livedata.repository.UserRepository
io.getstream.chat.android.livedata.usecase.WatchChannel
io.getstream.chat.android.livedata.usecase.WatchChannelImpl