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

Remove matrix home server provider

parent 60004ea8
No related branches found
No related tags found
No related merge requests found
Showing
with 30 additions and 60 deletions
...@@ -3,7 +3,6 @@ package com.futo.circles ...@@ -3,7 +3,6 @@ package com.futo.circles
import android.app.Application import android.app.Application
import com.futo.circles.di.applicationModules import com.futo.circles.di.applicationModules
import com.futo.circles.provider.MatrixSessionProvider import com.futo.circles.provider.MatrixSessionProvider
import org.koin.android.ext.android.get
import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin import org.koin.core.context.startKoin
...@@ -15,6 +14,6 @@ class App : Application() { ...@@ -15,6 +14,6 @@ class App : Application() {
androidContext(this@App) androidContext(this@App)
modules(applicationModules) modules(applicationModules)
} }
get<MatrixSessionProvider>().initSession() MatrixSessionProvider.initSession(applicationContext)
} }
} }
\ No newline at end of file
...@@ -6,7 +6,6 @@ import androidx.navigation.NavController ...@@ -6,7 +6,6 @@ import androidx.navigation.NavController
import androidx.navigation.NavGraph import androidx.navigation.NavGraph
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import com.futo.circles.provider.MatrixSessionProvider import com.futo.circles.provider.MatrixSessionProvider
import org.koin.android.ext.android.get
class MainActivity : AppCompatActivity(R.layout.main_activity) { class MainActivity : AppCompatActivity(R.layout.main_activity) {
...@@ -25,7 +24,7 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) { ...@@ -25,7 +24,7 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) {
} }
private fun setStartDestination(navGraph: NavGraph) { private fun setStartDestination(navGraph: NavGraph) {
val startDestinationId = get<MatrixSessionProvider>().currentSession?.let { val startDestinationId = MatrixSessionProvider.currentSession?.let {
R.id.bottomNavigationFragment R.id.bottomNavigationFragment
} ?: R.id.logInFragment } ?: R.id.logInFragment
......
...@@ -6,9 +6,9 @@ import com.futo.circles.ui.log_in.data_source.LoginDataSource ...@@ -6,9 +6,9 @@ import com.futo.circles.ui.log_in.data_source.LoginDataSource
import org.koin.dsl.module import org.koin.dsl.module
val dataSourceModule = module { val dataSourceModule = module {
factory { LoginDataSource(get(), get()) } factory { LoginDataSource(get()) }
factory { (roomId: String) -> GroupTimelineDatasource(roomId, get(), get()) } factory { (roomId: String) -> GroupTimelineDatasource(roomId, get()) }
factory { GroupTimelineBuilder() } factory { GroupTimelineBuilder() }
} }
\ No newline at end of file
package com.futo.circles.di package com.futo.circles.di
val applicationModules = listOf(uiModule, providerModule, dataSourceModule) val applicationModules = listOf(uiModule, dataSourceModule)
\ No newline at end of file \ No newline at end of file
package com.futo.circles.di
import com.futo.circles.provider.MatrixSessionProvider
import org.koin.dsl.module
val providerModule = module {
single { MatrixSessionProvider(context = get()) }
}
\ No newline at end of file
...@@ -9,6 +9,6 @@ import org.koin.dsl.module ...@@ -9,6 +9,6 @@ import org.koin.dsl.module
val uiModule = module { val uiModule = module {
viewModel { LogInViewModel(get()) } viewModel { LogInViewModel(get()) }
viewModel { GroupsViewModel(get()) } viewModel { GroupsViewModel() }
viewModel { (roomId: String) -> GroupTimelineViewModel(get { parametersOf(roomId) }) } viewModel { (roomId: String) -> GroupTimelineViewModel(get { parametersOf(roomId) }) }
} }
\ No newline at end of file
package com.futo.circles.provider
import android.net.Uri
import com.futo.circles.BuildConfig
import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
class MatrixHomeServerProvider {
fun createHomeServerConfig() =
HomeServerConnectionConfig
.Builder()
.withHomeServerUri(Uri.parse(BuildConfig.MATRIX_HOME_SERVER_URL))
.build()
}
...@@ -8,13 +8,10 @@ import com.futo.circles.utils.GROUP_TAG ...@@ -8,13 +8,10 @@ import com.futo.circles.utils.GROUP_TAG
import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
class GroupsViewModel( class GroupsViewModel : ViewModel() {
private val matrixSessionProvider: MatrixSessionProvider
) : ViewModel() {
val groupsLiveData = val groupsLiveData =
matrixSessionProvider.currentSession?.getRoomSummariesLive(roomSummaryQueryParams()) MatrixSessionProvider.currentSession?.getRoomSummariesLive(roomSummaryQueryParams())
?.map { list -> list.toGroupsList(GROUP_TAG) } ?.map { list -> list.toGroupsList(GROUP_TAG) }
fun getContentResolver() = matrixSessionProvider.currentSession?.contentUrlResolver()
} }
...@@ -7,16 +7,14 @@ import com.futo.circles.R ...@@ -7,16 +7,14 @@ import com.futo.circles.R
import com.futo.circles.base.ViewBindingHolder import com.futo.circles.base.ViewBindingHolder
import com.futo.circles.base.context import com.futo.circles.base.context
import com.futo.circles.databinding.GroupListItemBinding import com.futo.circles.databinding.GroupListItemBinding
import com.futo.circles.extensions.loadMatrixThumbnail import com.futo.circles.extensions.loadImage
import com.futo.circles.extensions.onClick import com.futo.circles.extensions.onClick
import com.futo.circles.extensions.setIsEncryptedIcon import com.futo.circles.extensions.setIsEncryptedIcon
import com.futo.circles.model.GroupListItem import com.futo.circles.model.GroupListItem
import com.futo.circles.model.GroupListItemPayload import com.futo.circles.model.GroupListItemPayload
import org.matrix.android.sdk.api.session.content.ContentUrlResolver
class GroupViewHolder( class GroupViewHolder(
parent: ViewGroup, parent: ViewGroup,
private val urlResolver: ContentUrlResolver?,
onGroupClicked: (Int) -> Unit onGroupClicked: (Int) -> Unit
) : RecyclerView.ViewHolder(inflate(parent, GroupListItemBinding::inflate)) { ) : RecyclerView.ViewHolder(inflate(parent, GroupListItemBinding::inflate)) {
...@@ -30,7 +28,7 @@ class GroupViewHolder( ...@@ -30,7 +28,7 @@ class GroupViewHolder(
fun bind(data: GroupListItem) { fun bind(data: GroupListItem) {
with(binding) { with(binding) {
ivGroup.loadMatrixThumbnail(data.avatarUrl, urlResolver) ivGroup.loadImage(data.avatarUrl, ivGroup.height)
ivLock.setIsEncryptedIcon(data.isEncrypted) ivLock.setIsEncryptedIcon(data.isEncrypted)
......
...@@ -6,22 +6,21 @@ import androidx.recyclerview.widget.RecyclerView ...@@ -6,22 +6,21 @@ import androidx.recyclerview.widget.RecyclerView
import com.futo.circles.base.ViewBindingHolder import com.futo.circles.base.ViewBindingHolder
import com.futo.circles.databinding.ImagePostViewBinding import com.futo.circles.databinding.ImagePostViewBinding
import com.futo.circles.databinding.TextPostViewBinding import com.futo.circles.databinding.TextPostViewBinding
import com.futo.circles.extensions.loadMatrixThumbnail import com.futo.circles.extensions.loadEncryptedImage
import com.futo.circles.model.ImageContent import com.futo.circles.model.ImageContent
import com.futo.circles.model.Post import com.futo.circles.model.Post
import com.futo.circles.model.PostItemPayload import com.futo.circles.model.PostItemPayload
import com.futo.circles.model.TextContent import com.futo.circles.model.TextContent
import com.futo.circles.ui.view.GroupPostListener import com.futo.circles.ui.view.GroupPostListener
import com.futo.circles.ui.view.PostLayout import com.futo.circles.ui.view.PostLayout
import org.matrix.android.sdk.api.session.content.ContentUrlResolver
sealed class GroupPostViewHolder(view: View, private val urlResolver: ContentUrlResolver?) : sealed class GroupPostViewHolder(view: View) :
RecyclerView.ViewHolder(view) { RecyclerView.ViewHolder(view) {
abstract val postLayout: PostLayout abstract val postLayout: PostLayout
open fun bind(post: Post) { open fun bind(post: Post) {
postLayout.setData(post, urlResolver) postLayout.setData(post)
} }
fun bindPayload(payload: PostItemPayload) { fun bindPayload(payload: PostItemPayload) {
...@@ -31,9 +30,8 @@ sealed class GroupPostViewHolder(view: View, private val urlResolver: ContentUrl ...@@ -31,9 +30,8 @@ sealed class GroupPostViewHolder(view: View, private val urlResolver: ContentUrl
class TextPostViewHolder( class TextPostViewHolder(
parent: ViewGroup, parent: ViewGroup,
postListener: GroupPostListener, postListener: GroupPostListener
private val urlResolver: ContentUrlResolver? ) : GroupPostViewHolder(inflate(parent, TextPostViewBinding::inflate)) {
) : GroupPostViewHolder(inflate(parent, TextPostViewBinding::inflate), urlResolver) {
private companion object : ViewBindingHolder private companion object : ViewBindingHolder
...@@ -55,9 +53,8 @@ class TextPostViewHolder( ...@@ -55,9 +53,8 @@ class TextPostViewHolder(
class ImagePostViewHolder( class ImagePostViewHolder(
parent: ViewGroup, parent: ViewGroup,
postListener: GroupPostListener, postListener: GroupPostListener
private val urlResolver: ContentUrlResolver? ) : GroupPostViewHolder(inflate(parent, ImagePostViewBinding::inflate)) {
) : GroupPostViewHolder(inflate(parent, ImagePostViewBinding::inflate), urlResolver) {
private companion object : ViewBindingHolder private companion object : ViewBindingHolder
...@@ -72,7 +69,7 @@ class ImagePostViewHolder( ...@@ -72,7 +69,7 @@ class ImagePostViewHolder(
super.bind(post) super.bind(post)
(post.content as? ImageContent)?.let { (post.content as? ImageContent)?.let {
binding.ivContent.loadMatrixThumbnail(it.url, urlResolver) binding.ivContent.loadEncryptedImage(it)
} }
} }
} }
\ No newline at end of file
package com.futo.circles.ui.log_in.data_source package com.futo.circles.ui.log_in.data_source
import android.content.Context import android.content.Context
import android.net.Uri
import com.futo.circles.BuildConfig
import com.futo.circles.R import com.futo.circles.R
import com.futo.circles.extensions.createResult import com.futo.circles.extensions.createResult
import com.futo.circles.provider.MatrixHomeServerProvider
import com.futo.circles.provider.MatrixSessionProvider import com.futo.circles.provider.MatrixSessionProvider
import org.matrix.android.sdk.api.Matrix import org.matrix.android.sdk.api.Matrix
import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
class LoginDataSource( class LoginDataSource(private val context: Context) {
private val context: Context,
private val matrixSessionProvider: MatrixSessionProvider
) {
suspend fun logIn(name: String, password: String, secondPassword: String?) = suspend fun logIn(name: String, password: String, secondPassword: String?) =
createResult { createResult {
val homeServerConnectionConfig = MatrixHomeServerProvider().createHomeServerConfig()
Matrix.getInstance(context).authenticationService().directAuthentication( Matrix.getInstance(context).authenticationService().directAuthentication(
homeServerConnectionConfig = homeServerConnectionConfig, homeServerConnectionConfig = createHomeServerConfig(),
matrixId = name, matrixId = name,
password = password, password = password,
deviceId = secondPassword, deviceId = secondPassword,
...@@ -25,6 +22,12 @@ class LoginDataSource( ...@@ -25,6 +22,12 @@ class LoginDataSource(
R.string.initial_device_name, R.string.initial_device_name,
context.getString(R.string.app_name) context.getString(R.string.app_name)
) )
).also { matrixSessionProvider.startSession(it) } ).also { MatrixSessionProvider.startSession(it) }
} }
private fun createHomeServerConfig() =
HomeServerConnectionConfig
.Builder()
.withHomeServerUri(Uri.parse(BuildConfig.MATRIX_HOME_SERVER_URL))
.build()
} }
\ 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