Browse Source

Merge pull request #215 from vector-im/renovate/org.matrix.rustcomponents

Update dependency org.matrix.rustcomponents:sdk-android to v0.1.3
test/jme/compound-poc
ganfra 2 years ago committed by GitHub
parent
commit
73b79cadd0
  1. 2
      gradle/libs.versions.toml
  2. 2
      libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt
  3. 24
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt
  4. 2
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt
  5. 36
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomSummaryDataSource.kt
  6. 24
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncListFlows.kt
  7. 2
      libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt
  8. 1
      libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionData.kt
  9. 2
      libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/SessionDataMapper.kt
  10. 3
      libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq
  11. 1
      libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTests.kt

2
gradle/libs.versions.toml

@ -124,7 +124,7 @@ jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" } @@ -124,7 +124,7 @@ jsoup = { module = "org.jsoup:jsoup", version.ref = "jsoup" }
appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" }
molecule-runtime = { module = "app.cash.molecule:molecule-runtime", version.ref = "molecule" }
timber = "com.jakewharton.timber:timber:5.0.1"
matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.2"
matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.3"
sqldelight-driver-android = { module = "com.squareup.sqldelight:android-driver", version.ref = "sqldelight" }
sqldelight-driver-jvm = { module = "com.squareup.sqldelight:sqlite-driver", version.ref = "sqldelight" }
sqldelight-coroutines = { module = "com.squareup.sqldelight:coroutines-extensions", version.ref = "sqldelight" }

2
libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt

@ -33,7 +33,7 @@ interface MatrixClient { @@ -33,7 +33,7 @@ interface MatrixClient {
fun sessionVerificationService(): SessionVerificationService
suspend fun logout()
suspend fun loadUserDisplayName(): Result<String>
suspend fun loadUserAvatarURLString(): Result<String>
suspend fun loadUserAvatarURLString(): Result<String?>
suspend fun loadMediaContent(url: String): Result<ByteArray>
suspend fun loadMediaThumbnail(
url: String,

24
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt

@ -38,9 +38,9 @@ import kotlinx.coroutines.withContext @@ -38,9 +38,9 @@ import kotlinx.coroutines.withContext
import org.matrix.rustcomponents.sdk.Client
import org.matrix.rustcomponents.sdk.ClientDelegate
import org.matrix.rustcomponents.sdk.RequiredState
import org.matrix.rustcomponents.sdk.SlidingSyncListBuilder
import org.matrix.rustcomponents.sdk.SlidingSyncMode
import org.matrix.rustcomponents.sdk.SlidingSyncRequestListFilters
import org.matrix.rustcomponents.sdk.SlidingSyncViewBuilder
import org.matrix.rustcomponents.sdk.TaskHandle
import org.matrix.rustcomponents.sdk.mediaSourceFromUrl
import org.matrix.rustcomponents.sdk.use
@ -63,15 +63,8 @@ class RustMatrixClient constructor( @@ -63,15 +63,8 @@ class RustMatrixClient constructor(
private val clientDelegate = object : ClientDelegate {
override fun didReceiveAuthError(isSoftLogout: Boolean) {
Timber.v("didReceiveAuthError()")
}
override fun didReceiveSyncUpdate() {
Timber.v("didReceiveSyncUpdate()")
}
override fun didUpdateRestoreToken() {
Timber.v("didUpdateRestoreToken()")
//TODO handle this
Timber.v("didReceiveAuthError(isSoftLogout=$isSoftLogout)")
}
}
@ -90,7 +83,7 @@ class RustMatrixClient constructor( @@ -90,7 +83,7 @@ class RustMatrixClient constructor(
)
}
private val visibleRoomsView = SlidingSyncViewBuilder()
private val visibleRoomsSlidingSyncList = SlidingSyncListBuilder()
.timelineLimit(limit = 1u)
.requiredState(
requiredState = listOf(
@ -112,7 +105,7 @@ class RustMatrixClient constructor( @@ -112,7 +105,7 @@ class RustMatrixClient constructor(
.homeserver("https://slidingsync.lab.matrix.org")
.withCommonExtensions()
.coldCache("ElementX")
.addView(visibleRoomsView)
.addList(visibleRoomsSlidingSyncList)
.use {
it.build()
}
@ -122,7 +115,7 @@ class RustMatrixClient constructor( @@ -122,7 +115,7 @@ class RustMatrixClient constructor(
RustRoomSummaryDataSource(
slidingSyncObserverProxy.updateSummaryFlow,
slidingSync,
visibleRoomsView,
visibleRoomsSlidingSyncList,
dispatchers,
::onRestartSync
)
@ -166,7 +159,6 @@ class RustMatrixClient constructor( @@ -166,7 +159,6 @@ class RustMatrixClient constructor(
override fun sessionVerificationService(): SessionVerificationService = verificationService
override fun startSync() {
if (client.isSoftLogout()) return
if (isSyncing.compareAndSet(false, true)) {
slidingSyncObserverToken = slidingSync.sync()
}
@ -184,7 +176,7 @@ class RustMatrixClient constructor( @@ -184,7 +176,7 @@ class RustMatrixClient constructor(
slidingSync.setObserver(null)
rustRoomSummaryDataSource.close()
client.setDelegate(null)
visibleRoomsView.destroy()
visibleRoomsSlidingSyncList.destroy()
slidingSync.destroy()
verificationService.destroy()
}
@ -207,7 +199,7 @@ class RustMatrixClient constructor( @@ -207,7 +199,7 @@ class RustMatrixClient constructor(
}
}
override suspend fun loadUserAvatarURLString(): Result<String> = withContext(dispatchers.io) {
override suspend fun loadUserAvatarURLString(): Result<String?> = withContext(dispatchers.io) {
runCatching {
client.avatarUrl()
}

2
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt

@ -125,7 +125,6 @@ private fun SessionData.toSession() = Session( @@ -125,7 +125,6 @@ private fun SessionData.toSession() = Session(
userId = userId,
deviceId = deviceId,
homeserverUrl = homeserverUrl,
isSoftLogout = isSoftLogout,
slidingSyncProxy = slidingSyncProxy,
)
@ -135,6 +134,5 @@ private fun Session.toSessionData() = SessionData( @@ -135,6 +134,5 @@ private fun Session.toSessionData() = SessionData(
accessToken = accessToken,
refreshToken = refreshToken,
homeserverUrl = homeserverUrl,
isSoftLogout = isSoftLogout,
slidingSyncProxy = slidingSyncProxy,
)

36
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomSummaryDataSource.kt

@ -33,9 +33,9 @@ import kotlinx.coroutines.launch @@ -33,9 +33,9 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.matrix.rustcomponents.sdk.RoomListEntry
import org.matrix.rustcomponents.sdk.SlidingSync
import org.matrix.rustcomponents.sdk.SlidingSyncList
import org.matrix.rustcomponents.sdk.SlidingSyncListRoomsListDiff
import org.matrix.rustcomponents.sdk.SlidingSyncState
import org.matrix.rustcomponents.sdk.SlidingSyncView
import org.matrix.rustcomponents.sdk.SlidingSyncViewRoomsListDiff
import org.matrix.rustcomponents.sdk.UpdateSummary
import timber.log.Timber
import java.io.Closeable
@ -44,7 +44,7 @@ import java.util.UUID @@ -44,7 +44,7 @@ import java.util.UUID
internal class RustRoomSummaryDataSource(
private val slidingSyncUpdateFlow: Flow<UpdateSummary>,
private val slidingSync: SlidingSync,
private val slidingSyncView: SlidingSyncView,
private val slidingSyncList: SlidingSyncList,
private val coroutineDispatchers: CoroutineDispatchers,
private val onRestartSync: () -> Unit,
private val roomSummaryDetailsFactory: RoomSummaryDetailsFactory = RoomSummaryDetailsFactory(),
@ -59,7 +59,7 @@ internal class RustRoomSummaryDataSource( @@ -59,7 +59,7 @@ internal class RustRoomSummaryDataSource(
coroutineScope.launch {
updateRoomSummaries {
addAll(
slidingSyncView.currentRoomsList().map(::buildSummaryForRoomListEntry)
slidingSyncList.currentRoomsList().map(::buildSummaryForRoomListEntry)
)
}
}
@ -69,7 +69,7 @@ internal class RustRoomSummaryDataSource( @@ -69,7 +69,7 @@ internal class RustRoomSummaryDataSource(
didReceiveSyncUpdate(it)
}.launchIn(coroutineScope)
slidingSyncView.roomListDiff(coroutineScope)
slidingSyncList.roomListDiff(coroutineScope)
.onEach { diffs ->
updateRoomSummaries {
applyDiff(diffs)
@ -77,7 +77,7 @@ internal class RustRoomSummaryDataSource( @@ -77,7 +77,7 @@ internal class RustRoomSummaryDataSource(
}
.launchIn(coroutineScope)
slidingSyncView.state(coroutineScope)
slidingSyncList.state(coroutineScope)
.onEach { slidingSyncState ->
Timber.v("New sliding sync state: $slidingSyncState")
state.value = slidingSyncState
@ -95,7 +95,7 @@ internal class RustRoomSummaryDataSource( @@ -95,7 +95,7 @@ internal class RustRoomSummaryDataSource(
override fun setSlidingSyncRange(range: IntRange) {
Timber.v("setVisibleRange=$range")
slidingSyncView.setRange(range.first.toUInt(), range.last.toUInt())
slidingSyncList.setRange(range.first.toUInt(), range.last.toUInt())
onRestartSync()
}
@ -116,7 +116,7 @@ internal class RustRoomSummaryDataSource( @@ -116,7 +116,7 @@ internal class RustRoomSummaryDataSource(
}
}
private fun MutableList<RoomSummary>.applyDiff(diff: SlidingSyncViewRoomsListDiff) {
private fun MutableList<RoomSummary>.applyDiff(diff: SlidingSyncListRoomsListDiff) {
fun MutableList<RoomSummary>.fillUntil(untilIndex: Int) {
repeat((size - 1 until untilIndex).count()) {
add(buildEmptyRoomSummary())
@ -124,43 +124,43 @@ internal class RustRoomSummaryDataSource( @@ -124,43 +124,43 @@ internal class RustRoomSummaryDataSource(
}
Timber.v("ApplyDiff: $diff for list with size: $size")
when (diff) {
is SlidingSyncViewRoomsListDiff.Append -> {
is SlidingSyncListRoomsListDiff.Append -> {
val roomSummaries = diff.values.map {
buildSummaryForRoomListEntry(it)
}
addAll(roomSummaries)
}
is SlidingSyncViewRoomsListDiff.PushBack -> {
is SlidingSyncListRoomsListDiff.PushBack -> {
val roomSummary = buildSummaryForRoomListEntry(diff.value)
add(roomSummary)
}
is SlidingSyncViewRoomsListDiff.PushFront -> {
is SlidingSyncListRoomsListDiff.PushFront -> {
val roomSummary = buildSummaryForRoomListEntry(diff.value)
add(0, roomSummary)
}
is SlidingSyncViewRoomsListDiff.Set -> {
is SlidingSyncListRoomsListDiff.Set -> {
fillUntil(diff.index.toInt())
val roomSummary = buildSummaryForRoomListEntry(diff.value)
set(diff.index.toInt(), roomSummary)
}
is SlidingSyncViewRoomsListDiff.Insert -> {
is SlidingSyncListRoomsListDiff.Insert -> {
val roomSummary = buildSummaryForRoomListEntry(diff.value)
add(diff.index.toInt(), roomSummary)
}
is SlidingSyncViewRoomsListDiff.Remove -> {
is SlidingSyncListRoomsListDiff.Remove -> {
removeAt(diff.index.toInt())
}
is SlidingSyncViewRoomsListDiff.Reset -> {
is SlidingSyncListRoomsListDiff.Reset -> {
clear()
addAll(diff.values.map { buildSummaryForRoomListEntry(it) })
}
SlidingSyncViewRoomsListDiff.PopBack -> {
SlidingSyncListRoomsListDiff.PopBack -> {
removeFirstOrNull()
}
SlidingSyncViewRoomsListDiff.PopFront -> {
SlidingSyncListRoomsListDiff.PopFront -> {
removeLastOrNull()
}
SlidingSyncViewRoomsListDiff.Clear -> {
SlidingSyncListRoomsListDiff.Clear -> {
clear()
}
}

24
libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncViewFlows.kt → libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncListFlows.kt

@ -20,17 +20,17 @@ import io.element.android.libraries.matrix.impl.util.mxCallbackFlow @@ -20,17 +20,17 @@ import io.element.android.libraries.matrix.impl.util.mxCallbackFlow
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.launch
import org.matrix.rustcomponents.sdk.SlidingSyncList
import org.matrix.rustcomponents.sdk.SlidingSyncListRoomListObserver
import org.matrix.rustcomponents.sdk.SlidingSyncListRoomsCountObserver
import org.matrix.rustcomponents.sdk.SlidingSyncListRoomsListDiff
import org.matrix.rustcomponents.sdk.SlidingSyncListStateObserver
import org.matrix.rustcomponents.sdk.SlidingSyncState
import org.matrix.rustcomponents.sdk.SlidingSyncView
import org.matrix.rustcomponents.sdk.SlidingSyncViewRoomListObserver
import org.matrix.rustcomponents.sdk.SlidingSyncViewRoomsCountObserver
import org.matrix.rustcomponents.sdk.SlidingSyncViewRoomsListDiff
import org.matrix.rustcomponents.sdk.SlidingSyncViewStateObserver
fun SlidingSyncView.roomListDiff(scope: CoroutineScope): Flow<SlidingSyncViewRoomsListDiff> =
fun SlidingSyncList.roomListDiff(scope: CoroutineScope): Flow<SlidingSyncListRoomsListDiff> =
mxCallbackFlow {
val observer = object : SlidingSyncViewRoomListObserver {
override fun didReceiveUpdate(diff: SlidingSyncViewRoomsListDiff) {
val observer = object : SlidingSyncListRoomListObserver {
override fun didReceiveUpdate(diff: SlidingSyncListRoomsListDiff) {
scope.launch {
send(diff)
}
@ -39,8 +39,8 @@ fun SlidingSyncView.roomListDiff(scope: CoroutineScope): Flow<SlidingSyncViewRoo @@ -39,8 +39,8 @@ fun SlidingSyncView.roomListDiff(scope: CoroutineScope): Flow<SlidingSyncViewRoo
observeRoomList(observer)
}
fun SlidingSyncView.state(scope: CoroutineScope): Flow<SlidingSyncState> = mxCallbackFlow {
val observer = object : SlidingSyncViewStateObserver {
fun SlidingSyncList.state(scope: CoroutineScope): Flow<SlidingSyncState> = mxCallbackFlow {
val observer = object : SlidingSyncListStateObserver {
override fun didReceiveUpdate(newState: SlidingSyncState) {
scope.launch {
send(newState)
@ -50,8 +50,8 @@ fun SlidingSyncView.state(scope: CoroutineScope): Flow<SlidingSyncState> = mxCal @@ -50,8 +50,8 @@ fun SlidingSyncView.state(scope: CoroutineScope): Flow<SlidingSyncState> = mxCal
observeState(observer)
}
fun SlidingSyncView.roomsCount(scope: CoroutineScope): Flow<UInt> = mxCallbackFlow {
val observer = object : SlidingSyncViewRoomsCountObserver {
fun SlidingSyncList.roomsCount(scope: CoroutineScope): Flow<UInt> = mxCallbackFlow {
val observer = object : SlidingSyncListRoomsCountObserver {
override fun didReceiveUpdate(count: UInt) {
scope.launch {
send(count)

2
libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt

@ -64,7 +64,7 @@ class FakeMatrixClient( @@ -64,7 +64,7 @@ class FakeMatrixClient(
return userDisplayName
}
override suspend fun loadUserAvatarURLString(): Result<String> {
override suspend fun loadUserAvatarURLString(): Result<String?> {
return userAvatarURLString
}

1
libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionData.kt

@ -22,6 +22,5 @@ data class SessionData( @@ -22,6 +22,5 @@ data class SessionData(
val accessToken: String,
val refreshToken: String?,
val homeserverUrl: String,
val isSoftLogout: Boolean,
val slidingSyncProxy: String?
)

2
libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/SessionDataMapper.kt

@ -25,7 +25,6 @@ internal fun SessionData.toDbModel(): io.element.android.libraries.matrix.sessio @@ -25,7 +25,6 @@ internal fun SessionData.toDbModel(): io.element.android.libraries.matrix.sessio
accessToken = accessToken,
refreshToken = refreshToken,
homeserverUrl = homeserverUrl,
isSoftLogout = isSoftLogout,
slidingSyncProxy = slidingSyncProxy,
)
}
@ -37,7 +36,6 @@ internal fun io.element.android.libraries.matrix.session.SessionData.toApiModel( @@ -37,7 +36,6 @@ internal fun io.element.android.libraries.matrix.session.SessionData.toApiModel(
accessToken = accessToken,
refreshToken = refreshToken,
homeserverUrl = homeserverUrl,
isSoftLogout = isSoftLogout,
slidingSyncProxy = slidingSyncProxy,
)
}

3
libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq

@ -4,7 +4,6 @@ CREATE TABLE SessionData ( @@ -4,7 +4,6 @@ CREATE TABLE SessionData (
accessToken TEXT NOT NULL,
refreshToken TEXT,
homeserverUrl TEXT NOT NULL,
isSoftLogout INTEGER AS Boolean NOT NULL DEFAULT 0,
slidingSyncProxy TEXT
);
@ -15,7 +14,7 @@ selectByUserId: @@ -15,7 +14,7 @@ selectByUserId:
SELECT * FROM SessionData WHERE userId = ?;
insertSessionData:
INSERT INTO SessionData(userId, deviceId, accessToken, refreshToken, homeserverUrl, isSoftLogout, slidingSyncProxy) VALUES ?;
INSERT INTO SessionData(userId, deviceId, accessToken, refreshToken, homeserverUrl, slidingSyncProxy) VALUES ?;
removeSession:
DELETE FROM SessionData WHERE userId = ?;

1
libraries/session-storage/impl/src/test/kotlin/io/element/android/libraries/sessionstorage/impl/DatabaseSessionStoreTests.kt

@ -37,7 +37,6 @@ class DatabaseSessionStoreTests { @@ -37,7 +37,6 @@ class DatabaseSessionStoreTests {
accessToken = "accessToken",
refreshToken = "refreshToken",
homeserverUrl = "homeserverUrl",
isSoftLogout = false,
slidingSyncProxy = null
)

Loading…
Cancel
Save