Nav: First iteration integrating Appyx

This commit is contained in:
ganfra 2022-12-21 17:56:01 +01:00
parent 4c88d8e3c2
commit 2de26a30d5
28 changed files with 566 additions and 280 deletions

View file

@ -6,9 +6,11 @@ import io.element.android.x.core.coroutine.CoroutineDispatchers
import io.element.android.x.di.AppScope
import io.element.android.x.di.ApplicationContext
import io.element.android.x.di.SingleIn
import io.element.android.x.matrix.core.SessionId
import io.element.android.x.matrix.media.MediaFetcher
import io.element.android.x.matrix.media.MediaKeyer
import io.element.android.x.matrix.session.SessionStore
import io.element.android.x.matrix.session.sessionId
import io.element.android.x.matrix.util.logError
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@ -80,7 +82,7 @@ class Matrix @Inject constructor(
}
}
suspend fun login(username: String, password: String): MatrixClient =
suspend fun login(username: String, password: String): SessionId =
withContext(coroutineDispatchers.io) {
val client = try {
authService.login(username, password, "ElementX Android", null)
@ -88,8 +90,9 @@ class Matrix @Inject constructor(
Timber.e(failure, "Fail login")
throw failure
}
sessionStore.storeData(client.session())
createMatrixClient(client)
val session = client.session()
sessionStore.storeData(session)
session.sessionId()
}
private fun createMatrixClient(client: Client): MatrixClient {

View file

@ -1,7 +1,7 @@
package io.element.android.x.matrix
import io.element.android.x.core.coroutine.CoroutineDispatchers
import io.element.android.x.di.SingleIn
import io.element.android.x.matrix.core.SessionId
import io.element.android.x.matrix.core.UserId
import io.element.android.x.matrix.media.MediaResolver
import io.element.android.x.matrix.media.RustMediaResolver
@ -9,10 +9,8 @@ import io.element.android.x.matrix.room.MatrixRoom
import io.element.android.x.matrix.room.RoomSummaryDataSource
import io.element.android.x.matrix.room.RustRoomSummaryDataSource
import io.element.android.x.matrix.session.SessionStore
import io.element.android.x.matrix.session.sessionId
import io.element.android.x.matrix.sync.SlidingSyncObserverProxy
import java.io.Closeable
import java.io.File
import java.util.concurrent.atomic.AtomicBoolean
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.withContext
import org.matrix.rustcomponents.sdk.Client
@ -23,6 +21,9 @@ import org.matrix.rustcomponents.sdk.SlidingSyncMode
import org.matrix.rustcomponents.sdk.SlidingSyncViewBuilder
import org.matrix.rustcomponents.sdk.StoppableSpawn
import timber.log.Timber
import java.io.Closeable
import java.io.File
import java.util.concurrent.atomic.AtomicBoolean
class MatrixClient internal constructor(
private val client: Client,
@ -32,8 +33,7 @@ class MatrixClient internal constructor(
private val baseDirectory: File,
) : Closeable {
val sessionId: String
get() = "${client.session().userId}_${client.session().deviceId}"
val sessionId: SessionId = client.session().sessionId()
private val clientDelegate = object : ClientDelegate {
override fun didReceiveAuthError(isSoftLogout: Boolean) {

View file

@ -0,0 +1,6 @@
package io.element.android.x.matrix.core
import java.io.Serializable
@JvmInline
value class SessionId(val value: String) : Serializable

View file

@ -0,0 +1,6 @@
package io.element.android.x.matrix.session
import io.element.android.x.matrix.core.SessionId
import org.matrix.rustcomponents.sdk.Session
fun Session.sessionId() = SessionId("${userId}_${deviceId}")