Search in sources :

Example 6 with User

use of im.actor.core.entity.User in project actor-platform by actorapp.

the class SearchActor method onContactsUpdated.

private void onContactsUpdated(int[] contactsList) {
    List<SearchEntity> updated = new ArrayList<>();
    for (int i = 0; i < contactsList.length; i++) {
        User user = users().getValue(contactsList[i]);
        updated.add(new SearchEntity(Peer.user(user.getUid()), CONTACTS_PREFIX + i, user.getAvatar(), user.getName()));
    }
    listEngine.addOrUpdateItems(updated);
}
Also used : User(im.actor.core.entity.User) SearchEntity(im.actor.core.entity.SearchEntity) ArrayList(java.util.ArrayList)

Example 7 with User

use of im.actor.core.entity.User in project actor-platform by actorapp.

the class BlockedAdapter method setBlockedList.

public void setBlockedList(List<User> newBlockedList) {
    List<User> blockedSearch = new ArrayList<User>(blockedList);
    for (int i = blockedSearch.size() - 1; i >= 0; i--) {
        User ou = blockedSearch.get(i);
        boolean contains = false;
        for (User u : newBlockedList) {
            if (u.getUid() == ou.getUid()) {
                contains = true;
                break;
            }
        }
        if (!contains) {
            blockedList.remove(ou);
            notifyItemRemoved(i);
        }
    }
    blockedSearch = new ArrayList<User>(blockedList);
    for (User u : newBlockedList) {
        boolean contains = false;
        for (User uo : blockedSearch) {
            if (u.getUid() == uo.getUid()) {
                contains = true;
                break;
            }
        }
        if (!contains) {
            blockedList.add(u);
            notifyItemInserted(getItemCount());
        }
    }
}
Also used : User(im.actor.core.entity.User) ArrayList(java.util.ArrayList)

Example 8 with User

use of im.actor.core.entity.User in project actor-platform by actorapp.

the class RouterActor method onPeersChanged.

// 
// Peer Changed
// 
private Promise<Void> onPeersChanged(List<User> users, List<Group> groups) {
    Promise<Void> res = Promise.success(null);
    boolean isActiveNeedUpdate = false;
    for (User u : users) {
        if (!isActiveNeedUpdate) {
            for (ActiveDialogGroup g : activeDialogStorage.getGroups()) {
                if (g.getPeers().contains(u.peer())) {
                    isActiveNeedUpdate = true;
                    break;
                }
            }
        }
        res = res.chain(v -> getDialogsRouter().onUserChanged(u));
    }
    for (Group group : groups) {
        if (!isActiveNeedUpdate) {
            for (ActiveDialogGroup g : activeDialogStorage.getGroups()) {
                if (g.getPeers().contains(group.peer())) {
                    isActiveNeedUpdate = true;
                    break;
                }
            }
        }
        res = res.chain(v -> getDialogsRouter().onGroupChanged(group));
    }
    if (isActiveNeedUpdate) {
        notifyActiveDialogsVM();
    }
    return res;
}
Also used : DialogsInt(im.actor.core.modules.messaging.dialogs.DialogsInt) RouterDifferenceStart(im.actor.core.modules.messaging.router.entity.RouterDifferenceStart) ModuleContext(im.actor.core.modules.ModuleContext) ApiMessageReaction(im.actor.core.api.ApiMessageReaction) UpdateChatGroupsChanged(im.actor.core.api.updates.UpdateChatGroupsChanged) UpdateMessage(im.actor.core.api.updates.UpdateMessage) ActiveDialogStorage(im.actor.core.modules.messaging.router.entity.ActiveDialogStorage) RouterApplyChatHistory(im.actor.core.modules.messaging.router.entity.RouterApplyChatHistory) RouterApplyDialogsHistory(im.actor.core.modules.messaging.router.entity.RouterApplyDialogsHistory) Avatar(im.actor.core.entity.Avatar) JavaUtil(im.actor.core.util.JavaUtil) RouterMessageUpdate(im.actor.core.modules.messaging.router.entity.RouterMessageUpdate) DialogSmall(im.actor.core.viewmodel.DialogSmall) TextContent(im.actor.core.entity.content.TextContent) ApiDialogGroup(im.actor.core.api.ApiDialogGroup) EntityConverter.convert(im.actor.core.entity.EntityConverter.convert) ApiSupportConfiguration(im.actor.core.modules.api.ApiSupportConfiguration) UpdateMessageReadByMe(im.actor.core.api.updates.UpdateMessageReadByMe) RequestLoadGroupedDialogs(im.actor.core.api.rpc.RequestLoadGroupedDialogs) UpdateReactionsUpdate(im.actor.core.api.updates.UpdateReactionsUpdate) Void(im.actor.runtime.actors.messages.Void) DialogHistory(im.actor.core.modules.messaging.history.entity.DialogHistory) RouterDifferenceEnd(im.actor.core.modules.messaging.router.entity.RouterDifferenceEnd) Reaction(im.actor.core.entity.Reaction) AssertUtils.assertTrue(im.actor.core.util.AssertUtils.assertTrue) RouterConversationVisible(im.actor.core.modules.messaging.router.entity.RouterConversationVisible) List(java.util.List) ModuleActor(im.actor.core.modules.ModuleActor) RouterOutgoingSent(im.actor.core.modules.messaging.router.entity.RouterOutgoingSent) ArrayListDialogSmall(im.actor.core.viewmodel.generics.ArrayListDialogSmall) CursorReceiverActor(im.actor.core.modules.messaging.actions.CursorReceiverActor) UpdateMessageDelete(im.actor.core.api.updates.UpdateMessageDelete) UpdateChatDropCache(im.actor.core.api.updates.UpdateChatDropCache) UpdateMessageContentChanged(im.actor.core.api.updates.UpdateMessageContentChanged) Peer(im.actor.core.entity.Peer) MessageState(im.actor.core.entity.MessageState) RouterChangedContent(im.actor.core.modules.messaging.router.entity.RouterChangedContent) Message(im.actor.core.entity.Message) UpdateMessageReceived(im.actor.core.api.updates.UpdateMessageReceived) RouterAppHidden(im.actor.core.modules.messaging.router.entity.RouterAppHidden) Promise(im.actor.runtime.promise.Promise) RouterResetChat(im.actor.core.modules.messaging.router.entity.RouterResetChat) UpdateChatClear(im.actor.core.api.updates.UpdateChatClear) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) ConversationState(im.actor.core.entity.ConversationState) AbsModule(im.actor.core.modules.AbsModule) User(im.actor.core.entity.User) RouterAppVisible(im.actor.core.modules.messaging.router.entity.RouterAppVisible) UpdateMessageSent(im.actor.core.api.updates.UpdateMessageSent) UpdateMessageRead(im.actor.core.api.updates.UpdateMessageRead) ListEngine(im.actor.runtime.storage.ListEngine) PeerType(im.actor.core.entity.PeerType) AbsContent(im.actor.core.entity.content.AbsContent) IOException(java.io.IOException) Group(im.actor.core.entity.Group) RouterConversationHidden(im.actor.core.modules.messaging.router.entity.RouterConversationHidden) RouterOutgoingError(im.actor.core.modules.messaging.router.entity.RouterOutgoingError) CursorReaderActor(im.actor.core.modules.messaging.actions.CursorReaderActor) RouterPeersChanged(im.actor.core.modules.messaging.router.entity.RouterPeersChanged) RouterMessageOnlyActive(im.actor.core.modules.messaging.router.entity.RouterMessageOnlyActive) RouterNewMessages(im.actor.core.modules.messaging.router.entity.RouterNewMessages) RouterOutgoingMessage(im.actor.core.modules.messaging.router.entity.RouterOutgoingMessage) SenderActor(im.actor.core.modules.messaging.actions.SenderActor) DialogGroup(im.actor.core.viewmodel.DialogGroup) ActiveDialogGroup(im.actor.core.modules.messaging.router.entity.ActiveDialogGroup) RouterDeletedMessages(im.actor.core.modules.messaging.router.entity.RouterDeletedMessages) ContentDescription(im.actor.core.entity.ContentDescription) Log(im.actor.runtime.Log) KeyValueEngine(im.actor.runtime.storage.KeyValueEngine) UpdateChatDelete(im.actor.core.api.updates.UpdateChatDelete) ApiDialogShort(im.actor.core.api.ApiDialogShort) Update(im.actor.core.network.parser.Update) ApiDialogGroup(im.actor.core.api.ApiDialogGroup) Group(im.actor.core.entity.Group) DialogGroup(im.actor.core.viewmodel.DialogGroup) ActiveDialogGroup(im.actor.core.modules.messaging.router.entity.ActiveDialogGroup) User(im.actor.core.entity.User) ActiveDialogGroup(im.actor.core.modules.messaging.router.entity.ActiveDialogGroup) Void(im.actor.runtime.actors.messages.Void)

Example 9 with User

use of im.actor.core.entity.User in project actor-platform by actorapp.

the class MentionsModule method findMentions.

public List<MentionFilterResult> findMentions(int gid, String query) {
    query = query.trim().toLowerCase();
    ArrayList<MentionFilterResult> results = new ArrayList<MentionFilterResult>();
    final Group group = groups().getValue(gid);
    GroupMember[] members = group.getMembers().toArray(new GroupMember[group.getMembers().size()]);
    Arrays.sort(members, (a, b) -> {
        User ua = users().getValue(a.getUid());
        User ub = users().getValue(b.getUid());
        return ua.getName().compareToIgnoreCase(ub.getName());
    });
    for (GroupMember member : members) {
        if (member.getUid() == myUid()) {
            continue;
        }
        User user = users().getValue(member.getUid());
        boolean isNick = user.getNick() != null;
        String mention;
        String secondName;
        if (isNick) {
            mention = user.getNick();
            secondName = user.getName();
        } else {
            if (user.getLocalName() != null) {
                mention = user.getServerName();
                secondName = user.getLocalName();
            } else {
                mention = user.getName();
                secondName = null;
            }
        }
        if (query.length() == 0) {
            results.add(new MentionFilterResult(user.getUid(), user.getAvatar(), isNick ? "@" + mention : mention, new ArrayList<>(), secondName, new ArrayList<>(), isNick));
        } else {
            List<StringMatch> mentionMatches = StringMatcher.findMatches(mention, query);
            if (secondName != null) {
                List<StringMatch> secondNameMatches = StringMatcher.findMatches(secondName, query);
                if (mentionMatches.size() > 0 || secondNameMatches.size() > 0) {
                    if (isNick) {
                        List<StringMatch> nickMatches = new ArrayList<>();
                        for (StringMatch m : mentionMatches) {
                            nickMatches.add(new StringMatch(m.getStart() + 1, m.getLength()));
                        }
                        mentionMatches = nickMatches;
                    }
                    results.add(new MentionFilterResult(user.getUid(), user.getAvatar(), isNick ? "@" + mention : mention, mentionMatches, secondName, secondNameMatches, isNick));
                }
            } else {
                if (mentionMatches.size() > 0) {
                    results.add(new MentionFilterResult(user.getUid(), user.getAvatar(), mention, mentionMatches, null, null, false));
                }
            }
        }
    }
    if (results.size() > SEARCH_LIMIT) {
        results.clear();
    }
    return results;
}
Also used : Group(im.actor.core.entity.Group) GroupMember(im.actor.core.entity.GroupMember) User(im.actor.core.entity.User) MentionFilterResult(im.actor.core.entity.MentionFilterResult) ArrayList(java.util.ArrayList) StringMatch(im.actor.core.util.StringMatch)

Example 10 with User

use of im.actor.core.entity.User in project actor-platform by actorapp.

the class Authentication method restoreBackup.

public void restoreBackup(AuthenticationBackupData authenticationBackupData) {
    // 
    // Restore UID
    // 
    myUid = authenticationBackupData.getAuthenticatedUid();
    modules.getPreferences().putInt(KEY_AUTH_UID, myUid);
    modules.getPreferences().putBool(KEY_AUTH, true);
    // 
    try {
        modules.getUsersModule().getUsersStorage().addOrUpdateItem(new User(authenticationBackupData.getOwnUserData()));
    } catch (IOException e) {
        // Should not happen
        throw new RuntimeException(e);
    }
}
Also used : User(im.actor.core.entity.User) IOException(java.io.IOException)

Aggregations

User (im.actor.core.entity.User)19 ArrayList (java.util.ArrayList)14 Promise (im.actor.runtime.promise.Promise)8 ApiUserOutPeer (im.actor.core.api.ApiUserOutPeer)7 Group (im.actor.core.entity.Group)7 Peer (im.actor.core.entity.Peer)6 ApiUser (im.actor.core.api.ApiUser)5 Message (im.actor.core.entity.Message)5 ModuleContext (im.actor.core.modules.ModuleContext)5 ModuleActor (im.actor.core.modules.ModuleActor)4 UserVM (im.actor.core.viewmodel.UserVM)4 Log (im.actor.runtime.Log)4 ActorRef (im.actor.runtime.actors.ActorRef)4 Props (im.actor.runtime.actors.Props)4 Function (im.actor.runtime.function.Function)4 ApiOutPeer (im.actor.core.api.ApiOutPeer)3 SeqUpdate (im.actor.core.api.base.SeqUpdate)3 ResponseSeq (im.actor.core.api.rpc.ResponseSeq)3 AbsModule (im.actor.core.modules.AbsModule)3 RpcCallback (im.actor.core.network.RpcCallback)3