briar issueshttps://code.briarproject.org/briar/briar/-/issues2020-12-11T10:34:02Zhttps://code.briarproject.org/briar/briar/-/issues/1847UI for choosing profile picture2020-12-11T10:34:02ZakwizgranUI for choosing profile pictureAdd an item to the settings screen that shows the user's current profile picture (if any) with a button for choosing a new picture.
Create a new confirmation screen that shows the chosen picture cropped to a circle, with an explanation ...Add an item to the settings screen that shows the user's current profile picture (if any) with a button for choosing a new picture.
Create a new confirmation screen that shows the chosen picture cropped to a circle, with an explanation that the picture will only be visible to contacts and buttons to confirm or cancel the choice.
Depends on #1844, #1846. Subtask of #214.Profile picturesSebastianSebastian2021-01-31https://code.briarproject.org/briar/briar/-/issues/1846Refactor image compression code for reuse outside messaging client2020-12-07T11:49:19ZakwizgranRefactor image compression code for reuse outside messaging clientFactor out AttachmentCreationTask#compressImage() so it can be reused when storing the user's profile picture.
Subtask of #214.Factor out AttachmentCreationTask#compressImage() so it can be reused when storing the user's profile picture.
Subtask of #214.Profile picturesSebastianSebastian2021-01-31https://code.briarproject.org/briar/briar/-/issues/1845Show profile picture in AuthorView using Glide2020-12-11T10:34:26ZakwizgranShow profile picture in AuthorView using GlideIf an AuthorInfo specifies a profile picture, AuthorView should load it using Glide instead of showing an identicon.
Depends on #1842 and #1844. Subtask of #214.If an AuthorInfo specifies a profile picture, AuthorView should load it using Glide instead of showing an identicon.
Depends on #1842 and #1844. Subtask of #214.Profile picturesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1844Add core method for loading a profile picture2020-11-30T12:31:04ZakwizgranAdd core method for loading a profile pictureAdd a core method for loading a profile picture as an InputStream, give the message ID and content type. This will be similar to MessagingManager#getAttachment(), so consider whether that method and the Attachment and AttachmentHeader cl...Add a core method for loading a profile picture as an InputStream, give the message ID and content type. This will be similar to MessagingManager#getAttachment(), so consider whether that method and the Attachment and AttachmentHeader classes should be factored out.
Subtask of #214.Profile picturesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1843Create sync client to exchange profile pictures with contacts2020-11-30T12:31:03ZakwizgranCreate sync client to exchange profile pictures with contactsThis client will sync single-block messages initially, pending large message support.
Subtask of #214.This client will sync single-block messages initially, pending large message support.
Subtask of #214.Profile picturesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1842Add message ID of profile picture to Identity, Contact and AuthorInfo classes2020-12-11T10:34:39ZakwizgranAdd message ID of profile picture to Identity, Contact and AuthorInfo classesThis field will be null for identities without a profile picture, or those whose profile picture is unknown.
Subtask of #214This field will be null for identities without a profile picture, or those whose profile picture is unknown.
Subtask of #214Profile picturesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1841NavDrawerActivityTest fails with InitializationError on API 162020-11-11T16:56:24ZakwizgranNavDrawerActivityTest fails with InitializationError on API 16NavDrawerActivityTest fails on the API 16 emulator because it can't find javax.inject.Inject.
```
java.lang.RuntimeException: Delegate runner 'androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner' for AndroidJUnit4 could not be...NavDrawerActivityTest fails on the API 16 emulator because it can't find javax.inject.Inject.
```
java.lang.RuntimeException: Delegate runner 'androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner' for AndroidJUnit4 could not be loaded.
at androidx.test.ext.junit.runners.AndroidJUnit4.throwInitializationError(AndroidJUnit4.java:92)
at androidx.test.ext.junit.runners.AndroidJUnit4.loadRunner(AndroidJUnit4.java:82)
at androidx.test.ext.junit.runners.AndroidJUnit4.loadRunner(AndroidJUnit4.java:51)
at androidx.test.ext.junit.runners.AndroidJUnit4.<init>(AndroidJUnit4.java:46)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
at androidx.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:63)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
at androidx.test.internal.runner.AndroidRunnerBuilder.runnerForClass(AndroidRunnerBuilder.java:153)
at androidx.test.internal.runner.TestLoader$ScanningRunnerBuilder.runnerForClass(TestLoader.java:143)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
at androidx.test.internal.runner.TestLoader.doCreateRunner(TestLoader.java:73)
at androidx.test.internal.runner.TestLoader.getRunnersFor(TestLoader.java:104)
at androidx.test.internal.runner.TestRequestBuilder.build(TestRequestBuilder.java:793)
at androidx.test.runner.AndroidJUnitRunner.buildRequest(AndroidJUnitRunner.java:547)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:390)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at androidx.test.ext.junit.runners.AndroidJUnit4.loadRunner(AndroidJUnit4.java:72)
... 18 more
Caused by: java.lang.NoClassDefFoundError: javax/inject/Inject
at java.lang.reflect.Field.getDeclaredAnnotations(Native Method)
at java.lang.reflect.Field.getDeclaredAnnotations(Field.java:204)
at java.lang.reflect.AccessibleObject.getAnnotations(AccessibleObject.java:138)
at org.junit.runners.model.FrameworkField.getAnnotations(FrameworkField.java:31)
at org.junit.runners.model.TestClass.addToAnnotationLists(TestClass.java:84)
at org.junit.runners.model.TestClass.scanAnnotatedMembers(TestClass.java:71)
at org.junit.runners.model.TestClass.<init>(TestClass.java:57)
at org.junit.runners.ParentRunner.createTestClass(ParentRunner.java:88)
at org.junit.runners.ParentRunner.<init>(ParentRunner.java:83)
at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
at androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner.<init>(AndroidJUnit4ClassRunner.java:43)
at androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner.<init>(AndroidJUnit4ClassRunner.java:48)
... 21 more
Caused by: java.lang.ClassNotFoundException: javax.inject.Inject
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
... 33 more
```Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1840NavDrawerActivityTest fails to find drawer layout2020-11-11T16:03:58ZakwizgranNavDrawerActivityTest fails to find drawer layoutNavDrawerActivityTest fails to find a view with ID `R.id.drawer_layout`, possibly due to StartupActivity being shown.NavDrawerActivityTest fails to find a view with ID `R.id.drawer_layout`, possibly due to StartupActivity being shown.https://code.briarproject.org/briar/briar/-/issues/1839ConversationActivityNotSignedInTest requires manual account setup2020-11-11T16:01:14ZakwizgranConversationActivityNotSignedInTest requires manual account setupConversationActivityNotSignedInTest fails unless an account has been created on the device/emulator before running the test. The account is subsequently deleted during the setup of NavDrawerActivityTest.ConversationActivityNotSignedInTest fails unless an account has been created on the device/emulator before running the test. The account is subsequently deleted during the setup of NavDrawerActivityTest.https://code.briarproject.org/briar/briar/-/issues/1838Show a bomb icon on messages with self-destruct timers2020-12-03T14:02:14ZakwizgranShow a bomb icon on messages with self-destruct timersSubtask of #804Subtask of #804Self-destructing messagesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1837Conversation settings screen2021-04-13T11:49:41ZakwizgranConversation settings screenAdd a per-conversation settings screen, accessible via the conversation screen's menu.
The screen will initially have one setting: a switch that enables or disables self-destructing messages, with an explanation of the timer duration an...Add a per-conversation settings screen, accessible via the conversation screen's menu.
The screen will initially have one setting: a switch that enables or disables self-destructing messages, with an explanation of the timer duration and the fact that changes made by the contact will be followed automatically.
Subtask of #804Self-destructing messagesSebastianSebastian2021-01-31https://code.briarproject.org/briar/briar/-/issues/1836Automatically decline incoming private group invitations when they self-destruct2021-03-11T12:26:10ZakwizgranAutomatically decline incoming private group invitations when they self-destructWhen an incoming private group invitation self-destructs without being answered, automatically decline the request. This may require a protocol update (coordinated with #1831) to flag the decline as an automatic response that shouldn't b...When an incoming private group invitation self-destructs without being answered, automatically decline the request. This may require a protocol update (coordinated with #1831) to flag the decline as an automatic response that shouldn't be shown in the UI.
Subtask of #804Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1835Automatically decline incoming blog/forum invitations when they self-destruct2021-07-06T09:56:40ZakwizgranAutomatically decline incoming blog/forum invitations when they self-destructWhen an incoming blog/forum invitation self-destructs without being answered, automatically decline the invitation. This may require a protocol update (coordinated with #1830) to flag the decline as an automatic response that shouldn't b...When an incoming blog/forum invitation self-destructs without being answered, automatically decline the invitation. This may require a protocol update (coordinated with #1830) to flag the decline as an automatic response that shouldn't be shown in the UI.
Subtask of #804Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1834Automatically decline incoming introduction requests when they self-destruct2021-05-05T16:17:22ZakwizgranAutomatically decline incoming introduction requests when they self-destructWhen an incoming introduction request self-destructs without being answered, automatically decline the request. This may require a protocol update (coordinated with #1829) to flag the decline as an automatic response that shouldn't be sh...When an incoming introduction request self-destructs without being answered, automatically decline the request. This may require a protocol update (coordinated with #1829) to flag the decline as an automatic response that shouldn't be shown in the UI.
Subtask of #804
Test instructions:
* Use three devices, users A, B and C
* Enable self-destructing messages in the conversations A-B and A-C
* Let A introduce contacts B and C
* Expect invitation messages to arrive at B and C about the invitation
* Expect the invitation messages to have a auto-delete timers
* Let those timers expire. Expect that to trigger an automatic decline of the invitation, i.e. on all three devices it is visible that the introduction failed (due to the expired response)
* Expect all messages from that interaction to destroy after each message's timer expires
* Let A introduce B and C again. Expect this *not* to fail due to an introduction that is already going on (because none should be going on any longer)
* Let B and C accept the introduction
* Expect the introduction to work
* Confirm that B and C have each other in the contact list
* Expect all messages involved in the transaction to have auto-delete timers
* Let those timers expire and expect all those messages to disappearSelf-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1833Delete messages when their self-destruct timers expire2021-03-11T12:25:31ZakwizgranDelete messages when their self-destruct timers expireCreate a component that tracks pending self-destruct timers and deletes messages when their self-destruct timers expire.
Conversation clients will register messages for deletion during delivery. The new component will be responsible for...Create a component that tracks pending self-destruct timers and deletes messages when their self-destruct timers expire.
Conversation clients will register messages for deletion during delivery. The new component will be responsible for calling back into the client when a message is due to be deleted. This will allow the client to take any necessary steps before deletion, such as declining an open introduction.
Subtask of #804Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1832Store self-destruct timer duration2020-12-16T12:58:10ZakwizgranStore self-destruct timer durationFor each contact, store the local timer duration for self-destructing messages and the time when it was updated. When a message is received from the contact with a different timer duration and higher timestamp, update the local timer dur...For each contact, store the local timer duration for self-destructing messages and the time when it was updated. When a message is received from the contact with a different timer duration and higher timestamp, update the local timer duration. There should also be methods for setting the duration manually and querying the duration when sending a message.
Subtask of #804Self-destructing messagesakwizgranakwizgran2021-01-31https://code.briarproject.org/briar/briar/-/issues/1831Update private group sharing client to include a self-destruct timer in each ...2020-11-30T12:45:14ZakwizgranUpdate private group sharing client to include a self-destruct timer in each messageSubtask of #804Subtask of #804Self-destructing messagesakwizgranakwizgran2021-01-31https://code.briarproject.org/briar/briar/-/issues/1830Update blog and forum sharing clients to include a self-destruct timer in eac...2020-11-30T12:45:14ZakwizgranUpdate blog and forum sharing clients to include a self-destruct timer in each messageSubtask of #804Subtask of #804Self-destructing messagesakwizgranakwizgran2021-01-31https://code.briarproject.org/briar/briar/-/issues/1829Update introduction client to include a self-destruct timer in each message2020-11-30T12:45:13ZakwizgranUpdate introduction client to include a self-destruct timer in each messageSubtask of #804Subtask of #804Self-destructing messagesakwizgranakwizgran2021-01-31https://code.briarproject.org/briar/briar/-/issues/1828Update messaging client to include a self-destruct timer in each message2020-11-30T12:45:13ZakwizgranUpdate messaging client to include a self-destruct timer in each messageSubtask of #804Subtask of #804Self-destructing messagesakwizgranakwizgran2021-01-31