briar issueshttps://code.briarproject.org/groups/briar/-/issues2019-04-05T12:56:47Zhttps://code.briarproject.org/briar/briar/-/issues/1529Introduction accept/decline buttons don't work for second attempt2019-04-05T12:56:47ZakwizgranIntroduction accept/decline buttons don't work for second attemptSteps to reproduce:
* Add devices A and B as contacts
* Add devices B and C as contacts
* B offers to introduce A to C
* A accepts
* C declines
* B offers to introduce A to C again (A and C must receive the new offers before their screen...Steps to reproduce:
* Add devices A and B as contacts
* Add devices B and C as contacts
* B offers to introduce A to C
* A accepts
* C declines
* B offers to introduce A to C again (A and C must receive the new offers before their screens turn off)
* Expected: A and C can use the accept and decline buttons
* Actual: The accept and decline buttons are unresponsive until the screen has been turned off and on (sometimes it's necessary to leave and re-enter the conversation)
I suspect this is a view recycling issue - IIRC we disable the buttons after they've been pressed once, to avoid issues with multiple taps. If the view gets recycled, I guess the buttons are still disabled.
I saw this while testing !1067, but I don't think it was introduced by that branch - I've seen it before but never came up with steps to reproduce it. It might also happen for forum/blog/group invitations.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1516Introducee doesn't receive second introduction request2019-04-04T16:47:45ZakwizgranIntroducee doesn't receive second introduction requestSteps to reproduce:
* Add devices A and B as contacts
* Add devices B and C as contacts
* B offers to introduce A and C
* A accepts the introduction
* C declines the introduction
* B offers to introduce A and C again
* Expected: A and C ...Steps to reproduce:
* Add devices A and B as contacts
* Add devices B and C as contacts
* B offers to introduce A and C
* A accepts the introduction
* C declines the introduction
* B offers to introduce A and C again
* Expected: A and C receive B's new introduction request
* Actual: B's new introduction request appears in the conversation with C, but not the conversation with A. After turning C's screen off and on, the accept and decline buttons disappear from B's new introduction request (this might be a separate bug, or might indicate that the request can no longer be answered because the session has been aborted)
* B can still exchange private messages with A and C, so it's not a connection issueAndroid 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1514Wrong message is shown when other introducee accepts introduction2019-04-04T16:47:33ZakwizgranWrong message is shown when other introducee accepts introductionSteps to reproduce:
* Add devices A and B as contacts
* Add devices B and C as contacts
* B offers to introduce A and C
* A declines the introduction
* As expected, A sees "You declined the introduction to C", B sees "A declined the intr...Steps to reproduce:
* Add devices A and B as contacts
* Add devices B and C as contacts
* B offers to introduce A and C
* A declines the introduction
* As expected, A sees "You declined the introduction to C", B sees "A declined the introduction to C", and C sees "B says that A declined the introduction"
* C accepts the introduction
* As expected, B sees "C accepted the introduction to A" and C sees "You accepted the introduction to A. Before A gets added to your contacts, they need to accept the introduction as well. This might take some time." (Separately from this ticket, we might think about showing different text to C in the case where A has already responded. The current text suggests we're still waiting for a response.)
* Expected: A sees "C accepted the introduction" (or "C accepted the introduction from B", or "B says that C accepted the introduction", etc)
* Actual: A sees "B accepted the introduction to C". This mixes up the roles, implying that A was introducing B to C and B accepted, whereas B was introducing A to C and C acceptedAndroid 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1522IllegalArgumentException when setting contact alias2019-04-03T10:18:21ZakwizgranIllegalArgumentException when setting contact alias* Android version: 4.4.4
* Briar version: 1.1.5 (8f4c3c4)
* Phone model: Samsung GT-S7262 (logan2gxx)
Stacktrace:
```
java.lang.IllegalArgumentException
at org.briarproject.bramble.contact.ContactManagerImpl.setContactAlias(Cont...* Android version: 4.4.4
* Briar version: 1.1.5 (8f4c3c4)
* Phone model: Samsung GT-S7262 (logan2gxx)
Stacktrace:
```
java.lang.IllegalArgumentException
at org.briarproject.bramble.contact.ContactManagerImpl.setContactAlias(ContactManagerImpl.java:138)
at org.briarproject.bramble.contact.ContactManagerImpl.lambda$setContactAlias$4(ContactManagerImpl.java:146)
at org.briarproject.bramble.contact.-$$Lambda$ContactManagerImpl$EfFGAUvRrCV355yeOOy1D8He3mI.run(lambda)
at org.briarproject.bramble.db.DatabaseComponentImpl.transaction(DatabaseComponentImpl.java:177)
at org.briarproject.bramble.contact.ContactManagerImpl.setContactAlias(ContactManagerImpl.java:146)
at org.briarproject.briar.android.conversation.ConversationViewModel.lambda$setContactAlias$2(ConversationViewModel.java:90)
at org.briarproject.briar.android.conversation.-$$Lambda$ConversationViewModel$XcyaPAb6QDHfJV0o5jdtkgo2ULo.run(lambda)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
```
This exception is thrown at ContactManagerImpl line 192 on current master if the alias is empty or too long. The ConversationViewModel checks for an empty alias, but it doesn't look like we're checking the maximum length.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1327AssertionError when pressing back in contact list after setup2019-04-02T13:12:30ZakwizgranAssertionError when pressing back in contact list after setupLooks like SetupActivity was still on the back stack.
```
06-22 14:51:17.259 3107-3107/? E/ACRA: ACRA caught a AssertionError for org.briarproject.briar.android.debug
java.lang.AssertionError
at org.briarproject.briar.androi...Looks like SetupActivity was still on the back stack.
```
06-22 14:51:17.259 3107-3107/? E/ACRA: ACRA caught a AssertionError for org.briarproject.briar.android.debug
java.lang.AssertionError
at org.briarproject.briar.android.login.SetupActivity.onCreate(SetupActivity.java:42)
at android.app.Activity.performCreate(Activity.java:4470)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
at dalvik.system.NativeStart.main(Native Method)
```Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1260Power management improvements2019-04-01T13:19:14ZakwizgranPower management improvementsUmbrella ticket for sponsor 1, objective 6.Umbrella ticket for sponsor 1, objective 6.https://code.briarproject.org/briar/briar/-/issues/1517NPE when rotating screen2019-03-29T13:58:45ZakwizgranNPE when rotating screenI got this crash on the API 28 emulator while running current master modified to target API 28. With a private group open, I rotated the screen to landscape, pressed the screen rotation button in the navigation bar to allow the app to ro...I got this crash on the API 28 emulator while running current master modified to target API 28. With a private group open, I rotated the screen to landscape, pressed the screen rotation button in the navigation bar to allow the app to rotate, then rotated the screen to portrait again without pressing the screen rotation button again.
I'll try to reproduce this on master with the normal API target.
```
ACRA caught a NullPointerException for org.briarproject.briar.android.debug
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at org.briarproject.briar.android.view.BriarRecyclerViewScrollListener.onItemVisible(BriarRecyclerViewScrollListener.java:55)
at org.briarproject.briar.android.view.BriarRecyclerViewScrollListener.onItemsVisible(BriarRecyclerViewScrollListener.java:50)
at org.briarproject.briar.android.threaded.ThreadScrollListener.onItemsVisible(ThreadScrollListener.java:39)
at org.briarproject.briar.android.view.BriarRecyclerViewScrollListener.onScrolled(BriarRecyclerViewScrollListener.java:39)
at android.support.v7.widget.RecyclerView.dispatchOnScrolled(RecyclerView.java:4961)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:4021)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3652)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4194)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1915)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1812)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1656)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1565)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:753)
at android.view.View.layout(View.java:20672)
at android.view.ViewGroup.layout(ViewGroup.java:6194)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2792)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2319)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1460)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7183)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:949)
at android.view.Choreographer.doCallbacks(Choreographer.java:761)
at android.view.Choreographer.doFrame(Choreographer.java:696)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
```Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1077Position in Forums/Groups not updated when resumed2019-03-26T16:25:13ZTorsten GrotePosition in Forums/Groups not updated when resumed1. Enter a forum with many posts
2. Scroll to a different position
3. Turn screen off
4. Turn screen back on
5. Observe how the list jumps to a different position
If you don't observe this in step 5, go back to step 3 and repeat until y...1. Enter a forum with many posts
2. Scroll to a different position
3. Turn screen off
4. Turn screen back on
5. Observe how the list jumps to a different position
If you don't observe this in step 5, go back to step 3 and repeat until you observe it.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1501Show new contacts at the top of the contact list2019-03-22T16:54:17ZTorsten GroteShow new contacts at the top of the contact listCurrently, new contacts get added to the bottom of the list. They should be at the top for better visibility.Currently, new contacts get added to the bottom of the list. They should be at the top for better visibility.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1508NPE when deleting app data2019-03-22T15:04:58ZakwizgranNPE when deleting app dataStacktrace:
```
E/ACRA (15625): ACRA caught a NullPointerException for org.briarproject.briar.android.debug
E/ACRA (15625): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getName()' ...Stacktrace:
```
E/ACRA (15625): ACRA caught a NullPointerException for org.briarproject.briar.android.debug
E/ACRA (15625): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.io.File.getName()' on a null object reference
E/ACRA (15625): at org.briarproject.bramble.account.AndroidAccountManager.deleteAppData(AndroidAccountManager.java:115)
E/ACRA (15625): at org.briarproject.bramble.account.AndroidAccountManager.deleteAccount(AndroidAccountManager.java:79)
E/ACRA (15625): at org.briarproject.bramble.account.BriarAccountManager.deleteAccount(BriarAccountManager.java:27)
E/ACRA (15625): at org.briarproject.briar.android.splash.SplashScreenActivity.startNextActivity(SplashScreenActivity.java:85)
E/ACRA (15625): at org.briarproject.briar.android.splash.SplashScreenActivity.lambda$onCreate$0(SplashScreenActivity.java:64)
E/ACRA (15625): at org.briarproject.briar.android.splash.-$$Lambda$SplashScreenActivity$KPoQeENQNPCou2oWqt2CDnWR61c.run(lambda)
E/ACRA (15625): at android.os.Handler.handleCallback(Handler.java:739)
E/ACRA (15625): at android.os.Handler.dispatchMessage(Handler.java:95)
E/ACRA (15625): at android.os.Looper.loop(Looper.java:135)
E/ACRA (15625): at android.app.ActivityThread.main(ActivityThread.java:5343)
E/ACRA (15625): at java.lang.reflect.Method.invoke(Native Method)
E/ACRA (15625): at java.lang.reflect.Method.invoke(Method.java:372)
E/ACRA (15625): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
E/ACRA (15625): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
```Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1289RecyclerView pre-rendering causes threaded messages to be marked as read2019-03-21T13:48:56ZakwizgranRecyclerView pre-rendering causes threaded messages to be marked as readSee https://code.briarproject.org/akwizgran/briar/merge_requests/818#note_27170:
> The latest versions of the support library use a performance optimization for `RecyclerView` which pre-renders list items on spare UiThread cycles. This ...See https://code.briarproject.org/akwizgran/briar/merge_requests/818#note_27170:
> The latest versions of the support library use a performance optimization for `RecyclerView` which pre-renders list items on spare UiThread cycles. This calls `onBindViewHolder()` which we currently use to determine whether a user has seen a post.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1380Test Panic Account Deletion2019-03-19T14:17:05ZTorsten GroteTest Panic Account DeletionWhen deleting the account while the Briar Lifecycle isn't stopped, weird things happened. We should test that deleting an account in this situation works as expected and maybe stop the lifecycle before deletion, if it doesn't.
Reference...When deleting the account while the Briar Lifecycle isn't stopped, weird things happened. We should test that deleting an account in this situation works as expected and maybe stop the lifecycle before deletion, if it doesn't.
Reference https://code.briarproject.org/briar/briar/merge_requests/910#note_30939Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1357PanicResponder doesn't return when deleting app data2019-03-19T14:16:26ZakwizgranPanicResponder doesn't return when deleting app dataWhen responding to a panic button intent we call PanicResponder.deleteAllAppData() before signing out. It looks like this method may cause the process to exit, as the log message that should be logged immediately after it returns ("Signi...When responding to a panic button intent we call PanicResponder.deleteAllAppData() before signing out. It looks like this method may cause the process to exit, as the log message that should be logged immediately after it returns ("Signing out...") doesn't show up in the log.
When I tried refactoring this call into AccountManager#deleteAccount(), which is called before creating a new account to ensure no remnants of an old account are left behind, it caused the app to exit instead of showing SetupActivity.
We should consider extracting the useful parts of this method into AndroidAccountManager#deleteAccount() instead of calling it.
Test device: Moto G 4G (Android 5.1).Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1475Resolve issues with image attachment transitions2019-03-19T10:43:04ZTorsten GroteResolve issues with image attachment transitions* [x] Use a counter as the transition name in `AttachmentItem`.
* [x] Tapping partly covered images makes them pop up from under the cover which looks glitchy
* [ ] Under mysterious circumstances messages can overlap each other (or leave...* [x] Use a counter as the transition name in `AttachmentItem`.
* [x] Tapping partly covered images makes them pop up from under the cover which looks glitchy
* [ ] Under mysterious circumstances messages can overlap each other (or leave gaps) after a return transition to the conversation
* [x] On Moto G 4G (API 22), the exit transition still uses sliding
* [x] Fix shared element exit transition when the list position is lost (activity was stopped or made into fullscreen)
* [ ] ~~Change shared element of return transition when fullscreen view was swiped to another image when returning~~
* [x] Return transition lands slightly below thumbnail when status bar is hidden
Subtask of #1237.
![device-2018-11-28-175203](/uploads/62e4bbd7bc0af62196bc04c3d8433337/device-2018-11-28-175203.png)
![device-2018-11-28-175149](/uploads/e9f3124a919ca57370ece56e894f3ad6/device-2018-11-28-175149.png)Android 1.3Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/830Some text input fields don't work in landscape mode2019-03-19T10:38:50ZakwizgranSome text input fields don't work in landscape modeCheck that all text input fields can be used in landscape mode. We may need to set `android:imeOptions` so the done button works.Check that all text input fields can be used in landscape mode. We may need to set `android:imeOptions` so the done button works.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1370Reblogging a reblogged blog post sometimes triggers a notification2019-03-19T10:36:27ZJulian DehmReblogging a reblogged blog post sometimes triggers a notificationWhen reblogging an already reblogged post the blog post is opened in a dedicated fragment and from there it can be reblogged. Clicking send will take you back to the originally reblogged post and not to the feed itself. Therefore a notif...When reblogging an already reblogged post the blog post is opened in a dedicated fragment and from there it can be reblogged. Clicking send will take you back to the originally reblogged post and not to the feed itself. Therefore a notification is triggered.
Steps to reproduce:
1. Create a blog post
2. Reblog the blog post with a message
3. Reblog the reblogged postAndroid 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1196"Message sent" snackbar covers text entry area2019-03-08T14:25:10Zakwizgran"Message sent" snackbar covers text entry areaA user reported that in private groups the "Message sent" snackbar covers the text entry area. The same thing happens for forums.
We could probably get rid of this snackbar, as the message appears in the conversation immediately.A user reported that in private groups the "Message sent" snackbar covers the text entry area. The same thing happens for forums.
We could probably get rid of this snackbar, as the message appears in the conversation immediately.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1126Buttons on external link warning aren't visible in landscape mode2019-03-08T14:24:49ZakwizgranButtons on external link warning aren't visible in landscape modeFeedback from a user: "I just tried opening a link from an RSS feed. The pop-up warning me that this could be used to identify me is a bit higher than wide, and since I was using my phone in landscape mode, the buttons at the bottom of t...Feedback from a user: "I just tried opening a link from an RSS feed. The pop-up warning me that this could be used to identify me is a bit higher than wide, and since I was using my phone in landscape mode, the buttons at the bottom of the pop-up were off-screen, and I only understood what was going on after several attempts, and turning the phone. It would be good if that pop-up could adjust its aspect ratio to the screen."Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1413Contact list empty state message sometimes fails to appear2019-03-08T10:01:01ZakwizgranContact list empty state message sometimes fails to appearI've seen this intermittently on the Moto G (Android 5.1). The latest case happened after creating a new account - I'm not sure whether that's always been the case in the past. Turning the screen off and on again sometimes but not always...I've seen this intermittently on the Moto G (Android 5.1). The latest case happened after creating a new account - I'm not sure whether that's always been the case in the past. Turning the screen off and on again sometimes but not always causes the empty state message to appear.
![device-2018-10-08-125730](/uploads/c22b346d2de99d58554752bc374f9902/device-2018-10-08-125730.png)
If I find reliable steps to reproduce the bug I'll add them below.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/875Sharing state doesn't update while sharing status or memberlists are open2019-02-28T13:27:49ZMegaloxSharing state doesn't update while sharing status or memberlists are openIt updated when we closed and reopened the screen again.
* [X] Update membership/sharing state
* [ ] Update member's online stateIt updated when we closed and reopened the screen again.
* [X] Update membership/sharing state
* [ ] Update member's online stateAndroid 1.1Torsten GroteTorsten Grote