From 5986bd80b25b31dca9d7decccb37736cb0469c58 Mon Sep 17 00:00:00 2001 From: kyori19 Date: Mon, 7 Mar 2022 14:26:32 +0900 Subject: [PATCH] Fix inserted placeholder on streaming causes corruption --- .../timeline/viewmodel/CachedTimelineViewModel.kt | 5 +++-- .../timeline/viewmodel/NetworkTimelineViewModel.kt | 8 ++------ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt index f62aae8a1..b699602d4 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/CachedTimelineViewModel.kt @@ -221,7 +221,7 @@ class CachedTimelineViewModel @Inject constructor( db.withTransaction { if (isFirstOfStreaming) { - val placeholderId = (timelineDao.getTopId(activeAccount.id) ?: "0").inc() + val placeholderId = status.id.dec() timelineDao.insertStatus(Placeholder(placeholderId, loading = false).toEntity(activeAccount.id)) isFirstOfStreaming = false } @@ -231,7 +231,8 @@ class CachedTimelineViewModel @Inject constructor( timelineDao.insertAccount(rebloggedAccount) } timelineDao.insertStatus( - status.toEntity(activeAccount.id, + status.toEntity( + activeAccount.id, gson, expanded = activeAccount.alwaysOpenSpoiler, contentShowing = activeAccount.alwaysShowSensitiveMedia || !status.actionableStatus.sensitive, diff --git a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt index 79053a02b..642ab333f 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/timeline/viewmodel/NetworkTimelineViewModel.kt @@ -28,14 +28,13 @@ import com.keylesspalace.tusky.appstore.EventHub import com.keylesspalace.tusky.appstore.FavoriteEvent import com.keylesspalace.tusky.appstore.PinEvent import com.keylesspalace.tusky.appstore.ReblogEvent -import com.keylesspalace.tusky.components.timeline.Placeholder -import com.keylesspalace.tusky.components.timeline.toEntity import com.keylesspalace.tusky.db.AccountManager import com.keylesspalace.tusky.entity.Poll import com.keylesspalace.tusky.entity.Status import com.keylesspalace.tusky.network.FilterModel import com.keylesspalace.tusky.network.MastodonApi import com.keylesspalace.tusky.network.TimelineCases +import com.keylesspalace.tusky.util.dec import com.keylesspalace.tusky.util.getDomain import com.keylesspalace.tusky.util.inc import com.keylesspalace.tusky.util.toViewData @@ -218,10 +217,7 @@ class NetworkTimelineViewModel @Inject constructor( val activeAccount = accountManager.activeAccount!! if (isFirstOfStreaming) { - val placeholderId = when (val top = statusData.first()) { - is StatusViewData.Concrete -> top.id - is StatusViewData.Placeholder -> top.id - } + val placeholderId = status.id.dec() statusData.add(0, StatusViewData.Placeholder(placeholderId, isLoading = false)) isFirstOfStreaming = false }