mirror of
https://github.com/pachli/pachli-android.git
synced 2025-02-08 07:58:55 +01:00
cleanup drafts when user logs out (#2067)
* cleanup drafts when user logs out * delete unused method * remove unneeded sorting from loadDraftsSingle
This commit is contained in:
parent
9580870445
commit
4d856365f9
@ -53,6 +53,7 @@ import com.keylesspalace.tusky.components.announcements.AnnouncementsActivity
|
|||||||
import com.keylesspalace.tusky.components.compose.ComposeActivity
|
import com.keylesspalace.tusky.components.compose.ComposeActivity
|
||||||
import com.keylesspalace.tusky.components.compose.ComposeActivity.Companion.canHandleMimeType
|
import com.keylesspalace.tusky.components.compose.ComposeActivity.Companion.canHandleMimeType
|
||||||
import com.keylesspalace.tusky.components.conversation.ConversationsRepository
|
import com.keylesspalace.tusky.components.conversation.ConversationsRepository
|
||||||
|
import com.keylesspalace.tusky.components.drafts.DraftHelper
|
||||||
import com.keylesspalace.tusky.components.drafts.DraftsActivity
|
import com.keylesspalace.tusky.components.drafts.DraftsActivity
|
||||||
import com.keylesspalace.tusky.components.notifications.NotificationHelper
|
import com.keylesspalace.tusky.components.notifications.NotificationHelper
|
||||||
import com.keylesspalace.tusky.components.preference.PreferencesActivity
|
import com.keylesspalace.tusky.components.preference.PreferencesActivity
|
||||||
@ -104,6 +105,9 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
|
|||||||
@Inject
|
@Inject
|
||||||
lateinit var appDb: AppDatabase
|
lateinit var appDb: AppDatabase
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
lateinit var draftHelper: DraftHelper
|
||||||
|
|
||||||
private lateinit var header: AccountHeaderView
|
private lateinit var header: AccountHeaderView
|
||||||
|
|
||||||
private var notificationTabPosition = 0
|
private var notificationTabPosition = 0
|
||||||
@ -611,6 +615,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje
|
|||||||
NotificationHelper.deleteNotificationChannelsForAccount(activeAccount, this)
|
NotificationHelper.deleteNotificationChannelsForAccount(activeAccount, this)
|
||||||
cacheUpdater.clearForUser(activeAccount.id)
|
cacheUpdater.clearForUser(activeAccount.id)
|
||||||
conversationRepository.deleteCacheForAccount(activeAccount.id)
|
conversationRepository.deleteCacheForAccount(activeAccount.id)
|
||||||
|
draftHelper.deleteAllDraftsAndAttachmentsForAccount(activeAccount.id)
|
||||||
removeShortcut(this, activeAccount)
|
removeShortcut(this, activeAccount)
|
||||||
val newAccount = accountManager.logActiveAccountOut()
|
val newAccount = accountManager.logActiveAccountOut()
|
||||||
if (!NotificationHelper.areNotificationsEnabled(this, accountManager)) {
|
if (!NotificationHelper.areNotificationsEnabled(this, accountManager)) {
|
||||||
|
@ -29,6 +29,7 @@ import com.keylesspalace.tusky.entity.NewPoll
|
|||||||
import com.keylesspalace.tusky.entity.Status
|
import com.keylesspalace.tusky.entity.Status
|
||||||
import com.keylesspalace.tusky.util.IOUtils
|
import com.keylesspalace.tusky.util.IOUtils
|
||||||
import io.reactivex.Completable
|
import io.reactivex.Completable
|
||||||
|
import io.reactivex.Observable
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@ -126,6 +127,15 @@ class DraftHelper @Inject constructor(
|
|||||||
.andThen(draftDao.delete(draft.id))
|
.andThen(draftDao.delete(draft.id))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun deleteAllDraftsAndAttachmentsForAccount(accountId: Long) {
|
||||||
|
draftDao.loadDraftsSingle(accountId)
|
||||||
|
.flatMapObservable { Observable.fromIterable(it) }
|
||||||
|
.flatMapCompletable { draft ->
|
||||||
|
deleteDraftAndAttachments(draft)
|
||||||
|
}.subscribeOn(Schedulers.io())
|
||||||
|
.subscribe()
|
||||||
|
}
|
||||||
|
|
||||||
fun deleteAttachments(draft: DraftEntity): Completable {
|
fun deleteAttachments(draft: DraftEntity): Completable {
|
||||||
return Completable.fromCallable {
|
return Completable.fromCallable {
|
||||||
draft.attachments.forEach { attachment ->
|
draft.attachments.forEach { attachment ->
|
||||||
|
@ -32,9 +32,13 @@ interface DraftDao {
|
|||||||
@Query("SELECT * FROM DraftEntity WHERE accountId = :accountId ORDER BY id ASC")
|
@Query("SELECT * FROM DraftEntity WHERE accountId = :accountId ORDER BY id ASC")
|
||||||
fun loadDrafts(accountId: Long): DataSource.Factory<Int, DraftEntity>
|
fun loadDrafts(accountId: Long): DataSource.Factory<Int, DraftEntity>
|
||||||
|
|
||||||
|
@Query("SELECT * FROM DraftEntity WHERE accountId = :accountId")
|
||||||
|
fun loadDraftsSingle(accountId: Long): Single<List<DraftEntity>>
|
||||||
|
|
||||||
@Query("DELETE FROM DraftEntity WHERE id = :id")
|
@Query("DELETE FROM DraftEntity WHERE id = :id")
|
||||||
fun delete(id: Int): Completable
|
fun delete(id: Int): Completable
|
||||||
|
|
||||||
@Query("SELECT * FROM DraftEntity WHERE id = :id")
|
@Query("SELECT * FROM DraftEntity WHERE id = :id")
|
||||||
fun find(id: Int): Single<DraftEntity?>
|
fun find(id: Int): Single<DraftEntity?>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user