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