briar issueshttps://code.briarproject.org/groups/briar/-/issues2018-06-12T11:32:22Zhttps://code.briarproject.org/briar/briar/-/issues/559Show elapsed time in blog feeds and individual blog posts2018-06-12T11:32:22ZakwizgranShow elapsed time in blog feeds and individual blog postsThe timestamps in blog feeds should be consistent with the rest of the app: currently they show the absolute time rather than the elapsed time.
The timestamp in the detail view for an individual blog post shows the elapsed time, but I...The timestamps in blog feeds should be consistent with the rest of the app: currently they show the absolute time rather than the elapsed time.
The timestamp in the detail view for an individual blog post shows the elapsed time, but I'm guessing it doesn't update every minute as it's not based on BriarRecyclerView.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/555Thread safety and blocking issues in BlogControllerImpl2018-06-12T11:32:22ZakwizgranThread safety and blocking issues in BlogControllerImplMilestone Dakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/553Pause Periodic List Refresh when View is not Visible2018-06-12T11:32:22ZTorsten GrotePause Periodic List Refresh when View is not VisibleMR !238 introduced periodic refresh of recycler view. There is cases when the view is hidden and the refresh is still called, because `onDetachedFromWindow()` is only called when the view is removed from its parent.MR !238 introduced periodic refresh of recycler view. There is cases when the view is hidden and the refresh is still called, because `onDetachedFromWindow()` is only called when the view is removed from its parent.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/544PersistentData classes aren't thread-safe2018-01-28T11:30:28ZakwizgranPersistentData classes aren't thread-safeForumPersistentData and BlogPersistentData aren't thread-safe but they're accessed by multiple threads. They hold references to non-thread-safe collections. Callers make multiple calls assuming that the state won't change between calls, ...ForumPersistentData and BlogPersistentData aren't thread-safe but they're accessed by multiple threads. They hold references to non-thread-safe collections. Callers make multiple calls assuming that the state won't change between calls, potentially causing NPEs and other less obvious bugs.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/543Flicker when forum invitation is removed from list2018-06-12T11:32:22ZakwizgranFlicker when forum invitation is removed from listAfter accepting a forum invitation, there is a noticeable flicker when the list of invitations is redrawn.After accepting a forum invitation, there is a noticeable flicker when the list of invitations is redrawn.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/536ClassNotFoundException after cancelling crash report2018-06-12T11:32:22ZakwizgranClassNotFoundException after cancelling crash reportAfter cancelling the crash report dialog for the crash recorded in https://code.briarproject.org/akwizgran/briar/issues/443#note_9088, the following crash occurred without further user interaction on Android 2.3.3:
```
07-27 14:22:22...After cancelling the crash report dialog for the crash recorded in https://code.briarproject.org/akwizgran/briar/issues/443#note_9088, the following crash occurred without further user interaction on Android 2.3.3:
```
07-27 14:22:22.237 26979-26979/org.briarproject E/Parcel: Class not found when unmarshalling: android.support.v7.widget.RecyclerView$SavedState, e: java.lang.ClassNotFoundException: android.support.v7.widget.RecyclerView$SavedState
07-27 14:22:22.237 26979-26979/org.briarproject W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x400205a0)
07-27 14:22:22.257 26979-26979/org.briarproject E/ACRA: ACRA caught a RuntimeException for org.briarproject
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.briarproject/org.briarproject.android.NavDrawerActivity}: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v7.widget.RecyclerView$SavedState
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1821)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)
at android.app.ActivityThread.access$1500(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4268)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: android.support.v7.widget.RecyclerView$SavedState
at android.os.Parcel.readParcelable(Parcel.java:1958)
at android.os.Parcel.readValue(Parcel.java:1846)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:2112)
at android.os.Parcel.readSparseArray(Parcel.java:1568)
at android.os.Parcel.readValue(Parcel.java:1903)
at android.os.Parcel.readMapInternal(Parcel.java:2083)
at android.os.Bundle.unparcel(Bundle.java:208)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:1167)
at android.support.design.internal.NavigationMenuPresenter.onRestoreInstanceState(NavigationMenuPresenter.java:174)
at android.support.v7.view.menu.MenuBuilder.dispatchRestoreInstanceState(MenuBuilder.java:349)
at android.support.v7.view.menu.MenuBuilder.restorePresenterStates(MenuBuilder.java:361)
at android.support.design.widget.NavigationView.onRestoreInstanceState(NavigationView.java:192)
at android.view.View.dispatchRestoreInstanceState(View.java:6325)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1297)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1301)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1301)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1301)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1301)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:1301)
at android.view.View.restoreHierarchyState(View.java:6304)
at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1558)
at android.app.Activity.onRestoreInstanceState(Activity.java:882)
at android.app.Activity.performRestoreInstanceState(Activity.java:854)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1162)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1799)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1842)
at android.app.ActivityThread.access$1500(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4268)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
```
Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/535FormatException when loading contact list after receiving invitation2018-06-12T11:32:22ZakwizgranFormatException when loading contact list after receiving invitationThe following exception was logged when a forum invitation was received. The same forum had previously been shared by the same contact, accepted, and left.
```
07-27 13:57:48.047 1084-1144/org.briarproject I/InviteeEngine: Received I...The following exception was logged when a forum invitation was received. The same forum had previously been shared by the same contact, accepted, and left.
```
07-27 13:57:48.047 1084-1144/org.briarproject I/InviteeEngine: Received INVITE in state AWAIT_INVITATION with session ID 1124035826 in group 1505195939. Moving on to state AWAIT_LOCAL_RESPONSE
07-27 13:57:48.257 1084-1144/org.briarproject I/ContactListFragment: Message added, reloading
07-27 13:57:48.267 1084-1144/org.briarproject I/ContactListFragment: Message added, reloading
07-27 13:57:48.297 1084-1144/org.briarproject W/ContactListFragment: org.briarproject.api.db.DbException: org.briarproject.api.FormatException
org.briarproject.api.db.DbException: org.briarproject.api.FormatException
at org.briarproject.messaging.MessagingManagerImpl.getContactId(MessagingManagerImpl.java:132)
at org.briarproject.android.contact.ContactListFragment$4.run(ContactListFragment.java:278)
at org.briarproject.android.controller.DbControllerImpl$1.run(DbControllerImpl.java:35)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1027)
Caused by: org.briarproject.api.FormatException
at org.briarproject.api.data.BdfDictionary.getLong(BdfDictionary.java:62)
at org.briarproject.messaging.MessagingManagerImpl.getContactId(MessagingManagerImpl.java:130)
at org.briarproject.android.contact.ContactListFragment$4.run(ContactListFragment.java:278)
at org.briarproject.android.controller.DbControllerImpl$1.run(DbControllerImpl.java:35)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1027)
```
Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/534Contacts are not properly greyed out on older Android versions2018-06-12T11:32:22ZakwizgranContacts are not properly greyed out on older Android versionsWhen sharing a forum, contacts who already belong to the forum are greyed out in the contact chooser. On newer Android versions (tested on Android 5.1), the avatar, contact name and checkbox all have a light grey fade. On older versions ...When sharing a forum, contacts who already belong to the forum are greyed out in the contact chooser. On newer Android versions (tested on Android 5.1), the avatar, contact name and checkbox all have a light grey fade. On older versions (tested on Android 2.3.3), the avatar has a dark grey fade, the contact name does not appear to be faded, and the checkbox has a light grey fade. It's not obvious that the item is meant to be disabled - it looks like the avatar is just discoloured.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/533Explain why forum can't be shared with contact2018-06-12T11:32:22ZakwizgranExplain why forum can't be shared with contactWhen sharing a forum, contacts who already belong to the forum are greyed out in the contact chooser, but there's no explanation of why they can't be selected. Add an explanation.When sharing a forum, contacts who already belong to the forum are greyed out in the contact chooser, but there's no explanation of why they can't be selected. Add an explanation.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/528NPE when saving instance state of ForumActivity2018-06-12T11:32:23ZakwizgranNPE when saving instance state of ForumActivityImmediately after the crash documented in #527, another crash occurred without any user interaction.
```
07-27 12:32:21.664 15493-15493/? E/ACRA: ACRA caught a RuntimeException for org.briarproject
java.lang.RuntimeException: Unable...Immediately after the crash documented in #527, another crash occurred without any user interaction.
```
07-27 12:32:21.664 15493-15493/? E/ACRA: ACRA caught a RuntimeException for org.briarproject
java.lang.RuntimeException: Unable to pause activity {org.briarproject/org.briarproject.android.forum.ForumActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2731)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2678)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2651)
at android.app.ActivityThread.access$1700(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1045)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4268)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at org.briarproject.android.forum.ForumActivity$ForumAdapter.access$100(ForumActivity.java:371)
at org.briarproject.android.forum.ForumActivity.onSaveInstanceState(ForumActivity.java:157)
at android.app.Activity.performSaveInstanceState(Activity.java:1088)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1317)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2703)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:2678)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:2651)
at android.app.ActivityThread.access$1700(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1045)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4268)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
```
Milestone Dakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/517Simple UI for Managing RSS Feeds2018-06-12T11:32:23ZTorsten GroteSimple UI for Managing RSS FeedsImplement the design from #483.Implement the design from #483.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/515Starting Intent from Preferences does not work with different app id2018-06-12T11:32:23ZTorsten GroteStarting Intent from Preferences does not work with different app idWhen changing the app id to support simultaneous installations on one device for testing purposes such as an app id suffix .debug, the intents from the preferences screen (password change and panic) crash the app since the package id is ...When changing the app id to support simultaneous installations on one device for testing purposes such as an app id suffix .debug, the intents from the preferences screen (password change and panic) crash the app since the package id is hardcoded in the intent.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/514NPE Crash when adding contacts in emulator2018-06-12T11:32:23ZTorsten GroteNPE Crash when adding contacts in emulator```
07-22 11:12:00.947 3067-3067/? W/CameraView: Error stopping camera preview
java.lang.NullPointerException: Attempt to invoke interface method 'void org.briarproject.android.util.PreviewC...```
07-22 11:12:00.947 3067-3067/? W/CameraView: Error stopping camera preview
java.lang.NullPointerException: Attempt to invoke interface method 'void org.briarproject.android.util.PreviewConsumer.stop()' on a null object reference
at org.briarproject.android.util.CameraView.stopConsumer(CameraView.java:121)
at org.briarproject.android.util.CameraView.stopPreview(CameraView.java:108)
at org.briarproject.android.util.CameraView.stop(CameraView.java:87)
at org.briarproject.android.keyagreement.ShowQrCodeFragment.releaseCamera(ShowQrCodeFragment.java:240)
at org.briarproject.android.keyagreement.ShowQrCodeFragment.onPause(ShowQrCodeFragment.java:169)
at android.support.v4.app.Fragment.performPause(Fragment.java:2139)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1117)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
at android.support.v4.app.FragmentManagerImpl.dispatchPause(FragmentManager.java:2060)
at android.support.v4.app.FragmentController.dispatchPause(FragmentController.java:207)
at android.support.v4.app.FragmentActivity.onPause(FragmentActivity.java:444)
at org.briarproject.android.BaseActivity.onPause(BaseActivity.java:72)
at org.briarproject.android.keyagreement.KeyAgreementActivity.onPause(KeyAgreementActivity.java:114)
at android.app.Activity.performPause(Activity.java:6809)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1322)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:3685)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3662)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3636)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3610)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1461)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:5969)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691)
07-22 11:12:00.948 3067-3067/? W/CameraView: Error releasing camera
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.hardware.Camera.release()' on a null object reference
at org.briarproject.android.util.CameraView.stop(CameraView.java:89)
at org.briarproject.android.keyagreement.ShowQrCodeFragment.releaseCamera(ShowQrCodeFragment.java:240)
at org.briarproject.android.keyagreement.ShowQrCodeFragment.onPause(ShowQrCodeFragment.java:169)
at android.support.v4.app.Fragment.performPause(Fragment.java:2139)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1117)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1234)
at android.support.v4.app.FragmentManagerImpl.dispatchPause(FragmentManager.java:2060)
at android.support.v4.app.FragmentController.dispatchPause(FragmentController.java:207)
at android.support.v4.app.FragmentActivity.onPause(FragmentActivity.java:444)
at org.briarproject.android.BaseActivity.onPause(BaseActivity.java:72)
at org.briarproject.android.keyagreement.KeyAgreementActivity.onPause(KeyAgreementActivity.java:114)
at android.app.Activity.performPause(Activity.java:6809)
at android.app.Instrumentation.callActivityOnPause(Instrumentation.java:1322)
at android.app.ActivityThread.performPauseActivityIfNeeded(ActivityThread.java:3685)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3662)
at android.app.ActivityThread.performPauseActivity(ActivityThread.java:3636)
at android.app.ActivityThread.handlePauseActivity(ActivityThread.java:3610)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1461)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:5969)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:691)
```Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/498Implement UI for sharing blogs2018-06-12T11:32:24ZakwizgranImplement UI for sharing blogsSub-task of #406. Depends on #497.Sub-task of #406. Depends on #497.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/497Implement backend for sharing blogs2018-06-12T11:32:24ZakwizgranImplement backend for sharing blogsSub-task of #406.Sub-task of #406.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/496Implement UI for reblogging and blog comments2018-06-12T11:32:24ZakwizgranImplement UI for reblogging and blog commentsSub-task of #437. Depends on #494.Sub-task of #437. Depends on #494.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/495Design UX for sharing blogs2018-06-12T11:32:24ZakwizgranDesign UX for sharing blogsThe user's personal blog is automatically shared with contacts. The user may also want to share other blogs that she subscribes to.
Example: A and B are contacts, B and C are contacts. B automatically subscribes to A and C's personal ...The user's personal blog is automatically shared with contacts. The user may also want to share other blogs that she subscribes to.
Example: A and B are contacts, B and C are contacts. B automatically subscribes to A and C's personal blogs. B wants to share A's personal blog with C.
I think this can be very similar to the UX for sharing forums. But we need to think about how the user will access this feature. Unlike forums, we don't have a screen that shows posts from a single blog, where the share action would naturally fit.
Sub-task of #406.Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/494Implement backend for reblogging and blog comments2018-04-16T16:24:37ZakwizgranImplement backend for reblogging and blog commentsSub-task of #437.
# Group Messages
The group descriptor is a BDF list with three elements: `name` (string), `author_name` (string) and `public_key` (raw). Posts are signed with the corresponding private key.
## 0: Post
A blog p...Sub-task of #437.
# Group Messages
The group descriptor is a BDF list with three elements: `name` (string), `author_name` (string) and `public_key` (raw). Posts are signed with the corresponding private key.
## 0: Post
A blog post.
* `type` (int) - Must be 0
* `content` (string) - The content of the blog post
* `signature` (raw) - A signature over a list with the following elements:
* `group_id` (raw) - Taken from the [message header](BSP#message-format)
* `timestamp` (int) - Taken from the [message header](BSP#message-format)
* `type` (int) - As described above
* `content` (string) - As described above
Dependencies: None
## 1: Comment
A comment on a blog post.
* `type` (int) - Must be 1
* `content` (string or null) - An optional comment added to the post
* `parent_original_id` (raw) - The ID of a post or comment in this group or another group
* `parent_id` (raw) - The ID of a post, comment, wrapped post or wrapped comment in this group, which had the ID `parent_original_id` in the group where it was originally posted
* `signature` (raw) - A signature over a list with the following elements:
* `group_id` (raw) - Taken from the [message header](BSP#message-format)
* `timestamp` (int) - Taken from the [message header](BSP#message-format)
* `type` (int) - As described above
* `content` (string or null) - As described above
* `parent_original_id` (raw) - As described above
* `parent_id` (raw) - As described above
Dependencies: `parent_id`
## 2: Wrapped Post
A post from another group that has been reposted to this group. Not shared with other subscribers unless it is a transitive dependency of a valid post or comment in this group.
* `type` (int) - Must be 2
* `post_group_descriptor` (raw) - The descriptor of the group where the post was originally posted
* `post_timestamp` (int) - Taken from the original post
* `post_content`(string) - Taken from the original post
* `post_signature` (raw) - Taken from the original post
Dependencies: None
## 3: Wrapped Comment
A comment from another group that has been reposted to this group. Not shared with other subscribers unless it is a transitive dependency of a valid post or comment in this group.
* `type` (int) - Must be 3
* `comment_group_descriptor` (raw) - The descriptor of the group where the comment was originally posted
* `comment_timestamp` (int) - Taken from the original comment
* `comment_content` (string or null) - Taken from the original comment
* `comment_parent_original_id` (raw) - Taken from the original comment
* `comment_parent_id` (raw) - Taken from the original comment
* `comment_signature` (raw) - Taken from the original comment
* `parent_id` (raw) - The ID of a post, comment, wrapped post or wrapped comment in this group, which had the ID `comment_parent_original_id` in the group where it was originally posted
Dependencies: `parent_id`
Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/493Design UX for reblogging and blog comments2018-06-12T11:32:24ZakwizgranDesign UX for reblogging and blog commentsSub-task of #437.Sub-task of #437.Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/488Show notifications for new blog posts2018-06-12T11:32:24ZakwizgranShow notifications for new blog postsShow a notification when a new blog post is received, unless the blog feed is currently visible.
Sub-task of #134.Show a notification when a new blog post is received, unless the blog feed is currently visible.
Sub-task of #134.Milestone DTorsten GroteTorsten Grote