~singpolyma/cheogram-android

Better dialling locale

When dialling or adding a contact, default to network locale rather than sim
locale.  When syncing contacts prefer sim locale so contacts don't break while
roaming.

Special case the JMP SIM to be from US even though it is actually from FR.
Build play variant in CI as well
We use fromHtml that is 24+
Use older method for android 5
Allow long press to copy any link in a message
Replace HTML QuoteSpan with ours
Allow displaying long messages without UI truncation

Especially since this applies to merged messages
Avoid pushing legacy bookmarks before they are loaded

Race condition could wipe them out
Use bookmarks2 on servers with full support
Allow scrolling with a ListView if it isn't inner scrollable
Fix colour behind snackbar
Don't churn IO on persisting roster

Especially during start up, syncRoster can get called a *lot*.  We already avoid
doing them in parallel, but they can happen one right after the other, locking
up the DB and churning IO.

Now, after we persist the roster, wait for 500ms before giving the next persist
a chance to run.  That way, other stuff has 500ms to get work done and we lose
very little DB consistency in the case of a failure.
Merge branch 'xhtml-im'

* xhtml-im:
  Fetch XEP-0231 inline images from trusted contacts
  Actually display images we already have inline in XHTML-IM
  Support for storing and displaying XHTML-IM
  Preserve Text Nodes in XML
Fetch XEP-0231 inline images from trusted contacts

If a contact is trusted or already likely to know our presence (due to having
sent them a message) then auto-fetch XHTML-IM inline images via XEP-0231 from them.
Actually display images we already have inline in XHTML-IM

If we already have the image for the Cid downloaded, then do create the
thumbnail and show it inline.
Support for storing and displaying XHTML-IM

Only supports images with XEP-0231 compatible cid: URIs, otherwise images render
as a fallback image.  This commit doesn't yet support fetching the images at
all, but can ask a passed-in thumbnailer to figure out getting the image for a
certain Cid.
Preserve Text Nodes in XML

The XML model that was being used was not able to represent elements with text
nodes and element children interspersed (such as in "markup like" XML:
<x>abc <y>def</y> ghi</x>).  This switches from a single content String to a
list of child Node.  Content is pulled from all children recursively.  A list of
Element children is also maintained since this list is frequently traversed so
it saves runtime checks in all of those loops at the expense of a small amount
of memory.  Since the children and childNode lists must be kept in sync, they
are both made private to avoid a child class trying to mutate one of them
without a safe helper.
Fix message sent padding
Next