Reblogging and Comment UI

This commit is contained in:
Torsten Grote
2016-08-16 18:11:09 -03:00
committed by akwizgran
parent da08072409
commit 6d7e0aab07
44 changed files with 1274 additions and 747 deletions

View File

@@ -1,19 +1,12 @@
package org.briarproject.android.blogs;
import org.briarproject.android.api.AndroidNotificationManager;
import org.briarproject.android.controller.DbControllerImpl;
import org.briarproject.android.controller.handler.ResultExceptionHandler;
import org.briarproject.android.controller.handler.ResultHandler;
import org.briarproject.api.blogs.Blog;
import org.briarproject.api.blogs.BlogManager;
import org.briarproject.api.blogs.BlogPostHeader;
import org.briarproject.api.db.DbException;
import org.briarproject.api.event.BlogPostAddedEvent;
import org.briarproject.api.event.Event;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.event.EventListener;
import org.briarproject.api.db.NoSuchGroupException;
import org.briarproject.api.db.NoSuchMessageException;
import org.briarproject.api.identity.Author;
import org.briarproject.api.identity.IdentityManager;
import org.briarproject.api.sync.GroupId;
import java.util.ArrayList;
import java.util.Collection;
@@ -24,82 +17,56 @@ import javax.inject.Inject;
import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING;
public class FeedControllerImpl extends DbControllerImpl
implements FeedController, EventListener {
public class FeedControllerImpl extends BaseControllerImpl
implements FeedController {
private static final Logger LOG =
Logger.getLogger(FeedControllerImpl.class.getName());
@SuppressWarnings("WeakerAccess")
@Inject
AndroidNotificationManager notificationManager;
@Inject
protected EventBus eventBus;
@Inject
protected volatile BlogManager blogManager;
@Inject
protected volatile IdentityManager identityManager;
private volatile OnBlogPostAddedListener listener;
@Inject
FeedControllerImpl() {
}
@Override
public void onResume() {
public void onStart() {
super.onStart();
notificationManager.blockAllBlogPostNotifications();
notificationManager.clearAllBlogPostNotifications();
eventBus.addListener(this);
}
@Override
public void onPause() {
public void onStop() {
super.onStop();
notificationManager.unblockAllBlogPostNotifications();
eventBus.removeListener(this);
}
@Override
public void eventOccurred(Event e) {
if (!(e instanceof BlogPostAddedEvent)) return;
LOG.info("New blog post added");
if (listener != null) {
BlogPostAddedEvent m = (BlogPostAddedEvent) e;
BlogPostHeader header = m.getHeader();
addPost(m.getGroupId(), header);
}
}
@Override
public void loadPosts(
final ResultHandler<Collection<BlogPostItem>> resultHandler) {
LOG.info("Loading blog posts...");
public void loadBlogPosts(
final ResultExceptionHandler<Collection<BlogPostItem>, DbException> handler) {
LOG.info("Loading all blog posts...");
runOnDbThread(new Runnable() {
@Override
public void run() {
Collection<BlogPostItem> posts = new ArrayList<>();
try {
// load blog posts
long now = System.currentTimeMillis();
Collection<BlogPostItem> posts = new ArrayList<>();
for (Blog b : blogManager.getBlogs()) {
Collection<BlogPostHeader> header =
blogManager.getPostHeaders(b.getId());
for (BlogPostHeader h : header) {
byte[] body = blogManager.getPostBody(h.getId());
posts.add(new BlogPostItem(b.getId(), h, body));
try {
posts.addAll(loadItems(b.getId()));
} catch (NoSuchGroupException | NoSuchMessageException e) {
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e);
}
}
long duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))
LOG.info("Loading posts took " + duration + " ms");
resultHandler.onResult(posts);
LOG.info("Loading all posts took " + duration + " ms");
handler.onResult(posts);
} catch (DbException e) {
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, e.toString(), e);
resultHandler.onResult(null);
handler.onException(e);
}
}
});
@@ -114,8 +81,7 @@ public class FeedControllerImpl extends DbControllerImpl
try {
// load blog posts
long now = System.currentTimeMillis();
Author a =
identityManager.getLocalAuthors().iterator().next();
Author a = identityManager.getLocalAuthor();
Blog b = blogManager.getPersonalBlog(a);
long duration = System.currentTimeMillis() - now;
if (LOG.isLoggable(INFO))
@@ -130,25 +96,4 @@ public class FeedControllerImpl extends DbControllerImpl
});
}
@Override
public void setOnBlogPostAddedListener(OnBlogPostAddedListener listener) {
this.listener = listener;
}
private void addPost(final GroupId groupId, final BlogPostHeader header) {
runOnDbThread(new Runnable() {
@Override
public void run() {
try {
byte[] body = blogManager.getPostBody(header.getId());
BlogPostItem post = new BlogPostItem(groupId, header, body);
listener.onBlogPostAdded(post);
} catch (DbException ex) {
if (LOG.isLoggable(WARNING))
LOG.log(WARNING, ex.toString(), ex);
}
}
});
}
}