When sharing only with chosen contacts, checking the contact's checkbox
and pressing Done nothing happens and the forum is not shared. An
additional click on "Share Forum" is necessary to actually share.
This behavior is fixed with this change.
Now, clicking 'Done' immediately shares the forum.
Closes#153
Users were confused by the process of adding a contact for the first time.
This change adds additional explanation and a picture of what is going on.
It also moves part of the UI into XML files.
Closes#87
Remove the Toast that always says 'Message Sent' and show graphical
indicators instead that show either:
* message is waiting to be sent
* message was sent (or requested)
* message was delivered
The text of the startup failure notification is unhelpful due to lack of
space. Touching the notification now launches an activity that gives details
of the problem and what can be done about it.
Closes#38
Hide password strength meter when confirming password
Closes#100
I opted to hide the strength meter because:
* more extensive changes would have been required to set the strength meter to 100% red.
* IMHO it would lead to confusion as to the meaning of the strength meter.
* the "passwords do not match" error should eventually become a proper error of the confirm EditText, not a separate label.
See merge request !2
1. The things we're really trying to protect - contact identities,
message contents, etc - can't be erased from memory because they're
encapsulated inside objects we don't control.
2. Long-term secrets can't be protected by erasing them from memory
because they're stored in the database and the database key has to be
held in memory whenever the app's running.
3. If the runtime uses a compacting garbage collector then we have no
way to ensure an object is erased from memory.
4. Trying to erase secrets from memory makes the code more complex.
Conclusion: Let's not try to protect secrets from an attacker who can
read arbitrary memory locations.