Skip to content

Commit aa5a191

Browse files
authored
Fix offline persisted drafts not cleared on logout (#6372)
1 parent 0885f94 commit aa5a191

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

stream-chat-android-offline/api/stream-chat-android-offline.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ public final class io/getstream/chat/android/offline/repository/domain/message/i
107107
public final class io/getstream/chat/android/offline/repository/domain/message/internal/MessageDao_Impl : io/getstream/chat/android/offline/repository/domain/message/internal/MessageDao {
108108
public fun <init> (Landroidx/room/RoomDatabase;)V
109109
public fun deleteAll (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
110+
public fun deleteAllDrafts (Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
110111
public fun deleteAttachments (Ljava/util/List;)V
111112
public fun deleteAttachmentsChunked (Ljava/util/List;)V
112113
public fun deleteChannelMessagesBefore (Ljava/lang/String;Ljava/util/Date;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;

stream-chat-android-offline/src/main/java/io/getstream/chat/android/offline/repository/domain/message/internal/DatabaseMessageRepository.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ internal class DatabaseMessageRepository(
258258
replyMessageCache.evictAll()
259259
dbMutex.withLock {
260260
messageDao.deleteAll()
261+
messageDao.deleteAllDrafts()
261262
replyMessageDao.deleteAll()
262263
}
263264
}

stream-chat-android-offline/src/main/java/io/getstream/chat/android/offline/repository/domain/message/internal/MessageDao.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,9 @@ internal interface MessageDao {
253253
@Query("DELETE FROM $MESSAGE_ENTITY_TABLE_NAME")
254254
suspend fun deleteAll()
255255

256+
@Query("DELETE FROM $DRAFT_MESSAGE_ENTITY_TABLE_NAME")
257+
suspend fun deleteAllDrafts()
258+
256259
private companion object {
257260
private const val SQLITE_MAX_VARIABLE_NUMBER: Int = 999
258261
private const val NO_LIMIT: Int = -1

stream-chat-android-offline/src/test/java/io/getstream/chat/android/offline/repository/MessageRepositoryTests.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,4 +219,26 @@ internal class MessageRepositoryTests {
219219
// then
220220
verify(messageDao).deleteMessages(messageIds)
221221
}
222+
223+
@Test
224+
fun `when calling clear, then all related tables are cleared`() = runTest(testDispatcher) {
225+
// given
226+
val repository = DatabaseMessageRepository(
227+
this,
228+
messageDao,
229+
replyMessageDao,
230+
pollDao,
231+
::randomUser,
232+
randomUser(id = "currentUserId"),
233+
emptySet(),
234+
)
235+
236+
// when
237+
repository.clear()
238+
239+
// then
240+
verify(messageDao).deleteAll()
241+
verify(messageDao).deleteAllDrafts()
242+
verify(replyMessageDao).deleteAll()
243+
}
222244
}

0 commit comments

Comments
 (0)