briar issueshttps://code.briarproject.org/groups/briar/-/issues2017-12-18T07:40:36Zhttps://code.briarproject.org/briar/briar/-/issues/764BdfList and BdfDictionary don't need to be thread-safe2017-12-18T07:40:36ZakwizgranBdfList and BdfDictionary don't need to be thread-safeAlthough the norm is for classes in briar-api to be thread-safe, there's no reasonable scenario where we'd share one of these data structures between threads, so they can be based on ArrayList and TreeMap rather than Vector and Concurren...Although the norm is for classes in briar-api to be thread-safe, there's no reasonable scenario where we'd share one of these data structures between threads, so they can be based on ArrayList and TreeMap rather than Vector and ConcurrentSkipListMap.Android Beta 2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/763Remove old signature API2017-12-18T07:40:36ZakwizgranRemove old signature APIRemove the Signature and SignatureImpl classes, which aren't needed any more. CryptoComponentImpl can directly use the Bouncy Castle class that they wrap.Remove the Signature and SignatureImpl classes, which aren't needed any more. CryptoComponentImpl can directly use the Bouncy Castle class that they wrap.Milestone Fakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/762Text input does not increase to three lines anymore2017-12-18T07:40:36ZTorsten GroteText input does not increase to three lines anymoreWe had changed the input field for forums and private conversations once to automatically enlarge when lots of text is entered (up to three lines). The emoji changes introduced a regression, so the input field does not extend anymore.We had changed the input field for forums and private conversations once to automatically enlarge when lots of text is entered (up to three lines). The emoji changes introduced a regression, so the input field does not extend anymore.Milestone FJulian DehmJulian Dehmhttps://code.briarproject.org/briar/briar/-/issues/761Keyboard doesn't close when navigating up2017-12-18T07:40:36ZakwizgranKeyboard doesn't close when navigating upA user on IRC reported this. Steps to reproduce:
* Open the keyboard in the coversation screen
* Press the up button in the action bar to leave the conversation screenA user on IRC reported this. Steps to reproduce:
* Open the keyboard in the coversation screen
* Press the up button in the action bar to leave the conversation screenMilestone FJulian DehmJulian Dehmhttps://code.briarproject.org/briar/briar/-/issues/760Integration tests for private group invitation protocol2017-12-18T07:40:36ZakwizgranIntegration tests for private group invitation protocolMilestone FTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/759Introduction responses are not marked as read2017-12-18T07:40:36ZTorsten GroteIntroduction responses are not marked as readStep to reproduce:
1. invite two contacts to each other
2. accept the introduction from both contacts and wait for new contacts to be added
3. enter and leave private conversations with introducer with both contacts
4. return to contact ...Step to reproduce:
1. invite two contacts to each other
2. accept the introduction from both contacts and wait for new contacts to be added
3. enter and leave private conversations with introducer with both contacts
4. return to contact list and observe one unread messageMilestone FTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/758Throw an exception if deleted message is requested from DB2018-08-24T09:21:46ZakwizgranThrow an exception if deleted message is requested from DB`DatabaseComponent#getRawMessage()` returns null if the message has been deleted. It should throw an exception instead. (If clients want to check whether a message has been deleted, we can add a separate method for that.)`DatabaseComponent#getRawMessage()` returns null if the message has been deleted. It should throw an exception instead. (If clients want to check whether a message has been deleted, we can add a separate method for that.)Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/757Remove DeviceId code2017-12-18T07:40:36ZakwizgranRemove DeviceId codeThe DeviceId is a leftover from an early attempt to add multi-device support. Remove it as part of the Grand Refactoring of #136.The DeviceId is a leftover from an early attempt to add multi-device support. Remove it as part of the Grand Refactoring of #136.Milestone FTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/756Creator discards new member's join message2017-12-18T07:40:36ZakwizgranCreator discards new member's join messageThe creator of a private group will discard a join message from a new member that arrives before the corresponding invitation protocol message has been handled. The new member will eventually retransmit the message and the creator will h...The creator of a private group will discard a join message from a new member that arrives before the corresponding invitation protocol message has been handled. The new member will eventually retransmit the message and the creator will handle it, but this causes an unnecessary delay in the creator handling the new member's join message.Milestone Eakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/755Timestamp of new group message should be higher than that of all messages in ...2017-12-18T07:40:36ZTorsten GroteTimestamp of new group message should be higher than that of all messages in the groupMilestone ETorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/754Add visibility information to group member list2017-12-18T07:40:36ZTorsten GroteAdd visibility information to group member listThe member list currently only says if the group is shared with a contact or not using a sharing icon. It does not give any details on whether the relationship to that user is revealed or not.The member list currently only says if the group is shared with a contact or not using a sharing icon. It does not give any details on whether the relationship to that user is revealed or not.Milestone FTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/753Listener interfaces have mixed responsibilities2021-01-20T12:34:20ZakwizgranListener interfaces have mixed responsibilitiesThe UI makes heavy use of listener interfaces that inherit from either DestroyableContext or BaseFragmentListener. These are used for various purposes:
* Callbacks from a controller to the UI (e.g. `TransportStateListener#stateUpdate()`...The UI makes heavy use of listener interfaces that inherit from either DestroyableContext or BaseFragmentListener. These are used for various purposes:
* Callbacks from a controller to the UI (e.g. `TransportStateListener#stateUpdate()`)
* Injecting dependencies into fragments (`BaseFragmentListener#getActivityComponent()`)
* Manipulating other parts of the UI (e.g. `CreateGroupListener#showSoftKeyboard()`)
* Running tasks (`DestroyableContext#runOnUiThreadUnlessDestroyed()`, `BaseFragmentListener#runOnDbThread()` (deprecated))
These different purposes would ideally be separated into different interfaces. Maybe it would clarify things if communication from controllers back to the UI used the "listener" name and communication between fragments and their activities used some other name.
Listeners are usually provided by casting an Activity or Context (passed to `ActivityLifecycleController#onActivityCreate()` or `Fragment#onAttach()`) to an arbitrary listener interface. This is a bit of a hack - it would be nice if we could provide listeners in a type-safe way, for example by injection.
Related to #752.https://code.briarproject.org/briar/briar/-/issues/752Break up ActivityModule so controller implementations can be package-private2017-12-18T07:40:36ZakwizgranBreak up ActivityModule so controller implementations can be package-privateController implementations need to be public so that ActivityModule can access them. Break up ActivityModule into smaller package-specific modules, like we do in the core, so we can reduce the visibility of the controllers.
Related to #...Controller implementations need to be public so that ActivityModule can access them. Break up ActivityModule into smaller package-specific modules, like we do in the core, so we can reduce the visibility of the controllers.
Related to #368.Milestone Fhttps://code.briarproject.org/briar/briar/-/issues/751Emoji flicker when BriarRecyclerView updates itself2020-11-21T16:23:47ZakwizgranEmoji flicker when BriarRecyclerView updates itselfWhen BriarRecyclerView updates itself once per minute, emoji visibly flicker.When BriarRecyclerView updates itself once per minute, emoji visibly flicker.https://code.briarproject.org/briar/briar/-/issues/750ANR when copying and pasting long strings of emoji2020-11-21T16:24:41ZakwizgranANR when copying and pasting long strings of emojiCopying and pasting long strings of emoji from EmojiTextView to EmojiEditText is very slow and can produce an ANR dialog. The delay increases superlinearly with the number of emoji, and depends on the existing contents of the EmojiEditTe...Copying and pasting long strings of emoji from EmojiTextView to EmojiEditText is very slow and can produce an ANR dialog. The delay increases superlinearly with the number of emoji, and depends on the existing contents of the EmojiEditText.
With the Huawei Ascend Y330:
* 64 emoji: noticeable delay
* 128 emoji: 6 seconds if EmojiEditText is empty, 20 seconds if it already contains 128 emoji
* 256 emoji: 30 seconds if EmojiEditText is empty, 100 seconds if it already contains 256 emoji
With the Samsung Galaxy Ace 2:
* 128 emoji: noticeable delay
* 256 emoji: 6 seconds if EmojiEditText is empty, 18 seconds if it already contains 256 emoji
* 512 emoji: 37 seconds if EmojiEditText is empty, 135 seconds if it already contains 512 emoji
![device-2016-11-10-155441](/uploads/39033afde37e12b0840b97260d775389/device-2016-11-10-155441.png)
![device-2016-11-10-155523](/uploads/877491aa8bde25c54ef75d51632b8bec/device-2016-11-10-155523.png)
These problems don't occur when copying and pasting ordinary text from an EmojiTextView to an EmojiEditText. Thousands of characters can be copied and pasted without a noticeable delay.https://code.briarproject.org/briar/briar/-/issues/749Emoji are invisible on some devices when using LAYER_TYPE_NONE2018-09-03T12:14:15ZakwizgranEmoji are invisible on some devices when using LAYER_TYPE_NONEThis issue can be reproduced on master with the Samsung Galaxy Ace 2 (Android 4.1.2) by creating a large EmojiTextView (for example a long forum post), so that rendering switches from LAYER_TYPE_SOFTWARE to LAYER_TYPE_NONE. In the screen...This issue can be reproduced on master with the Samsung Galaxy Ace 2 (Android 4.1.2) by creating a large EmojiTextView (for example a long forum post), so that rendering switches from LAYER_TYPE_SOFTWARE to LAYER_TYPE_NONE. In the screenshot below, the post at the top of the screen is below the threshold and uses LAYER_TYPE_SOFTWARE, while the invisible post filling the rest of the screen is above the threshold and uses LAYER_TYPE_NONE.
![device-2016-11-10-144841](/uploads/c55ea098cebfb45b5974816af3be4353/device-2016-11-10-144841.png)
The issue can be reproduced with EmojiTextViews of any size by changing the code to always use LAYER_TYPE_NONE. This makes it easier to see that emoji are sometimes drawn and sometimes not. For example, the screenshot below shows a mixture of posts, all of which use LAYER_TYPE_NONE and contain strings of emoji.
![device-2016-11-10-135603](/uploads/e0a04004b56ed1a4cc3286b09c60b3fa/device-2016-11-10-135603.png)
The issue also affects EmojiEditText if the rendering type is changed to LAYER_TYPE_NONE. In the screenshot below, one emoji has been typed but it's invisible.
![device-2016-11-10-135216](/uploads/9c3b4a7ca9afbf2ed24ab741d6c9d1cc/device-2016-11-10-135216.png)
Selecting invisible emoji makes them visible.
![device-2016-11-10-144910](/uploads/e7fecfe91ad52b0676343fde866fa805/device-2016-11-10-144910.png)
The issue also occurs on master with the Huawei Ascend Y330 (Android 4.2.2).
![device-2016-11-10-152529](/uploads/6893ab42d5ae585c38a76337c9186ad6/device-2016-11-10-152529.png)
If an EmojiTextView contains a mixture of emoji and text, the text is rendered normally. In the following screenshot, the post starts with one emoji, which is invisible.
![device-2016-11-10-150808](/uploads/de3bd61eb4f0aa9cf3955d5a837dbecb/device-2016-11-10-150808.png)Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/748Re-encoding of QR code payloads may produce different results2017-12-18T07:40:37ZakwizgranRe-encoding of QR code payloads may produce different resultsSince !394, adding a contact sometimes fails at the confirmation stage.
The Payload class contains a map from TransportIds to BdfLists. When calculating confirmation records, the Payload object received from the contact is re-encoded us...Since !394, adding a contact sometimes fails at the confirmation stage.
The Payload class contains a map from TransportIds to BdfLists. When calculating confirmation records, the Payload object received from the contact is re-encoded using the map's iteration order. The map is implemented as a HashMap, which doesn't have a defined iteration order. Devices with different HashMap implementations may re-encode each other's payloads differently from the original encoding, thus producing different confirmation records.Milestone Fakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/747Remove injected field from BlogManagerImplTest2017-12-18T07:40:37ZakwizgranRemove injected field from BlogManagerImplTestBlogManagerImplTest has an @Inject annotated field, but injections aren't used in the briar-tests module. Replace it with a mock.BlogManagerImplTest has an @Inject annotated field, but injections aren't used in the briar-tests module. Replace it with a mock.Milestone Fakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/746Crash while trying to add contact2017-12-18T07:40:37ZMegaloxCrash while trying to add contact@ernir installed the newest version of briar on my two test devices this morning (Nexus 5 and Sony Xperia M2). I tried to add these as contacts and both devices crashed after scanning the QR code. I reproduced this crash three times.@ernir installed the newest version of briar on my two test devices this morning (Nexus 5 and Sony Xperia M2). I tried to add these as contacts and both devices crashed after scanning the QR code. I reproduced this crash three times.akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/745Refactor redundant code in AndroidNotificationManagerImpl2020-11-21T16:26:13ZakwizgranRefactor redundant code in AndroidNotificationManagerImplAndroidNotificationManagerImpl contains blocks of nearly identical code for doing things like counting new messages per-group or per-contact, and blocking or unblocking notifications per-client. These could be refactored to reduce redund...AndroidNotificationManagerImpl contains blocks of nearly identical code for doing things like counting new messages per-group or per-contact, and blocking or unblocking notifications per-client. These could be refactored to reduce redundancy.
(ConnectionRegistryImpl also contains similar code for counting connections per-contact. Maybe this could be factored out into a separate `Counter<T>` class.)