database: migration of android client to new schema

- Combined previous patches as they will now be merged together
- Includes account splitting
- Migration is functional

Change-Id: Ic830eecd9f9d194bcf122d5845709ff5dcefeb0b
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
index a73e24d..3edaea2 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
@@ -79,7 +79,7 @@
 import cx.ring.interfaces.Colorable;
 import cx.ring.model.CallContact;
 import cx.ring.model.Conversation;
-import cx.ring.model.ConversationElement;
+import cx.ring.model.Interaction;
 import cx.ring.model.DataTransfer;
 import cx.ring.model.Phone;
 import cx.ring.model.RingError;
@@ -145,7 +145,7 @@
     }
 
     @Override
-    public void refreshView(final List<ConversationElement> conversation) {
+    public void refreshView(final List<Interaction> conversation) {
         if (conversation == null) {
             return;
         }
@@ -154,7 +154,7 @@
         if (mAdapter != null) {
             mAdapter.updateDataset(conversation);
         }
-        getActivity().invalidateOptionsMenu();
+        requireActivity().invalidateOptionsMenu();
     }
 
     @Override
@@ -247,7 +247,8 @@
             @Override
             public void afterTextChanged(Editable s) {
                 String message = s.toString();
-                if (TextUtils.isEmpty(message)) {
+                boolean hasMessage = !TextUtils.isEmpty(message);
+                if (hasMessage) {
                     binding.msgSend.setVisibility(View.GONE);
                     binding.emojiSend.setVisibility(View.VISIBLE);
                 } else {
@@ -255,7 +256,10 @@
                     binding.emojiSend.setVisibility(View.GONE);
                 }
                 if (mPreferences != null) {
-                    mPreferences.edit().putString(KEY_PREFERENCE_PENDING_MESSAGE, message).apply();
+                    if (hasMessage)
+                        mPreferences.edit().putString(KEY_PREFERENCE_PENDING_MESSAGE, message).apply();
+                    else
+                        mPreferences.edit().remove(KEY_PREFERENCE_PENDING_MESSAGE).apply();
                 }
             }
         });
@@ -273,10 +277,7 @@
             }
         });
 
-        if (binding != null) {
-            binding.ongoingcallPane.setVisibility(View.GONE);
-        }
-
+        binding.ongoingcallPane.setVisibility(View.GONE);
         DefaultItemAnimator animator = (DefaultItemAnimator) binding.histList.getItemAnimator();
         if (animator != null)
             animator.setSupportsChangeAnimations(false);
@@ -525,18 +526,18 @@
     }
 
     @Override
-    public void addElement(ConversationElement element) {
+    public void addElement(Interaction element) {
         mAdapter.add(element);
         scrollToEnd();
     }
 
     @Override
-    public void updateElement(ConversationElement element) {
+    public void updateElement(Interaction element) {
         mAdapter.update(element);
     }
 
     @Override
-    public void removeElement(ConversationElement element) {
+    public void removeElement(Interaction element) {
         mAdapter.remove(element);
     }