briar issueshttps://code.briarproject.org/briar/briar/-/issues2018-06-12T11:32:29Zhttps://code.briarproject.org/briar/briar/-/issues/345Identity selector when adding contacts is confusing2018-06-12T11:32:29ZakwizgranIdentity selector when adding contacts is confusingTesters found the identity selector confusing when adding contacts.Testers found the identity selector confusing when adding contacts.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/344Tester could not find contact screen2018-06-12T11:32:29ZakwizgranTester could not find contact screenA tester could not find the contact screen when he was already there. The contact list was empty, but the "No contacts" empty state message should have been visible, and the window title should have been "Contacts". I'm not sure what we ...A tester could not find the contact screen when he was already there. The contact list was empty, but the "No contacts" empty state message should have been visible, and the window title should have been "Contacts". I'm not sure what we can do to make this clearer.
Related to #327.Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/341Co-ordinate initial translations2018-06-12T11:32:29ZakwizgranCo-ordinate initial translationsMilestone Dhttps://code.briarproject.org/briar/briar/-/issues/340Progress wheels have transparent backgrounds2018-06-12T11:32:29ZakwizgranProgress wheels have transparent backgroundsViews containing progress wheels, which are supposed to have opaque backgrounds filling the screen, instead have transparent backgrounds. Possibly caused by recent changes to unify the background colour.
![device-2016-05-03-182935](/u...Views containing progress wheels, which are supposed to have opaque backgrounds filling the screen, instead have transparent backgrounds. Possibly caused by recent changes to unify the background colour.
![device-2016-05-03-182935](/uploads/17731df75bf5650e7e20813997d5c2c0/device-2016-05-03-182935.png)
![device-2016-05-03-182952](/uploads/1287fc090a9f8cc81e218ff6c6c3b315/device-2016-05-03-182952.png)
Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/339Forum Sharing Integration Tests2018-06-12T11:32:29ZTorsten GroteForum Sharing Integration TestsMilestone CTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/337Avatar Placeholders for Forums2018-06-12T11:32:29ZTorsten GroteAvatar Placeholders for ForumsTo make forums visually more pleasing, they should have avatars that use the first letter of their name and a deterministically chosen color as a background. Here's a mockup:
![avatars](https://code.briarproject.org/akwizgran/briar/up...To make forums visually more pleasing, they should have avatars that use the first letter of their name and a deterministically chosen color as a background. Here's a mockup:
![avatars](https://code.briarproject.org/akwizgran/briar/uploads/7c7eb7eb7029c015bc2ed48a1115073c/forums_list_with_Circles.jpg)
Tthis works better with unsaturated colors. I would suggest saturation < 50%. For the identicons we pick random red, green and blue values in the bottom 3/4 of the range, which ensures the colours are somewhat desturated and dark enough to contrast with a light background.Milestone CTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/336Remove TestingActivity2018-06-12T11:32:29ZakwizgranRemove TestingActivityThis has been replaced by the new feedback reporter.This has been replaced by the new feedback reporter.Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/335UX improvements for crash reports and feedback2018-06-12T11:32:29ZakwizgranUX improvements for crash reports and feedbackIssues to consider:
* Crash report activity appears before accepting the dialog
* Button text for dialog?
* Send icon instead of share icon?
* FAB floats in wrong position when keyboard is open on small screens
* Are crash report ...Issues to consider:
* Crash report activity appears before accepting the dialog
* Button text for dialog?
* Send icon instead of share icon?
* FAB floats in wrong position when keyboard is open on small screens
* Are crash report settings needed?
* Feedback activity uses transitions for separate task
Milestone Chttps://code.briarproject.org/briar/briar/-/issues/334Navigation menu causes crash with support library 23.3.02018-06-12T11:32:29ZakwizgranNavigation menu causes crash with support library 23.3.0After "upgrading" the support library to 23.3.0, clicking any button in the navigation drawer causes a crash with the following stacktrace:
```
java.lang.IllegalStateException: Could not find a method onNavigationClick(View) in the a...After "upgrading" the support library to 23.3.0, clicking any button in the navigation drawer causes a crash with the following stacktrace:
```
java.lang.IllegalStateException: Could not find a method onNavigationClick(View) in the activity class android.support.v7.widget.TintContextWrapper for onClick handler on view class android.support.v7.widget.AppCompatButton with id 'nav_btn_contacts'
at android.view.View$1.onClick(View.java:4012)
at android.view.View.performClick(View.java:4785)
at android.view.View$PerformClick.run(View.java:19884)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Caused by: java.lang.NoSuchMethodException: onNavigationClick [class android.view.View]
at java.lang.Class.getMethod(Class.java:664)
at java.lang.Class.getMethod(Class.java:643)
at android.view.View$1.onClick(View.java:4005)
at android.view.View.performClick(View.java:4785)
at android.view.View$PerformClick.run(View.java:19884)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5343)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
```Milestone Dhttps://code.briarproject.org/briar/briar/-/issues/333Font color2018-06-12T11:32:29ZMegaloxFont colorWe have to define system wide font colorsWe have to define system wide font colorsMilestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/332Looper error in SplashScreenActivity on 5.0.1 with support library 23.2.12018-06-12T11:32:29Zstr4dLooper error in SplashScreenActivity on 5.0.1 with support library 23.2.1```
org.briarproject E/ACRA: ACRA caught a InflateException for org.briarproject
android.view.InflateException: Binary XML file line #2: Error inflating class PreferenceScreen
at android.support.v7.preference.PreferenceInflater.cr...```
org.briarproject E/ACRA: ACRA caught a InflateException for org.briarproject
android.view.InflateException: Binary XML file line #2: Error inflating class PreferenceScreen
at android.support.v7.preference.PreferenceInflater.createItem(PreferenceInflater.java:262)
at android.support.v7.preference.PreferenceInflater.onCreateItem(PreferenceInflater.java:281)
at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:290)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:161)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:117)
at android.support.v7.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:115)
at android.support.v7.preference.PreferenceManager.setDefaultValues(PreferenceManager.java:328)
at android.support.v7.preference.PreferenceManager.setDefaultValues(PreferenceManager.java:287)
at org.briarproject.android.SplashScreenActivity$2.run(SplashScreenActivity.java:93)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.support.v7.preference.PreferenceInflater.createItem(PreferenceInflater.java:256)
at android.support.v7.preference.PreferenceInflater.onCreateItem(PreferenceInflater.java:281)
at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:290)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:161)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:117)
at android.support.v7.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:115)
at android.support.v7.preference.PreferenceManager.setDefaultValues(PreferenceManager.java:328)
at android.support.v7.preference.PreferenceManager.setDefaultValues(PreferenceManager.java:287)
at org.briarproject.android.SplashScreenActivity$2.run(SplashScreenActivity.java:93)
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:200)
at android.os.Handler.<init>(Handler.java:114)
at android.support.v7.preference.PreferenceGroup.<init>(PreferenceGroup.java:61)
at android.support.v7.preference.PreferenceGroup.<init>(PreferenceGroup.java:87)
at android.support.v7.preference.PreferenceScreen.<init>(PreferenceScreen.java:84)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.support.v7.preference.PreferenceInflater.createItem(PreferenceInflater.java:256)
at android.support.v7.preference.PreferenceInflater.onCreateItem(PreferenceInflater.java:281)
at android.support.v7.preference.PreferenceInflater.createItemFromTag(PreferenceInflater.java:290)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:161)
at android.support.v7.preference.PreferenceInflater.inflate(PreferenceInflater.java:117)
at android.support.v7.preference.PreferenceManager.inflateFromResource(PreferenceManager.java:115)
at android.support.v7.preference.PreferenceManager.setDefaultValues(PreferenceManager.java:328)
at android.support.v7.preference.PreferenceManager.setDefaultValues(PreferenceManager.java:287)
at org.briarproject.android.SplashScreenActivity$2.run(SplashScreenActivity.java:93)
```
Reverting to 23.1.1 stops the error.Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/331Viewfinder disappears after pausing and resuming activity2018-06-12T11:32:29ZakwizgranViewfinder disappears after pausing and resuming activitySteps to reproduce:
* Click the home button while the QR code camera view is showing
* Click the recents button and return to the camera view
The issue seems to be that the surface is created when the camera's opened, destroyed when...Steps to reproduce:
* Click the home button while the QR code camera view is showing
* Click the recents button and return to the camera view
The issue seems to be that the surface is created when the camera's opened, destroyed when the camera's released, and not recreated when the camera's reopened. Log:
```
04-27 16:09:16.690 22164-23700/org.briarproject I/KeyAgreementConnector: Starting BQP listeners
04-27 16:09:16.690 22164-23700/org.briarproject I/DroidtoothPlugin: Key agreement UUID 1fb1978a-ebfe-3dda-8677-445838dbdf43
04-27 16:09:16.690 22164-23700/org.briarproject I/InsecureBluetooth: Listening with new API
04-27 16:09:16.690 22164-23701/org.briarproject I/ShowQrCodeFragment: Opening camera
04-27 16:09:16.790 22164-22164/org.briarproject I/CameraView: Surface created
04-27 16:09:16.790 22164-22164/org.briarproject I/CameraView: Surface changed: 320x399
04-27 16:09:16.800 22164-22164/org.briarproject I/CameraView: Calculated framing rect: null
04-27 16:09:16.800 22164-22164/org.briarproject I/CameraView: Calculated framing rect: null
04-27 16:09:17.520 22164-22164/org.briarproject I/CameraView: Display orientation 90 degrees
04-27 16:09:17.540 22164-22164/org.briarproject I/CameraView: Scene modes: [auto, night, snow, sports]
04-27 16:09:17.540 22164-22164/org.briarproject I/CameraView: Focus modes: [infinity, fixed]
04-27 16:09:17.540 22164-22164/org.briarproject I/CameraView: Setting focus mode to fixed
04-27 16:09:17.540 22164-22164/org.briarproject I/CameraView: Finding framing dimension, side1 = 480, side2 = 160
04-27 16:09:17.540 22164-22164/org.briarproject I/CameraView: Returning minimum side length: 160
04-27 16:09:17.540 22164-22164/org.briarproject I/CameraView: Metering areas supported: 1
04-27 16:09:17.540 22164-22164/org.briarproject I/CameraView: Size 640x480, stretch 1.06934, pixels 307200, score 287280.0
04-27 16:09:17.550 22164-22164/org.briarproject I/CameraView: Size 640x368, stretch 1.3947914, pixels 235520, score 168856.8
04-27 16:09:17.550 22164-22164/org.briarproject I/CameraView: Size 512x288, stretch 1.4257866, pixels 147456, score 103420.805
04-27 16:09:17.550 22164-22164/org.briarproject I/CameraView: Size 384x288, stretch 1.06934, pixels 110592, score 103420.805
04-27 16:09:17.550 22164-22164/org.briarproject I/CameraView: Size 352x288, stretch 1.0201705, pixels 101376, score 99371.63
04-27 16:09:17.560 22164-22164/org.briarproject I/CameraView: Size 320x240, stretch 1.06934, pixels 76800, score 71820.0
04-27 16:09:17.560 22164-22164/org.briarproject I/CameraView: Size 176x144, stretch 1.0201705, pixels 25344, score 24842.908
04-27 16:09:17.560 22164-22164/org.briarproject I/CameraView: Best size 640x480
04-27 16:09:17.710 22164-22164/org.briarproject I/CameraView: Finding framing dimension, side1 = 320, side2 = 240
04-27 16:09:17.710 22164-22164/org.briarproject I/CameraView: Returning hard minimum: 240
04-27 16:09:17.710 22164-22164/org.briarproject I/CameraView: Calculated framing rect: Rect(40, 0 - 280, 240)
04-27 16:09:23.410 22164-22164/org.briarproject I/ShowQrCodeFragment: Releasing camera
04-27 16:09:23.950 22164-22164/org.briarproject I/CameraView: Surface destroyed
04-27 16:09:24.060 22164-23852/org.briarproject I/KeyAgreementConnector: Stopping BQP listeners
04-27 16:09:29.750 22164-23749/org.briarproject I/ShowQrCodeFragment: Opening camera
04-27 16:09:29.760 22164-23950/org.briarproject I/KeyAgreementConnector: Starting BQP listeners
04-27 16:09:29.760 22164-23950/org.briarproject I/DroidtoothPlugin: Key agreement UUID 00073827-b31d-3cd8-b5bf-596321f0501f
04-27 16:09:29.780 22164-23950/org.briarproject I/InsecureBluetooth: Listening with new API
04-27 16:09:30.750 22164-22164/org.briarproject I/CameraView: Display orientation 90 degrees
04-27 16:09:30.750 22164-22164/org.briarproject I/CameraView: Scene modes: [auto, night, snow, sports]
04-27 16:09:30.760 22164-22164/org.briarproject I/CameraView: Focus modes: [infinity, fixed]
04-27 16:09:30.760 22164-22164/org.briarproject I/CameraView: Setting focus mode to fixed
04-27 16:09:30.760 22164-22164/org.briarproject I/CameraView: Metering areas supported: 1
04-27 16:09:30.760 22164-22164/org.briarproject I/CameraView: Size 640x480, stretch 1.06934, pixels 307200, score 287280.0
04-27 16:09:30.760 22164-22164/org.briarproject I/CameraView: Size 640x368, stretch 1.3947914, pixels 235520, score 168856.8
04-27 16:09:30.760 22164-22164/org.briarproject I/CameraView: Size 512x288, stretch 1.4257866, pixels 147456, score 103420.805
04-27 16:09:30.760 22164-22164/org.briarproject I/CameraView: Size 384x288, stretch 1.06934, pixels 110592, score 103420.805
04-27 16:09:30.760 22164-22164/org.briarproject I/CameraView: Size 352x288, stretch 1.0201705, pixels 101376, score 99371.63
04-27 16:09:30.770 22164-22164/org.briarproject I/CameraView: Size 320x240, stretch 1.06934, pixels 76800, score 71820.0
04-27 16:09:30.770 22164-22164/org.briarproject I/CameraView: Size 176x144, stretch 1.0201705, pixels 25344, score 24842.908
04-27 16:09:30.770 22164-22164/org.briarproject I/CameraView: Best size 640x480
```Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/328BriarReportPrimer makes calls that require a Looper on some devices2018-06-12T11:32:29ZakwizgranBriarReportPrimer makes calls that require a Looper on some devicesWhen handling an exception, BriarReportPrimer calls BluetoothAdapter.getDefaultAdapter(). On some devices, this method throws a RuntimeException if it's called from a thread without a Looper, i.e. a thread that hasn't called Looper.prepa...When handling an exception, BriarReportPrimer calls BluetoothAdapter.getDefaultAdapter(). On some devices, this method throws a RuntimeException if it's called from a thread without a Looper, i.e. a thread that hasn't called Looper.prepare().
It may be possible to avoid the RuntimeException by using AndroidExecutor to call BluetoothAdapter.getDefaultAdapter(), as DroidtoothPlugin does. However, AndroidExecutor uses the UI thread - if that thread threw the original exception and has therefore died, the Callable might never run and BriarReportPrimer would wait forever.
AndroidExecutor used to create its own captive thread with a Looper. We could revert to that design, but a similar problem would occur if the executor's captive thread had died (less likely but still possible). Since AndroidExecutor is used rarely, perhaps it should create a new thread for each call?
```
04-27 12:28:38.944 23487-23675/org.briarproject E/ACRA: ACRA caught a NoSuchMethodError for org.briarproject
java.lang.NoSuchMethodError: java.util.Collections.emptyEnumeration
at org.briarproject.lifecycle.LifecycleManagerImpl.startServices(LifecycleManagerImpl.java:80)
at org.briarproject.android.BriarService$1.run(BriarService.java:92)
04-27 12:28:39.054 23487-23675/org.briarproject E/ACRA: ACRA failed to capture the error - handing off to native error reporter
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.bluetooth.BluetoothAdapter$1.<init>(BluetoothAdapter.java:1128)
at android.bluetooth.BluetoothAdapter.<init>(BluetoothAdapter.java:1128)
at android.bluetooth.BluetoothAdapter.getDefaultAdapter(BluetoothAdapter.java:455)
at org.briarproject.android.util.BriarReportPrimer.primeReport(BriarReportPrimer.java:150)
at org.acra.builder.ReportExecutor.execute(ReportExecutor.java:125)
at org.acra.builder.ReportBuilder.build(ReportBuilder.java:148)
at org.acra.ErrorReporter.uncaughtException(ErrorReporter.java:260)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:854)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:851)
04-27 12:28:39.054 23487-23675/org.briarproject I/ACRA: ACRA is disabled for org.briarproject - forwarding uncaught Exception on to default ExceptionHandler
```Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/327empty state design2018-06-12T11:32:29ZMegaloxempty state designSome parts of the app can show empty states. We will develop an excellent design for these empty states.Some parts of the app can show empty states. We will develop an excellent design for these empty states.Milestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/326Trim leading and trailing whitespace when displaying messages2018-06-12T11:32:29ZakwizgranTrim leading and trailing whitespace when displaying messagesMilestone DTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/325BriarRecyclerView allows `this` to escape constructor2018-06-12T11:32:30ZakwizgranBriarRecyclerView allows `this` to escape constructor`BriarRecyclerView#initViews()`, which is called from the constructor, passes `this` to `LayoutInflater#inflate()`.`BriarRecyclerView#initViews()`, which is called from the constructor, passes `this` to `LayoutInflater#inflate()`.Milestone Cakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/322New ForumSharingManager based on ProtocolEngine2018-06-12T11:32:30ZTorsten GroteNew ForumSharingManager based on ProtocolEngineIn order to improve the UX for sharing forums, the `ForumSharingManager` needs to be rewritten.
Similar to the `IntroductionManager`, it should make use of the abstract Protocol engine and implement a protocol (#320) between two parties...In order to improve the UX for sharing forums, the `ForumSharingManager` needs to be rewritten.
Similar to the `IntroductionManager`, it should make use of the abstract Protocol engine and implement a protocol (#320) between two parties.
This is a subtask of Issue #121 which concerns the UX. The interface with the UI is discussed in #321.Milestone CTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/321ForumSharingManager interface with UI2018-06-12T11:32:30ZTorsten GroteForumSharingManager interface with UIThe ForumSharingManager will be rewritten and changes its paradigm from "sharing as state" to "sharing as action", so the UI interface will need to change along with it.
This is how it could look like:
```java
/** Returns the uniq...The ForumSharingManager will be rewritten and changes its paradigm from "sharing as state" to "sharing as action", so the UI interface will need to change along with it.
This is how it could look like:
```java
/** Returns the unique ID of the forum sharing client. */
ClientId getClientId();
/** Sends an invitation to share the given forum with the given contact and sends an optional message along with it. */
void sendForumInvitation(Forum f, ContactId contactId, @Nullable String message) throws DbException;
/** Responds to a pending forum invitation */
void respondToInvitation(SessionId sessionId, ContactId contactId, boolean accept) throws DbException;
/** Returns all forum sharing messages sent by the Contact identified by contactId. */
Collection<ForumInvitationMessage> getForumInvitationMessages(ContactId contactId) throws DbException;
/** Returns all forums to which the user could subscribe. */
Collection<Forum> getAvailableForums() throws DbException;
/** Returns all contacts who are sharing the given forum with the user. */
Collection<Contact> getSharedBy(Forum f) throws DbException;
/** Returns the IDs of all contacts with whom the given forum is shared. */
Collection<ContactId> getSharedWith(Forum f) throws DbException;
```
Note that I removed methods for adding and (un)subscribing to/from a forum. These are probably better placed into the `ForumManager`.
This is a subtask of Issue #121.Milestone CTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/320Design Protocol for Sharing Forums2018-06-12T11:32:30ZTorsten GroteDesign Protocol for Sharing ForumsThe protocol will look like a simpler version of the introduction protocol, with two parties per session, and messages for invite/accept/decline/abort. (if you share a forum with more than one contact we can just create one session per c...The protocol will look like a simpler version of the introduction protocol, with two parties per session, and messages for invite/accept/decline/abort. (if you share a forum with more than one contact we can just create one session per contact, there's no reason to tie them together.)
1: **INVITATION** - This is send by the sharer to one of her contacts. The content is a BDF list.
* (int) The type of the message, here 1
* (raw) SessionId chosen by the sharer
* (string) name of the forum
* (raw) salt to uniquely identify this forum
* (string) optional invitation message
2: **ACCEPT RESPONSE** - This should be sent by contacts that received a sharing invitation. The content is a BDF list with these elements:
* (int) The type of the message, here 2
* (raw) SessionId must match the SessionId of an unanswered invitation.
3: **DECLINE RESPONSE** - This should be sent by contacts that received a sharing invitation and do not want to add the forum. The content is a BDF list with these elements:
* (int) The type of the message, here 3
* (raw) SessionId must match the SessionId of an unanswered invitation.
4: **LEAVE** - This should be send by a contact that is unsubscribing from the forum. The content is a BDF list with two elements:
* (int) The type of the message, here 4
* (raw) SessionId must match the SessionId of a previous (un)answered invitation.
5: **ABORT** - This should be send by a contact that encountered an error, so that it can not complete the protocol. The content is a BDF list with two elements:
* (int) The type of the message, here 5
* (raw) SessionId must match the SessionId of an unanswered invitation.
A successful run of the protocol would look like this:
![forum-sharing](/uploads/8f53758e8ed55146f498181b2708a9b1/forum-sharing.png)
**Sharer**
![sharer-state-machine](/uploads/5ca0924c21eef0601e5cfdf4060577ad/sharer-state-machine.png)
[sharer-state-machine.odg](/uploads/24354e5ef7779d36ed7a815eccb8f35e/sharer-state-machine.odg)
**Invitee**
![invitee-state-machine](/uploads/b57dc42ebe5873530543ce7ab36af8f4/invitee-state-machine.png)
[invitee-state-machine.odg](/uploads/2099baeb7948980819022fda5f402aed/invitee-state-machine.odg)
Arrows that have no label stand for 'all other actions'.
It should be documented in the wiki as well: https://code.briarproject.org/akwizgran/briar/wikis/ForumSharingClient
This is a subtask of Issue #322.Milestone CTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/318Blinking contact icon2018-06-12T11:32:30ZErnir ErlingssonBlinking contact iconWhen you return from a conversation the contact's icon in the header blinks away in an ugly way.When you return from a conversation the contact's icon in the header blinks away in an ugly way.