Skip to content
Snippets Groups Projects
Commit 11cb73e2 authored by Taras's avatar Taras
Browse files

Remove class CoreSpacesTreeBuilder

parent f1aa102c
No related branches found
No related tags found
No related merge requests found
package org.futo.circles.core.room
import android.content.Context
import androidx.lifecycle.MutableLiveData
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.delay
import org.futo.circles.core.CREATE_ROOM_DELAY
import org.futo.circles.core.R
import org.futo.circles.core.model.CirclesSpace
import org.futo.circles.core.model.Gallery
import org.futo.circles.core.model.GroupsSpace
import org.futo.circles.core.model.LoadingData
import org.futo.circles.core.model.PeopleSpace
import org.futo.circles.core.model.PhotosSpace
import org.futo.circles.core.model.ROOT_SPACE_TAG
import org.futo.circles.core.model.RootSpace
import org.futo.circles.core.model.SharedCirclesSpace
import org.futo.circles.core.provider.MatrixSessionProvider
import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
import javax.inject.Inject
class CoreSpacesTreeBuilder @Inject constructor(
@ApplicationContext private val context: Context,
private val createRoomDataSource: CreateRoomDataSource,
private val userAccountDataDataSource: UserAccountDataDataSource
) {
val loadingLiveData = MutableLiveData<LoadingData>()
private val coreSpaces = listOf(
RootSpace(),
CirclesSpace(),
GroupsSpace(),
PhotosSpace(),
PeopleSpace(),
SharedCirclesSpace()
)
suspend fun createCoreSpacesTree() {
loadingLiveData.postValue(LoadingData(messageId = R.string.configuring_workspace))
val configMap = mutableMapOf<String, String>()
coreSpaces.forEach { room ->
val roomId = createRoomDataSource.createRoom(room)
room.accountDataKey?.let { configMap.put(it, roomId) }
delay(CREATE_ROOM_DELAY)
}
userAccountDataDataSource.saveSpacesTreeConfig(configMap)
createRoomDataSource.createRoom(Gallery(), context.getString(R.string.photos))
loadingLiveData.postValue(LoadingData(isLoading = false))
}
fun isCirclesHierarchyCreated(): Boolean = MatrixSessionProvider.currentSession?.roomService()
?.getRoomSummaries(roomSummaryQueryParams { excludeType = null })
?.firstOrNull { summary -> summary.hasTag(ROOT_SPACE_TAG) } != null
}
\ No newline at end of file
package org.futo.circles.core.room
import org.futo.circles.core.provider.MatrixSessionProvider
import javax.inject.Inject
class UserAccountDataDataSource @Inject constructor() {
suspend fun saveSpacesTreeConfig(configMap: Map<String, String>) {
MatrixSessionProvider.getSessionOrThrow().accountDataService().updateUserAccountData(
SPACES_CONFIG_KEY, configMap
)
}
companion object {
private const val SPACES_CONFIG_KEY = "org.futo.circles.config"
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment