diff --git a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt index 3f41ca00..3fefe4bf 100644 --- a/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt +++ b/app/src/main/java/com/keylesspalace/tusky/MainActivity.kt @@ -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.Companion.canHandleMimeType 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.notifications.NotificationHelper import com.keylesspalace.tusky.components.preference.PreferencesActivity @@ -104,6 +105,9 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje @Inject lateinit var appDb: AppDatabase + @Inject + lateinit var draftHelper: DraftHelper + private lateinit var header: AccountHeaderView private var notificationTabPosition = 0 @@ -611,6 +615,7 @@ class MainActivity : BottomSheetActivity(), ActionButtonActivity, HasAndroidInje NotificationHelper.deleteNotificationChannelsForAccount(activeAccount, this) cacheUpdater.clearForUser(activeAccount.id) conversationRepository.deleteCacheForAccount(activeAccount.id) + draftHelper.deleteAllDraftsAndAttachmentsForAccount(activeAccount.id) removeShortcut(this, activeAccount) val newAccount = accountManager.logActiveAccountOut() if (!NotificationHelper.areNotificationsEnabled(this, accountManager)) { diff --git a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftHelper.kt b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftHelper.kt index 6f5f9005..5328fef7 100644 --- a/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftHelper.kt +++ b/app/src/main/java/com/keylesspalace/tusky/components/drafts/DraftHelper.kt @@ -29,6 +29,7 @@ import com.keylesspalace.tusky.entity.NewPoll import com.keylesspalace.tusky.entity.Status import com.keylesspalace.tusky.util.IOUtils import io.reactivex.Completable +import io.reactivex.Observable import io.reactivex.Single import io.reactivex.schedulers.Schedulers import java.io.File @@ -126,6 +127,15 @@ class DraftHelper @Inject constructor( .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 { return Completable.fromCallable { draft.attachments.forEach { attachment -> diff --git a/app/src/main/java/com/keylesspalace/tusky/db/DraftDao.kt b/app/src/main/java/com/keylesspalace/tusky/db/DraftDao.kt index 105fd7c5..065af1ae 100644 --- a/app/src/main/java/com/keylesspalace/tusky/db/DraftDao.kt +++ b/app/src/main/java/com/keylesspalace/tusky/db/DraftDao.kt @@ -32,9 +32,13 @@ interface DraftDao { @Query("SELECT * FROM DraftEntity WHERE accountId = :accountId ORDER BY id ASC") fun loadDrafts(accountId: Long): DataSource.Factory + @Query("SELECT * FROM DraftEntity WHERE accountId = :accountId") + fun loadDraftsSingle(accountId: Long): Single> + @Query("DELETE FROM DraftEntity WHERE id = :id") fun delete(id: Int): Completable @Query("SELECT * FROM DraftEntity WHERE id = :id") fun find(id: Int): Single + }