mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-18 05:39:53 +01:00
Merge branch '415-blog-activity-for-viewing-list-of-blog-posts' into 'master'
Show Personal Blog When Clicking On Post in Combined Blog Feed This is your own personal blog when clicking on your own posts. Note how you can also write posts from that screen and no trust indicator is shown for the posts:  This is somebody else's blog on a dedicated screen after clicking on a blog post:  Closes #415 See merge request !256
This commit is contained in:
@@ -9,10 +9,4 @@
|
|||||||
android:title="@string/blogs_write_blog_post"
|
android:title="@string/blogs_write_blog_post"
|
||||||
app:showAsAction="ifRoom"/>
|
app:showAsAction="ifRoom"/>
|
||||||
|
|
||||||
<item
|
|
||||||
android:id="@+id/action_delete_blog"
|
|
||||||
android:icon="@drawable/action_delete_white"
|
|
||||||
android:title="@string/blogs_delete_blog"
|
|
||||||
app:showAsAction="never"/>
|
|
||||||
|
|
||||||
</menu>
|
</menu>
|
||||||
@@ -278,6 +278,7 @@
|
|||||||
<string name="blogs_blog_failed_to_load">Blog failed to load</string>
|
<string name="blogs_blog_failed_to_load">Blog failed to load</string>
|
||||||
<string name="blogs_blog_post_failed_to_load">Blog Post failed to load</string>
|
<string name="blogs_blog_post_failed_to_load">Blog Post failed to load</string>
|
||||||
<string name="blogs_feed_empty_state">This is the global blog feed.\n\nIt looks like nobody blogged anything, yet.\n\nBe the first and tap the pen icon to write a new blog post.</string>
|
<string name="blogs_feed_empty_state">This is the global blog feed.\n\nIt looks like nobody blogged anything, yet.\n\nBe the first and tap the pen icon to write a new blog post.</string>
|
||||||
|
<string name="blogs_personal_blog">%s\'s Personal Blog</string>
|
||||||
<string name="blogs_delete_blog">Delete Blog</string>
|
<string name="blogs_delete_blog">Delete Blog</string>
|
||||||
<string name="blogs_delete_blog_dialog_message">Are you sure that you want to delete this Blog and all posts?\nNote that this will not delete the blog from other people\'s devices.</string>
|
<string name="blogs_delete_blog_dialog_message">Are you sure that you want to delete this Blog and all posts?\nNote that this will not delete the blog from other people\'s devices.</string>
|
||||||
<string name="blogs_delete_blog_ok">Delete Blog</string>
|
<string name="blogs_delete_blog_ok">Delete Blog</string>
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ public class BlogActivity extends BriarActivity implements BlogPostListener,
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBlogPostClick(final int position) {
|
public void onBlogPostClick(int position, BlogPostItem post) {
|
||||||
loadBlogPosts(position, true);
|
loadBlogPosts(position, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public class BlogControllerImpl extends DbControllerImpl
|
|||||||
@Override
|
@Override
|
||||||
public void eventOccurred(Event e) {
|
public void eventOccurred(Event e) {
|
||||||
if (e instanceof BlogPostAddedEvent) {
|
if (e instanceof BlogPostAddedEvent) {
|
||||||
final BlogPostAddedEvent m = (BlogPostAddedEvent) e;
|
BlogPostAddedEvent m = (BlogPostAddedEvent) e;
|
||||||
if (m.getGroupId().equals(groupId)) {
|
if (m.getGroupId().equals(groupId)) {
|
||||||
LOG.info("New blog post added");
|
LOG.info("New blog post added");
|
||||||
if (posts == null) {
|
if (posts == null) {
|
||||||
@@ -89,8 +89,8 @@ public class BlogControllerImpl extends DbControllerImpl
|
|||||||
final BlogPostHeader header = m.getHeader();
|
final BlogPostHeader header = m.getHeader();
|
||||||
// FIXME: Don't make blocking calls in event handlers
|
// FIXME: Don't make blocking calls in event handlers
|
||||||
try {
|
try {
|
||||||
final byte[] body = blogManager.getPostBody(header.getId());
|
byte[] body = blogManager.getPostBody(header.getId());
|
||||||
final BlogPostItem post = new BlogPostItem(header, body);
|
BlogPostItem post = new BlogPostItem(groupId, header, body);
|
||||||
posts.add(post);
|
posts.add(post);
|
||||||
listener.onBlogPostAdded(post, m.isLocal());
|
listener.onBlogPostAdded(post, m.isLocal());
|
||||||
} catch (DbException ex) {
|
} catch (DbException ex) {
|
||||||
@@ -130,7 +130,7 @@ public class BlogControllerImpl extends DbControllerImpl
|
|||||||
blogManager.getPostHeaders(g);
|
blogManager.getPostHeaders(g);
|
||||||
for (BlogPostHeader h : header) {
|
for (BlogPostHeader h : header) {
|
||||||
byte[] body = blogManager.getPostBody(h.getId());
|
byte[] body = blogManager.getPostBody(h.getId());
|
||||||
newPosts.add(new BlogPostItem(h, body));
|
newPosts.add(new BlogPostItem(g, h, body));
|
||||||
}
|
}
|
||||||
posts.addAll(newPosts);
|
posts.addAll(newPosts);
|
||||||
long duration = System.currentTimeMillis() - now;
|
long duration = System.currentTimeMillis() - now;
|
||||||
|
|||||||
@@ -146,9 +146,6 @@ public class BlogFragment extends BaseFragment implements BlogPostListener {
|
|||||||
ActivityCompat.startActivityForResult(getActivity(), i,
|
ActivityCompat.startActivityForResult(getActivity(), i,
|
||||||
REQUEST_WRITE_POST, options.toBundle());
|
REQUEST_WRITE_POST, options.toBundle());
|
||||||
return true;
|
return true;
|
||||||
case R.id.action_delete_blog:
|
|
||||||
showDeleteDialog();
|
|
||||||
return true;
|
|
||||||
default:
|
default:
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,7 +97,7 @@ class BlogPostAdapter extends
|
|||||||
ui.layout.setOnClickListener(new View.OnClickListener() {
|
ui.layout.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
listener.onBlogPostClick(ui.getAdapterPosition());
|
listener.onBlogPostClick(ui.getAdapterPosition(), post);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -160,7 +160,7 @@ class BlogPostAdapter extends
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface OnBlogPostClickListener {
|
interface OnBlogPostClickListener {
|
||||||
void onBlogPostClick(int position);
|
void onBlogPostClick(int position, BlogPostItem post);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,16 +5,19 @@ import android.support.annotation.NonNull;
|
|||||||
import org.briarproject.api.blogs.BlogPostHeader;
|
import org.briarproject.api.blogs.BlogPostHeader;
|
||||||
import org.briarproject.api.identity.Author;
|
import org.briarproject.api.identity.Author;
|
||||||
import org.briarproject.api.identity.Author.Status;
|
import org.briarproject.api.identity.Author.Status;
|
||||||
|
import org.briarproject.api.sync.GroupId;
|
||||||
import org.briarproject.api.sync.MessageId;
|
import org.briarproject.api.sync.MessageId;
|
||||||
|
|
||||||
// This class is not thread-safe
|
// This class is not thread-safe
|
||||||
class BlogPostItem implements Comparable<BlogPostItem> {
|
class BlogPostItem implements Comparable<BlogPostItem> {
|
||||||
|
|
||||||
|
private final GroupId groupId;
|
||||||
private final BlogPostHeader header;
|
private final BlogPostHeader header;
|
||||||
private final byte[] body;
|
private final byte[] body;
|
||||||
private boolean read;
|
private boolean read;
|
||||||
|
|
||||||
BlogPostItem(BlogPostHeader header, byte[] body) {
|
BlogPostItem(GroupId groupId, BlogPostHeader header, byte[] body) {
|
||||||
|
this.groupId = groupId;
|
||||||
this.header = header;
|
this.header = header;
|
||||||
this.body = body;
|
this.body = body;
|
||||||
read = header.isRead();
|
read = header.isRead();
|
||||||
@@ -24,6 +27,10 @@ class BlogPostItem implements Comparable<BlogPostItem> {
|
|||||||
return header.getId();
|
return header.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GroupId getGroupId() {
|
||||||
|
return groupId;
|
||||||
|
}
|
||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return header.getTitle();
|
return header.getTitle();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import org.briarproject.api.event.EventBus;
|
|||||||
import org.briarproject.api.event.EventListener;
|
import org.briarproject.api.event.EventListener;
|
||||||
import org.briarproject.api.identity.Author;
|
import org.briarproject.api.identity.Author;
|
||||||
import org.briarproject.api.identity.IdentityManager;
|
import org.briarproject.api.identity.IdentityManager;
|
||||||
|
import org.briarproject.api.sync.GroupId;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -57,16 +58,9 @@ public class FeedControllerImpl extends DbControllerImpl
|
|||||||
|
|
||||||
LOG.info("New blog post added");
|
LOG.info("New blog post added");
|
||||||
if (listener != null) {
|
if (listener != null) {
|
||||||
final BlogPostAddedEvent m = (BlogPostAddedEvent) e;
|
BlogPostAddedEvent m = (BlogPostAddedEvent) e;
|
||||||
final BlogPostHeader header = m.getHeader();
|
BlogPostHeader header = m.getHeader();
|
||||||
try {
|
addPost(m.getGroupId(), header);
|
||||||
final byte[] body = blogManager.getPostBody(header.getId());
|
|
||||||
final BlogPostItem post = new BlogPostItem(header, body);
|
|
||||||
listener.onBlogPostAdded(post);
|
|
||||||
} catch (DbException ex) {
|
|
||||||
if (LOG.isLoggable(WARNING))
|
|
||||||
LOG.log(WARNING, ex.toString(), ex);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,7 +81,7 @@ public class FeedControllerImpl extends DbControllerImpl
|
|||||||
blogManager.getPostHeaders(b.getId());
|
blogManager.getPostHeaders(b.getId());
|
||||||
for (BlogPostHeader h : header) {
|
for (BlogPostHeader h : header) {
|
||||||
byte[] body = blogManager.getPostBody(h.getId());
|
byte[] body = blogManager.getPostBody(h.getId());
|
||||||
posts.add(new BlogPostItem(h, body));
|
posts.add(new BlogPostItem(b.getId(), h, body));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
long duration = System.currentTimeMillis() - now;
|
long duration = System.currentTimeMillis() - now;
|
||||||
@@ -132,4 +126,21 @@ public class FeedControllerImpl extends DbControllerImpl
|
|||||||
public void setOnBlogPostAddedListener(OnBlogPostAddedListener listener) {
|
public void setOnBlogPostAddedListener(OnBlogPostAddedListener listener) {
|
||||||
this.listener = 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import static android.support.design.widget.Snackbar.LENGTH_LONG;
|
|||||||
import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation;
|
import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation;
|
||||||
import static org.briarproject.android.BriarActivity.GROUP_ID;
|
import static org.briarproject.android.BriarActivity.GROUP_ID;
|
||||||
import static org.briarproject.android.blogs.BlogActivity.BLOG_NAME;
|
import static org.briarproject.android.blogs.BlogActivity.BLOG_NAME;
|
||||||
|
import static org.briarproject.android.blogs.BlogActivity.IS_MY_BLOG;
|
||||||
import static org.briarproject.android.blogs.BlogActivity.REQUEST_WRITE_POST;
|
import static org.briarproject.android.blogs.BlogActivity.REQUEST_WRITE_POST;
|
||||||
|
|
||||||
public class FeedFragment extends BaseFragment implements
|
public class FeedFragment extends BaseFragment implements
|
||||||
@@ -168,8 +169,22 @@ public class FeedFragment extends BaseFragment implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBlogPostClick(int position) {
|
public void onBlogPostClick(int position, BlogPostItem post) {
|
||||||
// noop
|
byte[] groupId = post.getGroupId().getBytes();
|
||||||
|
String name = getString(R.string.blogs_personal_blog,
|
||||||
|
post.getAuthor().getName());
|
||||||
|
boolean myBlog = personalBlog != null &&
|
||||||
|
personalBlog.getId().equals(post.getGroupId());
|
||||||
|
|
||||||
|
Intent i = new Intent(getActivity(), BlogActivity.class);
|
||||||
|
i.putExtra(GROUP_ID, groupId);
|
||||||
|
i.putExtra(BLOG_NAME, name);
|
||||||
|
i.putExtra(IS_MY_BLOG, myBlog);
|
||||||
|
ActivityOptionsCompat options =
|
||||||
|
makeCustomAnimation(getActivity(),
|
||||||
|
android.R.anim.slide_in_left,
|
||||||
|
android.R.anim.slide_out_right);
|
||||||
|
startActivity(i, options.toBundle());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user