Navigation drawer (squashed and rebased).
This is @ernir's work on #30 and #181, rebased onto master with recent changes to ConversationActivity and ForumListActivity ported to the respective fragments.
See merge request !75
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
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
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
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.
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
PanicKit does distinguish between two kinds of panic responses:
* default responses such as logging out which are non-destructive and
do not require user interaction, so that the basics work without
configuration
* destructive responses such as deleting user data. These require
some sort of authentication to make sure they are not triggered
by malicious apps
The second type of responses is implemented with this commit.
Authentication is done by comparing the package name
which is very weak. It requires the user to opt-in to
destructive responses and to configure from which app
to receive those (since there might be many different panic
trigger apps).
While possible to uninstall an app and install one with the same
package name afterwards, this always triggers notifications to
the user (if the attacker does not have root access).
Still that is no sufficient security for Briar's requirements,
so that TrustedIntents are used as well to make sure that the
app sending the destructive trigger is signed by a signing key
that we specified before. Currently, that is the one from the
GuardianProject and from IilabEngineering who does the Amnesty
International Panic App.
The responsibility of checking that the panic TRIGGER is
legitimate lies with the app responding to the trigger, so Briar
in this case. This commit checks whether the TRIGGER comes from
a trusted app before performing destructive actions,
but does perform the default action even when triggered from
untrusted apps.
Closes#210
Transport properties manager facade, key manager refactoring. #112
Refactoring for #112: decouple the invitation and plugin code from the database with a TransportPropertiesManager facade (which will become a BSP client), and move some key management logic from the invitation code to the KeyManager. Update the integration tests to use the new FooManager facades.
See merge request !49
* removing screen border visible on small screens
* showing noticeable error message on wrong password input
* showing keyboard again after entering wrong password
* making lost password link easier to recognize as link
* renaming keyboard toggle method from 'hide' to 'toggle'
Use new BriarRecyclerView in ConversationView
This now handles progress bar and empty view itself.
With this commit, it also scrolls down on layout changes like when
keyboard is opened.
See merge request !46
Fix contacts duplicating itself when pressing back button in conversation view.
Normally, this should be handled by the `SortedList` in the `RecyclerView`, but it isn't for some reason. Instead of spending way too much time on finding out why, I am clearing the adapter instead (on each `activity.onResume()`) as it was done before.
Closes#200
See merge request !42
This is done by update existing items rather than just adding them,
because different timestamps in added items change the sorting criteria
and cause duplicates in the SortedList.
Closes#200