Merge pull request #1254 from nextcloud/bugfix/noid/mentionListItem

Use proper activity context to grab themed color for mentions
This commit is contained in:
Andy Scherzinger 2021-05-18 09:28:50 +02:00 committed by GitHub
commit 6412b4492b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 39 additions and 18 deletions

View File

@ -21,6 +21,7 @@
package com.nextcloud.talk.adapters.items; package com.nextcloud.talk.adapters.items;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context;
import android.view.View; import android.view.View;
import com.facebook.drawee.backends.pipeline.Fresco; import com.facebook.drawee.backends.pipeline.Fresco;
@ -34,6 +35,7 @@ import com.nextcloud.talk.utils.DisplayUtils;
import java.util.List; import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import androidx.core.content.res.ResourcesCompat;
import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.FlexibleAdapter;
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
import eu.davidea.flexibleadapter.items.IFilterable; import eu.davidea.flexibleadapter.items.IFilterable;
@ -47,12 +49,18 @@ public class MentionAutocompleteItem extends AbstractFlexibleItem<UserItem.UserI
private String displayName; private String displayName;
private String source; private String source;
private UserEntity currentUser; private UserEntity currentUser;
private Context context;
public MentionAutocompleteItem(String objectId, String displayName, String source, UserEntity currentUser) { public MentionAutocompleteItem(String objectId,
String displayName,
String source,
UserEntity currentUser,
Context activityContext) {
this.objectId = objectId; this.objectId = objectId;
this.displayName = displayName; this.displayName = displayName;
this.source = source; this.source = source;
this.currentUser = currentUser; this.currentUser = currentUser;
this.context = activityContext;
} }
public String getSource() { public String getSource() {
@ -96,6 +104,9 @@ public class MentionAutocompleteItem extends AbstractFlexibleItem<UserItem.UserI
@Override @Override
public void bindViewHolder(FlexibleAdapter<IFlexible> adapter, UserItem.UserItemViewHolder holder, int position, List<Object> payloads) { public void bindViewHolder(FlexibleAdapter<IFlexible> adapter, UserItem.UserItemViewHolder holder, int position, List<Object> payloads) {
holder.contactDisplayName.setTextColor(ResourcesCompat.getColor(context.getResources(),
R.color.conversation_item_header,
null));
if (adapter.hasFilter()) { if (adapter.hasFilter()) {
FlexibleUtils.highlightText(holder.contactDisplayName, displayName, FlexibleUtils.highlightText(holder.contactDisplayName, displayName,
String.valueOf(adapter.getFilter(String.class)), NextcloudTalkApplication.Companion.getSharedApplication() String.valueOf(adapter.getFilter(String.class)), NextcloudTalkApplication.Companion.getSharedApplication()

View File

@ -801,7 +801,7 @@ class ChatController(args: Bundle) :
val elevation = 6f val elevation = 6f
resources?.let { resources?.let {
val backgroundDrawable = ColorDrawable(it.getColor(R.color.bg_default)) val backgroundDrawable = ColorDrawable(it.getColor(R.color.bg_default))
val presenter = MentionAutocompletePresenter(applicationContext, roomToken) val presenter = MentionAutocompletePresenter(activity, roomToken)
val callback = MentionAutocompleteCallback( val callback = MentionAutocompleteCallback(
activity, activity,
conversationUser, messageInput conversationUser, messageInput

View File

@ -2,6 +2,8 @@
* Nextcloud Talk application * Nextcloud Talk application
* *
* @author Mario Danic * @author Mario Danic
* @author Andy Scherzinger
* Copyright (C) 2021 Andy Scherzinger <info@andy-scherzinger.de>
* Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com> * Copyright (C) 2017-2018 Mario Danic <mario@lovelyhq.com>
* *
* This program is free software: you can redistribute it and/or modify * This program is free software: you can redistribute it and/or modify
@ -22,9 +24,7 @@ package com.nextcloud.talk.presenters;
import android.content.Context; import android.content.Context;
import android.view.View; import android.view.View;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import autodagger.AutoInjector;
import com.nextcloud.talk.adapters.items.MentionAutocompleteItem; import com.nextcloud.talk.adapters.items.MentionAutocompleteItem;
import com.nextcloud.talk.api.NcApi; import com.nextcloud.talk.api.NcApi;
import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.application.NextcloudTalkApplication;
@ -34,6 +34,17 @@ import com.nextcloud.talk.models.json.mention.MentionOverall;
import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.database.user.UserUtils;
import com.otaliastudios.autocomplete.RecyclerViewPresenter; import com.otaliastudios.autocomplete.RecyclerViewPresenter;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import autodagger.AutoInjector;
import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.FlexibleAdapter;
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
import io.reactivex.Observer; import io.reactivex.Observer;
@ -41,10 +52,6 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
@AutoInjector(NextcloudTalkApplication.class) @AutoInjector(NextcloudTalkApplication.class)
public class MentionAutocompletePresenter extends RecyclerViewPresenter<Mention> implements FlexibleAdapter.OnItemClickListener { public class MentionAutocompletePresenter extends RecyclerViewPresenter<Mention> implements FlexibleAdapter.OnItemClickListener {
@Inject @Inject
@ -103,11 +110,12 @@ public class MentionAutocompletePresenter extends RecyclerViewPresenter<Mention>
.retry(3) .retry(3)
.subscribe(new Observer<MentionOverall>() { .subscribe(new Observer<MentionOverall>() {
@Override @Override
public void onSubscribe(Disposable d) { public void onSubscribe(@NotNull Disposable d) {
// no actions atm
} }
@Override @Override
public void onNext(MentionOverall mentionOverall) { public void onNext(@NotNull MentionOverall mentionOverall) {
List<Mention> mentionsList = mentionOverall.getOcs().getData(); List<Mention> mentionsList = mentionOverall.getOcs().getData();
if (mentionsList.size() == 0) { if (mentionsList.size() == 0) {
@ -116,9 +124,12 @@ public class MentionAutocompletePresenter extends RecyclerViewPresenter<Mention>
List<AbstractFlexibleItem> internalAbstractFlexibleItemList = new ArrayList<>(); List<AbstractFlexibleItem> internalAbstractFlexibleItemList = new ArrayList<>();
for (Mention mention : mentionsList) { for (Mention mention : mentionsList) {
internalAbstractFlexibleItemList.add( internalAbstractFlexibleItemList.add(
new MentionAutocompleteItem(mention.getId(), new MentionAutocompleteItem(
mention.getLabel(), mention.getSource(), mention.getId(),
currentUser)); mention.getLabel(),
mention.getSource(),
currentUser,
context));
} }
if (adapter.getItemCount() != 0) { if (adapter.getItemCount() != 0) {
@ -130,18 +141,17 @@ public class MentionAutocompletePresenter extends RecyclerViewPresenter<Mention>
} }
@Override @Override
public void onError(Throwable e) { public void onError(@NotNull Throwable e) {
adapter.clear(); adapter.clear();
} }
@Override @Override
public void onComplete() { public void onComplete() {
// no actions atm
} }
}); });
} }
@Override @Override
public boolean onItemClick(View view, int position) { public boolean onItemClick(View view, int position) {
Mention mention = new Mention(); Mention mention = new Mention();

View File

@ -58,7 +58,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="middle" android:ellipsize="middle"
android:singleLine="true" android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceListItem" android:textAppearance="@style/ListItem"
tools:text="Call item text" /> tools:text="Call item text" />
<androidx.emoji.widget.EmojiTextView <androidx.emoji.widget.EmojiTextView