From 525c323c1cccdc2650c2d9b94319e9040002a0e0 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Fri, 5 Feb 2016 11:57:55 +0000 Subject: [PATCH] Fixed race between loadHeaders() and loadAvailable(). --- .../android/forum/ForumListFragment.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/briar-android/src/org/briarproject/android/forum/ForumListFragment.java b/briar-android/src/org/briarproject/android/forum/ForumListFragment.java index c879e2bd0b..30b62b2827 100644 --- a/briar-android/src/org/briarproject/android/forum/ForumListFragment.java +++ b/briar-android/src/org/briarproject/android/forum/ForumListFragment.java @@ -164,11 +164,13 @@ public class ForumListFragment extends BaseEventFragment implements public void run() { try { long now = System.currentTimeMillis(); + boolean displayedHeaders = false; for (Forum f : forumManager.getForums()) { try { Collection<ForumPostHeader> headers = forumManager.getPostHeaders(f.getId()); displayHeaders(f, headers); + displayedHeaders = true; } catch (NoSuchGroupException e) { // Continue } @@ -178,6 +180,7 @@ public class ForumListFragment extends BaseEventFragment implements long duration = System.currentTimeMillis() - now; if (LOG.isLoggable(INFO)) LOG.info("Full load took " + duration + " ms"); + if (!displayedHeaders) displayEmpty(); displayAvailable(available); } catch (DbException e) { if (LOG.isLoggable(WARNING)) @@ -216,11 +219,18 @@ public class ForumListFragment extends BaseEventFragment implements }); } - private void displayAvailable(final int availableCount) { + private void displayEmpty() { listener.runOnUiThread(new Runnable() { public void run() { - if (adapter.isEmpty()) empty.setVisibility(VISIBLE); + empty.setVisibility(VISIBLE); loading.setVisibility(GONE); + } + }); + } + + private void displayAvailable(final int availableCount) { + listener.runOnUiThread(new Runnable() { + public void run() { if (availableCount == 0) { available.setVisibility(GONE); } else { @@ -277,7 +287,8 @@ public class ForumListFragment extends BaseEventFragment implements if (c.equals(forumManager.getClientId())) { LOG.info("Forum post added, reloading"); loadHeaders(m.getMessage().getGroupId()); - } else if (c.equals(forumSharingManager.getClientId())) { + } else if (!m.isLocal() + && c.equals(forumSharingManager.getClientId())) { LOG.info("Available forums updated, reloading"); loadAvailable(); } -- GitLab