From 6c4adc358f43dc8b912f25251cc018d3ce18f4d0 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sat, 27 Aug 2016 15:51:05 +0200 Subject: [PATCH] Fixed messages sometimes not being saved --- app/proguard-rules.pro | 7 ++- .../backlogstorage/HybridBacklogStorage.java | 48 ++++++++++++------- .../quasseldroid_ng/ui/chat/MainActivity.java | 1 + app/src/main/res/menu/chat.xml | 10 ++-- 4 files changed, 44 insertions(+), 22 deletions(-) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index df5f69275..08f3c6edc 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -78,4 +78,9 @@ ######################################### ## DBFlow ## ######################################### --keep class * extends com.raizlabs.android.dbflow.config.DatabaseHolder { *; } \ No newline at end of file +-keep class * extends com.raizlabs.android.dbflow.config.DatabaseHolder { *; } + +######################################### +## AppCompat SearchView ## +######################################### +-keep class android.support.v7.widget.SearchView { *; } \ No newline at end of file diff --git a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/HybridBacklogStorage.java b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/HybridBacklogStorage.java index f702dcb0d..7a53276ec 100644 --- a/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/HybridBacklogStorage.java +++ b/app/src/main/java/de/kuschku/libquassel/localtypes/backlogstorage/HybridBacklogStorage.java @@ -128,26 +128,40 @@ public class HybridBacklogStorage implements BacklogStorage { @Override public void insertMessages(@NonNull Message... messages) { - for (Message message : messages) { - client.unbufferBuffer(message.bufferInfo); - synchronized (backlogs) { - if (backlogs.get(message.bufferInfo.id) != null) - backlogs.get(message.bufferInfo.id).add(message); + FlowManager.getDatabase(ConnectedDatabase.class).executeTransaction(new ITransaction() { + @Override + public void execute(DatabaseWrapper databaseWrapper) { + for (Message message : messages) { + client.unbufferBuffer(message.bufferInfo); + synchronized (backlogs) { + if (backlogs.get(message.bufferInfo.id) != null) + backlogs.get(message.bufferInfo.id).add(message); + message.save(); + message.bufferInfo.save(); + } + updateLatest(message); + } } - updateLatest(message); - } + }); } @Override public void insertMessages(List<Message> messages) { - for (Message message : messages) { - client.unbufferBuffer(message.bufferInfo); - synchronized (backlogs) { - if (backlogs.get(message.bufferInfo.id) != null) - backlogs.get(message.bufferInfo.id).add(message); + FlowManager.getDatabase(ConnectedDatabase.class).executeTransaction(new ITransaction() { + @Override + public void execute(DatabaseWrapper databaseWrapper) { + for (Message message : messages) { + client.unbufferBuffer(message.bufferInfo); + synchronized (backlogs) { + if (backlogs.get(message.bufferInfo.id) != null) + backlogs.get(message.bufferInfo.id).add(message); + message.save(); + message.bufferInfo.save(); + } + updateLatest(message); + } } - updateLatest(message); - } + }); } public void setClient(Client client) { @@ -167,8 +181,10 @@ public class HybridBacklogStorage implements BacklogStorage { @Override public void clear(@IntRange(from = 0) int bufferid) { - Log.w("libquassel", String.format("Backlog gap detected, clearing backlog for buffer %d", bufferid)); - SQLite.delete().from(Message.class).where(Message_Table.bufferInfo_id.eq(bufferid)).execute(); + synchronized (backlogs) { + Log.w("libquassel", String.format("Backlog gap detected, clearing backlog for buffer %d", bufferid)); + SQLite.delete().from(Message.class).where(Message_Table.bufferInfo_id.eq(bufferid)).execute(); + } } private void ensureExisting(@IntRange(from = -1) int bufferId) { diff --git a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java index 7174af59d..3ad162032 100644 --- a/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java +++ b/app/src/main/java/de/kuschku/quasseldroid_ng/ui/chat/MainActivity.java @@ -39,6 +39,7 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; diff --git a/app/src/main/res/menu/chat.xml b/app/src/main/res/menu/chat.xml index 7381ab764..07869e2e9 100644 --- a/app/src/main/res/menu/chat.xml +++ b/app/src/main/res/menu/chat.xml @@ -22,16 +22,16 @@ <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> - <item - android:id="@+id/action_hide_events" - android:icon="?attr/iconFilter" - android:title="@string/labelHideEvents" - app:showAsAction="never" /> <item android:id="@+id/action_search" android:title="@string/label_search" app:showAsAction="never|collapseActionView" app:actionViewClass="android.support.v7.widget.SearchView" /> + <item + android:id="@+id/action_hide_events" + android:icon="?attr/iconFilter" + android:title="@string/labelHideEvents" + app:showAsAction="never" /> <item android:id="@+id/action_settings" android:title="@string/label_settings" -- GitLab