Commit 6093fe43 authored by Grigory Fedorov's avatar Grigory Fedorov

Message notifications removing fixed.

parent aabe3254
......@@ -14,22 +14,6 @@
*/
package com.xabber.android.data.message;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smackx.packet.MUCUser;
import android.database.Cursor;
import android.os.Environment;
......@@ -51,14 +35,30 @@ import com.xabber.android.data.entity.BaseEntity;
import com.xabber.android.data.entity.NestedMap;
import com.xabber.android.data.extension.archive.MessageArchiveManager;
import com.xabber.android.data.extension.muc.RoomChat;
import com.xabber.android.data.roster.OnStatusChangeListener;
import com.xabber.android.data.roster.OnRosterReceivedListener;
import com.xabber.android.data.roster.OnStatusChangeListener;
import com.xabber.android.data.roster.RosterManager;
import com.xabber.android.utils.StringUtils;
import com.xabber.androiddev.R;
import com.xabber.xmpp.address.Jid;
import com.xabber.xmpp.delay.Delay;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
import org.jivesoftware.smack.packet.PacketExtension;
import org.jivesoftware.smackx.packet.MUCUser;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/**
* Manage chats and its messages.
* <p/>
......@@ -70,11 +70,17 @@ public class MessageManager implements OnLoadListener, OnPacketListener, OnDisco
OnAccountRemovedListener, OnRosterReceivedListener, OnAccountArchiveModeChangedListener,
OnStatusChangeListener {
private final static MessageManager instance;
static {
instance = new MessageManager();
Application.getInstance().addManager(instance);
}
/**
* Registered chats for bareAddresses in accounts.
*/
private final NestedMap<AbstractChat> chats;
/**
* Visible chat.
* <p/>
......@@ -82,19 +88,32 @@ public class MessageManager implements OnLoadListener, OnPacketListener, OnDisco
*/
private AbstractChat visibleChat;
private final static MessageManager instance;
static {
instance = new MessageManager();
Application.getInstance().addManager(instance);
private MessageManager() {
chats = new NestedMap<>();
}
public static MessageManager getInstance() {
return instance;
}
private MessageManager() {
chats = new NestedMap<>();
/**
* @param messageItems
* @param clearId Whether message id must be set to the <code>null</code>.
* @return Collection with ids for specified messages.
*/
static Collection<Long> getMessageIds(Collection<MessageItem> messageItems, boolean clearId) {
ArrayList<Long> ids = new ArrayList<>();
for (MessageItem messageItem : messageItems) {
Long id = messageItem.getId();
if (id == null) {
continue;
}
ids.add(id);
if (clearId) {
messageItem.setId(null);
}
}
return ids;
}
@Override
......@@ -316,7 +335,7 @@ public class MessageManager implements OnLoadListener, OnPacketListener, OnDisco
}
});
}
visibleChat = chat;
this.visibleChat = chat;
}
/**
......@@ -576,26 +595,6 @@ public class MessageManager implements OnLoadListener, OnPacketListener, OnDisco
});
}
/**
* @param messageItems
* @param clearId Whether message id must be set to the <code>null</code>.
* @return Collection with ids for specified messages.
*/
static Collection<Long> getMessageIds(Collection<MessageItem> messageItems, boolean clearId) {
ArrayList<Long> ids = new ArrayList<>();
for (MessageItem messageItem : messageItems) {
Long id = messageItem.getId();
if (id == null) {
continue;
}
ids.add(id);
if (clearId) {
messageItem.setId(null);
}
}
return ids;
}
private boolean isStatusTrackingEnabled(String account, String bareAddress) {
if (SettingsManager.chatsShowStatusChange() != ChatsShowStatusChange.always) {
return false;
......
......@@ -85,6 +85,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
private boolean isRecentChatsSelected;
private boolean isVisible;
public static void hideKeyboard(Activity activity) {
// Check if no view has focus:
View view = activity.getCurrentFocus();
......@@ -255,6 +257,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
@Override
protected void onResume() {
super.onResume();
isVisible = true;
Application.getInstance().addUIListener(OnChatChangedListener.class, this);
Application.getInstance().addUIListener(OnContactChangedListener.class, this);
Application.getInstance().addUIListener(OnAccountChangedListener.class, this);
......@@ -308,6 +312,7 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
Application.getInstance().removeUIListener(OnContactChangedListener.class, this);
Application.getInstance().removeUIListener(OnAccountChangedListener.class, this);
MessageManager.getInstance().removeVisibleChat();
isVisible = false;
}
private void selectChatPage(BaseEntity chat, boolean smoothScroll) {
......@@ -371,7 +376,9 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
if (isRecentChatsSelected) {
MessageManager.getInstance().removeVisibleChat();
} else {
MessageManager.getInstance().setVisibleChat(selectedChat);
if (isVisible) {
MessageManager.getInstance().setVisibleChat(selectedChat);
}
MessageArchiveManager.getInstance().requestHistory(selectedChat.getAccount(), selectedChat.getUser(), 0,
MessageManager.getInstance().getChat(selectedChat.getAccount(), selectedChat.getUser()).getRequiredMessageCount());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment