/* * Copyright (C) 2015 Actor LLC. <https://actor.im> */ package im.actor.core.modules.search; import java.util.ArrayList; import java.util.List; import im.actor.core.entity.Dialog; import im.actor.core.entity.Peer; import im.actor.core.entity.SearchEntity; import im.actor.core.entity.User; import im.actor.core.modules.ModuleContext; import im.actor.core.modules.ModuleActor; import im.actor.runtime.storage.ListEngine; public class SearchActor extends ModuleActor { private static final long CONTACTS_PREFIX = 1L << 32; private ListEngine<SearchEntity> listEngine; public SearchActor(ModuleContext modules) { super(modules); } @Override public void preStart() { super.preStart(); listEngine = context().getSearchModule().getSearchList(); } private void onDialogsUpdated(List<Dialog> dialogs) { List<SearchEntity> updated = new ArrayList<>(); for (Dialog d : dialogs) { updated.add(new SearchEntity(d.getPeer(), d.getSortDate(), d.getDialogAvatar(), d.getDialogTitle())); } listEngine.addOrUpdateItems(updated); } 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); } private void clear() { listEngine.clear(); } @Override public void onReceive(Object message) { if (message instanceof OnDialogsUpdated) { OnDialogsUpdated onDialogsUpdated = (OnDialogsUpdated) message; onDialogsUpdated(onDialogsUpdated.getDialogs()); } else if (message instanceof OnContactsUpdated) { OnContactsUpdated contactsUpdated = (OnContactsUpdated) message; onContactsUpdated(contactsUpdated.getContactsList()); } else if (message instanceof Clear) { clear(); } else { super.onReceive(message); } } public static class OnDialogsUpdated { private List<Dialog> dialogs; public OnDialogsUpdated(List<Dialog> dialogs) { this.dialogs = dialogs; } public List<Dialog> getDialogs() { return dialogs; } } public static class OnContactsUpdated { private int[] contactsList; public OnContactsUpdated(int[] contactsList) { this.contactsList = contactsList; } public int[] getContactsList() { return contactsList; } } public static class Clear { } }