Search in sources :

Example 1 with MentionSpan

use of im.actor.sdk.controllers.conversation.view.MentionSpan in project actor-platform by actorapp.

the class ChatListProcessor method fixLinkifyCustomLinks.

private boolean fixLinkifyCustomLinks(Spannable spannable, Pattern p, boolean isMention) {
    Matcher m = p.matcher(spannable.toString());
    boolean res = false;
    while (m.find()) {
        boolean found = false;
        String nick = "";
        UserVM user;
        int userId = 0;
        if (isGroup) {
            for (GroupMember member : group.getMembers().get()) {
                user = users().get(member.getUid());
                nick = user.getNick().get();
                if (nick != null && !nick.isEmpty() && nick.equals(m.group().substring(1, m.group().length()))) {
                    userId = user.getId();
                    found = true;
                    break;
                }
            }
        }
        if (isMention && !found) {
            return false;
        }
        URLSpan span = (isMention && isGroup && found) ? new MentionSpan(nick, userId, false) : new BaseUrlSpan(m.group(), false);
        spannable.setSpan(span, m.start(), m.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        res = true;
    }
    return res;
}
Also used : GroupMember(im.actor.core.entity.GroupMember) UserVM(im.actor.core.viewmodel.UserVM) Matcher(java.util.regex.Matcher) MentionSpan(im.actor.sdk.controllers.conversation.view.MentionSpan) BaseUrlSpan(im.actor.sdk.view.BaseUrlSpan) SpannableString(android.text.SpannableString) URLSpan(android.text.style.URLSpan)

Aggregations

SpannableString (android.text.SpannableString)1 URLSpan (android.text.style.URLSpan)1 GroupMember (im.actor.core.entity.GroupMember)1 UserVM (im.actor.core.viewmodel.UserVM)1 MentionSpan (im.actor.sdk.controllers.conversation.view.MentionSpan)1 BaseUrlSpan (im.actor.sdk.view.BaseUrlSpan)1 Matcher (java.util.regex.Matcher)1