Update contact list when contacts are deleted. #227
The logic in ConversationActivity for adding or updating items didn't allow for items being removed. We *could* come up with logic for doing that - throw all the items from the adapter into a set, remove any items corresponding to current contacts from the set, then batch update the adapter to remove any items remaining in the set - but I think it would be overly complex. It's simpler to just clear the adapter and add the current contacts.
Also tidied up some adapter code while looking for the bug.
See merge request !70
Run hooks when contacts/identities are added/removed. #209
Now that the sync layer is separated from its clients, actions that used to occur within the DatabaseComponent, such as adding or removing private groups when adding or removing a contact, have to be handled by clients.
This patch adds a mechanism for clients to register hooks with the Contact/IdentityManager to be run when contacts/identities are being added/removed. The MessagingManager uses ContactManager hooks for adding and removing private groups, and the ContactManager uses IdentityManager hooks for removing contacts when an identity is removed.
I've also changed the way some components register with the LifecycleManager and EventBus.
This merge request depends on !64 - I'll merge them at the same time. Closes#209.
See merge request !68
Separate the sync layer from its clients. #112
This patch contains most of the work for #112. MessagingManager and ForumManager have been converted to BSP clients, and the sync layer's message and group formats no longer contain any client-specific data.
Each client has a MessageValidator that's called by the ValidationManager to validate messages belonging to the client. A new MessageValidatedEvent informs listeners when a message has been validated. This required some changes to the UI, especially the notification manager.
While working on the notification manager I realised it was calling Android API methods from background threads, which may be unsafe, and the notification logic was split across BriarService and AndroidNotificationManagerImpl. So I refactored those classes, along with AndroidExecutorImpl, which was using an unnecessary background thread.
Still to do:
* Synchronise blocks, not messages
* Add message type field to message header as per BSP spec
* Convert TransportPropertyManager into a BSP client
* Convert SubscriptionUpdates/Acks into forum client messages
See merge request !64
ENH: Replaces transport config with namespaced settings
This MR contains the following:
* Adds a new guice module: SettingsManager, that abstracts the settings interface from the underlying database
* Uses SettingsManager to replace the db.getConfig/mergeConfig calls in the Settings activity
* Replaces the getSettings and mergeSettings calls in the database modules to include a namespace parameter. Updates the corresponding queries in the Jdbc module
* Removes the TransportConfig module, as it is not used anymore
* Updates the DuplexPlugin interface, to reflect this change in schemas and calls
* Updates the calls in the corresponding plugins, for both briar-android and briar-desktop
* Updates the hardcoded plugins in the tests to reflect these changes and updates the unit tests.
See merge request !65
Do Bluetooth Adapter enabling/disabling in background thread
Also set the default preferences in a background thread when app starts.
Closes#184
See merge request !66
Offer option to uninstall Briar in a panic event (#211)
Due to the nature of how Android app uninstall works without root access, this requires manual confirmation after a panic event was triggered.
See merge request !63
Fix notifications for current conversation
* Remove notification about private messages when viewing the conversation
* Do not show a notification for a conversation the user is viewing
Closes#195
See merge request !61
Remove upstream jar files from all modules except briar-desktop
This also adds a script for running tests without the Android SDK installed
I've tried to find a better way to do this by conditionally including
the briar-android project in settings.gradle, but failed.
Please note that gradle needs to be installed to run the tests by
executing:
```
./run-tests-without-android.sh
```
See merge request !59
I've tried to find a better way to do this by conditionally including
the briar-android project in settings.gradle, but failed.
Please note that gradle needs to be installed to run the tests by
executing:
gradle test
Please note that this script uses the 'configuration on demand' feature
which is still incubating,
so not every test run is guaranteed to work correctly.
However, there have not been any problems so far.
Do not show messages as unread when the conversation is open
* Only show them as unread when they arrive out of order
* Mark all messages as read when sending a message
Closes#201
See merge request !62
Delete database as panic response even when signed out
The method `runOnDbThread()` depends on an executor
that's created by roboguice at startup.
It requires to be signed in, so use a different thread instead.
Closes#215
See merge request !60
The method `runOnDbThread()` depends on an executor
that's created by roboguice at startup.
It requires to be signed in, so use a different thread instead.
Add tests for metadata encoder and parser as well as UTF-8 tests for BDF reader and writer
This also includes a commit to fix issues found in the metadata encoder and parser.
See merge request !58
Use @Test annotation to test for exceptions being thrown (#213)
Please note that this commit only uses the @Test annotation
where exceptions are thrown at the end of the test,
because otherwise the test would not be executed completely.
Examples for this are in DatabaseComponentImplTest where many exceptions
are thrown in close succession or in ConnectionRegistryImplTest where an
exception is thrown in the middle of the test.
Closes#213
See merge request !57
Support for Destructive Panic Actions
This MR is based on and requires !52.
More details are available in the commit message.
All known issues have now been fixed by new upstream releases.
See merge request !54
Initial Support For PanicKit
This MR adds support for the PanicKit libary. It supports the basic default panic response (signing out) which does not require user interaction to work. For destructive panic responses, the user needs to "connect" the panic trigger app (e.g. Ripple) with Briar first. To secure this connection further, TrustedIntents have been added. Gradle Witness is being used to guarantee the integrity of external libraries.
Otherwise, this MR is pretty isolated and should not interfere with other parts of Briar. So merging it should be safe. However, the panic functionality still has rough edges and should not be relied on just now. It will mature along the the PanicKit library and the Ripple app.
Closes#204
See merge request !52