From cfff10622a9551f21c0b3bb17e7d58f5369eee45 Mon Sep 17 00:00:00 2001
From: Greyson Parrelli <greyson@signal.org>
Date: Thu, 31 Jan 2019 19:28:40 -0800
Subject: [PATCH] Move conversation classes to their own package.

---
 AndroidManifest.xml                           |  4 +-
 res/layout/conversation_item_received.xml     |  4 +-
 res/layout/conversation_item_sent.xml         |  4 +-
 res/layout/conversation_item_update.xml       |  4 +-
 res/layout/conversation_title_view.xml        |  4 +-
 .../securesms/ConversationListActivity.java   |  1 +
 .../ConversationListArchiveActivity.java      |  1 +
 .../securesms/GroupCreateActivity.java        |  2 +
 .../securesms/MessageDetailsActivity.java     |  2 +
 .../securesms/NewConversationActivity.java    |  1 +
 .../thoughtcrime/securesms/ShareActivity.java |  4 +-
 .../securesms/SmsSendtoActivity.java          |  2 +
 .../ConversationActivity.java                 | 48 ++++++++++++-------
 .../ConversationAdapter.java                  |  7 ++-
 .../ConversationFragment.java                 | 11 +++--
 .../{ => conversation}/ConversationItem.java  |  8 +++-
 .../ConversationPopupActivity.java            |  4 +-
 .../ConversationTitleView.java                |  3 +-
 .../ConversationUpdateItem.java               |  5 +-
 .../notifications/MessageNotifier.java        |  2 +-
 .../notifications/NotificationItem.java       |  2 +-
 .../notifications/NotificationState.java      |  4 +-
 .../securesms/search/SearchFragment.java      |  2 +-
 .../securesms/util/CommunicationActions.java  |  3 +-
 .../ConversationAdapterTest.java              |  6 ++-
 25 files changed, 93 insertions(+), 45 deletions(-)
 rename src/org/thoughtcrime/securesms/{ => conversation}/ConversationActivity.java (98%)
 rename src/org/thoughtcrime/securesms/{ => conversation}/ConversationAdapter.java (98%)
 rename src/org/thoughtcrime/securesms/{ => conversation}/ConversationFragment.java (98%)
 rename src/org/thoughtcrime/securesms/{ => conversation}/ConversationItem.java (99%)
 rename src/org/thoughtcrime/securesms/{ => conversation}/ConversationPopupActivity.java (97%)
 rename src/org/thoughtcrime/securesms/{ => conversation}/ConversationTitleView.java (98%)
 rename src/org/thoughtcrime/securesms/{ => conversation}/ConversationUpdateItem.java (97%)
 rename test/unitTest/java/org/thoughtcrime/securesms/{ => conversation}/ConversationAdapterTest.java (83%)

diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6ae85a3460..a47bc73675 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -209,7 +209,7 @@
                 android:value="org.thoughtcrime.securesms.ConversationListActivity" />
     </activity>
 
-    <activity android:name=".ConversationActivity"
+    <activity android:name=".conversation.ConversationActivity"
               android:windowSoftInputMode="stateUnchanged"
               android:launchMode="singleTask"
               android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"
@@ -219,7 +219,7 @@
                 android:value="org.thoughtcrime.securesms.ConversationListActivity" />
     </activity>
 
-    <activity android:name=".ConversationPopupActivity"
+    <activity android:name=".conversation.ConversationPopupActivity"
               android:windowSoftInputMode="stateVisible"
               android:launchMode="singleTask"
               android:taskAffinity=""
diff --git a/res/layout/conversation_item_received.xml b/res/layout/conversation_item_received.xml
index 259d62dd59..6f81310021 100644
--- a/res/layout/conversation_item_received.xml
+++ b/res/layout/conversation_item_received.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<org.thoughtcrime.securesms.ConversationItem
+<org.thoughtcrime.securesms.conversation.ConversationItem
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:app="http://schemas.android.com/apk/res-auto"
@@ -193,4 +193,4 @@
             android:gravity="center_vertical"/>
 
     </RelativeLayout>
-</org.thoughtcrime.securesms.ConversationItem>
+</org.thoughtcrime.securesms.conversation.ConversationItem>
diff --git a/res/layout/conversation_item_sent.xml b/res/layout/conversation_item_sent.xml
index f3ca08ebb8..a8d2183523 100644
--- a/res/layout/conversation_item_sent.xml
+++ b/res/layout/conversation_item_sent.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<org.thoughtcrime.securesms.ConversationItem
+<org.thoughtcrime.securesms.conversation.ConversationItem
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     xmlns:app="http://schemas.android.com/apk/res-auto"
@@ -152,4 +152,4 @@
 
     </RelativeLayout>
 
-</org.thoughtcrime.securesms.ConversationItem>
+</org.thoughtcrime.securesms.conversation.ConversationItem>
diff --git a/res/layout/conversation_item_update.xml b/res/layout/conversation_item_update.xml
index 3ba0863a04..ac40a3783f 100644
--- a/res/layout/conversation_item_update.xml
+++ b/res/layout/conversation_item_update.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<org.thoughtcrime.securesms.ConversationUpdateItem
+<org.thoughtcrime.securesms.conversation.ConversationUpdateItem
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/conversation_update_item"
@@ -77,4 +77,4 @@
 
     </LinearLayout>
 
-</org.thoughtcrime.securesms.ConversationUpdateItem>
+</org.thoughtcrime.securesms.conversation.ConversationUpdateItem>
diff --git a/res/layout/conversation_title_view.xml b/res/layout/conversation_title_view.xml
index 3f1d6bb862..affbee4a19 100644
--- a/res/layout/conversation_title_view.xml
+++ b/res/layout/conversation_title_view.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<org.thoughtcrime.securesms.ConversationTitleView
+<org.thoughtcrime.securesms.conversation.ConversationTitleView
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:tools="http://schemas.android.com/tools"
         android:layout_width="match_parent"
@@ -94,4 +94,4 @@
 
     </RelativeLayout>
 
-</org.thoughtcrime.securesms.ConversationTitleView>
\ No newline at end of file
+</org.thoughtcrime.securesms.conversation.ConversationTitleView>
\ No newline at end of file
diff --git a/src/org/thoughtcrime/securesms/ConversationListActivity.java b/src/org/thoughtcrime/securesms/ConversationListActivity.java
index 29bc3c58e2..12b1778f29 100644
--- a/src/org/thoughtcrime/securesms/ConversationListActivity.java
+++ b/src/org/thoughtcrime/securesms/ConversationListActivity.java
@@ -44,6 +44,7 @@ import org.thoughtcrime.securesms.components.SearchToolbar;
 import org.thoughtcrime.securesms.contacts.avatars.ContactColors;
 import org.thoughtcrime.securesms.contacts.avatars.GeneratedContactPhoto;
 import org.thoughtcrime.securesms.contacts.avatars.ProfileContactPhoto;
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.database.Address;
 import org.thoughtcrime.securesms.database.DatabaseFactory;
 import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo;
diff --git a/src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java b/src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java
index 3883ae5fce..0e648fed3f 100644
--- a/src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java
+++ b/src/org/thoughtcrime/securesms/ConversationListArchiveActivity.java
@@ -4,6 +4,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.view.MenuItem;
 
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.recipients.Recipient;
 import org.thoughtcrime.securesms.util.DynamicLanguage;
 import org.thoughtcrime.securesms.util.DynamicTheme;
diff --git a/src/org/thoughtcrime/securesms/GroupCreateActivity.java b/src/org/thoughtcrime/securesms/GroupCreateActivity.java
index e2c2fec861..0eccae3149 100644
--- a/src/org/thoughtcrime/securesms/GroupCreateActivity.java
+++ b/src/org/thoughtcrime/securesms/GroupCreateActivity.java
@@ -26,6 +26,8 @@ import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.text.TextUtils;
+
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.logging.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
diff --git a/src/org/thoughtcrime/securesms/MessageDetailsActivity.java b/src/org/thoughtcrime/securesms/MessageDetailsActivity.java
index df6f5b469b..07415b2124 100644
--- a/src/org/thoughtcrime/securesms/MessageDetailsActivity.java
+++ b/src/org/thoughtcrime/securesms/MessageDetailsActivity.java
@@ -29,6 +29,8 @@ import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.LoaderManager.LoaderCallbacks;
 import android.support.v4.content.Loader;
+
+import org.thoughtcrime.securesms.conversation.ConversationItem;
 import org.thoughtcrime.securesms.logging.Log;
 import android.view.LayoutInflater;
 import android.view.MenuItem;
diff --git a/src/org/thoughtcrime/securesms/NewConversationActivity.java b/src/org/thoughtcrime/securesms/NewConversationActivity.java
index f4118d26a7..f77b385d98 100644
--- a/src/org/thoughtcrime/securesms/NewConversationActivity.java
+++ b/src/org/thoughtcrime/securesms/NewConversationActivity.java
@@ -23,6 +23,7 @@ import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.database.Address;
 import org.thoughtcrime.securesms.database.DatabaseFactory;
 import org.thoughtcrime.securesms.database.ThreadDatabase;
diff --git a/src/org/thoughtcrime/securesms/ShareActivity.java b/src/org/thoughtcrime/securesms/ShareActivity.java
index fdf3b76d9c..fe80874801 100644
--- a/src/org/thoughtcrime/securesms/ShareActivity.java
+++ b/src/org/thoughtcrime/securesms/ShareActivity.java
@@ -32,8 +32,10 @@ import android.support.annotation.Nullable;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.app.ActionBar;
 import android.support.v7.widget.Toolbar;
+
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.logging.Log;
-import android.view.MenuItem;
+
 import android.view.View;
 import android.widget.ImageView;
 
diff --git a/src/org/thoughtcrime/securesms/SmsSendtoActivity.java b/src/org/thoughtcrime/securesms/SmsSendtoActivity.java
index 7e3337f043..428ec78fad 100644
--- a/src/org/thoughtcrime/securesms/SmsSendtoActivity.java
+++ b/src/org/thoughtcrime/securesms/SmsSendtoActivity.java
@@ -7,6 +7,8 @@ import android.os.Bundle;
 import android.provider.ContactsContract;
 import android.support.annotation.NonNull;
 import android.text.TextUtils;
+
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.logging.Log;
 import android.widget.Toast;
 
diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/ConversationActivity.java
rename to src/org/thoughtcrime/securesms/conversation/ConversationActivity.java
index dca05131b5..baf4effe38 100644
--- a/src/org/thoughtcrime/securesms/ConversationActivity.java
+++ b/src/org/thoughtcrime/securesms/conversation/ConversationActivity.java
@@ -14,7 +14,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package org.thoughtcrime.securesms;
+package org.thoughtcrime.securesms.conversation;
 
 import android.Manifest;
 import android.annotation.SuppressLint;
@@ -74,6 +74,22 @@ import com.google.android.gms.location.places.ui.PlacePicker;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
+import org.thoughtcrime.securesms.ApplicationContext;
+import org.thoughtcrime.securesms.ConversationListActivity;
+import org.thoughtcrime.securesms.ConversationListArchiveActivity;
+import org.thoughtcrime.securesms.ExpirationDialog;
+import org.thoughtcrime.securesms.GroupCreateActivity;
+import org.thoughtcrime.securesms.GroupMembersDialog;
+import org.thoughtcrime.securesms.MediaOverviewActivity;
+import org.thoughtcrime.securesms.MuteDialog;
+import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity;
+import org.thoughtcrime.securesms.PromptMmsActivity;
+import org.thoughtcrime.securesms.R;
+import org.thoughtcrime.securesms.RecipientPreferenceActivity;
+import org.thoughtcrime.securesms.RegistrationActivity;
+import org.thoughtcrime.securesms.ShortcutLauncherActivity;
+import org.thoughtcrime.securesms.TransportOption;
+import org.thoughtcrime.securesms.VerifyIdentityActivity;
 import org.thoughtcrime.securesms.audio.AudioRecorder;
 import org.thoughtcrime.securesms.audio.AudioSlidePlayer;
 import org.thoughtcrime.securesms.camera.CameraActivity;
@@ -247,21 +263,21 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
   private static final int PICK_CAMERA         = 12;
   private static final int MEDIA_SENDER        = 13;
 
-  private   GlideRequests               glideRequests;
-  protected ComposeText                 composeText;
-  private   AnimatingToggle             buttonToggle;
-  private   SendButton                  sendButton;
-  private   ImageButton                 attachButton;
-  protected ConversationTitleView       titleView;
-  private   TextView                    charactersLeft;
-  private   ConversationFragment        fragment;
-  private   Button                      unblockButton;
-  private   Button                      makeDefaultSmsButton;
-  private   Button                      registerButton;
-  private   InputAwareLayout            container;
-  private   View                        composePanel;
-  protected Stub<ReminderView>          reminderView;
-  private   Stub<UnverifiedBannerView>  unverifiedBannerView;
+  private   GlideRequests              glideRequests;
+  protected ComposeText                composeText;
+  private   AnimatingToggle            buttonToggle;
+  private   SendButton                 sendButton;
+  private   ImageButton                attachButton;
+  protected ConversationTitleView      titleView;
+  private   TextView                   charactersLeft;
+  private   ConversationFragment       fragment;
+  private   Button                     unblockButton;
+  private   Button                     makeDefaultSmsButton;
+  private   Button                     registerButton;
+  private   InputAwareLayout           container;
+  private   View                       composePanel;
+  protected Stub<ReminderView>         reminderView;
+  private   Stub<UnverifiedBannerView> unverifiedBannerView;
   private   Stub<GroupShareProfileView> groupShareProfileView;
   private   TypingStatusTextWatcher     typingTextWatcher;
 
diff --git a/src/org/thoughtcrime/securesms/ConversationAdapter.java b/src/org/thoughtcrime/securesms/conversation/ConversationAdapter.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/ConversationAdapter.java
rename to src/org/thoughtcrime/securesms/conversation/ConversationAdapter.java
index 2c4d25d982..5ddace0fea 100644
--- a/src/org/thoughtcrime/securesms/ConversationAdapter.java
+++ b/src/org/thoughtcrime/securesms/conversation/ConversationAdapter.java
@@ -14,7 +14,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package org.thoughtcrime.securesms;
+package org.thoughtcrime.securesms.conversation;
 
 import android.content.Context;
 import android.database.Cursor;
@@ -23,6 +23,9 @@ import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
 import android.support.v7.widget.RecyclerView;
+
+import org.thoughtcrime.securesms.BindableConversationItem;
+import org.thoughtcrime.securesms.R;
 import org.thoughtcrime.securesms.logging.Log;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -31,7 +34,7 @@ import android.widget.TextView;
 
 import com.annimon.stream.Stream;
 
-import org.thoughtcrime.securesms.ConversationAdapter.HeaderViewHolder;
+import org.thoughtcrime.securesms.conversation.ConversationAdapter.HeaderViewHolder;
 import org.thoughtcrime.securesms.attachments.DatabaseAttachment;
 import org.thoughtcrime.securesms.database.DatabaseFactory;
 import org.thoughtcrime.securesms.database.FastCursorRecyclerViewAdapter;
diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/ConversationFragment.java
rename to src/org/thoughtcrime/securesms/conversation/ConversationFragment.java
index 783648321f..0322ed86a5 100644
--- a/src/org/thoughtcrime/securesms/ConversationFragment.java
+++ b/src/org/thoughtcrime/securesms/conversation/ConversationFragment.java
@@ -14,7 +14,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package org.thoughtcrime.securesms;
+package org.thoughtcrime.securesms.conversation;
 
 import android.annotation.SuppressLint;
 import android.app.Activity;
@@ -41,6 +41,11 @@ import android.support.v7.widget.RecyclerView.OnScrollListener;
 import android.text.ClipboardManager;
 import android.text.TextUtils;
 
+import org.thoughtcrime.securesms.ApplicationContext;
+import org.thoughtcrime.securesms.MessageDetailsActivity;
+import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity;
+import org.thoughtcrime.securesms.R;
+import org.thoughtcrime.securesms.ShareActivity;
 import org.thoughtcrime.securesms.attachments.Attachment;
 import org.thoughtcrime.securesms.components.ConversationTypingView;
 import org.thoughtcrime.securesms.components.recyclerview.SmoothScrollingLinearLayoutManager;
@@ -62,8 +67,8 @@ import android.widget.ViewSwitcher;
 
 import com.annimon.stream.Stream;
 
-import org.thoughtcrime.securesms.ConversationAdapter.HeaderViewHolder;
-import org.thoughtcrime.securesms.ConversationAdapter.ItemClickListener;
+import org.thoughtcrime.securesms.conversation.ConversationAdapter.HeaderViewHolder;
+import org.thoughtcrime.securesms.conversation.ConversationAdapter.ItemClickListener;
 import org.thoughtcrime.securesms.contactshare.ContactUtil;
 import org.thoughtcrime.securesms.contactshare.SharedContactDetailsActivity;
 import org.thoughtcrime.securesms.contactshare.Contact;
diff --git a/src/org/thoughtcrime/securesms/ConversationItem.java b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java
similarity index 99%
rename from src/org/thoughtcrime/securesms/ConversationItem.java
rename to src/org/thoughtcrime/securesms/conversation/ConversationItem.java
index 393bf44ad6..008fc8fee7 100644
--- a/src/org/thoughtcrime/securesms/ConversationItem.java
+++ b/src/org/thoughtcrime/securesms/conversation/ConversationItem.java
@@ -14,7 +14,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package org.thoughtcrime.securesms;
+package org.thoughtcrime.securesms.conversation;
 
 import android.annotation.SuppressLint;
 import android.content.ActivityNotFoundException;
@@ -35,6 +35,12 @@ import android.text.style.URLSpan;
 import android.text.util.Linkify;
 import android.util.AttributeSet;
 
+import org.thoughtcrime.securesms.ApplicationContext;
+import org.thoughtcrime.securesms.BindableConversationItem;
+import org.thoughtcrime.securesms.ConfirmIdentityDialog;
+import org.thoughtcrime.securesms.MediaPreviewActivity;
+import org.thoughtcrime.securesms.MessageDetailsActivity;
+import org.thoughtcrime.securesms.R;
 import org.thoughtcrime.securesms.attachments.Attachment;
 import org.thoughtcrime.securesms.components.LinkPreviewView;
 import org.thoughtcrime.securesms.linkpreview.LinkPreview;
diff --git a/src/org/thoughtcrime/securesms/ConversationPopupActivity.java b/src/org/thoughtcrime/securesms/conversation/ConversationPopupActivity.java
similarity index 97%
rename from src/org/thoughtcrime/securesms/ConversationPopupActivity.java
rename to src/org/thoughtcrime/securesms/conversation/ConversationPopupActivity.java
index c72eeb5a7d..e7e71e6a75 100644
--- a/src/org/thoughtcrime/securesms/ConversationPopupActivity.java
+++ b/src/org/thoughtcrime/securesms/conversation/ConversationPopupActivity.java
@@ -1,10 +1,12 @@
-package org.thoughtcrime.securesms;
+package org.thoughtcrime.securesms.conversation;
 
 import android.content.Intent;
 import android.os.Build.VERSION;
 import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.support.v4.app.ActivityOptionsCompat;
+
+import org.thoughtcrime.securesms.R;
 import org.thoughtcrime.securesms.logging.Log;
 import android.view.Display;
 import android.view.Gravity;
diff --git a/src/org/thoughtcrime/securesms/ConversationTitleView.java b/src/org/thoughtcrime/securesms/conversation/ConversationTitleView.java
similarity index 98%
rename from src/org/thoughtcrime/securesms/ConversationTitleView.java
rename to src/org/thoughtcrime/securesms/conversation/ConversationTitleView.java
index d5030d1913..f2cc33cebf 100644
--- a/src/org/thoughtcrime/securesms/ConversationTitleView.java
+++ b/src/org/thoughtcrime/securesms/conversation/ConversationTitleView.java
@@ -1,4 +1,4 @@
-package org.thoughtcrime.securesms;
+package org.thoughtcrime.securesms.conversation;
 
 import android.annotation.SuppressLint;
 import android.content.Context;
@@ -14,6 +14,7 @@ import android.widget.TextView;
 import com.annimon.stream.Collectors;
 import com.annimon.stream.Stream;
 
+import org.thoughtcrime.securesms.R;
 import org.thoughtcrime.securesms.components.AvatarImageView;
 import org.thoughtcrime.securesms.mms.GlideRequests;
 import org.thoughtcrime.securesms.recipients.Recipient;
diff --git a/src/org/thoughtcrime/securesms/ConversationUpdateItem.java b/src/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java
similarity index 97%
rename from src/org/thoughtcrime/securesms/ConversationUpdateItem.java
rename to src/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java
index 6eef0edc0e..27f3442e59 100644
--- a/src/org/thoughtcrime/securesms/ConversationUpdateItem.java
+++ b/src/org/thoughtcrime/securesms/conversation/ConversationUpdateItem.java
@@ -1,4 +1,4 @@
-package org.thoughtcrime.securesms;
+package org.thoughtcrime.securesms.conversation;
 
 import android.content.Context;
 import android.content.Intent;
@@ -13,6 +13,9 @@ import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
+import org.thoughtcrime.securesms.BindableConversationItem;
+import org.thoughtcrime.securesms.R;
+import org.thoughtcrime.securesms.VerifyIdentityActivity;
 import org.thoughtcrime.securesms.crypto.IdentityKeyParcelable;
 import org.thoughtcrime.securesms.database.IdentityDatabase;
 import org.thoughtcrime.securesms.database.IdentityDatabase.IdentityRecord;
diff --git a/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java b/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java
index 30ec245530..aef045bef3 100644
--- a/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java
+++ b/src/org/thoughtcrime/securesms/notifications/MessageNotifier.java
@@ -39,7 +39,7 @@ import android.support.v4.app.NotificationManagerCompat;
 import android.text.TextUtils;
 import org.thoughtcrime.securesms.logging.Log;
 
-import org.thoughtcrime.securesms.ConversationActivity;
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.R;
 import org.thoughtcrime.securesms.contactshare.ContactUtil;
 import org.thoughtcrime.securesms.contactshare.Contact;
diff --git a/src/org/thoughtcrime/securesms/notifications/NotificationItem.java b/src/org/thoughtcrime/securesms/notifications/NotificationItem.java
index ea1ef661c7..f3c9bf0b89 100644
--- a/src/org/thoughtcrime/securesms/notifications/NotificationItem.java
+++ b/src/org/thoughtcrime/securesms/notifications/NotificationItem.java
@@ -8,7 +8,7 @@ import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.TaskStackBuilder;
 
-import org.thoughtcrime.securesms.ConversationActivity;
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.mms.SlideDeck;
 import org.thoughtcrime.securesms.recipients.Recipient;
 
diff --git a/src/org/thoughtcrime/securesms/notifications/NotificationState.java b/src/org/thoughtcrime/securesms/notifications/NotificationState.java
index ea1b4f30fa..a0cc40cb43 100644
--- a/src/org/thoughtcrime/securesms/notifications/NotificationState.java
+++ b/src/org/thoughtcrime/securesms/notifications/NotificationState.java
@@ -7,8 +7,8 @@ import android.net.Uri;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 
-import org.thoughtcrime.securesms.ConversationActivity;
-import org.thoughtcrime.securesms.ConversationPopupActivity;
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
+import org.thoughtcrime.securesms.conversation.ConversationPopupActivity;
 import org.thoughtcrime.securesms.database.RecipientDatabase.VibrateState;
 import org.thoughtcrime.securesms.logging.Log;
 import org.thoughtcrime.securesms.recipients.Recipient;
diff --git a/src/org/thoughtcrime/securesms/search/SearchFragment.java b/src/org/thoughtcrime/securesms/search/SearchFragment.java
index cf492111a9..579649a818 100644
--- a/src/org/thoughtcrime/securesms/search/SearchFragment.java
+++ b/src/org/thoughtcrime/securesms/search/SearchFragment.java
@@ -17,7 +17,7 @@ import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
 
-import org.thoughtcrime.securesms.ConversationActivity;
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.ConversationListActivity;
 import org.thoughtcrime.securesms.R;
 import org.thoughtcrime.securesms.contacts.ContactAccessor;
diff --git a/src/org/thoughtcrime/securesms/util/CommunicationActions.java b/src/org/thoughtcrime/securesms/util/CommunicationActions.java
index 46b2f9192b..20dad6ae61 100644
--- a/src/org/thoughtcrime/securesms/util/CommunicationActions.java
+++ b/src/org/thoughtcrime/securesms/util/CommunicationActions.java
@@ -13,10 +13,9 @@ import android.support.v4.app.TaskStackBuilder;
 import android.text.TextUtils;
 import android.widget.Toast;
 
-import org.thoughtcrime.securesms.ConversationActivity;
+import org.thoughtcrime.securesms.conversation.ConversationActivity;
 import org.thoughtcrime.securesms.R;
 import org.thoughtcrime.securesms.WebRtcCallActivity;
-import org.thoughtcrime.securesms.contactshare.Contact;
 import org.thoughtcrime.securesms.database.Address;
 import org.thoughtcrime.securesms.database.DatabaseFactory;
 import org.thoughtcrime.securesms.permissions.Permissions;
diff --git a/test/unitTest/java/org/thoughtcrime/securesms/ConversationAdapterTest.java b/test/unitTest/java/org/thoughtcrime/securesms/conversation/ConversationAdapterTest.java
similarity index 83%
rename from test/unitTest/java/org/thoughtcrime/securesms/ConversationAdapterTest.java
rename to test/unitTest/java/org/thoughtcrime/securesms/conversation/ConversationAdapterTest.java
index 62ad3497a5..36a6e13303 100644
--- a/test/unitTest/java/org/thoughtcrime/securesms/ConversationAdapterTest.java
+++ b/test/unitTest/java/org/thoughtcrime/securesms/conversation/ConversationAdapterTest.java
@@ -1,9 +1,11 @@
-package org.thoughtcrime.securesms;
+package org.thoughtcrime.securesms.conversation;
 
 import android.database.Cursor;
 
 import org.junit.Before;
 import org.junit.Test;
+import org.thoughtcrime.securesms.BaseUnitTest;
+import org.thoughtcrime.securesms.conversation.ConversationAdapter;
 
 import static org.junit.Assert.*;
 import static org.mockito.Matchers.anyInt;
@@ -12,7 +14,7 @@ import static org.powermock.api.mockito.PowerMockito.mock;
 import static org.powermock.api.mockito.PowerMockito.when;
 
 public class ConversationAdapterTest extends BaseUnitTest {
-  private Cursor cursor = mock(Cursor.class);
+  private Cursor              cursor = mock(Cursor.class);
   private ConversationAdapter adapter;
 
   @Override