Merge pull request #1594 from nextcloud/feature/1559/DifferenciateUnreadCounters

differentiate unread counters
This commit is contained in:
Marcel Hibbe 2021-09-22 17:29:20 +02:00 committed by GitHub
commit f14de62279
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 44 additions and 8 deletions

View File

@ -42,6 +42,7 @@ import com.facebook.drawee.view.SimpleDraweeView;
import com.google.android.material.chip.Chip; import com.google.android.material.chip.Chip;
import com.nextcloud.talk.R; import com.nextcloud.talk.R;
import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.models.database.CapabilitiesUtil;
import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.models.database.UserEntity;
import com.nextcloud.talk.models.json.chat.ChatMessage; import com.nextcloud.talk.models.json.chat.ChatMessage;
import com.nextcloud.talk.models.json.conversations.Conversation; import com.nextcloud.talk.models.json.conversations.Conversation;
@ -127,7 +128,6 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
if (conversation.getUnreadMessages() > 0) { if (conversation.getUnreadMessages() > 0) {
holder.dialogName.setTypeface(holder.dialogName.getTypeface(), Typeface.BOLD); holder.dialogName.setTypeface(holder.dialogName.getTypeface(), Typeface.BOLD);
holder.dialogDate.setTypeface(holder.dialogDate.getTypeface(), Typeface.BOLD);
holder.dialogLastMessage.setTypeface(holder.dialogLastMessage.getTypeface(), Typeface.BOLD); holder.dialogLastMessage.setTypeface(holder.dialogLastMessage.getTypeface(), Typeface.BOLD);
holder.dialogUnreadBubble.setVisibility(View.VISIBLE); holder.dialogUnreadBubble.setVisibility(View.VISIBLE);
if (conversation.getUnreadMessages() < 1000) { if (conversation.getUnreadMessages() < 1000) {
@ -136,20 +136,45 @@ public class ConversationItem extends AbstractFlexibleItem<ConversationItem.Conv
holder.dialogUnreadBubble.setText(R.string.tooManyUnreadMessages); holder.dialogUnreadBubble.setText(R.string.tooManyUnreadMessages);
} }
if (conversation.isUnreadMention() || conversation.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) { ColorStateList lightBubbleFillColor = ColorStateList.valueOf(
ContextCompat.getColor(context,
R.color.conversation_unread_bubble));
int lightBubbleTextColor = ContextCompat.getColor(
context,
R.color.conversation_unread_bubble_text);
ColorStateList lightBubbleStrokeColor = ColorStateList.valueOf(
ContextCompat.getColor(context,
R.color.colorPrimary));
if (conversation.type == Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) {
holder.dialogUnreadBubble.setChipBackgroundColorResource(R.color.colorPrimary);
holder.dialogUnreadBubble.setTextColor(Color.WHITE);
} else if (conversation.isUnreadMention()) {
if (CapabilitiesUtil.hasSpreedFeatureCapability(userEntity, "direct-mention-flag")){
if (conversation.getUnreadMentionDirect()) {
holder.dialogUnreadBubble.setChipBackgroundColorResource(R.color.colorPrimary); holder.dialogUnreadBubble.setChipBackgroundColorResource(R.color.colorPrimary);
holder.dialogUnreadBubble.setTextColor(Color.WHITE); holder.dialogUnreadBubble.setTextColor(Color.WHITE);
} else { } else {
holder.dialogUnreadBubble.setChipBackgroundColor( holder.dialogUnreadBubble.setChipBackgroundColor(ColorStateList.valueOf(
ColorStateList.valueOf(ContextCompat.getColor(context, R.color.conversation_unread_bubble))); ContextCompat.getColor(context, R.color.white)));
holder.dialogUnreadBubble.setTextColor( holder.dialogUnreadBubble.setTextColor(ContextCompat.getColor(
ContextCompat.getColor(context, R.color.conversation_unread_bubble_text)); context,
R.color.colorPrimary));
holder.dialogUnreadBubble.setChipStrokeWidth(6.0f);
holder.dialogUnreadBubble.setChipStrokeColor(lightBubbleStrokeColor);
}
} else {
holder.dialogUnreadBubble.setChipBackgroundColorResource(R.color.colorPrimary);
holder.dialogUnreadBubble.setTextColor(Color.WHITE);
}
} else {
holder.dialogUnreadBubble.setChipBackgroundColor(lightBubbleFillColor);
holder.dialogUnreadBubble.setTextColor(lightBubbleTextColor);
} }
} else { } else {
holder.dialogName.setTypeface(null, Typeface.NORMAL); holder.dialogName.setTypeface(null, Typeface.NORMAL);
holder.dialogDate.setTypeface(null, Typeface.NORMAL); holder.dialogDate.setTypeface(null, Typeface.NORMAL);
holder.dialogLastMessage.setTypeface(null, Typeface.NORMAL); holder.dialogLastMessage.setTypeface(null, Typeface.NORMAL);
holder.dialogUnreadBubble.setVisibility(View.GONE); holder.dialogUnreadBubble.setVisibility(View.GONE);
} }

View File

@ -631,7 +631,7 @@ public class ConversationsListController extends BaseController implements Searc
Conversation conversationItem = ((ConversationItem) flexItem).getModel(); Conversation conversationItem = ((ConversationItem) flexItem).getModel();
int position = adapter.getGlobalPositionOf(flexItem); int position = adapter.getGlobalPositionOf(flexItem);
if (conversationItem.unreadMention && position > lastVisibleItem) { if (conversationItem.unreadMention && position > lastVisibleItem) {
if(!newMentionPopupBubble.isShown()){ if (!newMentionPopupBubble.isShown()){
newMentionPopupBubble.show(); newMentionPopupBubble.show();
} }
return; return;

View File

@ -98,6 +98,9 @@ public class Conversation {
@JsonField(name = "canDeleteConversation") @JsonField(name = "canDeleteConversation")
public Boolean canDeleteConversation; public Boolean canDeleteConversation;
@JsonField(name = "unreadMentionDirect")
public Boolean unreadMentionDirect;
public boolean isPublic() { public boolean isPublic() {
return (ConversationType.ROOM_PUBLIC_CALL.equals(type)); return (ConversationType.ROOM_PUBLIC_CALL.equals(type));
} }
@ -254,6 +257,10 @@ public class Conversation {
return this.callFlag; return this.callFlag;
} }
public Boolean getUnreadMentionDirect() {
return unreadMentionDirect;
}
public void setRoomId(String roomId) { public void setRoomId(String roomId) {
this.roomId = roomId; this.roomId = roomId;
} }
@ -359,6 +366,10 @@ public class Conversation {
this.callFlag = callFlag; this.callFlag = callFlag;
} }
public void setUnreadMentionDirect(Boolean unreadMentionDirect) {
this.unreadMentionDirect = unreadMentionDirect;
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) { if (this == o) {