/* * Copyright (C) 2015 Actor LLC. <https://actor.im> */ package im.actor.core.modules.typing; import java.util.HashMap; import im.actor.core.entity.Peer; import im.actor.core.modules.AbsModule; import im.actor.core.modules.ModuleContext; import im.actor.core.modules.typing.OwnTypingActor; import im.actor.core.modules.typing.TypingActor; import im.actor.core.viewmodel.GroupTypingVM; import im.actor.core.viewmodel.UserTypingVM; import im.actor.runtime.actors.ActorRef; public class TypingModule extends AbsModule { private ActorRef ownTypingActor; private ActorRef typingActor; private HashMap<Integer, UserTypingVM> uids = new HashMap<>(); private HashMap<Integer, GroupTypingVM> groups = new HashMap<>(); public TypingModule(final ModuleContext context) { super(context); this.ownTypingActor = OwnTypingActor.get(context); this.typingActor = TypingActor.get(context); } public GroupTypingVM getGroupTyping(int gid) { synchronized (groups) { if (!groups.containsKey(gid)) { groups.put(gid, new GroupTypingVM(gid)); } return groups.get(gid); } } public UserTypingVM getTyping(int uid) { synchronized (uids) { if (!uids.containsKey(uid)) { uids.put(uid, new UserTypingVM(uid)); } return uids.get(uid); } } public void onTyping(Peer peer) { ownTypingActor.send(new OwnTypingActor.Typing(peer)); } public void onMessageSent(Peer peer) { ownTypingActor.send(new OwnTypingActor.MessageSent(peer)); } public void resetModule() { // TODO: Implement } }