mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-06 14:27:24 +00:00
Merge pull request #1254 from nextcloud/bugfix/noid/mentionListItem
Use proper activity context to grab themed color for mentions
This commit is contained in:
commit
6412b4492b
@ -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()
|
||||||
|
@ -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
|
||||||
|
@ -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();
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user