- Nov 11, 2016
-
-
akwizgran authored
-
akwizgran authored
-
akwizgran authored
Add new Exception handler While working on #732 I again needed to use a `UiResultExceptionHandler` when I actually don't need to return a result. We have some other places in the code like this. So I introduced a `UiExceptionHandler` without the result part and used it where appropriate. While I was touching some classes, I also added the new annotations. This MR includes another small commit that notifies only on local group messages. Joining a group is a message as well and without this change, you are notified about a new message when you yourself joined your newly created group. See merge request !403
-
Torsten Grote authored
-
Torsten Grote authored
Also add NotNull annotation to classes that were touched
-
akwizgran authored
Add a controller for contact selection lists See merge request !401
-
- Nov 10, 2016
-
-
Torsten Grote authored
-
Torsten Grote authored
-
akwizgran authored
Add support for revealing contacts to the PrivateGroupManager This also adds three integration tests and improves some small details here and there in the private group client. Prerequisite for #732. See merge request !396
-
Torsten Grote authored
-
akwizgran authored
Preserve the order of descriptors in QR code payloads This fixes a regression caused by my recent changes to the Payload class. Closes #748 See merge request !399
-
Torsten Grote authored
Don't crash if camera is reopened or surface is recreated This branch fixes the crash is described in #720, which can be reproduced easily by scanning a QR code and failing to connect (for example, scan a screenshot of a QR code from a device that's no longer listening). When the camera view becomes visible again after trying to connect, its surfaceCreated() callback is called again with the same surface. An IllegalStateException added in !340 causes the crash. Closes #720 See merge request !397
-
- Nov 09, 2016
-
-
Torsten Grote authored
-
Torsten Grote authored
This also adds two integration tests and improves some small details
-
akwizgran authored
-
akwizgran authored
-
Torsten Grote authored
Make the feed pager respond to events, block notifications This branch fixes a bug I found while working on #705: FeedPostPagerFragment doesn't start or stop the controller, so it doesn't load newly received posts or block notifications, unlike FeedFragment. See merge request !398
-
akwizgran authored
-
akwizgran authored
-
- Nov 08, 2016
-
-
akwizgran authored
Encode transport properties more compactly in QR codes The [original BQP spec](https://code.briarproject.org/akwizgran/briar/wikis/BQP) described a compact encoding for transport properties, with the goal of making the QR code as small as possible. At some point during the implementation, I asked @str4d to use TransportIds and TransportProperties instead, as described in the [current spec](https://code.briarproject.org/akwizgran/briar-spec/blob/master/protocols/BQP.md). That was a mistake. Using the original format reduces the payload from 60 to 34 bytes (43% smaller) for Bluetooth only, and from 96 to 49 bytes (49% smaller) for Bluetooth and LAN. This makes it easier to scan codes from low-resolution screens using fixed-focus and/or low-resolution cameras. Using this branch I can exchange codes between the Sony Xperia Tipo (320x480 screen, fixed focus, 640x480 preview size) and the Huawei Ascend Y300 (480x800 screen, infinity focus, 1280x720 preview size). This also removes an obstacle to implementing #558, as TransportIds are no longer included in QR codes. Closes #346. See merge request !394
-
akwizgran authored
Private group invitation protocol This branch implements the private group invitation protocol. The implementation is something of an experiment with a new way of writing client protocols. We start with a role enum that lists the roles in the protocol, and a state enum for each role, which lists the states in the role's state machine. Then there's a session class, parameterised by the state class and therefore by the role, which represents the session information held by that role. Then there's an engine interface, parameterised by the session class and therefore by the role, which encapsulates the protocol logic for the role. Most of this stuff can be created pretty mechanically from the state machine diagrams. The engine interface has a method for each type of message and each local action. I started out with one method for all messages and another for all local actions, but that turned out to be a bad design - the information about what kind of message was being handled was lost when the message was passed to the engine, and had to be recovered using an instanceof ladder. Each engine method takes a message or an action and a session, and returns an updated session. A transaction is passed in so the engine can send messages, attach events, and do any other work it needs to do (such as changing the visibility of groups, in the case of this protocol). This removes the need to run tasks outside the engine, so the protocol logic is better encapsulated inside the engine. Parsing and encoding of messages and sessions is separated from protocol logic. MessageParser, MessageEncoder and the validator are the only classes that know how messages and their metadata are formatted, and likewise SessionParser and SessionEncoder are the only classes that know how sessions are formatted. The metadata keys are declared in a package-private interface. It's common knowledge that I never make mistakes, so to keep things interesting I've hidden 114 deliberate mistakes in this code. See how many you can spot! Needs tests before #709 is closed. See merge request !382
-
Torsten Grote authored
Preliminaries for private group invitation protocol As promised, here's the preliminary stuff for #709 as a separate MR. See merge request !395
-
akwizgran authored
-
akwizgran authored
-
akwizgran authored
-
akwizgran authored
-
akwizgran authored
-
akwizgran authored
-
akwizgran authored
Use namespaced strings for client IDs Closes #557 See merge request !393
-
akwizgran authored
Mark private messages read properly Depends on !386. This branch uses the same approach as forums to mark messages read, i.e. each message is marked read when it becomes visible, rather than marking all messages read in a batch when the activity finishes. This fixes two problems: messages not being marked read when isFinishing() is false, for example when leaving the activity via the home button, and a race condition between updating and loading the group count when leaving the activity, resulting in a stale unread message count in the contact list. Closes #196. See merge request !388
-
Torsten Grote authored
Broadcast GroupMessageAddedEvent for the UI to update when received Closes #733 See merge request !390
-
Torsten Grote authored
-
akwizgran authored
Create GroupDissolvedEvent and react to it This MR also makes the private group list react to incoming group invitations (once they are implemented).   Closes #736, #737 See merge request !392
-
Torsten Grote authored
-
Torsten Grote authored
Also react to incoming group invitations
-
akwizgran authored
Show Notifications for Group Messages Closes #734 See merge request !391
-
akwizgran authored
Return to group after not inviting new members This MR also closes the keyboard when returning from the message fragment. Closes #735 See merge request !389
-
akwizgran authored
Fixed asynchronous Activity leaks in Fragments If a Fragment has been detached its `getActivity()` method will return null, providing numerous crash possibilities within the app. My approach to fixing this is to make Fragments use their own `runOnUiThreadUnlessDestroyed` method, which also checks if the Fragment has been detached before running the Runnable Closes #714 See merge request !387
-
akwizgran authored
-
- Nov 07, 2016
-
-
Ernir Erlingsson authored
-