diff --git a/src/org/thoughtcrime/securesms/BindableConversationItem.java b/src/org/thoughtcrime/securesms/BindableConversationItem.java index 864d60cc3..104f8b3d1 100644 --- a/src/org/thoughtcrime/securesms/BindableConversationItem.java +++ b/src/org/thoughtcrime/securesms/BindableConversationItem.java @@ -4,6 +4,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.View; +import com.b44t.messenger.DcChat; import com.b44t.messenger.DcMsg; import org.thoughtcrime.securesms.contactshare.Contact; @@ -21,6 +22,7 @@ public interface BindableConversationItem extends Unbindable { void bind(@NonNull DcMsg messageRecord, @NonNull Optional previousMessageRecord, @NonNull Optional nextMessageRecord, + @NonNull DcChat dcChat, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set batchSelected, diff --git a/src/org/thoughtcrime/securesms/ConversationActivity.java b/src/org/thoughtcrime/securesms/ConversationActivity.java index 8d290baa0..8983a4f6d 100644 --- a/src/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/org/thoughtcrime/securesms/ConversationActivity.java @@ -73,7 +73,6 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import org.thoughtcrime.securesms.audio.AudioRecorder; import org.thoughtcrime.securesms.audio.AudioSlidePlayer; -import org.thoughtcrime.securesms.color.MaterialColor; import org.thoughtcrime.securesms.components.AnimatingToggle; import org.thoughtcrime.securesms.components.AttachmentTypeSelector; import org.thoughtcrime.securesms.components.ComposeText; diff --git a/src/org/thoughtcrime/securesms/ConversationAdapter.java b/src/org/thoughtcrime/securesms/ConversationAdapter.java index 4a90b6b61..f4c0e56cd 100644 --- a/src/org/thoughtcrime/securesms/ConversationAdapter.java +++ b/src/org/thoughtcrime/securesms/ConversationAdapter.java @@ -21,12 +21,12 @@ import android.support.annotation.LayoutRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import com.b44t.messenger.DcChat; import com.b44t.messenger.DcMsg; import org.thoughtcrime.securesms.ConversationAdapter.HeaderViewHolder; @@ -40,7 +40,6 @@ import org.thoughtcrime.securesms.util.LRUCache; import org.thoughtcrime.securesms.util.StickyHeaderDecoration; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.ViewUtil; -import org.whispersystems.libsignal.util.guava.Optional; import java.lang.ref.SoftReference; import java.util.Calendar; @@ -90,6 +89,7 @@ public class ConversationAdapter private final @NonNull Calendar calendar; private ApplicationDcContext dcContext; + private @NonNull DcChat dcChat; private @NonNull int[] dcMsgList = new int[0]; private int positionToPulseHighlight = -1; @@ -170,10 +170,12 @@ public class ConversationAdapter } public ConversationAdapter(@NonNull Context context, + @NonNull DcChat dcChat, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @Nullable ItemClickListener clickListener, @NonNull Recipient recipient) { + this.dcChat = dcChat; this.glideRequests = glideRequests; this.locale = locale; this.clickListener = clickListener; @@ -189,11 +191,11 @@ public class ConversationAdapter @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) { ConversationAdapter.ViewHolder holder = (ConversationAdapter.ViewHolder)viewHolder; - Optional previous = position >= dcMsgList.length-1? Optional.absent() : Optional.of(getMsg(position+1)); - Optional next = position <= 0? Optional.absent() : Optional.of(getMsg(position-1)); + //Optional previous = position >= dcMsgList.length-1? Optional.absent() : Optional.of(getMsg(position+1)); + //Optional next = position <= 0? Optional.absent() : Optional.of(getMsg(position-1)); boolean pulseHighlight = position == positionToPulseHighlight; - holder.getItem().bind(getMsg(position), previous, next, glideRequests, locale, batchSelected, recipient, pulseHighlight); + holder.getItem().bind(getMsg(position), null, null, dcChat, glideRequests, locale, batchSelected, recipient, pulseHighlight); if (pulseHighlight) { positionToPulseHighlight = -1; diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index 17f4ee731..1a220dd54 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -215,7 +215,7 @@ public class ConversationFragment extends Fragment private void initializeListAdapter() { if (this.recipient != null && this.threadId != -1) { - ConversationAdapter adapter = new ConversationAdapter(getActivity(), GlideApp.with(this), locale, selectionClickListener, this.recipient); + ConversationAdapter adapter = new ConversationAdapter(getActivity(), dcContext.getChat((int)this.threadId), GlideApp.with(this), locale, selectionClickListener, this.recipient); list.setAdapter(adapter); list.addItemDecoration(new StickyHeaderDecoration(adapter, false, false)); diff --git a/src/org/thoughtcrime/securesms/ConversationItem.java b/src/org/thoughtcrime/securesms/ConversationItem.java index 3dcee3c8d..e2db04b7f 100644 --- a/src/org/thoughtcrime/securesms/ConversationItem.java +++ b/src/org/thoughtcrime/securesms/ConversationItem.java @@ -41,6 +41,7 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; +import com.b44t.messenger.DcChat; import com.b44t.messenger.DcMsg; import org.thoughtcrime.securesms.attachments.DatabaseAttachment; @@ -180,6 +181,7 @@ public class ConversationItem extends LinearLayout public void bind(@NonNull DcMsg messageRecord, @NonNull Optional previousDcMsg, @NonNull Optional nextDcMsg, + @NonNull DcChat dcChat, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set batchSelected, @@ -191,7 +193,7 @@ public class ConversationItem extends LinearLayout this.glideRequests = glideRequests; this.batchSelected = batchSelected; this.conversationRecipient = recipients; - this.groupThread = conversationRecipient.isGroupRecipient(); + this.groupThread = dcChat.isGroup(); this.recipient = dcContext.getRecipient(dcContext.getChat(messageRecord.getChatId())); this.recipient.addListener(this); @@ -652,15 +654,15 @@ public class ConversationItem extends LinearLayout if (sharedContactStub.resolved()) sharedContactStub.get().getFooter().setVisibility(GONE); if (mediaThumbnailStub.resolved()) mediaThumbnailStub.get().getFooter().setVisibility(GONE); - boolean differentMinutes = next.isPresent() && !DateUtils.isSameBriefRelativeTimestamp(context, locale, next.get().getTimestamp(), current.getTimestamp()); + /*boolean differentMinutes = next.isPresent() && !DateUtils.isSameBriefRelativeTimestamp(context, locale, next.get().getTimestamp(), current.getTimestamp()); if (current.getExpiresIn() > 0 || !current.isSecure() || current.isPending() || current.isFailed() || differentMinutes || isEndOfMessageCluster(current, next, isGroupThread)) - { + {*/ ConversationItemFooter activeFooter = getActiveFooter(current); activeFooter.setVisibility(VISIBLE); activeFooter.setMessageRecord(current, locale); - } + //} } private ConversationItemFooter getActiveFooter(@NonNull DcMsg messageRecord) { @@ -699,21 +701,23 @@ public class ConversationItem extends LinearLayout private void setAuthor(@NonNull DcMsg current, @NonNull Optional previous, @NonNull Optional next, boolean isGroupThread) { if (isGroupThread && !current.isOutgoing()) { - contactPhotoHolder.setVisibility(VISIBLE); - if (!previous.isPresent() || previous.get().isInfo() || current.getFromId() != previous.get().getFromId() || + if (contactPhotoHolder != null) { + contactPhotoHolder.setVisibility(VISIBLE); + } + /*if (!previous.isPresent() || previous.get().isInfo() || current.getFromId() != previous.get().getFromId() || !DateUtils.isSameDay(previous.get().getTimestamp(), current.getTimestamp())) - { + {*/ groupSenderHolder.setVisibility(VISIBLE); - } else { + /*} else { groupSenderHolder.setVisibility(GONE); - } + }*/ - if (!next.isPresent() || next.get().isInfo() || current.getFromId() != previous.get().getFromId()) { + //if (!next.isPresent() || next.get().isInfo() || current.getFromId() != previous.get().getFromId()) { contactPhoto.setVisibility(VISIBLE); - } else { - contactPhoto.setVisibility(GONE); - } + //} else { + // contactPhoto.setVisibility(GONE); + //} } else { groupSenderHolder.setVisibility(GONE); @@ -743,40 +747,43 @@ public class ConversationItem extends LinearLayout } private boolean isStartOfMessageCluster(@NonNull DcMsg current, @NonNull Optional previous, boolean isGroupThread) { - if (isGroupThread) { + return true; + /*if (isGroupThread) { return !previous.isPresent() || previous.get().isInfo() || !DateUtils.isSameDay(current.getTimestamp(), previous.get().getTimestamp()) || current.getFromId() != previous.get().getFromId(); } else { return !previous.isPresent() || previous.get().isInfo() || !DateUtils.isSameDay(current.getTimestamp(), previous.get().getTimestamp()) || current.isOutgoing() != previous.get().isOutgoing(); - } + }*/ } private boolean isEndOfMessageCluster(@NonNull DcMsg current, @NonNull Optional next, boolean isGroupThread) { - if (isGroupThread) { + return true; + /*if (isGroupThread) { return !next.isPresent() || next.get().isInfo() || !DateUtils.isSameDay(current.getTimestamp(), next.get().getTimestamp()) || current.getFromId() != next.get().getFromId(); } else { return !next.isPresent() || next.get().isInfo() || !DateUtils.isSameDay(current.getTimestamp(), next.get().getTimestamp()) || current.isOutgoing() != next.get().isOutgoing(); - } + }*/ } private boolean isSingularMessage(@NonNull DcMsg current, @NonNull Optional previous, @NonNull Optional next, boolean isGroupThread) { - return isStartOfMessageCluster(current, previous, isGroupThread) && isEndOfMessageCluster(current, next, isGroupThread); + return true; + //return isStartOfMessageCluster(current, previous, isGroupThread) && isEndOfMessageCluster(current, next, isGroupThread); } private void setMessageSpacing(@NonNull Context context, @NonNull DcMsg current, @NonNull Optional previous, @NonNull Optional next, boolean isGroupThread) { int spacingTop = readDimen(context, R.dimen.conversation_vertical_message_spacing_collapse); int spacingBottom = spacingTop; - if (isStartOfMessageCluster(current, previous, isGroupThread)) { + /*if (isStartOfMessageCluster(current, previous, isGroupThread)) { spacingTop = readDimen(context, R.dimen.conversation_vertical_message_spacing_default); } if (isEndOfMessageCluster(current, next, isGroupThread)) { spacingBottom = readDimen(context, R.dimen.conversation_vertical_message_spacing_default); - } + }*/ ViewUtil.setPaddingTop(this, spacingTop); ViewUtil.setPaddingBottom(this, spacingBottom); diff --git a/src/org/thoughtcrime/securesms/ConversationUpdateItem.java b/src/org/thoughtcrime/securesms/ConversationUpdateItem.java index 4ea6c414f..3eff64722 100644 --- a/src/org/thoughtcrime/securesms/ConversationUpdateItem.java +++ b/src/org/thoughtcrime/securesms/ConversationUpdateItem.java @@ -14,6 +14,7 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import com.b44t.messenger.DcChat; import com.b44t.messenger.DcMsg; import org.thoughtcrime.securesms.crypto.IdentityKeyParcelable; @@ -74,6 +75,7 @@ public class ConversationUpdateItem extends LinearLayout public void bind(@NonNull DcMsg messageRecord, @NonNull Optional previousMessageRecord, @NonNull Optional nextMessageRecord, + @NonNull DcChat dcChat, @NonNull GlideRequests glideRequests, @NonNull Locale locale, @NonNull Set batchSelected,