diff --git a/app/src/main/java/com/nextcloud/talk/callbacks/MentionAutocompleteCallback.java b/app/src/main/java/com/nextcloud/talk/callbacks/MentionAutocompleteCallback.java index 4b950365c..926813d77 100644 --- a/app/src/main/java/com/nextcloud/talk/callbacks/MentionAutocompleteCallback.java +++ b/app/src/main/java/com/nextcloud/talk/callbacks/MentionAutocompleteCallback.java @@ -31,14 +31,18 @@ import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.MagicCharPolicy; import com.nextcloud.talk.utils.text.Spans; import com.otaliastudios.autocomplete.AutocompleteCallback; +import com.vanniktech.emoji.EmojiEditText; public class MentionAutocompleteCallback implements AutocompleteCallback { private Context context; private UserEntity conversationUser; + private EmojiEditText emojiEditText; - public MentionAutocompleteCallback(Context context, UserEntity conversationUser) { + public MentionAutocompleteCallback(Context context, UserEntity conversationUser, + EmojiEditText emojiEditText) { this.context = context; this.conversationUser = conversationUser; + this.emojiEditText = emojiEditText; } @Override @@ -52,10 +56,10 @@ public class MentionAutocompleteCallback implements AutocompleteCallback presenter = new MentionAutocompletePresenter(getApplicationContext(), roomToken); AutocompleteCallback callback = new MentionAutocompleteCallback(getActivity(), - conversationUser); + conversationUser, messageInput); if (mentionAutocomplete == null && messageInput != null) { mentionAutocomplete = Autocomplete.on(messageInput) diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java index ffbdc55f0..95205bcb4 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java @@ -192,8 +192,10 @@ public class CallMenuController extends BaseController implements FlexibleAdapte if (conversation.canLeave(currentUser)) { - menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave), 1, getResources().getDrawable(R.drawable - .ic_close_grey600_24dp))); + menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave), 1, + DisplayUtils.getTintedDrawable(getResources(), + R.drawable.ic_exit_to_app_black_24dp, R.color.grey_600) + )); } } else if (menuType.equals(MenuType.SHARE)) { prepareIntent(); diff --git a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java index d86f9a079..2ac6babc8 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/DisplayUtils.java @@ -30,7 +30,10 @@ import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Typeface; -import android.graphics.drawable.*; +import android.graphics.drawable.Animatable; +import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.VectorDrawable; import android.net.Uri; import android.os.Build; import android.text.*; @@ -50,7 +53,6 @@ import com.facebook.common.references.CloseableReference; import com.facebook.datasource.DataSource; import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.controller.ControllerListener; -import com.facebook.drawee.drawable.RoundedColorDrawable; import com.facebook.drawee.view.SimpleDraweeView; import com.facebook.imagepipeline.common.RotationOptions; import com.facebook.imagepipeline.core.ImagePipeline; @@ -65,12 +67,12 @@ import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.utils.text.Spans; +import com.vanniktech.emoji.EmojiEditText; import com.vanniktech.emoji.EmojiTextView; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; -import java.util.Objects; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -218,7 +220,8 @@ public class DisplayUtils { public static Drawable getDrawableForMentionChipSpan(Context context, String id, String label, UserEntity conversationUser, String type, - @XmlRes int chipResource) { + @XmlRes int chipResource, + @Nullable EmojiEditText emojiEditText) { ChipDrawable chip = ChipDrawable.createFromResource(context, chipResource); chip.setText(label); @@ -253,11 +256,15 @@ public class DisplayUtils { dataSource.subscribe( new BaseBitmapDataSubscriber() { - @Override protected void onNewResultImpl(Bitmap bitmap) { if (bitmap != null) { chip.setChipIcon(getRoundedDrawable(new BitmapDrawable(bitmap))); + + // A hack to refresh the chip icon + if (emojiEditText != null) { + emojiEditText.setTextKeepState(emojiEditText.getText()); + } } } @@ -291,7 +298,7 @@ public class DisplayUtils { int end = start + m.group().length(); lastStartIndex = end; mentionChipSpan = new Spans.MentionChipSpan(DisplayUtils.getDrawableForMentionChipSpan(context, - id, label, conversationUser, type, chipXmlRes), + id, label, conversationUser, type, chipXmlRes, null), DynamicDrawableSpan.ALIGN_BASELINE, id, label); spannableString.setSpan(mentionChipSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); diff --git a/app/src/main/java/com/nextcloud/talk/utils/text/Spans.java b/app/src/main/java/com/nextcloud/talk/utils/text/Spans.java index a5bb14e39..6a82730fa 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/text/Spans.java +++ b/app/src/main/java/com/nextcloud/talk/utils/text/Spans.java @@ -20,24 +20,10 @@ package com.nextcloud.talk.utils.text; -import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import androidx.annotation.NonNull; -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.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.utils.ApiUtils; -import com.nextcloud.talk.utils.DisplayUtils; import lombok.Data; -import static com.nextcloud.talk.utils.DisplayUtils.getImageRequestForUrl; - public class Spans { @Data