conversation: persist messages by contact

Change-Id: I296b8ae523cda5b80feb648eaea9698ede091d9e
Reviewed-by: Sebastien Blin <sebastien.blin@savoirfairelinux.com>
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 b261c20..86487f2 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
@@ -24,6 +24,7 @@
 import android.content.ClipData;
 import android.content.Context;
 import android.content.Intent;
+import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.provider.MediaStore;
 import android.support.design.widget.Snackbar;
@@ -36,6 +37,8 @@
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.SimpleItemAnimator;
+import android.text.Editable;
+import android.text.TextWatcher;
 import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -98,6 +101,7 @@
 
     public static final String KEY_CONTACT_RING_ID = BuildConfig.APPLICATION_ID + "CONTACT_RING_ID";
     public static final String KEY_ACCOUNT_ID = BuildConfig.APPLICATION_ID + "ACCOUNT_ID";
+    public static final String KEY_PREFERENCE_PENDING_MESSAGE = "pendingMessage";
 
     private static final String CONVERSATION_DELETE = "CONVERSATION_DELETE";
 
@@ -150,6 +154,8 @@
     private ConversationAdapter mAdapter = null;
     private NumberAdapter mNumberAdapter = null;
 
+    private SharedPreferences mPreferences;
+
     private File mCurrentPhoto = null;
 
     private static int getIndex(Spinner spinner, Uri myString) {
@@ -200,6 +206,25 @@
                 e.printStackTrace();
             }
         });
+        if (mPreferences != null) {
+            String pendingMessage = mPreferences.getString(KEY_PREFERENCE_PENDING_MESSAGE, null);
+            if (pendingMessage != null)
+                mMsgEditTxt.setText(pendingMessage);
+        }
+        mMsgEditTxt.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {}
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                if (mPreferences != null) {
+                    mPreferences.edit().putString(KEY_PREFERENCE_PENDING_MESSAGE, s.toString()).apply();
+                }
+            }
+        });
 
         if (mTopPane != null) {
             mTopPane.setVisibility(View.GONE);
@@ -475,6 +500,7 @@
         String contactRingID = getArguments().getString(KEY_CONTACT_RING_ID);
         String accountId = getArguments().getString(KEY_ACCOUNT_ID);
         mAdapter = new ConversationAdapter(this, presenter);
+        mPreferences = getActivity().getSharedPreferences(accountId + "_" + contactRingID, Context.MODE_PRIVATE);
         presenter.init(contactRingID, accountId);
     }