briar issueshttps://code.briarproject.org/groups/briar/-/issues2018-06-12T11:32:26Zhttps://code.briarproject.org/briar/briar/-/issues/425Forum Event race-condition2018-06-12T11:32:26ZErnir ErlingssonForum Event race-conditionCurrently there exists a race condition in the event handler when new forum messages are received.
Note that this is related to #310 Currently there exists a race condition in the event handler when new forum messages are received.
Note that this is related to #310 https://code.briarproject.org/briar/briar/-/issues/423Forum code re-factor2018-06-12T11:32:26ZErnir ErlingssonForum code re-factor* Remove redundancy in nested for-loops
* Use `NO_POSITION` instead of -1 when applicable
* Some comments have improper indenting
* Make sure that `position` is not directly in `onBindViewHolder`* Remove redundancy in nested for-loops
* Use `NO_POSITION` instead of -1 when applicable
* Some comments have improper indenting
* Make sure that `position` is not directly in `onBindViewHolder`Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/422Forum sub-tree duplicates2018-06-12T11:32:26ZErnir ErlingssonForum sub-tree duplicates>I've managed to generate a different bug now: subtrees can get duplicated. Specifically, if I close one subtree (at any level), the indicator for one of the subtrees below it at the same level (not always the immediate next subtree) wil...>I've managed to generate a different bug now: subtrees can get duplicated. Specifically, if I close one subtree (at any level), the indicator for one of the subtrees below it at the same level (not always the immediate next subtree) will also change to closed, and tapping it will "open" the subtree again, inserting it into the list a second time.Milestone Chttps://code.briarproject.org/briar/briar/-/issues/419Add Contextual Action Bar for selecting multiple Blogs2018-01-28T11:30:28ZTorsten GroteAdd Contextual Action Bar for selecting multiple BlogsThis ticket depends on #414, #412 and #418.
When long-pressing a blog in "My Blogs" or the "Blog List", the blog should be selected and a Contextual Action Bar should be shown that allows to delete the blogs or share them with contact...This ticket depends on #414, #412 and #418.
When long-pressing a blog in "My Blogs" or the "Blog List", the blog should be selected and a Contextual Action Bar should be shown that allows to delete the blogs or share them with contacts.
![delete_flow_small](/uploads/cc0b55fe246c0b9d6e4da8255d57f170/delete_flow_small.jpg)
Image update: Now with tab indicatorhttps://code.briarproject.org/briar/briar/-/issues/418UI for Deleting a Blog2018-01-28T11:30:28ZTorsten GroteUI for Deleting a BlogThis ticket depends on #410.
The code should prepare for multiple blogs being deleted in one go. The selection of multiple blogs and triggering the deletion action will be done in ticket #419.
![delete_flow](/uploads/9a44fc79fa0c5...This ticket depends on #410.
The code should prepare for multiple blogs being deleted in one go. The selection of multiple blogs and triggering the deletion action will be done in ticket #419.
![delete_flow](/uploads/9a44fc79fa0c59a8936a877cdea98787/delete_flow.jpg)
(1) hide delete behind the overflow to minimize accidental deletion
(2) + (3) show a message that makes the delete consequences obvious
There is an additional way to delete directly from the list. It has the advantage that multiple deletions are possible:
(4) long tap on a blog...
(5) highlights the entry and changes the app bar. Another long tap...
(6) selects a second entry, so the user can delete or share multiple blogs
Image update: now with tab indicatorsMilestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/417Combined Blog Feed2018-06-12T11:32:26ZTorsten GroteCombined Blog FeedThis ticket depends on #409 and would be implemented after #413 is complete.
![Blogs_5_tab_feed](/uploads/591e095406a64d8d2215ab223cc5bca8/Micro_blog_feed_with_chat_option.png)
This ticket depends on #409 and would be implemented after #413 is complete.
![Blogs_5_tab_feed](/uploads/591e095406a64d8d2215ab223cc5bca8/Micro_blog_feed_with_chat_option.png)
Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/416Blog Sharing Status UI2018-06-12T11:32:26ZTorsten GroteBlog Sharing Status UIThis ticket depends on #412.
Each blog should have an option to show the user how she shares this blog with others.
The implementor should look into the forum sharing status for code re-use.
![sharing_status_foverview](/uploads/...This ticket depends on #412.
Each blog should have an option to show the user how she shares this blog with others.
The implementor should look into the forum sharing status for code re-use.
![sharing_status_foverview](/uploads/2bd62c8ba17a326a1a9d61991a40f424/sharing_status_foverview.jpg)Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/415Blog Activity for Viewing List of Blog Posts2018-06-12T11:32:26ZTorsten GroteBlog Activity for Viewing List of Blog PostsThis ticket depends on #414 and/or #411.
When clicking on a blog, a list of posts should be shown to the user.
![blog_-_entires2](/uploads/b5565269d04e334ee204172c9334a742/blog_-_entires2.jpg)This ticket depends on #414 and/or #411.
When clicking on a blog, a list of posts should be shown to the user.
![blog_-_entires2](/uploads/b5565269d04e334ee204172c9334a742/blog_-_entires2.jpg)Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/414Add a Blog List tab that shows all subscribed blogs2018-06-12T11:32:26ZTorsten GroteAdd a Blog List tab that shows all subscribed blogsThis ticket depends on #409 and #413.
When a blog from Available Blogs (#413) has been clicked, it will be added to the "Blog List" tab. Here all subscribed blogs should be shown.
Phase 1
![Blogs_5_tab_blog_list_sortiert](/uploa...This ticket depends on #409 and #413.
When a blog from Available Blogs (#413) has been clicked, it will be added to the "Blog List" tab. Here all subscribed blogs should be shown.
Phase 1
![Blogs_5_tab_blog_list_sortiert](/uploads/d116fb881fd0b127cbc69bb7a7bd5531/Blogs_5_tab_blog_list_sortiert.png)
Order:
(1) unread messages with latest posts first (2) date of last post
Phase2
Implement possibility to pin an element to the top
![Blogs_5_tab_blog_list_sortiert_mit_pin](/uploads/bbf8c4b2885548456daef418df7cebce/Blogs_5_tab_blog_list_sortiert_mit_pin.png)
Order:
(1) pinned blogs (2) unread messages with latest posts first (3) date of last post
https://code.briarproject.org/briar/briar/-/issues/413Show list of Available Blogs2018-06-12T11:32:26ZTorsten GroteShow list of Available BlogsThis ticket depends on #409 and #412. A child fragment should be added to the TabLayout that shows all blogs the user can still subscribe to.
![New_marker_Tag_v02](/uploads/86e41472322c9ed607353a2ec42c4a2c/New_marker_Tag_v02.png)
U...This ticket depends on #409 and #412. A child fragment should be added to the TabLayout that shows all blogs the user can still subscribe to.
![New_marker_Tag_v02](/uploads/86e41472322c9ed607353a2ec42c4a2c/New_marker_Tag_v02.png)
Update: Tab indicator and tags
Sorting order (from top to bottom):
(1) new+contact
(2) new
(3) contact
(4) date of sharing
A blog is considered as new when it was added in the last 24h hours. The date in the mockup refers to the time the blog was added and not the time of the last post, because that information is not available.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/412UI for Sharing a Blog with Contacts2018-01-28T11:30:28ZTorsten GroteUI for Sharing a Blog with ContactsThis ticket depends on #410.
The code should prepare for multiple blogs being shared in one go. The selection of multiple blogs and triggering the sharing action for them will be done in ticket #419.
![sharing_blogs_overview_small...This ticket depends on #410.
The code should prepare for multiple blogs being shared in one go. The selection of multiple blogs and triggering the sharing action for them will be done in ticket #419.
![sharing_blogs_overview_small](/uploads/2788d30a48a67e29e54d25f741801011/sharing_blogs_overview_small.jpg)
Update: Tab indicators addedhttps://code.briarproject.org/briar/briar/-/issues/411UI for creating new Blog Posts2018-06-12T11:32:26ZTorsten GroteUI for creating new Blog PostsThis ticket depends on #410.
![new_blog_new_post](/uploads/ace1431ea4b716f2b3fd0447498a125a/composer_flow.jpg)
There are two patterns: Compose in a distinct screen (like it is shown above) or just open keyboard and input field (li...This ticket depends on #410.
![new_blog_new_post](/uploads/ace1431ea4b716f2b3fd0447498a125a/composer_flow.jpg)
There are two patterns: Compose in a distinct screen (like it is shown above) or just open keyboard and input field (like in private messages and forums). We planned to use the distinct screen for the blog feature before we changed it to micro blogs. I'm still a fan of this pattern, but maybe it is of higher importance for the user to still see the feed now that we offer the microblog. Open for suggestions.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/410My Blogs tab with option to add new blogs2018-06-12T11:32:26ZTorsten GroteMy Blogs tab with option to add new blogsThis tickets depends and builds on #409. A tab "My Blogs" should be created that shows a list of the user's own blogs. There should be a button in the toolbar to add a new blog with a name and a description.
![410-adding-post](/upload...This tickets depends and builds on #409. A tab "My Blogs" should be created that shows a list of the user's own blogs. There should be a button in the toolbar to add a new blog with a name and a description.
![410-adding-post](/uploads/8d87c65e6c5a47aec784fe6374b64dee/410-adding-post.jpg)
1. the user wants to start a new blog and taps the + icon
2. she composes a title (check for max number of characters)
3. and a description (check for max number of characters)
4. the new empty blog is added to the "My blogs" list. Blogs are sorted by creation time by default. But they can also be sorted sorted alphabetically and by date of latest post.
We could of course combine steps (2) and (3).
![Combined](https://code.briarproject.org/akwizgran/briar/uploads/1b37a8ece05ea4b8f11b214a38b9f5b5/Add_new_blog_2_in_1.jpg)
Sort order:
always put the last blog the user interacted with (create, edit, post) on top
Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/409Blog Fragment in Navigation Drawer with Tabs2018-06-12T11:32:27ZTorsten GroteBlog Fragment in Navigation Drawer with TabsThis ticket is for adding a new fragment to the navigation drawer that holds a [TabLayout](https://developer.android.com/reference/android/support/design/widget/TabLayout.html). Each tab should be able to hold a child fragment. Swiping l...This ticket is for adding a new fragment to the navigation drawer that holds a [TabLayout](https://developer.android.com/reference/android/support/design/widget/TabLayout.html). Each tab should be able to hold a child fragment. Swiping left/right in the child fragment should switch the tab. Clicking on the tab should switch to the respective fragment.
Creating the child fragments with content is **not** part of this ticket.
![Navigation Drawer](https://code.briarproject.org/akwizgran/briar/uploads/342b38ffb0991760da0d2a03beaf42f9/navidrawer_new_blogs.jpg)
![Blogs_5_tab_feed](/uploads/0025186abf95bccf235827d03d3636c3/Blogs_5_tab_feed.jpg)
Update: just added a mockup with a tab indicator
Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/408Forum List Unread Posts Badges2018-06-12T11:32:27ZMegaloxForum List Unread Posts BadgesTo provide consistency between new messages, new blog posts and new forum posts the notification for forum posts has to be changed from text to a badge. The text/subtitle should now show the number of all posts.To provide consistency between new messages, new blog posts and new forum posts the notification for forum posts has to be changed from text to a badge. The text/subtitle should now show the number of all posts.Milestone CTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/406Sharing Blogs User Interface2018-01-28T11:30:28ZTorsten GroteSharing Blogs User InterfaceA User Interface for sharing blogs needs to be designed and implemented. This is the main ticket for that. Sub-tickets should be created where appropriate.
Assuming that we model blogs closely to how the UI for forums work, this could...A User Interface for sharing blogs needs to be designed and implemented. This is the main ticket for that. Sub-tickets should be created where appropriate.
Assuming that we model blogs closely to how the UI for forums work, this could be suitable sub-tickets:
* UI to share a blog with contacts (#412)
* UI to show all unanswered blog invitations (#413)
* UI to show personal blog invitations (in private conversation with notification?)
* UI to show sharing status of a blog (#416)
* Contextual Action Bar for sharing multiple Blogs (#419)Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/405Blog User Interface2018-01-28T11:30:28ZTorsten GroteBlog User InterfaceA Blog User Interface needs to be designed and implemented. This is the main ticket for that. Sub-tickets have this structure:
* Blog Fragment in Navigation Drawer (#409)
* UI to Create a New Blog (#410)
* UI for Writing Blog...A Blog User Interface needs to be designed and implemented. This is the main ticket for that. Sub-tickets have this structure:
* Blog Fragment in Navigation Drawer (#409)
* UI to Create a New Blog (#410)
* UI for Writing Blog Posts (#411)
* Save Blog Posts as Draft and Show List of Drafts (#420)
* Research and Implement Rich Text Editor for Writing Blog Posts (#421)
* UI for deleting blog Posts (#418)
* Contextual Action Bar for deleting multiple Blogs (#419)
* UI for Listing All Subscribed Blogs (#414)
* UI for Viewing Blogs (#415)
* Blog Post Activity (#428)
* Display posts from all blogs the user subscribes to in a single combined feed (#417)
Please note that this ticket is **not about sharing** blogs with others. This is handled by ticket #406.Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/404Create a Blog Factory2018-06-12T11:32:27ZTorsten GroteCreate a Blog FactoryBoth, the Blog Client (#402) and the Blog Sharing Client (#403) will need to construct blogs. Create a `BlogFactory` that can be used by both.
A blog is one group. The group descriptor of a blog is a BDF list with two elements: name (...Both, the Blog Client (#402) and the Blog Sharing Client (#403) will need to construct blogs. Create a `BlogFactory` that can be used by both.
A blog is one group. The group descriptor of a blog is a BDF list with two elements: name (string) and public_key (raw).Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/403Blog Sharing Client Implementation2018-04-16T16:24:37ZTorsten GroteBlog Sharing Client ImplementationA [BSP](https://code.briarproject.org/akwizgran/briar/wikis/BSP) Client similar to the `ForumSharingManager` should be written that allows the user to
* invite contacts to a blog
* respond to incoming invitations to blogs
* get all b...A [BSP](https://code.briarproject.org/akwizgran/briar/wikis/BSP) Client similar to the `ForumSharingManager` should be written that allows the user to
* invite contacts to a blog
* respond to incoming invitations to blogs
* get all blog invitations related to one contact to be shown in the UI (private conversations?)
* get all blogs the user has been invited, but not responded to - to be shown in the UI
* inform invited contacts that the blog was left/removed
Here's an initial sketch of how the interface could look like:
```java
ClientId getClientId();
void sendBlogInvitation(Blog b, ContactId contactId, String message) throws DbException;
void respondToInvitation(Blog b, ContactId contactId, boolean accept) throws DbException;
Collection<BlogInvitationMessage> getBlogInvitationMessages(ContactId contactId) throws DbException;
Collection<Blog> getAvailableBlogs() throws DbException;
```Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/402Blog Client Implementation2018-04-16T16:24:37ZTorsten GroteBlog Client ImplementationA [BSP](https://code.briarproject.org/akwizgran/briar/wikis/BSP) Client similar to the `ForumManager` should be written that allows the user to
* create a new blog
* add posts to the blog
* get all blogs to be shown in the UI
* get ...A [BSP](https://code.briarproject.org/akwizgran/briar/wikis/BSP) Client similar to the `ForumManager` should be written that allows the user to
* create a new blog
* add posts to the blog
* get all blogs to be shown in the UI
* get blog posts for one blog
Here's an initial sketch of how the interface could look like:
```java
ClientId getClientId();
void addBlog(Blog b) throws DbException;
void addLocalPost(BlogPost p) throws DbException;
Blog getBlog(GroupId g) throws DbException;
Blog getBlog(Transaction txn, GroupId g) throws DbException;
Collection<Blog> getBlogs() throws DbException;
Collection<BlogPost> getBlogPosts(Blog b) throws DbException;
void registerRemoveBlogHook(RemoveBlogHook hook);
interface RemoveBlogHook {
void removingBlog(Transaction txn, Blog b) throws DbException;
}
```
# Open Questions
1. Should it be possible to delete a blog and if yes, how will all subscribers be informed about it?
2. Do we split `BlogPost` in a blog header and a blog body like done for private and forum messages?Milestone DTorsten GroteTorsten Grote