From 116f5a01a100a9be7659bea64c6784c3acd241f1 Mon Sep 17 00:00:00 2001 From: Thomas Date: Sat, 8 Oct 2022 17:21:43 +0200 Subject: [PATCH] Fix message that remain in drafts --- .../client/entities/app/StatusCache.java | 2 +- .../fedilab/android/jobs/ComposeWorker.java | 33 +++++++++++-------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java b/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java index cd02213f..0ef274f0 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java +++ b/app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java @@ -179,7 +179,7 @@ public class StatusCache { * @return int - 0 if updated 1 if inserted * @throws DBException exception with database */ - public int insertOrUpdate(StatusCache statusCache, String slug) throws DBException { + public synchronized int insertOrUpdate(StatusCache statusCache, String slug) throws DBException { if (db == null) { throw new DBException("db is null. Wrong initialization."); } diff --git a/app/src/main/java/app/fedilab/android/jobs/ComposeWorker.java b/app/src/main/java/app/fedilab/android/jobs/ComposeWorker.java index 0efb06b0..6a1ef119 100644 --- a/app/src/main/java/app/fedilab/android/jobs/ComposeWorker.java +++ b/app/src/main/java/app/fedilab/android/jobs/ComposeWorker.java @@ -234,8 +234,11 @@ public class ComposeWorker extends Worker { if (statusReply != null) { in_reply_to_status = statusReply.id; dataPost.statusDraft.state.posts_successfully_sent = i; - dataPost.statusDraft.state.posts.get(i).id = statusReply.id; - dataPost.statusDraft.state.posts.get(i).in_reply_to_id = statusReply.in_reply_to_id; + if (dataPost.statusDraft.state.posts.size() > i + 1) { + dataPost.statusDraft.state.posts.get(i + 1).id = statusReply.id; + dataPost.statusDraft.state.posts.get(i + 1).in_reply_to_id = statusReply.in_reply_to_id; + } + try { new StatusDraft(context.getApplicationContext()).updatePostState(dataPost.statusDraft); } catch (DBException e) { @@ -284,23 +287,15 @@ public class ComposeWorker extends Worker { if (statusReply != null) { in_reply_to_status = statusReply.id; dataPost.statusDraft.state.posts_successfully_sent = i; - dataPost.statusDraft.state.posts.get(i).id = statusReply.id; - dataPost.statusDraft.state.posts.get(i).in_reply_to_id = statusReply.params.in_reply_to_id; + if (dataPost.statusDraft.state.posts.size() > i + 1) { + dataPost.statusDraft.state.posts.get(i + 1).id = statusReply.id; + dataPost.statusDraft.state.posts.get(i + 1).in_reply_to_id = statusReply.params.in_reply_to_id; + } try { new StatusDraft(context.getApplicationContext()).updatePostState(dataPost.statusDraft); } catch (DBException e) { e.printStackTrace(); } - if (i >= dataPost.statusDraft.statusDraftList.size()) { - try { - new StatusDraft(context).removeDraft(dataPost.statusDraft); - } catch (DBException e) { - e.printStackTrace(); - } - if (dataPost.service != null) { - dataPost.service.stopSelf(); - } - } } } } catch (IOException e) { @@ -312,6 +307,16 @@ public class ComposeWorker extends Worker { if (dataPost.messageSent > dataPost.messageToSend) { dataPost.messageSent = dataPost.messageToSend; } + if (i >= (statuses.size() - 1)) { + try { + new StatusDraft(context).removeDraft(dataPost.statusDraft); + } catch (DBException e) { + e.printStackTrace(); + } + if (dataPost.service != null) { + dataPost.service.stopSelf(); + } + } } }