@Nullable
 private IDEtalkEvent createPresenceChangeEvent(User user, UserPresence newPresence) {
   UserPresence oldPresence = getUserPresence(user);
   if (!newPresence.equals(oldPresence)) {
     if (newPresence.isOnline() ^ oldPresence.isOnline()) {
       return newPresence.isOnline() ? new UserEvent.Online(user) : new UserEvent.Offline(user);
     } else {
       return new UserEvent.Updated(
           user, PRESENCE, oldPresence.getPresenceMode(), newPresence.getPresenceMode());
     }
   }
   return null;
 }
  @Override
  public void setOwnPresence(UserPresence userPresence) {
    if (isOnline() && !userPresence.isOnline()) {
      myFacade.disconnect();
    } else if (!isOnline() && userPresence.isOnline()) {
      myUI.connectAndLogin(null);
    }

    if (isOnline() && presenceModeChanged(userPresence.getPresenceMode())) {
      myFacade.setOnlinePresence(userPresence);
      myPresenceMode = userPresence.getPresenceMode();
    }
  }