From b73ff7aa45ec77a09af044ea2b977a1bd72bad16 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 20 Mar 2023 13:07:50 +0100 Subject: [PATCH] Update code so it compiles --- .../libraries/matrix/api/MatrixClient.kt | 2 +- .../libraries/matrix/impl/RustMatrixClient.kt | 24 +++++-------- .../auth/RustMatrixAuthenticationService.kt | 2 -- .../impl/room/RustRoomSummaryDataSource.kt | 36 +++++++++---------- ...ncViewFlows.kt => SlidingSyncListFlows.kt} | 24 ++++++------- .../libraries/matrix/test/FakeMatrixClient.kt | 2 +- .../sessionstorage/api/SessionData.kt | 1 - .../sessionstorage/impl/SessionDataMapper.kt | 2 -- .../libraries/matrix/session/SessionData.sq | 3 +- 9 files changed, 41 insertions(+), 55 deletions(-) rename libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/{SlidingSyncViewFlows.kt => SlidingSyncListFlows.kt} (65%) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt index a0f6a472e8..dfe701c177 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/MatrixClient.kt @@ -31,7 +31,7 @@ interface MatrixClient { fun mediaResolver(): MediaResolver suspend fun logout() suspend fun loadUserDisplayName(): Result - suspend fun loadUserAvatarURLString(): Result + suspend fun loadUserAvatarURLString(): Result suspend fun loadMediaContent(url: String): Result suspend fun loadMediaThumbnail( url: String, diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt index 5cda9a9f8d..4e2b4b39ce 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/RustMatrixClient.kt @@ -33,9 +33,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 @@ -55,15 +55,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)") } } @@ -82,7 +75,7 @@ class RustMatrixClient constructor( ) } - private val visibleRoomsView = SlidingSyncViewBuilder() + private val visibleRoomsSlidingSyncList = SlidingSyncListBuilder() .timelineLimit(limit = 1u) .requiredState( requiredState = listOf( @@ -104,7 +97,7 @@ class RustMatrixClient constructor( .homeserver("https://slidingsync.lab.matrix.org") .withCommonExtensions() .coldCache("ElementX") - .addView(visibleRoomsView) + .addList(visibleRoomsSlidingSyncList) .use { it.build() } @@ -114,7 +107,7 @@ class RustMatrixClient constructor( RustRoomSummaryDataSource( slidingSyncObserverProxy.updateSummaryFlow, slidingSync, - visibleRoomsView, + visibleRoomsSlidingSyncList, dispatchers, ::onRestartSync ) @@ -153,7 +146,6 @@ class RustMatrixClient constructor( override fun mediaResolver(): MediaResolver = mediaResolver override fun startSync() { - if (client.isSoftLogout()) return if (isSyncing.compareAndSet(false, true)) { slidingSyncObserverToken = slidingSync.sync() } @@ -170,7 +162,7 @@ class RustMatrixClient constructor( slidingSync.setObserver(null) rustRoomSummaryDataSource.close() client.setDelegate(null) - visibleRoomsView.destroy() + visibleRoomsSlidingSyncList.destroy() slidingSync.destroy() } @@ -192,7 +184,7 @@ class RustMatrixClient constructor( } } - override suspend fun loadUserAvatarURLString(): Result = withContext(dispatchers.io) { + override suspend fun loadUserAvatarURLString(): Result = withContext(dispatchers.io) { runCatching { client.avatarUrl() } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt index b57af30bf3..13ebf1c0e8 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/auth/RustMatrixAuthenticationService.kt @@ -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( accessToken = accessToken, refreshToken = refreshToken, homeserverUrl = homeserverUrl, - isSoftLogout = isSoftLogout, slidingSyncProxy = slidingSyncProxy, ) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomSummaryDataSource.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomSummaryDataSource.kt index 8691c06664..67e00ea6ae 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomSummaryDataSource.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/room/RustRoomSummaryDataSource.kt @@ -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 internal class RustRoomSummaryDataSource( private val slidingSyncUpdateFlow: Flow, 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( coroutineScope.launch { updateRoomSummaries { addAll( - slidingSyncView.currentRoomsList().map(::buildSummaryForRoomListEntry) + slidingSyncList.currentRoomsList().map(::buildSummaryForRoomListEntry) ) } } @@ -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( } .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( 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( } } - private fun MutableList.applyDiff(diff: SlidingSyncViewRoomsListDiff) { + private fun MutableList.applyDiff(diff: SlidingSyncListRoomsListDiff) { fun MutableList.fillUntil(untilIndex: Int) { repeat((size - 1 until untilIndex).count()) { add(buildEmptyRoomSummary()) @@ -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() } } diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncViewFlows.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncListFlows.kt similarity index 65% rename from libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncViewFlows.kt rename to libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncListFlows.kt index 8665705095..2aa0c59330 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/sync/SlidingSyncViewFlows.kt +++ b/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 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 = +fun SlidingSyncList.roomListDiff(scope: CoroutineScope): Flow = 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 = mxCallbackFlow { - val observer = object : SlidingSyncViewStateObserver { +fun SlidingSyncList.state(scope: CoroutineScope): Flow = mxCallbackFlow { + val observer = object : SlidingSyncListStateObserver { override fun didReceiveUpdate(newState: SlidingSyncState) { scope.launch { send(newState) @@ -50,8 +50,8 @@ fun SlidingSyncView.state(scope: CoroutineScope): Flow = mxCal observeState(observer) } -fun SlidingSyncView.roomsCount(scope: CoroutineScope): Flow = mxCallbackFlow { - val observer = object : SlidingSyncViewRoomsCountObserver { +fun SlidingSyncList.roomsCount(scope: CoroutineScope): Flow = mxCallbackFlow { + val observer = object : SlidingSyncListRoomsCountObserver { override fun didReceiveUpdate(count: UInt) { scope.launch { send(count) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt index eb1010df87..43d8ada149 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/FakeMatrixClient.kt @@ -61,7 +61,7 @@ class FakeMatrixClient( return userDisplayName } - override suspend fun loadUserAvatarURLString(): Result { + override suspend fun loadUserAvatarURLString(): Result { return userAvatarURLString } diff --git a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionData.kt b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionData.kt index 3f79701fd8..f2eb5847f7 100644 --- a/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionData.kt +++ b/libraries/session-storage/api/src/main/kotlin/io/element/android/libraries/sessionstorage/api/SessionData.kt @@ -22,6 +22,5 @@ data class SessionData( val accessToken: String, val refreshToken: String?, val homeserverUrl: String, - val isSoftLogout: Boolean, val slidingSyncProxy: String? ) diff --git a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/SessionDataMapper.kt b/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/SessionDataMapper.kt index 627f896381..fd8a42ad6f 100644 --- a/libraries/session-storage/impl/src/main/kotlin/io/element/android/libraries/sessionstorage/impl/SessionDataMapper.kt +++ b/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 accessToken = accessToken, refreshToken = refreshToken, homeserverUrl = homeserverUrl, - isSoftLogout = isSoftLogout, slidingSyncProxy = slidingSyncProxy, ) } @@ -37,7 +36,6 @@ internal fun io.element.android.libraries.matrix.session.SessionData.toApiModel( accessToken = accessToken, refreshToken = refreshToken, homeserverUrl = homeserverUrl, - isSoftLogout = isSoftLogout, slidingSyncProxy = slidingSyncProxy, ) } diff --git a/libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq b/libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq index c0731361e2..d8fb15338c 100644 --- a/libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq +++ b/libraries/session-storage/impl/src/main/sqldelight/io/element/android/libraries/matrix/session/SessionData.sq @@ -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: 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 = ?;