Update Timestamps Every Minute
Yes by using `notifyDataSetChanged()` I am invalidating everything, but view binding is very fast and the RecyclerView is smart about it. I could parse the dataset and use `notifyItemChanged()` only on the elements that matter, but this is not generic and a lot more code which is not necessarily faster. I suggest we go with my simple and generic approach for now and optimize when we actually notice a performance problem.
Closes#455
See merge request !238
This commit addes a combined blog feed that shows all posts of all
subscribed blogs in the order the blog posts have been received.
For now, this commit also hides other blog functionality like adding
additional blogs and browsing individual blogs.
Closes#417
This allows for swiping left/right to read other posts by using
a ViewPager.
This hasn't been done as a separate activity, but with
fragments, so both can share the `BlogPersistentData` without
needing to reload it.
Closes#428
This does not yet support multiple identities. It just shows blogs
created by the first identity, but can easily be adapted for
multi-identity support.
Closes#410
Clicking the plus in the toolbar open the `CreateBlogActivity` which
allows the user to create a new blog. Only the first identity is
considered, but support for more identities can be easily added later.
The actual list of blogs in the My Blogs tab will be done in the next
commit.
Font Colors and Separate Themes
Once applied this commit will change the font colors according to the
design and move all themes into a dedicated file.
Closes#333
See merge request !228
Make timestamps prettier and more useful
Here's some example timestamps I have been testing with. That's how it will look like when this MR is merged:

Closes#230
See merge request !235
Deduplicate contact exchange protocol
`ContactExchangeTask` was originally extracted from the Bluetooth invitation task; this completes the refactoring.
Closes#365.
See merge request !199
Make use of Existing Translations
Adds first translations to source code and sets up transifex config
file. Pull more translations later with:
```bash
cd briar-android
tx pull --mode=developer
```
Closes#448

See merge request !226
Adds first translations to source code and sets up transifex config
file. Pull more translations later with:
cd briar-android
tx pull --mode=developer
Closes#448
Separate Date and Author Name in Forum Posts
This also fixes the issue there the trust indicator was shown at the top on some devices.

Closes#442
See merge request !227
Fix IdentityManager hooks
This commit makes sure that there is only one identity manager that is
initialized early enough so hooks can be added properly.
Closes#446
See merge request !225
Backend for Automatic Micro Blogs
This MR introduces automatic personal blogs to the Blog client. When a contact is added, her personal blog will also be added automatically. Also, when a new identity is added, a personal blog for that identity is created.
The first commit changes the blog paradigm to short-form blogs and introduces other things that will be useful later in the UI (!214) such as a BlogPostAdded event and the possibility to delete/remove blogs (not the personal ones).
This MR is based on !224 to prevent crashes that are fixed by it. So please review and merge !224 first.
See merge request !223
When a contact is added, her personal blog will also be added automatically.
Also, when a new identity is added, a personal blog for that identity is created.
Part of #436
Removes teaser and makes body mandatory.
It also adds support for deleting blogs and
introduces a getAuthorStatus() method to the IdentityManager
that takes a running transaction.
Forum improvements
Forum Activity improvements:
* Orientation changes now restore the activity properly, e.g. input text and state is retained
* Snack bar is now, when appropriate, clickable
* The bottom divider is no longer visible for the bottom entry
* Code refactoring for improved simplicity and less redundancy
* Timestamp check to ensure that new posts are not older than the latest post
Closes#426Closes#423Closes#424
See merge request !218
Fixing fragment instance restore
Alas, it turns out that my neat way of integrating the Fragments into the dependency graph was not without problems. Me and @grote discovered that this presented us with a lot of problems on orientation changes as the Activity is re-created, and therefore parts of the dependency graph. The simplest solution was simply to abandon the idea, i.e. with this branch Fragments are no longer part of the dependency graph.
See merge request !215