Update code so it compiles

This commit is contained in:
ganfra 2023-03-20 13:07:50 +01:00
parent 417a418a38
commit b73ff7aa45
9 changed files with 41 additions and 55 deletions

View file

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

View file

@ -33,9 +33,9 @@ import kotlinx.coroutines.withContext
import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.Client
import org.matrix.rustcomponents.sdk.ClientDelegate import org.matrix.rustcomponents.sdk.ClientDelegate
import org.matrix.rustcomponents.sdk.RequiredState import org.matrix.rustcomponents.sdk.RequiredState
import org.matrix.rustcomponents.sdk.SlidingSyncListBuilder
import org.matrix.rustcomponents.sdk.SlidingSyncMode import org.matrix.rustcomponents.sdk.SlidingSyncMode
import org.matrix.rustcomponents.sdk.SlidingSyncRequestListFilters import org.matrix.rustcomponents.sdk.SlidingSyncRequestListFilters
import org.matrix.rustcomponents.sdk.SlidingSyncViewBuilder
import org.matrix.rustcomponents.sdk.TaskHandle import org.matrix.rustcomponents.sdk.TaskHandle
import org.matrix.rustcomponents.sdk.mediaSourceFromUrl import org.matrix.rustcomponents.sdk.mediaSourceFromUrl
import org.matrix.rustcomponents.sdk.use import org.matrix.rustcomponents.sdk.use
@ -55,15 +55,8 @@ class RustMatrixClient constructor(
private val clientDelegate = object : ClientDelegate { private val clientDelegate = object : ClientDelegate {
override fun didReceiveAuthError(isSoftLogout: Boolean) { override fun didReceiveAuthError(isSoftLogout: Boolean) {
Timber.v("didReceiveAuthError()") //TODO handle this
} Timber.v("didReceiveAuthError(isSoftLogout=$isSoftLogout)")
override fun didReceiveSyncUpdate() {
Timber.v("didReceiveSyncUpdate()")
}
override fun didUpdateRestoreToken() {
Timber.v("didUpdateRestoreToken()")
} }
} }
@ -82,7 +75,7 @@ class RustMatrixClient constructor(
) )
} }
private val visibleRoomsView = SlidingSyncViewBuilder() private val visibleRoomsSlidingSyncList = SlidingSyncListBuilder()
.timelineLimit(limit = 1u) .timelineLimit(limit = 1u)
.requiredState( .requiredState(
requiredState = listOf( requiredState = listOf(
@ -104,7 +97,7 @@ class RustMatrixClient constructor(
.homeserver("https://slidingsync.lab.matrix.org") .homeserver("https://slidingsync.lab.matrix.org")
.withCommonExtensions() .withCommonExtensions()
.coldCache("ElementX") .coldCache("ElementX")
.addView(visibleRoomsView) .addList(visibleRoomsSlidingSyncList)
.use { .use {
it.build() it.build()
} }
@ -114,7 +107,7 @@ class RustMatrixClient constructor(
RustRoomSummaryDataSource( RustRoomSummaryDataSource(
slidingSyncObserverProxy.updateSummaryFlow, slidingSyncObserverProxy.updateSummaryFlow,
slidingSync, slidingSync,
visibleRoomsView, visibleRoomsSlidingSyncList,
dispatchers, dispatchers,
::onRestartSync ::onRestartSync
) )
@ -153,7 +146,6 @@ class RustMatrixClient constructor(
override fun mediaResolver(): MediaResolver = mediaResolver override fun mediaResolver(): MediaResolver = mediaResolver
override fun startSync() { override fun startSync() {
if (client.isSoftLogout()) return
if (isSyncing.compareAndSet(false, true)) { if (isSyncing.compareAndSet(false, true)) {
slidingSyncObserverToken = slidingSync.sync() slidingSyncObserverToken = slidingSync.sync()
} }
@ -170,7 +162,7 @@ class RustMatrixClient constructor(
slidingSync.setObserver(null) slidingSync.setObserver(null)
rustRoomSummaryDataSource.close() rustRoomSummaryDataSource.close()
client.setDelegate(null) client.setDelegate(null)
visibleRoomsView.destroy() visibleRoomsSlidingSyncList.destroy()
slidingSync.destroy() slidingSync.destroy()
} }
@ -192,7 +184,7 @@ class RustMatrixClient constructor(
} }
} }
override suspend fun loadUserAvatarURLString(): Result<String> = withContext(dispatchers.io) { override suspend fun loadUserAvatarURLString(): Result<String?> = withContext(dispatchers.io) {
runCatching { runCatching {
client.avatarUrl() client.avatarUrl()
} }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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