diff --git a/app/src/main/kotlin/app/dapk/st/graph/AppModule.kt b/app/src/main/kotlin/app/dapk/st/graph/AppModule.kt index 99e2d26..becb8af 100644 --- a/app/src/main/kotlin/app/dapk/st/graph/AppModule.kt +++ b/app/src/main/kotlin/app/dapk/st/graph/AppModule.kt @@ -205,7 +205,7 @@ internal class FeatureModules internal constructor( } val shareEntryModule by unsafeLazy { - ShareEntryModule(matrixModules.sync, matrixModules.room) + ShareEntryModule(matrixModules.engine) } val imageGalleryModule by unsafeLazy { @@ -457,8 +457,6 @@ internal class MatrixModules( } } - val sync by unsafeLazy { matrix.syncService() } - val room by unsafeLazy { matrix.roomService() } } internal class DomainModules( diff --git a/chat-engine/src/main/kotlin/app/dapk/st/engine/ChatEngine.kt b/chat-engine/src/main/kotlin/app/dapk/st/engine/ChatEngine.kt index ad64a3a..03819e1 100644 --- a/chat-engine/src/main/kotlin/app/dapk/st/engine/ChatEngine.kt +++ b/chat-engine/src/main/kotlin/app/dapk/st/engine/ChatEngine.kt @@ -3,6 +3,7 @@ package app.dapk.st.engine import app.dapk.st.matrix.common.EventId import app.dapk.st.matrix.common.JsonString import app.dapk.st.matrix.common.RoomId +import app.dapk.st.matrix.common.RoomMember import kotlinx.coroutines.flow.Flow import java.io.InputStream @@ -28,6 +29,8 @@ interface ChatEngine { suspend fun rejectJoinRoom(roomId: RoomId) + suspend fun findMembersSummary(roomId: RoomId): List + fun mediaDecrypter(): MediaDecrypter fun pushHandler(): PushHandler diff --git a/features/share-entry/build.gradle b/features/share-entry/build.gradle index 814f902..176afb2 100644 --- a/features/share-entry/build.gradle +++ b/features/share-entry/build.gradle @@ -4,9 +4,7 @@ dependencies { implementation project(":domains:android:compose-core") implementation project(":domains:android:viewmodel") implementation project(':domains:store') - implementation project(':matrix:services:sync') - implementation project(':matrix:services:room') - implementation project(':matrix:services:message') + implementation project(':chat-engine') implementation project(":core") implementation project(":design-library") implementation project(":features:navigator") diff --git a/features/share-entry/src/main/kotlin/app/dapk/st/share/FetchRoomsUseCase.kt b/features/share-entry/src/main/kotlin/app/dapk/st/share/FetchRoomsUseCase.kt index 18aca0c..2b681ea 100644 --- a/features/share-entry/src/main/kotlin/app/dapk/st/share/FetchRoomsUseCase.kt +++ b/features/share-entry/src/main/kotlin/app/dapk/st/share/FetchRoomsUseCase.kt @@ -1,21 +1,20 @@ package app.dapk.st.share -import app.dapk.st.matrix.room.RoomService -import app.dapk.st.matrix.sync.SyncService +import app.dapk.st.engine.ChatEngine import kotlinx.coroutines.flow.first class FetchRoomsUseCase( - private val syncSyncService: SyncService, - private val roomService: RoomService, + private val chatEngine: ChatEngine, ) { - suspend fun bar(): List { - return syncSyncService.overview().first().map { + suspend fun fetch(): List { + return chatEngine.directory().first().map { + val overview = it.overview Item( - it.roomId, - it.roomAvatarUrl, - it.roomName ?: "", - roomService.findMembersSummary(it.roomId).map { it.displayName ?: it.id.value } + overview.roomId, + overview.roomAvatarUrl, + overview.roomName ?: "", + chatEngine.findMembersSummary(overview.roomId).map { it.displayName ?: it.id.value } ) } } diff --git a/features/share-entry/src/main/kotlin/app/dapk/st/share/ShareEntryModule.kt b/features/share-entry/src/main/kotlin/app/dapk/st/share/ShareEntryModule.kt index ac0f61b..0697547 100644 --- a/features/share-entry/src/main/kotlin/app/dapk/st/share/ShareEntryModule.kt +++ b/features/share-entry/src/main/kotlin/app/dapk/st/share/ShareEntryModule.kt @@ -1,15 +1,13 @@ package app.dapk.st.share import app.dapk.st.core.ProvidableModule -import app.dapk.st.matrix.room.RoomService -import app.dapk.st.matrix.sync.SyncService +import app.dapk.st.engine.ChatEngine class ShareEntryModule( - private val syncService: SyncService, - private val roomService: RoomService, + private val chatEngine: ChatEngine, ) : ProvidableModule { fun shareEntryViewModel(): ShareEntryViewModel { - return ShareEntryViewModel(FetchRoomsUseCase(syncService, roomService)) + return ShareEntryViewModel(FetchRoomsUseCase(chatEngine)) } } \ No newline at end of file diff --git a/features/share-entry/src/main/kotlin/app/dapk/st/share/ShareEntryViewModel.kt b/features/share-entry/src/main/kotlin/app/dapk/st/share/ShareEntryViewModel.kt index ddd6fbe..4e7d6bf 100644 --- a/features/share-entry/src/main/kotlin/app/dapk/st/share/ShareEntryViewModel.kt +++ b/features/share-entry/src/main/kotlin/app/dapk/st/share/ShareEntryViewModel.kt @@ -22,7 +22,7 @@ class ShareEntryViewModel( fun start() { syncJob = viewModelScope.launch { - state = DirectoryScreenState.Content(fetchRoomsUseCase.bar()) + state = DirectoryScreenState.Content(fetchRoomsUseCase.fetch()) } } diff --git a/matrix-chat-engine/src/main/kotlin/app/dapk/st/engine/MatrixEngine.kt b/matrix-chat-engine/src/main/kotlin/app/dapk/st/engine/MatrixEngine.kt index 3bda72d..d6ad686 100644 --- a/matrix-chat-engine/src/main/kotlin/app/dapk/st/engine/MatrixEngine.kt +++ b/matrix-chat-engine/src/main/kotlin/app/dapk/st/engine/MatrixEngine.kt @@ -88,6 +88,8 @@ class MatrixEngine internal constructor( matrix.value.roomService().rejectJoinRoom(roomId) } + override suspend fun findMembersSummary(roomId: RoomId) = matrix.value.roomService().findMembersSummary(roomId) + override fun mediaDecrypter(): MediaDecrypter { val mediaDecrypter = matrixMediaDecrypter.value return object : MediaDecrypter {