mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
Avoid race conditions when updating the UI from events.
This commit is contained in:
@@ -32,6 +32,7 @@ import org.briarproject.api.identity.Author;
|
||||
import org.briarproject.api.sync.GroupId;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -51,6 +52,7 @@ public class BlogFragment extends BaseFragment implements
|
||||
OnBlogPostAddedListener {
|
||||
|
||||
public final static String TAG = BlogFragment.class.getName();
|
||||
private static final Logger LOG = Logger.getLogger(TAG);
|
||||
|
||||
@Inject
|
||||
BlogController blogController;
|
||||
@@ -207,6 +209,7 @@ public class BlogFragment extends BaseFragment implements
|
||||
listener) {
|
||||
@Override
|
||||
public void onResultUi(BlogPostItem post) {
|
||||
adapter.incrementRevision();
|
||||
adapter.add(post);
|
||||
if (local) {
|
||||
list.scrollToPosition(0);
|
||||
@@ -228,16 +231,23 @@ public class BlogFragment extends BaseFragment implements
|
||||
}
|
||||
|
||||
void loadBlogPosts(final boolean reload) {
|
||||
final int revision = adapter.getRevision();
|
||||
blogController.loadBlogPosts(
|
||||
new UiResultExceptionHandler<Collection<BlogPostItem>, DbException>(
|
||||
listener) {
|
||||
@Override
|
||||
public void onResultUi(Collection<BlogPostItem> posts) {
|
||||
if (posts.isEmpty()) {
|
||||
list.showData();
|
||||
if (revision == adapter.getRevision()) {
|
||||
adapter.incrementRevision();
|
||||
if (posts.isEmpty()) {
|
||||
list.showData();
|
||||
} else {
|
||||
adapter.addAll(posts);
|
||||
if (reload) list.scrollToPosition(0);
|
||||
}
|
||||
} else {
|
||||
adapter.addAll(posts);
|
||||
if (reload) list.scrollToPosition(0);
|
||||
LOG.info("Concurrent update, reloading");
|
||||
loadBlogPosts(reload);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user