Code cleanup, use correct fragment class.

This commit is contained in:
akwizgran
2016-11-09 14:23:46 +00:00
parent ab16ee7465
commit 411549dc0a
13 changed files with 168 additions and 54 deletions

View File

@@ -8,6 +8,7 @@ import org.briarproject.android.controller.handler.ExceptionHandler;
import org.briarproject.android.controller.handler.ResultExceptionHandler;
import org.briarproject.api.blogs.BlogPostHeader;
import org.briarproject.api.db.DbException;
import org.briarproject.api.nullsafety.NotNullByDefault;
import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.MessageId;
@@ -33,9 +34,10 @@ interface BaseController {
void repeatPost(BlogPostItem item, @Nullable String comment,
ExceptionHandler<DbException> handler);
void setOnBlogPostAddedListener(OnBlogPostAddedListener listener);
void setBlogListener(BlogListener listener);
interface OnBlogPostAddedListener extends DestroyableContext {
@NotNullByDefault
interface BlogListener extends DestroyableContext {
@UiThread
void onBlogPostAdded(BlogPostHeader header, boolean local);

View File

@@ -46,7 +46,7 @@ abstract class BaseControllerImpl extends DbControllerImpl
private final Map<MessageId, BlogPostHeader> headerCache =
new ConcurrentHashMap<>();
private volatile OnBlogPostAddedListener listener;
private volatile BlogListener listener;
BaseControllerImpl(@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager, EventBus eventBus,
@@ -73,7 +73,7 @@ abstract class BaseControllerImpl extends DbControllerImpl
}
@Override
public void setOnBlogPostAddedListener(OnBlogPostAddedListener listener) {
public void setBlogListener(BlogListener listener) {
this.listener = listener;
}

View File

@@ -12,6 +12,8 @@ import android.widget.ProgressBar;
import org.briarproject.R;
import org.briarproject.android.fragment.BaseFragment;
import org.briarproject.api.db.DbException;
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
import java.util.logging.Logger;
@@ -19,6 +21,9 @@ import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE;
import static org.briarproject.android.util.AndroidUtils.MIN_RESOLUTION;
@UiThread
@MethodsNotNullByDefault
@ParametersNotNullByDefault
abstract class BasePostFragment extends BaseFragment {
private static final Logger LOG =
@@ -33,8 +38,8 @@ abstract class BasePostFragment extends BaseFragment {
@CallSuper
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_blog_post, container,
false);
progressBar = (ProgressBar) view.findViewById(R.id.progressBar);

View File

@@ -13,10 +13,12 @@ import android.view.ViewGroup;
import android.widget.ProgressBar;
import org.briarproject.R;
import org.briarproject.android.blogs.BaseController.OnBlogPostAddedListener;
import org.briarproject.android.blogs.BaseController.BlogListener;
import org.briarproject.android.fragment.BaseFragment;
import org.briarproject.api.blogs.BlogPostHeader;
import org.briarproject.api.db.DbException;
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.MessageId;
import java.util.ArrayList;
@@ -28,8 +30,11 @@ import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE;
import static org.briarproject.android.blogs.BasePostPagerFragment.BlogPostPagerAdapter.INVALID_POSITION;
@UiThread
@MethodsNotNullByDefault
@ParametersNotNullByDefault
abstract class BasePostPagerFragment extends BaseFragment
implements OnBlogPostAddedListener {
implements BlogListener {
static final String POST_ID = "briar.POST_ID";
@@ -40,8 +45,8 @@ abstract class BasePostPagerFragment extends BaseFragment
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle state) {
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable Bundle state) {
Bundle args;
if (state == null) args = getArguments();
@@ -65,6 +70,10 @@ abstract class BasePostPagerFragment extends BaseFragment
@Override
public void onStart() {
super.onStart();
loadBlogPosts();
}
protected void loadBlogPosts() {
if (postId == null) {
MessageId selected = getSelectedPost();
if (selected != null) loadBlogPosts(selected);
@@ -86,23 +95,23 @@ abstract class BasePostPagerFragment extends BaseFragment
loadBlogPost(header);
}
abstract void loadBlogPosts(final MessageId select);
abstract Fragment createFragment(GroupId g, MessageId m);
abstract void loadBlogPosts(MessageId select);
abstract void loadBlogPost(BlogPostHeader header);
@UiThread
protected void onBlogPostsLoaded(MessageId select,
Collection<BlogPostItem> posts) {
postId = null;
postPagerAdapter.setPosts(posts);
selectPost(select);
}
@UiThread
protected void onBlogPostsLoadedException(DbException exception) {
// TODO: Decide how to handle errors in the UI
finish();
protected void onBlogPostLoaded(BlogPostItem post) {
MessageId selected = getSelectedPost();
postPagerAdapter.addPost(post);
if (selected != null) selectPost(selected);
}
@Nullable
@@ -121,16 +130,11 @@ abstract class BasePostPagerFragment extends BaseFragment
}
}
protected void addPost(BlogPostItem post) {
MessageId selected = getSelectedPost();
postPagerAdapter.addPost(post);
if (selected != null) selectPost(selected);
}
@UiThread
static class BlogPostPagerAdapter extends FragmentStatePagerAdapter {
class BlogPostPagerAdapter extends FragmentStatePagerAdapter {
static final int INVALID_POSITION = -1;
private final List<BlogPostItem> posts = new ArrayList<>();
private BlogPostPagerAdapter(FragmentManager fm) {
@@ -145,7 +149,7 @@ abstract class BasePostPagerFragment extends BaseFragment
@Override
public Fragment getItem(int position) {
BlogPostItem post = posts.get(position);
return FeedPostFragment.newInstance(post.getGroupId(), post.getId());
return createFragment(post.getGroupId(), post.getId());
}
private BlogPostItem getPost(int position) {
@@ -175,9 +179,4 @@ abstract class BasePostPagerFragment extends BaseFragment
return INVALID_POSITION;
}
}
@Override
public void onBlogRemoved() {
finish();
}
}

View File

@@ -4,6 +4,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.content.ContextCompat;
@@ -19,7 +20,7 @@ import android.widget.Toast;
import org.briarproject.R;
import org.briarproject.android.ActivityComponent;
import org.briarproject.android.blogs.BaseController.OnBlogPostAddedListener;
import org.briarproject.android.blogs.BaseController.BlogListener;
import org.briarproject.android.blogs.BlogPostAdapter.OnBlogPostClickListener;
import org.briarproject.android.controller.handler.UiResultExceptionHandler;
import org.briarproject.android.fragment.BaseFragment;
@@ -46,10 +47,11 @@ import static org.briarproject.android.BriarActivity.GROUP_ID;
import static org.briarproject.android.blogs.BlogActivity.REQUEST_SHARE;
import static org.briarproject.android.blogs.BlogActivity.REQUEST_WRITE_POST;
@UiThread
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class BlogFragment extends BaseFragment implements
OnBlogPostAddedListener {
BlogListener {
private final static String TAG = BlogFragment.class.getName();
@@ -99,7 +101,7 @@ public class BlogFragment extends BaseFragment implements
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
blogController.setOnBlogPostAddedListener(this);
blogController.setBlogListener(this);
}
@Override

View File

@@ -2,6 +2,7 @@ package org.briarproject.android.blogs;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -9,12 +10,17 @@ import android.view.ViewGroup;
import org.briarproject.android.ActivityComponent;
import org.briarproject.android.controller.handler.UiResultExceptionHandler;
import org.briarproject.api.db.DbException;
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.api.sync.MessageId;
import javax.inject.Inject;
import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
@UiThread
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class BlogPostFragment extends BasePostFragment {
public final static String TAG = BlogPostFragment.class.getName();
@@ -36,8 +42,9 @@ public class BlogPostFragment extends BasePostFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
Bundle args = getArguments();
byte[] p = args.getByteArray(POST_ID);

View File

@@ -9,7 +9,9 @@ import org.briarproject.api.identity.Author.Status;
import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.MessageId;
// This class is not thread-safe
import javax.annotation.concurrent.NotThreadSafe;
@NotThreadSafe
public class BlogPostItem implements Comparable<BlogPostItem> {
private final BlogPostHeader header;

View File

@@ -1,20 +1,28 @@
package org.briarproject.android.blogs;
import android.os.Bundle;
import android.support.annotation.UiThread;
import android.support.v4.app.Fragment;
import org.briarproject.android.ActivityComponent;
import org.briarproject.android.controller.handler.UiResultExceptionHandler;
import org.briarproject.api.blogs.BlogPostHeader;
import org.briarproject.api.db.DbException;
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.MessageId;
import java.util.Collection;
import javax.inject.Inject;
@UiThread
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class BlogPostPagerFragment extends BasePostPagerFragment {
public final static String TAG = BlogPostPagerFragment.class.getName();
private static final String TAG = BlogPostPagerFragment.class.getName();
@Inject
BlogController blogController;
@@ -32,7 +40,7 @@ public class BlogPostPagerFragment extends BasePostPagerFragment {
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
blogController.setOnBlogPostAddedListener(this);
blogController.setBlogListener(this);
}
@Override
@@ -40,6 +48,10 @@ public class BlogPostPagerFragment extends BasePostPagerFragment {
return TAG;
}
@Override
Fragment createFragment(final GroupId g, final MessageId m) {
return BlogPostFragment.newInstance(m);
}
@Override
void loadBlogPosts(final MessageId select) {
@@ -53,7 +65,8 @@ public class BlogPostPagerFragment extends BasePostPagerFragment {
@Override
public void onExceptionUi(DbException exception) {
onBlogPostsLoadedException(exception);
// TODO: Decide how to handle errors in the UI
finish();
}
});
}
@@ -65,7 +78,7 @@ public class BlogPostPagerFragment extends BasePostPagerFragment {
this) {
@Override
public void onResultUi(BlogPostItem post) {
addPost(post);
onBlogPostLoaded(post);
}
@Override
@@ -75,4 +88,9 @@ public class BlogPostPagerFragment extends BasePostPagerFragment {
}
});
}
@Override
public void onBlogRemoved() {
finish();
}
}

View File

@@ -1,8 +1,11 @@
package org.briarproject.android.blogs;
import android.support.annotation.UiThread;
import org.briarproject.android.controller.handler.ResultExceptionHandler;
import org.briarproject.api.blogs.Blog;
import org.briarproject.api.db.DbException;
import org.briarproject.api.nullsafety.NotNullByDefault;
import java.util.Collection;
@@ -13,4 +16,12 @@ public interface FeedController extends BaseController {
void loadPersonalBlog(ResultExceptionHandler<Blog, DbException> handler);
void setFeedListener(FeedListener listener);
@NotNullByDefault
interface FeedListener extends BlogListener {
@UiThread
void onBlogAdded();
}
}

View File

@@ -11,6 +11,7 @@ import org.briarproject.api.db.NoSuchMessageException;
import org.briarproject.api.event.BlogPostAddedEvent;
import org.briarproject.api.event.Event;
import org.briarproject.api.event.EventBus;
import org.briarproject.api.event.GroupAddedEvent;
import org.briarproject.api.event.GroupRemovedEvent;
import org.briarproject.api.identity.Author;
import org.briarproject.api.identity.IdentityManager;
@@ -33,6 +34,8 @@ public class FeedControllerImpl extends BaseControllerImpl
private static final Logger LOG =
Logger.getLogger(FeedControllerImpl.class.getName());
private volatile FeedListener listener;
@Inject
FeedControllerImpl(@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager, EventBus eventBus,
@@ -45,6 +48,7 @@ public class FeedControllerImpl extends BaseControllerImpl
@Override
public void onStart() {
super.onStart();
if (listener == null) throw new IllegalStateException();
notificationManager.blockAllBlogPostNotifications();
notificationManager.clearAllBlogPostNotifications();
}
@@ -55,12 +59,24 @@ public class FeedControllerImpl extends BaseControllerImpl
notificationManager.unblockAllBlogPostNotifications();
}
@Override
public void setFeedListener(FeedListener listener) {
super.setBlogListener(listener);
this.listener = listener;
}
@Override
public void eventOccurred(Event e) {
if (e instanceof BlogPostAddedEvent) {
BlogPostAddedEvent b = (BlogPostAddedEvent) e;
LOG.info("Blog post added");
onBlogPostAdded(b.getHeader(), b.isLocal());
} else if (e instanceof GroupAddedEvent) {
GroupAddedEvent g = (GroupAddedEvent) e;
if (g.getGroup().getClientId().equals(CLIENT_ID)) {
LOG.info("Blog added");
onBlogAdded();
}
} else if (e instanceof GroupRemovedEvent) {
GroupRemovedEvent g = (GroupRemovedEvent) e;
if (g.getGroup().getClientId().equals(CLIENT_ID)) {
@@ -70,6 +86,15 @@ public class FeedControllerImpl extends BaseControllerImpl
}
}
private void onBlogAdded() {
listener.runOnUiThreadUnlessDestroyed(new Runnable() {
@Override
public void run() {
listener.onBlogAdded();
}
});
}
@Override
public void loadBlogPosts(
final ResultExceptionHandler<Collection<BlogPostItem>, DbException> handler) {

View File

@@ -3,6 +3,7 @@ package org.briarproject.android.blogs;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.content.ContextCompat;
@@ -17,14 +18,16 @@ import android.view.ViewGroup;
import org.briarproject.R;
import org.briarproject.android.ActivityComponent;
import org.briarproject.android.blogs.BaseController.OnBlogPostAddedListener;
import org.briarproject.android.blogs.BlogPostAdapter.OnBlogPostClickListener;
import org.briarproject.android.blogs.FeedController.FeedListener;
import org.briarproject.android.controller.handler.UiResultExceptionHandler;
import org.briarproject.android.fragment.BaseFragment;
import org.briarproject.android.view.BriarRecyclerView;
import org.briarproject.api.blogs.Blog;
import org.briarproject.api.blogs.BlogPostHeader;
import org.briarproject.api.db.DbException;
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
import java.util.Collection;
import java.util.logging.Logger;
@@ -37,8 +40,11 @@ import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation;
import static org.briarproject.android.BriarActivity.GROUP_ID;
import static org.briarproject.android.blogs.BlogActivity.REQUEST_WRITE_POST;
@UiThread
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class FeedFragment extends BaseFragment implements
OnBlogPostClickListener, OnBlogPostAddedListener {
OnBlogPostClickListener, FeedListener {
public final static String TAG = FeedFragment.class.getName();
private static final Logger LOG = Logger.getLogger(TAG);
@@ -62,8 +68,9 @@ public class FeedFragment extends BaseFragment implements
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_blog, container, false);
@@ -81,7 +88,7 @@ public class FeedFragment extends BaseFragment implements
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
feedController.setOnBlogPostAddedListener(this);
feedController.setFeedListener(this);
}
@Override
@@ -253,6 +260,11 @@ public class FeedFragment extends BaseFragment implements
s.show();
}
@Override
public void onBlogAdded() {
loadBlogPosts(false);
}
@Override
public void onBlogRemoved() {
loadBlogPosts(true);

View File

@@ -2,6 +2,7 @@ package org.briarproject.android.blogs;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.UiThread;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -9,6 +10,8 @@ import android.view.ViewGroup;
import org.briarproject.android.ActivityComponent;
import org.briarproject.android.controller.handler.UiResultExceptionHandler;
import org.briarproject.api.db.DbException;
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.MessageId;
@@ -17,6 +20,9 @@ import javax.inject.Inject;
import static org.briarproject.android.BriarActivity.GROUP_ID;
import static org.briarproject.android.blogs.BasePostPagerFragment.POST_ID;
@UiThread
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class FeedPostFragment extends BasePostFragment {
public final static String TAG = FeedPostFragment.class.getName();
@@ -40,8 +46,9 @@ public class FeedPostFragment extends BasePostFragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
Bundle args = getArguments();
byte[] b = args.getByteArray(GROUP_ID);

View File

@@ -1,20 +1,30 @@
package org.briarproject.android.blogs;
import android.os.Bundle;
import android.support.annotation.UiThread;
import android.support.v4.app.Fragment;
import org.briarproject.android.ActivityComponent;
import org.briarproject.android.blogs.FeedController.FeedListener;
import org.briarproject.android.controller.handler.UiResultExceptionHandler;
import org.briarproject.api.blogs.BlogPostHeader;
import org.briarproject.api.db.DbException;
import org.briarproject.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.api.sync.GroupId;
import org.briarproject.api.sync.MessageId;
import java.util.Collection;
import javax.inject.Inject;
public class FeedPostPagerFragment extends BasePostPagerFragment {
@UiThread
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class FeedPostPagerFragment extends BasePostPagerFragment
implements FeedListener {
public final static String TAG = FeedPostPagerFragment.class.getName();
private static final String TAG = FeedPostPagerFragment.class.getName();
@Inject
FeedController feedController;
@@ -32,7 +42,7 @@ public class FeedPostPagerFragment extends BasePostPagerFragment {
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
feedController.setOnBlogPostAddedListener(this);
feedController.setFeedListener(this);
}
@Override
@@ -52,6 +62,11 @@ public class FeedPostPagerFragment extends BasePostPagerFragment {
feedController.onStop();
}
@Override
Fragment createFragment(GroupId g, MessageId m) {
return FeedPostFragment.newInstance(g, m);
}
@Override
void loadBlogPosts(final MessageId select) {
feedController.loadBlogPosts(
@@ -64,7 +79,7 @@ public class FeedPostPagerFragment extends BasePostPagerFragment {
@Override
public void onExceptionUi(DbException exception) {
onBlogPostsLoadedException(exception);
// TODO: Decide how to handle errors in the UI
}
});
}
@@ -76,14 +91,23 @@ public class FeedPostPagerFragment extends BasePostPagerFragment {
this) {
@Override
public void onResultUi(BlogPostItem post) {
addPost(post);
onBlogPostLoaded(post);
}
@Override
public void onExceptionUi(DbException exception) {
// TODO: Decide how to handle errors in the UI
finish();
}
});
}
@Override
public void onBlogAdded() {
loadBlogPosts();
}
@Override
public void onBlogRemoved() {
loadBlogPosts();
}
}