RoomServiceImpl

class RoomServiceImpl(api: MatrixClientServerApiClient, roomStore: RoomStore, roomStateStore: RoomStateStore, roomAccountDataStore: RoomAccountDataStore, roomTimelineStore: RoomTimelineStore, roomOutboxMessageStore: RoomOutboxMessageStore, roomEventDecryptionServices: List<RoomEventDecryptionService>, mediaService: MediaService, timelineEventHandler: TimelineEventHandler, currentSyncState: CurrentSyncState, userInfo: UserInfo, scope: CoroutineScope) : RoomService

Constructors

Link copied to clipboard
fun RoomServiceImpl(api: MatrixClientServerApiClient, roomStore: RoomStore, roomStateStore: RoomStateStore, roomAccountDataStore: RoomAccountDataStore, roomTimelineStore: RoomTimelineStore, roomOutboxMessageStore: RoomOutboxMessageStore, roomEventDecryptionServices: List<RoomEventDecryptionService>, mediaService: MediaService, timelineEventHandler: TimelineEventHandler, currentSyncState: CurrentSyncState, userInfo: UserInfo, scope: CoroutineScope)

Functions

Link copied to clipboard
open suspend override fun abortSendMessage(transactionId: String)
Link copied to clipboard
open override fun canBeRedacted(timelineEvent: TimelineEvent): Flow<Boolean>
Link copied to clipboard
open suspend override fun fillTimelineGaps(startEventId: EventId, roomId: RoomId, limit: Long)
Link copied to clipboard
open override fun <C : RoomAccountDataEventContent> getAccountData(roomId: RoomId, eventContentClass: KClass<C>, key: String): Flow<C?>
Link copied to clipboard
open override fun getAll(): StateFlow<Map<RoomId, StateFlow<Room?>>>
Link copied to clipboard
open override fun <C : StateEventContent> getAllState(roomId: RoomId, eventContentClass: KClass<C>): Flow<Map<String, Event<C>?>?>
Link copied to clipboard
open override fun getById(roomId: RoomId): Flow<Room?>
Link copied to clipboard
open override fun getLastTimelineEvent(roomId: RoomId, decryptionTimeout: Duration): Flow<Flow<TimelineEvent>?>
Link copied to clipboard
open override fun getLastTimelineEvents(roomId: RoomId, decryptionTimeout: Duration, fetchTimeout: Duration, limitPerFetch: Long, minSize: Long?, maxSize: Long?): Flow<Flow<Flow<TimelineEvent>>?>

Returns the last timeline events as flow.

Link copied to clipboard
open override fun getNextTimelineEvent(event: TimelineEvent, decryptionTimeout: Duration, fetchTimeout: Duration, limitPerFetch: Long): Flow<TimelineEvent?>?
Link copied to clipboard
open override fun getOutbox(): StateFlow<List<RoomOutboxMessage<*>>>
Link copied to clipboard
open override fun getPreviousTimelineEvent(event: TimelineEvent, decryptionTimeout: Duration, fetchTimeout: Duration, limitPerFetch: Long): Flow<TimelineEvent?>?
Link copied to clipboard
open override fun <C : StateEventContent> getState(roomId: RoomId, stateKey: String, eventContentClass: KClass<C>): Flow<Event<C>?>
Link copied to clipboard
open override fun getTimeline(roomId: RoomId, decryptionTimeout: Duration, fetchTimeout: Duration, limitPerFetch: Long, loadingSize: Long): Timeline

Returns a Timeline for a room.

Link copied to clipboard
open override fun getTimelineEvent(eventId: EventId, roomId: RoomId, decryptionTimeout: Duration, fetchTimeout: Duration, limitPerFetch: Long): Flow<TimelineEvent?>
Link copied to clipboard
open override fun getTimelineEventRelations(eventId: EventId, roomId: RoomId): Flow<Map<RelationType, Set<TimelineEventRelation>?>?>
open override fun getTimelineEventRelations(eventId: EventId, roomId: RoomId, relationType: RelationType): Flow<Set<TimelineEventRelation>?>
Link copied to clipboard
open override fun getTimelineEvents(startFrom: EventId, roomId: RoomId, direction: GetEvents.Direction, decryptionTimeout: Duration, fetchTimeout: Duration, limitPerFetch: Long, minSize: Long?, maxSize: Long?): Flow<Flow<TimelineEvent>>

Returns a flow of timeline events wrapped in a flow. It emits, when there is a new timeline event. This flow only completes, when the start of the timeline is reached or minSize and/or maxSize are set and reached.

Link copied to clipboard
open override fun getTimelineEventsFromNowOn(decryptionTimeout: Duration, syncResponseBufferSize: Int): Flow<TimelineEvent>

Returns all timeline events from the moment this method is called. This also triggers decryption for each timeline event.

Link copied to clipboard
open suspend override fun retrySendMessage(transactionId: String)
Link copied to clipboard
open suspend override fun sendMessage(roomId: RoomId, keepMediaInCache: Boolean, builder: suspend MessageBuilder.() -> Unit)

Extensions

Link copied to clipboard
inline fun <C : RoomAccountDataEventContent> RoomService.getAccountData(roomId: RoomId, key: String = ""): Flow<C?>
Link copied to clipboard
inline fun <C : StateEventContent> RoomService.getAllState(roomId: RoomId): Flow<Map<String, Event<C>?>?>
Link copied to clipboard
inline fun <C : StateEventContent> RoomService.getState(roomId: RoomId, stateKey: String = ""): Flow<Event<C>?>
Link copied to clipboard
fun RoomService.getTimelineEventsAround(startFrom: EventId, roomId: RoomId, decryptionTimeout: Duration = Duration.INFINITE, fetchTimeout: Duration = 1.minutes, limitPerFetch: Long = 20, maxSizeBefore: StateFlow<Int>, maxSizeAfter: StateFlow<Int>): Flow<List<Flow<TimelineEvent>>>

Returns all timeline events around a starting event sorted with higher indexes being more recent.

suspend fun RoomService.getTimelineEventsAround(startFrom: EventId, roomId: RoomId, decryptionTimeout: Duration = Duration.INFINITE, fetchTimeout: Duration = 1.minutes, limitPerFetch: Long = 20, minSizeBefore: Long? = 2, minSizeAfter: Long? = minSizeBefore, maxSizeBefore: Long = 10, maxSizeAfter: Long = maxSizeBefore): List<Flow<TimelineEvent>>

Returns all timeline events around a starting event.