briar issueshttps://code.briarproject.org/briar/briar/-/issues2021-07-06T10:03:14Zhttps://code.briarproject.org/briar/briar/-/issues/2000Android 11 - 'Ask every time' - should the user be asked to give permissions ...2021-07-06T10:03:14ZIvanaAndroid 11 - 'Ask every time' - should the user be asked to give permissions for every new contact?When giving permissions for camera and location during the creation of a new nearby contact, user is given three choices in dialog popups: Allow while in use, Just this time, and Deny.
If the user select 'Just this time' - what does th...When giving permissions for camera and location during the creation of a new nearby contact, user is given three choices in dialog popups: Allow while in use, Just this time, and Deny.
If the user select 'Just this time' - what does that mean? Should the user be asked to grant permissions for Briar to access their camera or location every time they try to create a neaby contact? Or not?
in Pixel2, Android 11, user is not asked it every time.
Steps to reproduce:
precoditions: Briar is denied access to location and camera.
1. Tap + to create new nearby contact
2. Tap continue
3. Dialog/popup comes up and asks the user to grant permission for Briar to access their camera. User selects Just this time.
4. 3. Dialog/popup comes up and asks the user to grant permission for Briar to access their location. User selects Just this time.
5. User continues the process and creates a nearby contact.
6. User then starts a new process to create another neaby contact.
7. User taps continue.
Expected results:
- User expects to be asked again to give Briar permission to access the camera and location.
Actual results:
- User is not asked for their permission, instead, after tapping Continue, user is shown a message: your device will be visible to other bluetooth devices during 120 seconds and the options are OK and cancel.
- User taps OK
- the process can be completed successfully.
Question: Should user be asked to give permission for Briar to access their camera and location every time the app needs to do it? (ie for creation of every new nearby contact?)Adapt to changes in the Android platform2021-04-30https://code.briarproject.org/briar/briar/-/issues/1999Android 11 - possible to connect with nearby contact without the location per...2021-07-06T10:03:22ZIvanaAndroid 11 - possible to connect with nearby contact without the location permission - after a dirty shutdownSteps to reproduce:
Fresh install of Briar on Android 11 device (PIxel 2)(Bulid of 15.4, githash 2ddb7b...)
Go to settings > privacy > permissions manager > camera and verify that the Briar access to camera is denied.
Go to settings >...Steps to reproduce:
Fresh install of Briar on Android 11 device (PIxel 2)(Bulid of 15.4, githash 2ddb7b...)
Go to settings > privacy > permissions manager > camera and verify that the Briar access to camera is denied.
Go to settings > privacy > permissions manager > location and verify that the Briar access to location is denied.
1. Log into Briar app.
2. Tap on + to add a nearby contact
3. Tap continue when prompted
4. A pop-up dialog asks for user's permission to use the camera. Options are: Allow while using the app, Only this time, and Deny. User choses deny.
5. A pop-up dialog asks for user's permission to use the location. Options are: Allow while using the app, Only this time, and Deny. User choses deny.
6. A message comes up: "To scan the QR code, briar needs access to the samera. To discover bluetooth devices, Briar needs to access your location. Briar does not store your location or share it with anyone" User taps the button 'Continue'
7. Popup dialogs come up again and ask the user's permission... User selects deny again (for both camera and location user had the same options on dialogues as in step 5)
8. A message titled 'Camera permission' comes up and says this: "You have denied access to the camera, but adding contacts requires using the camera. Please consider granting access". User has options to Cancel or OK.
9. User taps OK
10. This action takes the user to the App info screen for Briar app. User goes to permissions > camera and gives the Briar app acess to camera by chosing 'allow while in use'
11. User goes to permissions > location and gives the Briar app acess to location by chosing 'allow while in use'.
12. Before leaving the previous screen, User then changes their mind and decides to deny Briar access to location- they set Location to denied.
13. User navigates back to Briar by tapping the back button several times
14. User is logged out of Briar
15. User logs back in.
Expected results:
- User should be shown the initial Briar screen (Contacts) and should be able to restart the process of creating nearby contacts?
Actual results:
- The first screen the user sees is: the info screen that explains to user how to scan the QR codes. User taps Continue.
- The previsouly started process of creating the nearby contact (which was started before the logout, in step 2 above) continues successfully, the QR code of another device can be scanned and contact created.
- The location setting for Briar app in privacy > permissions manager > Location = Denied for Briar app.
Question: Is the workflow as described in actual results correct?Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1990Clicking re-blogged author opens blog of reblogging author2021-04-26T12:08:41ZTorsten GroteClicking re-blogged author opens blog of reblogging author* get a blog post from a contact
* re-blog this post
* click the author of the original post in the reblogged post
* observe how your own blog opens and not the one of the author of the original post* get a blog post from a contact
* re-blog this post
* click the author of the original post in the reblogged post
* observe how your own blog opens and not the one of the author of the original postAdapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1989Blog post created snackbar re-appears after screen rotation2021-04-26T12:03:55ZTorsten GroteBlog post created snackbar re-appears after screen rotation* write a blog post
* wait until snackbar disappears
* rotate screen
* observe the snackbar coming back* write a blog post
* wait until snackbar disappears
* rotate screen
* observe the snackbar coming backAdapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1973Make use of DbViewModel#handleException2021-04-26T12:13:14ZTorsten GroteMake use of DbViewModel#handleException!1342 is introducing `DbViewModel#handleException()` that we should also use in other ViewModel code where we currently do nothing more than logging the exception.!1342 is introducing `DbViewModel#handleException()` that we should also use in other ViewModel code where we currently do nothing more than logging the exception.Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1972Unable to add nearby contact when location services disabled2021-04-26T12:12:47ZDaniel LublinUnable to add nearby contact when location services disabled2 Android 10 devices trying to add each other. Location permissions has been granted, but actual location service were later disabled in the system. Adding times out, and I get the "Could not connect to your contact" screen.
Enabling lo...2 Android 10 devices trying to add each other. Location permissions has been granted, but actual location service were later disabled in the system. Adding times out, and I get the "Could not connect to your contact" screen.
Enabling location service on both devices and trying again is successful.Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1962Implement backend of "Connect via Bluetooth" feature2021-04-27T12:31:32ZTorsten GroteImplement backend of "Connect via Bluetooth" featureProvide the backend functionality for: #1961
A couple of options there:
* we can try to connect to a specific contact without closing any existing connections (no prioritisation), which is what we'd usually do when polling
* or we can ...Provide the backend functionality for: #1961
A couple of options there:
* we can try to connect to a specific contact without closing any existing connections (no prioritisation), which is what we'd usually do when polling
* or we can close other connections first to give the new connection the best chance of succeeding
Maybe we should defer this question until we've experimented a bit. We already have a mechanism for closing connections so we know it's something that could be added later if needed.Adapt to changes in the Android platformDaniel LublinDaniel Lublin2021-04-30https://code.briarproject.org/briar/briar/-/issues/1961Implement UI of "Connect via Bluetooth" feature2021-07-06T10:01:35ZTorsten GroteImplement UI of "Connect via Bluetooth" featureImplement the design of #1960
Sub-task of #1821Implement the design of #1960
Sub-task of #1821Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1960Design "Connect via Bluetooth" feature2021-04-26T12:52:47ZTorsten GroteDesign "Connect via Bluetooth" featureSub-task of #1821Sub-task of #1821Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1951Exclude files from D2D backups2021-03-15T13:29:35ZTorsten GroteExclude files from D2D backupsWhen targeting API 30: When using device-to-device backup our `allowBackup=false` will be ignored and our app data will get backed up, if we don't explicitly exclude files from backup.
Subtask of #1827When targeting API 30: When using device-to-device backup our `allowBackup=false` will be ignored and our app data will get backed up, if we don't explicitly exclude files from backup.
Subtask of #1827Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1944Changing a contact name does not update the contact list immediately2021-04-26T12:09:06ZSebastianChanging a contact name does not update the contact list immediatelyTest instructions:
* Enter a conversation
* Open the menu
* Select 'change contact name'
* Enter a new alias and confirm
* Navigate back to the contact list
* Observe that the alias of the contact has already changed when arriving at the...Test instructions:
* Enter a conversation
* Open the menu
* Select 'change contact name'
* Enter a new alias and confirm
* Navigate back to the contact list
* Observe that the alias of the contact has already changed when arriving at the contact list
* Variant A: change the contact name to nothing (empty string into dialog)
* Variant B: after the contact alias was empty, change back to some non-empty aliasAdapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1942Profile picture isn't shown if settings screen is recreated after process was...2021-04-26T12:13:43ZakwizgranProfile picture isn't shown if settings screen is recreated after process was killedSteps to reproduce:
* Open the Briar settings screen
* Leave Briar running in the foreground and turn the screen off
* Use the ADB shell to kill the Briar process
* Turn the screen back on
* The Briar password prompt is shown
* Sign into...Steps to reproduce:
* Open the Briar settings screen
* Leave Briar running in the foreground and turn the screen off
* Use the ADB shell to kill the Briar process
* Turn the screen back on
* The Briar password prompt is shown
* Sign into Briar
* The settings screen is shown
* The profile picture isn't loaded
![device-2021-02-18-143535](/uploads/264e108ebbe0be0b9acb706e3080bfe1/device-2021-02-18-143535.png)
Tested on the Nexus 5X (Android 8.1.0).Adapt to changes in the Android platformakwizgranakwizgran2021-04-30https://code.briarproject.org/briar/briar/-/issues/1921PluginViewModel should wait for DB to open before loading settings2021-04-21T11:29:10ZakwizgranPluginViewModel should wait for DB to open before loading settingsWhile testing something unrelated on the 1.2.12 release I noticed this exception in the log:
```
02-03 16:15:52.017 2925-2952/org.briarproject.briar.android.debug W/PluginViewModel: org.briarproject.bramble.api.db.DbClosedException
...While testing something unrelated on the 1.2.12 release I noticed this exception in the log:
```
02-03 16:15:52.017 2925-2952/org.briarproject.briar.android.debug W/PluginViewModel: org.briarproject.bramble.api.db.DbClosedException
org.briarproject.bramble.api.db.DbClosedException
at org.briarproject.bramble.db.H2Database.createConnection(H2Database.java:97)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:554)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:97)
at org.briarproject.bramble.db.DatabaseComponentImpl.startTransaction(DatabaseComponentImpl.java:161)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:208)
at org.briarproject.bramble.settings.SettingsManagerImpl.getSettings(SettingsManagerImpl.java:26)
at org.briarproject.briar.android.navdrawer.PluginViewModel.isPluginEnabled(PluginViewModel.java:204)
at org.briarproject.briar.android.navdrawer.PluginViewModel.lambda$loadSettings$0$PluginViewModel(PluginViewModel.java:187)
at org.briarproject.briar.android.navdrawer.-$$Lambda$PluginViewModel$HPPDOnjY7Hk6kE7RpR2no4vHis8.run(lambda)
at org.briarproject.bramble.TimeLoggingExecutor.lambda$execute$0$TimeLoggingExecutor(TimeLoggingExecutor.java:36)
at org.briarproject.bramble.-$$Lambda$TimeLoggingExecutor$Bqrtbsq_8LcRPoTWBOef6xh7gJg.run(lambda)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
```
This happens at startup when NavDrawerActivity is created before signing in, as PluginViewModel tries to load the plugin settings.
This is currently harmless because a new NavDrawerActivity instance is created after signing in, with a new view model instance that successfully loads the settings. But that's just a lucky accident. To avoid depending on that, perhaps it would be better to refactor PluginViewModel to use DbViewModel#runOnDbThread()?Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1919Password fields not focusable when navigated back to from the next page (keyb...2021-07-06T10:01:58ZIvanaPassword fields not focusable when navigated back to from the next page (keyboard doesn't come up when they are tapped)The test scenario was like this:
I type in my nickname on the first screen and I tap Next button. Then I proceed to type in my passwords, and click next (on the keyboard Next button).
A message comes up onthe next screen informing th...The test scenario was like this:
I type in my nickname on the first screen and I tap Next button. Then I proceed to type in my passwords, and click next (on the keyboard Next button).
A message comes up onthe next screen informing the user that briar has to stay connected and that they user should switch off the battery optimisation.
From that screen user navigates back to the password screen, because they changed their mind about what password to use and they want to change it.
The passwords cannot be changed because the keyboard doesn't come up when fields are tapped, so user cannot type. This was confirmed a bug in mattermost conversation (Testing channel, 3.2.21, around noon)
What should happen here? Should the user be able to chang etheir password from here?
Or should something else happen when they navigate back to the password page?
Please describe the details of solution in here so they can be re-tested when fied.
mp4 attached for your info.
![device-2021-02-03-124850](/uploads/2f3f336a75746a0b25efd7d786886283/device-2021-02-03-124850.mp4)Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1914Create ViewModels immediately after injection2021-04-26T12:11:53ZakwizgranCreate ViewModels immediately after injectionVarious activities and fragments are creating their view models at different points in their lifecycles. To avoid subtle lifecycle bugs let's standardise this and create view models immediately after injection.
Subtask of #1823.
Test i...Various activities and fragments are creating their view models at different points in their lifecycles. To avoid subtle lifecycle bugs let's standardise this and create view models immediately after injection.
Subtask of #1823.
Test instructions:
This set of changes doesn't introduce new features, it only rearranges some code and is supposed not to break anything. It makes sense to test that the workflows and actions for which code has been touched. These include:
* Creating a new account on a fresh install
* Adding contacts via QR codes and make sure it works
* Add a contact remotely and before that finishes (by only completing the dialog on one of the devices first), check that the screen with the "pending contacts" works as expected
* Changing the alias for a contact
* Changing the account password
* Sending an image and opening that image full screen on both the sender and receiver device
* Opening the transports screen (by opening the navigation drawer on the left, tapping any of the connection modes at the bottom) and check that changing anything there persists (i.e. is still changed when navigating away and back to that screen)Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1905Use ContactListViewModel in ContactChooserFragment and IntroductionActivity2021-04-26T12:51:23ZSebastianUse ContactListViewModel in ContactChooserFragment and IntroductionActivity!1341 introduced the ContactListViewModel which should be reusable by ContactChooserFragment and IntroductionActivity!1341 introduced the ContactListViewModel which should be reusable by ContactChooserFragment and IntroductionActivityAdapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1894Introduce ViewModel for RssFeed*Activity2021-05-05T16:08:09ZTorsten GroteIntroduce ViewModel for RssFeed*ActivityThere's `RssFeedManageActivity` and `RssFeedImportActivity`. Maybe one of them or both can be turned into a fragment and share the same ViewModel.
Subtask of #1823.There's `RssFeedManageActivity` and `RssFeedImportActivity`. Maybe one of them or both can be turned into a fragment and share the same ViewModel.
Subtask of #1823.Adapt to changes in the Android platformDaniel LublinDaniel Lublin2021-04-30https://code.briarproject.org/briar/briar/-/issues/1891Migrate SharingController to ViewModel2021-04-26T12:53:15ZTorsten GroteMigrate SharingController to ViewModelUsed by blogs and forums.Used by blogs and forums.Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1883Prepare for Resource IDs becoming non-final in Android Gradle Plugin version 5.02021-04-26T12:12:21ZTorsten GrotePrepare for Resource IDs becoming non-final in Android Gradle Plugin version 5.0Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1881Migrate ThreadListController to ViewModel2021-04-06T12:40:00ZTorsten GroteMigrate ThreadListController to ViewModelSubtask of #1800Subtask of #1800Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30