use of im.actor.core.viewmodel.DialogSmall in project actor-platform by actorapp.
the class RouterActor method notifyActiveDialogsVM.
private void notifyActiveDialogsVM() {
int counter = 0;
ArrayList<DialogGroup> groups = new ArrayList<>();
for (ActiveDialogGroup i : activeDialogStorage.getGroups()) {
ArrayListDialogSmall dialogSmalls = new ArrayListDialogSmall();
for (Peer p : i.getPeers()) {
String title;
Avatar avatar;
if (p.getPeerType() == PeerType.GROUP) {
Group group = getGroup(p.getPeerId());
title = group.getTitle();
avatar = group.getAvatar();
} else if (p.getPeerType() == PeerType.PRIVATE) {
User user = getUser(p.getPeerId());
title = user.getName();
avatar = user.getAvatar();
} else {
continue;
}
int unreadCount = conversationStates.getValue(p.getUnuqueId()).getUnreadCount();
counter += unreadCount;
dialogSmalls.add(new DialogSmall(p, title, avatar, unreadCount));
}
groups.add(new DialogGroup(i.getTitle(), i.getKey(), dialogSmalls));
}
context().getMessagesModule().getDialogGroupsVM().getGroupsValueModel().change(groups);
context().getConductor().getGlobalStateVM().onGlobalCounterChanged(counter);
}
use of im.actor.core.viewmodel.DialogSmall in project actor-platform by actorapp.
the class JsBindingModule method onFileLoaded.
@Override
public void onFileLoaded(HashSet<Long> fileId) {
if (dialogsList != null) {
for (JsDisplayListBind<JsDialog, Dialog> b : dialogsList.getActiveBinds()) {
b.startReconverting();
for (Dialog dialog : b.getRawItems()) {
if (checkAvatar(dialog.getDialogAvatar(), fileId)) {
b.forceReconvert(dialog.getEngineId());
}
}
b.stopReconverting();
}
}
if (dialogsGroupedList != null) {
ArrayList<DialogGroup> groups = context().getMessagesModule().getDialogGroupsVM().getGroupsValueModel().get();
if (groups != null) {
outer: for (DialogGroup g : groups) {
for (DialogSmall ds : g.getDialogs()) {
if (checkAvatar(ds.getAvatar(), fileId)) {
context().getMessagesModule().getDialogGroupsVM().getGroupsValueModel().forceNotify();
break outer;
}
}
}
}
}
if (contactsList != null) {
for (JsDisplayListBind<JsContact, Contact> b : contactsList.getActiveBinds()) {
b.startReconverting();
for (Contact contact : b.getRawItems()) {
if (checkAvatar(contact.getAvatar(), fileId)) {
b.forceReconvert(contact.getEngineId());
}
}
b.stopReconverting();
}
}
for (JsDisplayList<JsMessage, Message> messageList : messageLists.values()) {
for (JsDisplayListBind<JsMessage, Message> b : messageList.getActiveBinds()) {
b.startReconverting();
for (Message message : b.getRawItems()) {
UserVM user = context().getUsersModule().getUsers().get(message.getSenderId());
if (checkAvatar(user.getAvatar().get(), fileId)) {
b.forceReconvert(message.getEngineId());
continue;
}
if (message.getContent() instanceof DocumentContent) {
DocumentContent doc = (DocumentContent) message.getContent();
if (doc.getSource() instanceof FileRemoteSource) {
if (fileId.contains(((FileRemoteSource) doc.getSource()).getFileReference().getFileId())) {
b.forceReconvert(message.getEngineId());
}
}
}
if (message.getContent() instanceof StickerContent) {
StickerContent content = (StickerContent) message.getContent();
if (content.getImage512() != null) {
long stickerFileId = content.getImage512().getReference().getFileId();
if (fileId.contains(stickerFileId)) {
b.forceReconvert(message.getEngineId());
}
} else if (content.getImage256() != null) {
long stickerFileId = content.getImage256().getReference().getFileId();
if (fileId.contains(stickerFileId)) {
b.forceReconvert(message.getEngineId());
}
}
}
}
b.stopReconverting();
}
}
for (JsBindedValue<JsUser> u : users.values()) {
int uid = u.get().getUid();
UserVM userVM = context().getUsersModule().getUsers().get(uid);
if (checkAvatar(userVM.getAvatar().get(), fileId)) {
u.changeValue(JsUser.fromUserVM(userVM, messenger));
}
}
for (JsBindedValue<JsGroup> g : groups.values()) {
int gid = g.get().getGid();
GroupVM groupVM = context().getGroupsModule().getGroupsCollection().get(gid);
if (checkAvatar(groupVM.getAvatar().get(), fileId)) {
g.changeValue(JsGroup.fromGroupVM(groupVM, messenger));
}
}
//
if (stickers != null) {
outer: for (StickerPack stickerPack : messenger.getAvailableStickersVM().getOwnStickerPacks().get()) {
for (Sticker s : stickerPack.getStickers()) {
if (s.getImage256() != null && fileId.contains(s.getImage256().getFileId())) {
messenger.getAvailableStickersVM().getOwnStickerPacks().forceNotify();
break outer;
}
}
}
}
}
Aggregations