mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-11 06:44:09 +01:00
parent
1a8a7cf202
commit
1ebb2e079d
@ -102,7 +102,7 @@ public class MagicIncomingTextMessageViewHolder
|
||||
messageAuthor.setText(R.string.nc_nick_guest);
|
||||
}
|
||||
|
||||
if (!message.isGrouped) {
|
||||
if (!message.isGrouped() && !message.isOneToOneConversation()) {
|
||||
messageUserAvatarView.setVisibility(View.VISIBLE);
|
||||
if (message.getActorType().equals("guests")) {
|
||||
TextDrawable drawable = TextDrawable.builder().beginConfig().bold()
|
||||
@ -125,8 +125,11 @@ public class MagicIncomingTextMessageViewHolder
|
||||
messageUserAvatarView.getHierarchy().setPlaceholderImage(drawable);
|
||||
}
|
||||
} else {
|
||||
|
||||
messageUserAvatarView.setVisibility(View.INVISIBLE);
|
||||
if (message.isOneToOneConversation()) {
|
||||
messageUserAvatarView.setVisibility(View.GONE);
|
||||
} else {
|
||||
messageUserAvatarView.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
messageAuthor.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
@ -135,14 +138,19 @@ public class MagicIncomingTextMessageViewHolder
|
||||
resources.getColor(R.color.bg_message_list_incoming_bubble_dark2) :
|
||||
resources.getColor(R.color.bg_message_list_incoming_bubble);
|
||||
|
||||
int bubbleResource = R.drawable.shape_incoming_message;
|
||||
|
||||
if (message.isGrouped) {
|
||||
bubbleResource = R.drawable.shape_grouped_incoming_message;
|
||||
}
|
||||
|
||||
Drawable bubbleDrawable = DisplayUtils.getMessageSelector(bg_bubble_color,
|
||||
resources.getColor(R.color.transparent),
|
||||
bg_bubble_color, R.drawable.shape_grouped_incoming_message);
|
||||
bg_bubble_color, bubbleResource);
|
||||
ViewCompat.setBackground(bubble, bubbleDrawable);
|
||||
|
||||
HashMap<String, HashMap<String, String>> messageParameters = message.getMessageParameters();
|
||||
|
||||
Context context = NextcloudTalkApplication.Companion.getSharedApplication().getApplicationContext();
|
||||
itemView.setSelected(false);
|
||||
messageTimeView.setTextColor(context.getResources().getColor(R.color.warm_grey_four));
|
||||
|
||||
|
@ -81,8 +81,12 @@ public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageM
|
||||
public void onBind(ChatMessage message) {
|
||||
super.onBind(message);
|
||||
if (userAvatar != null) {
|
||||
if (message.isGrouped) {
|
||||
userAvatar.setVisibility(View.INVISIBLE);
|
||||
if (message.isGrouped || message.isOneToOneConversation()) {
|
||||
if (message.isOneToOneConversation()) {
|
||||
userAvatar.setVisibility(View.GONE);
|
||||
} else {
|
||||
userAvatar.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
} else {
|
||||
userAvatar.setVisibility(View.VISIBLE);
|
||||
|
||||
|
@ -25,6 +25,7 @@ import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.PorterDuff;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
@ -48,6 +49,8 @@ import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.graphics.drawable.RoundedBitmapDrawable;
|
||||
import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
|
||||
import androidx.emoji.widget.EmojiEditText;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
@ -55,9 +58,16 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
import com.bluelinelabs.conductor.RouterTransaction;
|
||||
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
|
||||
import com.bluelinelabs.conductor.changehandler.VerticalChangeHandler;
|
||||
import com.facebook.common.executors.UiThreadImmediateExecutorService;
|
||||
import com.facebook.common.references.CloseableReference;
|
||||
import com.facebook.datasource.DataSource;
|
||||
import com.facebook.drawee.backends.pipeline.Fresco;
|
||||
import com.facebook.drawee.interfaces.DraweeController;
|
||||
import com.facebook.drawee.view.SimpleDraweeView;
|
||||
import com.facebook.imagepipeline.core.ImagePipeline;
|
||||
import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber;
|
||||
import com.facebook.imagepipeline.image.CloseableImage;
|
||||
import com.facebook.imagepipeline.request.ImageRequest;
|
||||
import com.nextcloud.talk.R;
|
||||
import com.nextcloud.talk.activities.MagicCallActivity;
|
||||
import com.nextcloud.talk.adapters.messages.MagicIncomingTextMessageViewHolder;
|
||||
@ -129,6 +139,7 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import autodagger.AutoInjector;
|
||||
@ -265,6 +276,8 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
||||
|
||||
currentConversation = roomOverall.getOcs().getData();
|
||||
|
||||
loadAvatarForStatusBar();
|
||||
|
||||
conversationName = currentConversation.getDisplayName();
|
||||
setTitle();
|
||||
setupMentionAutocomplete();
|
||||
@ -312,6 +325,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
||||
if (roomId.equals(conversation.getRoomId())) {
|
||||
roomToken = conversation.getToken();
|
||||
currentConversation = conversation;
|
||||
loadAvatarForStatusBar();
|
||||
checkLobbyState();
|
||||
checkReadOnlyState();
|
||||
conversationName = conversation.getDisplayName();
|
||||
@ -343,6 +357,36 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
||||
return inflater.inflate(R.layout.controller_chat, container, false);
|
||||
}
|
||||
|
||||
private void loadAvatarForStatusBar() {
|
||||
if (currentConversation != null && currentConversation.getType().equals(Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL) && getActivity() != null && conversationVoiceCallMenuItem != null) {
|
||||
int avatarSize =
|
||||
(int) DisplayUtils.convertDpToPixel(conversationVoiceCallMenuItem.getIcon().getIntrinsicWidth(), getActivity());
|
||||
|
||||
ImageRequest imageRequest =
|
||||
DisplayUtils.getImageRequestForUrl(ApiUtils.getUrlForAvatarWithNameAndPixels(conversationUser.getBaseUrl(),
|
||||
currentConversation.getName(), avatarSize / 2), null);
|
||||
|
||||
ImagePipeline imagePipeline = Fresco.getImagePipeline();
|
||||
DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, null);
|
||||
|
||||
dataSource.subscribe(new BaseBitmapDataSubscriber() {
|
||||
@Override
|
||||
protected void onNewResultImpl(@Nullable Bitmap bitmap) {
|
||||
if (getActionBar() != null && bitmap != null && getResources() != null) {
|
||||
RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), bitmap);
|
||||
roundedBitmapDrawable.setCircular(true);
|
||||
roundedBitmapDrawable.setAntiAlias(true);
|
||||
getActionBar().setIcon(roundedBitmapDrawable);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) {
|
||||
}
|
||||
}, UiThreadImmediateExecutorService.getInstance());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onViewBound(@NonNull View view) {
|
||||
super.onViewBound(view);
|
||||
@ -351,7 +395,6 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
||||
boolean adapterWasNull = false;
|
||||
|
||||
if (adapter == null) {
|
||||
|
||||
loadingProgressBar.setVisibility(View.VISIBLE);
|
||||
|
||||
adapterWasNull = true;
|
||||
@ -483,6 +526,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
||||
}
|
||||
|
||||
if (currentConversation != null) {
|
||||
loadAvatarForStatusBar();
|
||||
checkLobbyState();
|
||||
}
|
||||
|
||||
@ -691,6 +735,10 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
||||
getActivity().findViewById(R.id.toolbar).setOnClickListener(null);
|
||||
}
|
||||
|
||||
if (getActionBar() != null) {
|
||||
getActionBar().setIcon(null);
|
||||
}
|
||||
|
||||
adapter = null;
|
||||
inChat = false;
|
||||
}
|
||||
@ -1059,6 +1107,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
||||
}
|
||||
|
||||
ChatMessage chatMessage = chatMessageList.get(i);
|
||||
chatMessage.setOneToOneConversation(currentConversation.getType().equals(Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL));
|
||||
chatMessage.setLinkPreviewAllowed(isLinkPreviewAllowed);
|
||||
chatMessage.setActiveUser(conversationUser);
|
||||
|
||||
@ -1112,6 +1161,7 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
||||
|
||||
if (adapter != null) {
|
||||
chatMessage.setGrouped(adapter.isPreviousSameAuthor(chatMessage.getActorId(), -1) && (adapter.getSameAuthorLastMessagesCount(chatMessage.getActorId()) % 5) > 0);
|
||||
chatMessage.setOneToOneConversation(currentConversation.getType().equals(Conversation.ConversationType.ROOM_TYPE_ONE_TO_ONE_CALL));
|
||||
adapter.addToStart(chatMessage, shouldScroll);
|
||||
}
|
||||
|
||||
@ -1176,6 +1226,8 @@ public class ChatController extends BaseController implements MessagesListAdapte
|
||||
conversationInfoMenuItem = menu.findItem(R.id.conversation_info);
|
||||
conversationVoiceCallMenuItem = menu.findItem(R.id.conversation_voice_call);
|
||||
conversationVideoMenuItem = menu.findItem(R.id.conversation_video_call);
|
||||
|
||||
loadAvatarForStatusBar();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -45,6 +45,8 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent
|
||||
@JsonIgnore
|
||||
public boolean isGrouped;
|
||||
@JsonIgnore
|
||||
public boolean isOneToOneConversation;
|
||||
@JsonIgnore
|
||||
public UserEntity activeUser;
|
||||
@JsonIgnore
|
||||
public Map<String, String> selectedIndividualHashMap;
|
||||
|
@ -42,8 +42,7 @@
|
||||
android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
|
||||
app:contentInsetStart="24dp"
|
||||
app:contentInsetStartWithNavigation="0dp"
|
||||
app:popupTheme="@style/appActionBarPopupMenu"
|
||||
app:titleMarginStart="0dp" />
|
||||
app:popupTheme="@style/appActionBarPopupMenu" />
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
Loading…
Reference in New Issue
Block a user