diff --git a/briar-android/res/menu/blogs_my_blog_actions.xml b/briar-android/res/menu/blogs_my_blog_actions.xml
index 95cb880e7..5c9052edb 100644
--- a/briar-android/res/menu/blogs_my_blog_actions.xml
+++ b/briar-android/res/menu/blogs_my_blog_actions.xml
@@ -9,10 +9,4 @@
android:title="@string/blogs_write_blog_post"
app:showAsAction="ifRoom"/>
-
-
\ No newline at end of file
diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml
index 2d1daa679..3c2084bd7 100644
--- a/briar-android/res/values/strings.xml
+++ b/briar-android/res/values/strings.xml
@@ -278,6 +278,7 @@
Blog failed to load
Blog Post failed to load
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.
+ %s\'s Personal Blog
Delete Blog
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.
Delete Blog
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogActivity.java b/briar-android/src/org/briarproject/android/blogs/BlogActivity.java
index cf38dce1e..ceb80f61a 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogActivity.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogActivity.java
@@ -126,7 +126,7 @@ public class BlogActivity extends BriarActivity implements BlogPostListener,
}
@Override
- public void onBlogPostClick(final int position) {
+ public void onBlogPostClick(int position, BlogPostItem post) {
loadBlogPosts(position, true);
}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
index f34e63469..0ec355d70 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogControllerImpl.java
@@ -78,7 +78,7 @@ public class BlogControllerImpl extends DbControllerImpl
@Override
public void eventOccurred(Event e) {
if (e instanceof BlogPostAddedEvent) {
- final BlogPostAddedEvent m = (BlogPostAddedEvent) e;
+ BlogPostAddedEvent m = (BlogPostAddedEvent) e;
if (m.getGroupId().equals(groupId)) {
LOG.info("New blog post added");
if (posts == null) {
@@ -89,8 +89,8 @@ public class BlogControllerImpl extends DbControllerImpl
final BlogPostHeader header = m.getHeader();
// FIXME: Don't make blocking calls in event handlers
try {
- final byte[] body = blogManager.getPostBody(header.getId());
- final BlogPostItem post = new BlogPostItem(header, body);
+ byte[] body = blogManager.getPostBody(header.getId());
+ BlogPostItem post = new BlogPostItem(groupId, header, body);
posts.add(post);
listener.onBlogPostAdded(post, m.isLocal());
} catch (DbException ex) {
@@ -130,7 +130,7 @@ public class BlogControllerImpl extends DbControllerImpl
blogManager.getPostHeaders(g);
for (BlogPostHeader h : header) {
byte[] body = blogManager.getPostBody(h.getId());
- newPosts.add(new BlogPostItem(h, body));
+ newPosts.add(new BlogPostItem(g, h, body));
}
posts.addAll(newPosts);
long duration = System.currentTimeMillis() - now;
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogFragment.java b/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
index 7ee529ca3..b83d39bde 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogFragment.java
@@ -146,9 +146,6 @@ public class BlogFragment extends BaseFragment implements BlogPostListener {
ActivityCompat.startActivityForResult(getActivity(), i,
REQUEST_WRITE_POST, options.toBundle());
return true;
- case R.id.action_delete_blog:
- showDeleteDialog();
- return true;
default:
return super.onOptionsItemSelected(item);
}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostAdapter.java b/briar-android/src/org/briarproject/android/blogs/BlogPostAdapter.java
index dbcce2965..b1b9f322e 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostAdapter.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogPostAdapter.java
@@ -97,7 +97,7 @@ class BlogPostAdapter extends
ui.layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- listener.onBlogPostClick(ui.getAdapterPosition());
+ listener.onBlogPostClick(ui.getAdapterPosition(), post);
}
});
}
@@ -160,7 +160,7 @@ class BlogPostAdapter extends
}
interface OnBlogPostClickListener {
- void onBlogPostClick(int position);
+ void onBlogPostClick(int position, BlogPostItem post);
}
}
diff --git a/briar-android/src/org/briarproject/android/blogs/BlogPostItem.java b/briar-android/src/org/briarproject/android/blogs/BlogPostItem.java
index cdb9c15ef..10a76b511 100644
--- a/briar-android/src/org/briarproject/android/blogs/BlogPostItem.java
+++ b/briar-android/src/org/briarproject/android/blogs/BlogPostItem.java
@@ -5,16 +5,19 @@ import android.support.annotation.NonNull;
import org.briarproject.api.blogs.BlogPostHeader;
import org.briarproject.api.identity.Author;
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
class BlogPostItem implements Comparable {
+ private final GroupId groupId;
private final BlogPostHeader header;
private final byte[] body;
private boolean read;
- BlogPostItem(BlogPostHeader header, byte[] body) {
+ BlogPostItem(GroupId groupId, BlogPostHeader header, byte[] body) {
+ this.groupId = groupId;
this.header = header;
this.body = body;
read = header.isRead();
@@ -24,6 +27,10 @@ class BlogPostItem implements Comparable {
return header.getId();
}
+ public GroupId getGroupId() {
+ return groupId;
+ }
+
public String getTitle() {
return header.getTitle();
}
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedControllerImpl.java b/briar-android/src/org/briarproject/android/blogs/FeedControllerImpl.java
index 1cc49a3e1..98ed58626 100644
--- a/briar-android/src/org/briarproject/android/blogs/FeedControllerImpl.java
+++ b/briar-android/src/org/briarproject/android/blogs/FeedControllerImpl.java
@@ -12,6 +12,7 @@ import org.briarproject.api.event.EventBus;
import org.briarproject.api.event.EventListener;
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;
@@ -57,16 +58,9 @@ public class FeedControllerImpl extends DbControllerImpl
LOG.info("New blog post added");
if (listener != null) {
- final BlogPostAddedEvent m = (BlogPostAddedEvent) e;
- final BlogPostHeader header = m.getHeader();
- try {
- 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);
- }
+ BlogPostAddedEvent m = (BlogPostAddedEvent) e;
+ BlogPostHeader header = m.getHeader();
+ addPost(m.getGroupId(), header);
}
}
@@ -87,7 +81,7 @@ public class FeedControllerImpl extends DbControllerImpl
blogManager.getPostHeaders(b.getId());
for (BlogPostHeader h : header) {
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;
@@ -132,4 +126,21 @@ public class FeedControllerImpl extends DbControllerImpl
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);
+ }
+ }
+ });
+ }
+
}
diff --git a/briar-android/src/org/briarproject/android/blogs/FeedFragment.java b/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
index f875dd5c2..0f4fada23 100644
--- a/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
+++ b/briar-android/src/org/briarproject/android/blogs/FeedFragment.java
@@ -32,6 +32,7 @@ import static android.support.design.widget.Snackbar.LENGTH_LONG;
import static android.support.v4.app.ActivityOptionsCompat.makeCustomAnimation;
import static org.briarproject.android.BriarActivity.GROUP_ID;
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;
public class FeedFragment extends BaseFragment implements
@@ -168,8 +169,22 @@ public class FeedFragment extends BaseFragment implements
}
@Override
- public void onBlogPostClick(int position) {
- // noop
+ public void onBlogPostClick(int position, BlogPostItem post) {
+ 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