From 2f716b9b11962cac0b82ff98c4d58da02e2c8073 Mon Sep 17 00:00:00 2001 From: Thomas Date: Tue, 31 May 2022 18:15:42 +0200 Subject: [PATCH] Fix issue #113 - Bad behavior when removing drafts --- .../client/entities/app/StatusDraft.java | 2 +- .../android/ui/drawer/StatusDraftAdapter.java | 23 ++++++++----------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/client/entities/app/StatusDraft.java b/app/src/main/java/app/fedilab/android/client/entities/app/StatusDraft.java index 1c93bbc9e..41d283685 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/app/StatusDraft.java +++ b/app/src/main/java/app/fedilab/android/client/entities/app/StatusDraft.java @@ -283,7 +283,7 @@ public class StatusDraft implements Serializable { throw new DBException("db is null. Wrong initialization."); } try { - Cursor c = db.query(Sqlite.TABLE_STATUS_DRAFT, null, Sqlite.COL_INSTANCE + " = '" + account.instance + "' AND " + Sqlite.COL_USER_ID + " = '" + account.user_id + "'", null, null, null, Sqlite.COL_UPDATED_AT + " ASC", null); + Cursor c = db.query(Sqlite.TABLE_STATUS_DRAFT, null, Sqlite.COL_INSTANCE + " = '" + account.instance + "' AND " + Sqlite.COL_USER_ID + " = '" + account.user_id + "'", null, null, null, Sqlite.COL_UPDATED_AT + " DESC", null); return cursorToStatusDraftList(c); } catch (Exception e) { return null; diff --git a/app/src/main/java/app/fedilab/android/ui/drawer/StatusDraftAdapter.java b/app/src/main/java/app/fedilab/android/ui/drawer/StatusDraftAdapter.java index 8007bd40f..134030160 100644 --- a/app/src/main/java/app/fedilab/android/ui/drawer/StatusDraftAdapter.java +++ b/app/src/main/java/app/fedilab/android/ui/drawer/StatusDraftAdapter.java @@ -17,8 +17,6 @@ package app.fedilab.android.ui.drawer; import android.content.Context; import android.content.Intent; -import android.os.Handler; -import android.os.Looper; import android.view.LayoutInflater; import android.view.ViewGroup; import android.widget.TextView; @@ -101,12 +99,18 @@ public class StatusDraftAdapter extends RecyclerView.Adapter dialog.dismiss()); unfollowConfirm.setPositiveButton(R.string.delete, (dialog, which) -> { + statusDrafts.remove(holder.getAbsoluteAdapterPosition()); + notifyItemRemoved(holder.getAbsoluteAdapterPosition()); + if (statusDrafts.size() == 0) { + draftActions.onAllDeleted(); + } + final StatusDraft statusDraftToDelete = statusDraft; new Thread(() -> { try { //Check if there are media in the drafts List attachments = new ArrayList<>(); - if (statusDraft.statusDraftList != null) { - for (Status drafts : statusDraft.statusDraftList) { + if (statusDraftToDelete.statusDraftList != null) { + for (Status drafts : statusDraftToDelete.statusDraftList) { if (drafts.media_attachments != null && drafts.media_attachments.size() > 0) { attachments.addAll(drafts.media_attachments); } @@ -125,16 +129,7 @@ public class StatusDraftAdapter extends RecyclerView.Adapter { - statusDrafts.remove(statusDraft); - notifyItemRemoved(position); - if (statusDrafts.size() == 0) { - draftActions.onAllDeleted(); - } - }; - mainHandler.post(myRunnable); + new StatusDraft(context).removeDraft(statusDraftToDelete); } catch (DBException e) { e.printStackTrace(); }