mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
show avatar in group chats, no message clusters
This commit is contained in:
@@ -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<DcMsg> previousMessageRecord,
|
||||
@NonNull Optional<DcMsg> nextMessageRecord,
|
||||
@NonNull DcChat dcChat,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@NonNull Locale locale,
|
||||
@NonNull Set<DcMsg> batchSelected,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 <V extends View & BindableConversationItem>
|
||||
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 <V extends View & BindableConversationItem>
|
||||
}
|
||||
|
||||
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 <V extends View & BindableConversationItem>
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
|
||||
ConversationAdapter.ViewHolder holder = (ConversationAdapter.ViewHolder)viewHolder;
|
||||
Optional<DcMsg> previous = position >= dcMsgList.length-1? Optional.absent() : Optional.of(getMsg(position+1));
|
||||
Optional<DcMsg> next = position <= 0? Optional.absent() : Optional.of(getMsg(position-1));
|
||||
//Optional<DcMsg> previous = position >= dcMsgList.length-1? Optional.absent() : Optional.of(getMsg(position+1));
|
||||
//Optional<DcMsg> 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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
@@ -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<DcMsg> previousDcMsg,
|
||||
@NonNull Optional<DcMsg> nextDcMsg,
|
||||
@NonNull DcChat dcChat,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@NonNull Locale locale,
|
||||
@NonNull Set<DcMsg> 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<DcMsg> previous, @NonNull Optional<DcMsg> 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<DcMsg> 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<DcMsg> 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<DcMsg> previous, @NonNull Optional<DcMsg> 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<DcMsg> previous, @NonNull Optional<DcMsg> 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);
|
||||
|
||||
@@ -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<DcMsg> previousMessageRecord,
|
||||
@NonNull Optional<DcMsg> nextMessageRecord,
|
||||
@NonNull DcChat dcChat,
|
||||
@NonNull GlideRequests glideRequests,
|
||||
@NonNull Locale locale,
|
||||
@NonNull Set<DcMsg> batchSelected,
|
||||
|
||||
Reference in New Issue
Block a user