All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.net.folivo.trixnity.client.room.createRoomModule.kt Maven / Gradle / Ivy

There is a newer version: 4.7.1
Show newest version
package net.folivo.trixnity.client.room

import net.folivo.trixnity.client.key.KeyBackupService
import net.folivo.trixnity.client.key.OutgoingRoomKeyRequestEventHandler
import net.folivo.trixnity.core.EventHandler
import org.koin.core.module.dsl.bind
import org.koin.core.module.dsl.named
import org.koin.core.module.dsl.singleOf
import org.koin.core.qualifier.named
import org.koin.dsl.module

fun createRoomModule() = module {
    singleOf(::TimelineMutex)
    singleOf(::RoomListHandler) {
        bind()
        named()
    }
    singleOf(::DirectRoomEventHandler) {
        bind()
        named()
    }
    single(named()) {
        OutboxMessageEventHandler(
            config = get(),
            api = get(),
            roomEventEncryptionServices = getAll(),
            mediaService = get(),
            roomOutboxMessageStore = get(),
            outboxMessageMediaUploaderMappings = get(),
            currentSyncState = get(),
            tm = get(),
            clock = get(),
        )
    }
    singleOf(::RoomAccountDataEventHandler) {
        bind()
        named()
    }
    singleOf(::RoomStateEventHandler) {
        bind()
        named()
    }
    singleOf(::TypingEventHandlerImpl) {
        bind()
        bind()
        named()
    }
    singleOf(::RoomUpgradeHandler) {
        bind()
        named()
    }
    singleOf(::TimelineEventHandlerImpl) {
        bind()
        bind()
        named()
    }
    singleOf(::ForgetRoomServiceImpl) {
        bind()
    }
    single(named()) {
        MegolmRoomEventEncryptionService(
            roomStore = get(),
            loadMembersService = get(),
            roomStateStore = get(),
            olmCryptoStore = get(),
            keyBackupService = get(named()),
            outgoingRoomKeyRequestEventHandler = get(named()),
            olmEncryptionService = get(),
        )
    }
    singleOf(::UnencryptedRoomEventEncryptionService) {
        bind()
        named()
    }
    single {
        RoomServiceImpl(
            api = get(),
            roomStore = get(),
            roomStateStore = get(),
            roomAccountDataStore = get(),
            roomTimelineStore = get(),
            roomOutboxMessageStore = get(),
            roomEventEncryptionServices = getAll(),
            forgetRoomService = get(),
            mediaService = get(),
            userInfo = get(),
            timelineEventHandler = get(named()),
            typingEventHandler = get(named()),
            currentSyncState = get(),
            scope = get(),
            config = get(),
        )
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy