diff --git a/app/src/main/java/com/futo/circles/App.kt b/app/src/main/java/com/futo/circles/App.kt index 6f9934578de776859e69ab966d6e6404ec0128d5..730870f180407958642b34f92d5aed8a53628c62 100644 --- a/app/src/main/java/com/futo/circles/App.kt +++ b/app/src/main/java/com/futo/circles/App.kt @@ -3,7 +3,6 @@ package com.futo.circles import android.app.Application import com.futo.circles.di.applicationModules import com.futo.circles.provider.MatrixSessionProvider -import org.koin.android.ext.android.get import org.koin.android.ext.koin.androidContext import org.koin.core.context.startKoin @@ -15,6 +14,6 @@ class App : Application() { androidContext(this@App) modules(applicationModules) } - get<MatrixSessionProvider>().initSession() + MatrixSessionProvider.initSession(applicationContext) } } \ No newline at end of file diff --git a/app/src/main/java/com/futo/circles/MainActivity.kt b/app/src/main/java/com/futo/circles/MainActivity.kt index 2b8928d552ffcfe56fefe0eb344500b3fcbb4553..fa17ebb0cb613e82f103d4f11d2c50ed5fe5811e 100644 --- a/app/src/main/java/com/futo/circles/MainActivity.kt +++ b/app/src/main/java/com/futo/circles/MainActivity.kt @@ -6,7 +6,6 @@ import androidx.navigation.NavController import androidx.navigation.NavGraph import androidx.navigation.fragment.NavHostFragment import com.futo.circles.provider.MatrixSessionProvider -import org.koin.android.ext.android.get class MainActivity : AppCompatActivity(R.layout.main_activity) { @@ -25,7 +24,7 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) { } private fun setStartDestination(navGraph: NavGraph) { - val startDestinationId = get<MatrixSessionProvider>().currentSession?.let { + val startDestinationId = MatrixSessionProvider.currentSession?.let { R.id.bottomNavigationFragment } ?: R.id.logInFragment diff --git a/app/src/main/java/com/futo/circles/di/DataSourceModule.kt b/app/src/main/java/com/futo/circles/di/DataSourceModule.kt index e570f965d3adbbb95b33f9c975b4e57122a467fa..7c02aab1173deb07cca6112cd5cfd5e243ffabb1 100644 --- a/app/src/main/java/com/futo/circles/di/DataSourceModule.kt +++ b/app/src/main/java/com/futo/circles/di/DataSourceModule.kt @@ -6,9 +6,9 @@ import com.futo.circles.ui.log_in.data_source.LoginDataSource import org.koin.dsl.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() } } \ No newline at end of file diff --git a/app/src/main/java/com/futo/circles/di/Modules.kt b/app/src/main/java/com/futo/circles/di/Modules.kt index 29e895d549a5cc6db9cdc8c45cd183b608925622..d7324146b4b59a42da41d2f7fb12a8fc6514a004 100644 --- a/app/src/main/java/com/futo/circles/di/Modules.kt +++ b/app/src/main/java/com/futo/circles/di/Modules.kt @@ -1,3 +1,3 @@ package com.futo.circles.di -val applicationModules = listOf(uiModule, providerModule, dataSourceModule) \ No newline at end of file +val applicationModules = listOf(uiModule, dataSourceModule) \ No newline at end of file diff --git a/app/src/main/java/com/futo/circles/di/ProviderModule.kt b/app/src/main/java/com/futo/circles/di/ProviderModule.kt deleted file mode 100644 index e3369eee3a232076bb73dd17cfde1a6c7813f7ac..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/futo/circles/di/ProviderModule.kt +++ /dev/null @@ -1,8 +0,0 @@ -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 diff --git a/app/src/main/java/com/futo/circles/di/UiModule.kt b/app/src/main/java/com/futo/circles/di/UiModule.kt index 8b5d91860061f3954b686123e4a240442abebf20..f866568372e9371adaf2dcb7c84b98c82de18411 100644 --- a/app/src/main/java/com/futo/circles/di/UiModule.kt +++ b/app/src/main/java/com/futo/circles/di/UiModule.kt @@ -9,6 +9,6 @@ import org.koin.dsl.module val uiModule = module { viewModel { LogInViewModel(get()) } - viewModel { GroupsViewModel(get()) } + viewModel { GroupsViewModel() } viewModel { (roomId: String) -> GroupTimelineViewModel(get { parametersOf(roomId) }) } } \ No newline at end of file diff --git a/app/src/main/java/com/futo/circles/provider/MatrixHomeServerProvider.kt b/app/src/main/java/com/futo/circles/provider/MatrixHomeServerProvider.kt deleted file mode 100644 index 936152647fbdd5a51094233538d46da1094a31a4..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/futo/circles/provider/MatrixHomeServerProvider.kt +++ /dev/null @@ -1,15 +0,0 @@ -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() - -} diff --git a/app/src/main/java/com/futo/circles/ui/groups/GroupsViewModel.kt b/app/src/main/java/com/futo/circles/ui/groups/GroupsViewModel.kt index a0b313431dd17234c33a0208f6e2bfe28bec6d68..60bd6f9f5171f6d33834ea670bf08cd4233fd6dc 100644 --- a/app/src/main/java/com/futo/circles/ui/groups/GroupsViewModel.kt +++ b/app/src/main/java/com/futo/circles/ui/groups/GroupsViewModel.kt @@ -8,13 +8,10 @@ import com.futo.circles.utils.GROUP_TAG import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams -class GroupsViewModel( - private val matrixSessionProvider: MatrixSessionProvider -) : ViewModel() { +class GroupsViewModel : ViewModel() { val groupsLiveData = - matrixSessionProvider.currentSession?.getRoomSummariesLive(roomSummaryQueryParams()) + MatrixSessionProvider.currentSession?.getRoomSummariesLive(roomSummaryQueryParams()) ?.map { list -> list.toGroupsList(GROUP_TAG) } - fun getContentResolver() = matrixSessionProvider.currentSession?.contentUrlResolver() } diff --git a/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt b/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt index f27d1fd318dfc53bbf7270736e9cb595acbe3888..6c0d0bb9ae09625e66b4fcd0fa7368dfb59f7b87 100644 --- a/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt +++ b/app/src/main/java/com/futo/circles/ui/groups/list/GroupViewHolder.kt @@ -7,16 +7,14 @@ import com.futo.circles.R import com.futo.circles.base.ViewBindingHolder import com.futo.circles.base.context 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.setIsEncryptedIcon import com.futo.circles.model.GroupListItem import com.futo.circles.model.GroupListItemPayload -import org.matrix.android.sdk.api.session.content.ContentUrlResolver class GroupViewHolder( parent: ViewGroup, - private val urlResolver: ContentUrlResolver?, onGroupClicked: (Int) -> Unit ) : RecyclerView.ViewHolder(inflate(parent, GroupListItemBinding::inflate)) { @@ -30,7 +28,7 @@ class GroupViewHolder( fun bind(data: GroupListItem) { with(binding) { - ivGroup.loadMatrixThumbnail(data.avatarUrl, urlResolver) + ivGroup.loadImage(data.avatarUrl, ivGroup.height) ivLock.setIsEncryptedIcon(data.isEncrypted) diff --git a/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt b/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt index af5a82640a1a21d47ed55a8c4e4fb054ca4a9d33..4bda5a906c690681764420b4c2438f65b8728eab 100644 --- a/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt +++ b/app/src/main/java/com/futo/circles/ui/groups/timeline/list/GroupTimelineViewHolder.kt @@ -6,22 +6,21 @@ import androidx.recyclerview.widget.RecyclerView import com.futo.circles.base.ViewBindingHolder import com.futo.circles.databinding.ImagePostViewBinding 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.Post import com.futo.circles.model.PostItemPayload import com.futo.circles.model.TextContent import com.futo.circles.ui.view.GroupPostListener 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) { abstract val postLayout: PostLayout open fun bind(post: Post) { - postLayout.setData(post, urlResolver) + postLayout.setData(post) } fun bindPayload(payload: PostItemPayload) { @@ -31,9 +30,8 @@ sealed class GroupPostViewHolder(view: View, private val urlResolver: ContentUrl class TextPostViewHolder( parent: ViewGroup, - postListener: GroupPostListener, - private val urlResolver: ContentUrlResolver? -) : GroupPostViewHolder(inflate(parent, TextPostViewBinding::inflate), urlResolver) { + postListener: GroupPostListener +) : GroupPostViewHolder(inflate(parent, TextPostViewBinding::inflate)) { private companion object : ViewBindingHolder @@ -55,9 +53,8 @@ class TextPostViewHolder( class ImagePostViewHolder( parent: ViewGroup, - postListener: GroupPostListener, - private val urlResolver: ContentUrlResolver? -) : GroupPostViewHolder(inflate(parent, ImagePostViewBinding::inflate), urlResolver) { + postListener: GroupPostListener +) : GroupPostViewHolder(inflate(parent, ImagePostViewBinding::inflate)) { private companion object : ViewBindingHolder @@ -72,7 +69,7 @@ class ImagePostViewHolder( super.bind(post) (post.content as? ImageContent)?.let { - binding.ivContent.loadMatrixThumbnail(it.url, urlResolver) + binding.ivContent.loadEncryptedImage(it) } } } \ No newline at end of file diff --git a/app/src/main/java/com/futo/circles/ui/log_in/data_source/LoginDataSource.kt b/app/src/main/java/com/futo/circles/ui/log_in/data_source/LoginDataSource.kt index 2e809484ac6a17cab4b3c8bb803d1e88498ea703..45bb6609b7f882a949a574b44c2e9a5e0e84ce4d 100644 --- a/app/src/main/java/com/futo/circles/ui/log_in/data_source/LoginDataSource.kt +++ b/app/src/main/java/com/futo/circles/ui/log_in/data_source/LoginDataSource.kt @@ -1,23 +1,20 @@ package com.futo.circles.ui.log_in.data_source import android.content.Context +import android.net.Uri +import com.futo.circles.BuildConfig import com.futo.circles.R import com.futo.circles.extensions.createResult -import com.futo.circles.provider.MatrixHomeServerProvider import com.futo.circles.provider.MatrixSessionProvider import org.matrix.android.sdk.api.Matrix +import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig -class LoginDataSource( - private val context: Context, - private val matrixSessionProvider: MatrixSessionProvider -) { +class LoginDataSource(private val context: Context) { suspend fun logIn(name: String, password: String, secondPassword: String?) = createResult { - val homeServerConnectionConfig = MatrixHomeServerProvider().createHomeServerConfig() - Matrix.getInstance(context).authenticationService().directAuthentication( - homeServerConnectionConfig = homeServerConnectionConfig, + homeServerConnectionConfig = createHomeServerConfig(), matrixId = name, password = password, deviceId = secondPassword, @@ -25,6 +22,12 @@ class LoginDataSource( R.string.initial_device_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