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

Message notifications removing fixed.

parent aabe3254
...@@ -14,22 +14,6 @@ ...@@ -14,22 +14,6 @@
*/ */
package com.xabber.android.data.message; 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.database.Cursor;
import android.os.Environment; import android.os.Environment;
...@@ -51,14 +35,30 @@ import com.xabber.android.data.entity.BaseEntity; ...@@ -51,14 +35,30 @@ import com.xabber.android.data.entity.BaseEntity;
import com.xabber.android.data.entity.NestedMap; import com.xabber.android.data.entity.NestedMap;
import com.xabber.android.data.extension.archive.MessageArchiveManager; import com.xabber.android.data.extension.archive.MessageArchiveManager;
import com.xabber.android.data.extension.muc.RoomChat; 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.OnRosterReceivedListener;
import com.xabber.android.data.roster.OnStatusChangeListener;
import com.xabber.android.data.roster.RosterManager; import com.xabber.android.data.roster.RosterManager;
import com.xabber.android.utils.StringUtils; import com.xabber.android.utils.StringUtils;
import com.xabber.androiddev.R; import com.xabber.androiddev.R;
import com.xabber.xmpp.address.Jid; import com.xabber.xmpp.address.Jid;
import com.xabber.xmpp.delay.Delay; 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. * Manage chats and its messages.
* <p/> * <p/>
...@@ -70,11 +70,17 @@ public class MessageManager implements OnLoadListener, OnPacketListener, OnDisco ...@@ -70,11 +70,17 @@ public class MessageManager implements OnLoadListener, OnPacketListener, OnDisco
OnAccountRemovedListener, OnRosterReceivedListener, OnAccountArchiveModeChangedListener, OnAccountRemovedListener, OnRosterReceivedListener, OnAccountArchiveModeChangedListener,
OnStatusChangeListener { OnStatusChangeListener {
private final static MessageManager instance;
static {
instance = new MessageManager();
Application.getInstance().addManager(instance);
}
/** /**
* Registered chats for bareAddresses in accounts. * Registered chats for bareAddresses in accounts.
*/ */
private final NestedMap<AbstractChat> chats; private final NestedMap<AbstractChat> chats;
/** /**
* Visible chat. * Visible chat.
* <p/> * <p/>
...@@ -82,19 +88,32 @@ public class MessageManager implements OnLoadListener, OnPacketListener, OnDisco ...@@ -82,19 +88,32 @@ public class MessageManager implements OnLoadListener, OnPacketListener, OnDisco
*/ */
private AbstractChat visibleChat; private AbstractChat visibleChat;
private final static MessageManager instance; private MessageManager() {
chats = new NestedMap<>();
static {
instance = new MessageManager();
Application.getInstance().addManager(instance);
} }
public static MessageManager getInstance() { public static MessageManager getInstance() {
return instance; 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 @Override
...@@ -316,7 +335,7 @@ public class MessageManager implements OnLoadListener, OnPacketListener, OnDisco ...@@ -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 ...@@ -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) { private boolean isStatusTrackingEnabled(String account, String bareAddress) {
if (SettingsManager.chatsShowStatusChange() != ChatsShowStatusChange.always) { if (SettingsManager.chatsShowStatusChange() != ChatsShowStatusChange.always) {
return false; return false;
......
...@@ -85,6 +85,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener ...@@ -85,6 +85,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
private boolean isRecentChatsSelected; private boolean isRecentChatsSelected;
private boolean isVisible;
public static void hideKeyboard(Activity activity) { public static void hideKeyboard(Activity activity) {
// Check if no view has focus: // Check if no view has focus:
View view = activity.getCurrentFocus(); View view = activity.getCurrentFocus();
...@@ -255,6 +257,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener ...@@ -255,6 +257,8 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
@Override @Override
protected void onResume() { protected void onResume() {
super.onResume(); super.onResume();
isVisible = true;
Application.getInstance().addUIListener(OnChatChangedListener.class, this); Application.getInstance().addUIListener(OnChatChangedListener.class, this);
Application.getInstance().addUIListener(OnContactChangedListener.class, this); Application.getInstance().addUIListener(OnContactChangedListener.class, this);
Application.getInstance().addUIListener(OnAccountChangedListener.class, this); Application.getInstance().addUIListener(OnAccountChangedListener.class, this);
...@@ -308,6 +312,7 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener ...@@ -308,6 +312,7 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
Application.getInstance().removeUIListener(OnContactChangedListener.class, this); Application.getInstance().removeUIListener(OnContactChangedListener.class, this);
Application.getInstance().removeUIListener(OnAccountChangedListener.class, this); Application.getInstance().removeUIListener(OnAccountChangedListener.class, this);
MessageManager.getInstance().removeVisibleChat(); MessageManager.getInstance().removeVisibleChat();
isVisible = false;
} }
private void selectChatPage(BaseEntity chat, boolean smoothScroll) { private void selectChatPage(BaseEntity chat, boolean smoothScroll) {
...@@ -371,7 +376,9 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener ...@@ -371,7 +376,9 @@ public class ChatViewer extends ManagedActivity implements OnChatChangedListener
if (isRecentChatsSelected) { if (isRecentChatsSelected) {
MessageManager.getInstance().removeVisibleChat(); MessageManager.getInstance().removeVisibleChat();
} else { } else {
if (isVisible) {
MessageManager.getInstance().setVisibleChat(selectedChat); MessageManager.getInstance().setVisibleChat(selectedChat);
}
MessageArchiveManager.getInstance().requestHistory(selectedChat.getAccount(), selectedChat.getUser(), 0, MessageArchiveManager.getInstance().requestHistory(selectedChat.getAccount(), selectedChat.getUser(), 0,
MessageManager.getInstance().getChat(selectedChat.getAccount(), selectedChat.getUser()).getRequiredMessageCount()); 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