From db369aec75d9714154e19bce269dc8feaf11230c Mon Sep 17 00:00:00 2001 From: Konrad Pozniak Date: Wed, 10 Jul 2019 06:52:13 +0200 Subject: [PATCH] fix timeline reloading and favs/boosts/polls showing up at wrong pos (#1374) --- .../main/java/com/keylesspalace/tusky/db/TimelineDao.kt | 6 +++--- .../keylesspalace/tusky/fragment/TimelineFragment.java | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/keylesspalace/tusky/db/TimelineDao.kt b/app/src/main/java/com/keylesspalace/tusky/db/TimelineDao.kt index a35a1bd1..51755dd9 100644 --- a/app/src/main/java/com/keylesspalace/tusky/db/TimelineDao.kt +++ b/app/src/main/java/com/keylesspalace/tusky/db/TimelineDao.kt @@ -74,12 +74,12 @@ AND abstract fun removeAllPlaceholdersBetween(account: Long, maxId: String, sinceId: String) @Query("""UPDATE TimelineStatusEntity SET favourited = :favourited -WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId - :statusId)""") +WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""") abstract fun setFavourited(accountId: Long, statusId: String, favourited: Boolean) @Query("""UPDATE TimelineStatusEntity SET reblogged = :reblogged -WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId - :statusId)""") +WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""") abstract fun setReblogged(accountId: Long, statusId: String, reblogged: Boolean) @Query("""DELETE FROM TimelineStatusEntity WHERE timelineUserId = :accountId AND @@ -101,6 +101,6 @@ AND authorServerId != :accountServerId AND createdAt < :olderThan""") abstract fun cleanup(accountId: Long, accountServerId: String, olderThan: Long) @Query("""UPDATE TimelineStatusEntity SET poll = :poll -WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId - :statusId)""") +WHERE timelineUserId = :accountId AND (serverId = :statusId OR reblogServerId = :statusId)""") abstract fun setVoted(accountId: Long, statusId: String, poll: String) } \ No newline at end of file diff --git a/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java b/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java index 37bf1902..8a63d79d 100644 --- a/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java +++ b/app/src/main/java/com/keylesspalace/tusky/fragment/TimelineFragment.java @@ -301,20 +301,21 @@ public class TimelineFragment extends SFragment implements if (!statuses.isEmpty()) { filterStatuses(statuses); - if (!this.statuses.isEmpty() && topId != null) { // clear old cached statuses - Iterator> iterator = statuses.iterator(); + Iterator> iterator = this.statuses.iterator(); while (iterator.hasNext()) { Either item = iterator.next(); if(item.isRight()) { Status status = item.asRight(); - if (status.getId().length() < topId.length() || status.getId().compareTo(topId) <= 0) { + if (status.getId().length() < topId.length() || status.getId().compareTo(topId) < 0) { + iterator.remove(); } } else { Placeholder placeholder = item.asLeft(); - if (placeholder.getId().length() < topId.length() || placeholder.getId().compareTo(topId) <= 0) { + if (placeholder.getId().length() < topId.length() || placeholder.getId().compareTo(topId) < 0) { + iterator.remove(); } }