aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/ui/listeners/ConversationSwipeRefreshListener.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/thedevstack/conversationsplus/ui/listeners/ConversationSwipeRefreshListener.java')
-rw-r--r--src/main/java/de/thedevstack/conversationsplus/ui/listeners/ConversationSwipeRefreshListener.java103
1 files changed, 0 insertions, 103 deletions
diff --git a/src/main/java/de/thedevstack/conversationsplus/ui/listeners/ConversationSwipeRefreshListener.java b/src/main/java/de/thedevstack/conversationsplus/ui/listeners/ConversationSwipeRefreshListener.java
deleted file mode 100644
index 6dc9f4a4..00000000
--- a/src/main/java/de/thedevstack/conversationsplus/ui/listeners/ConversationSwipeRefreshListener.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package de.thedevstack.conversationsplus.ui.listeners;
-
-import android.widget.ListView;
-
-import com.orangegangsters.github.swipyrefreshlayout.library.SwipyRefreshLayout;
-import com.orangegangsters.github.swipyrefreshlayout.library.SwipyRefreshLayoutDirection;
-
-import java.util.List;
-
-import de.thedevstack.android.logcat.Logging;
-import de.thedevstack.conversationsplus.Config;
-import de.thedevstack.conversationsplus.R;
-import de.thedevstack.conversationsplus.entities.Account;
-import de.thedevstack.conversationsplus.entities.Conversation;
-import de.thedevstack.conversationsplus.entities.Message;
-import de.thedevstack.conversationsplus.services.MessageArchiveService;
-import de.thedevstack.conversationsplus.ui.ConversationActivity;
-import de.thedevstack.conversationsplus.ui.ConversationFragment;
-import de.thedevstack.conversationsplus.ui.adapter.MessageAdapter;
-
-/**
- * This listener starts loading messages from the server.
- */
-public class ConversationSwipeRefreshListener implements SwipyRefreshLayout.OnRefreshListener {
- private List<Message> messageList;
- private ConversationFragment fragment;
- private ConversationMoreMessagesLoadedListener listener;
- private SwipyRefreshLayout swipeLayout;
-
- public ConversationSwipeRefreshListener(List<Message> messageList, SwipyRefreshLayout swipeLayout, ConversationFragment fragment, ListView messagesView, MessageAdapter messageListAdapter) {
- this.messageList = messageList;
- this.fragment = fragment;
- this.swipeLayout = swipeLayout;
- this.listener = new ConversationMoreMessagesLoadedListener(swipeLayout, messageList, fragment, messagesView, messageListAdapter);
- }
-
- @Override
- public void onRefresh(SwipyRefreshLayoutDirection direction) {
- Logging.d(Config.LOGTAG, "Refresh swipe container");
- Logging.d(Config.LOGTAG, "Refresh direction " + direction);
- final ConversationActivity activity = (ConversationActivity) fragment.getActivity();
- if (activity.getSelectedConversation().getAccount().getStatus() != Account.State.DISABLED) {
- synchronized (this.messageList) {
- long timestamp;
- if (SwipyRefreshLayoutDirection.TOP == direction) { // Load history -> messages sent/received before first message in database
- if (messageList.isEmpty()) {
- timestamp = System.currentTimeMillis();
- } else {
- timestamp = this.messageList.get(0).getTimeSent(); // works only because of the ordering (last msg = first msg in list)
- }
- this.listener.setLoadHistory(true);
- activity.xmppConnectionService.loadMoreMessages(activity.getSelectedConversation(), timestamp, this.listener);
- } else if (SwipyRefreshLayoutDirection.BOTTOM == direction) { // load messages sent/received between last received or last session establishment and now
- if (activity.getSelectedConversation().getAccount().isOnlineAndConnected()) {
- Logging.d("mam", "loading missing messages from mam (last session establishing or last received message)");
- long lastSessionEstablished = this.getTimestampOfLastSessionEstablished(activity.getSelectedConversation());
- long lastReceivedMessage = this.getTimestampOfLastReceivedOrTransmittedMessage();
- long startTimestamp = Math.min(lastSessionEstablished, lastReceivedMessage);
- MessageArchiveService.Query query = activity.xmppConnectionService.getMessageArchiveService().query(activity.getSelectedConversation(), startTimestamp, System.currentTimeMillis(), this.listener);
- if (query != null) {
- this.listener.setLoadHistory(false);
- } else {
- Logging.d("mam", "no query built - no messages loaded");
- this.listener.onMoreMessagesLoaded(0, activity.getSelectedConversation());
- this.listener.informUser(R.string.no_more_history_on_server);
- }
- this.listener.informUser(R.string.fetching_history_from_server);
- } else {
- this.listener.informUser(R.string.not_connected_try_again);
- swipeLayout.setRefreshing(false);
- }
- }
- }
- } else {
- this.listener.informUser(R.string.this_account_is_disabled);
- swipeLayout.setRefreshing(false);
- }
- Logging.d(Config.LOGTAG, "End Refresh swipe container");
- }
-
- private long getTimestampOfLastReceivedOrTransmittedMessage() {
- long lastReceivedOrTransmittedMessage = Long.MAX_VALUE;
- if (null != this.messageList
- && !this.messageList.isEmpty()) {
- int lastMessageIndex = this.messageList.size() - 1;
- if (0 <= lastMessageIndex && this.messageList.size() > lastMessageIndex) {
- lastReceivedOrTransmittedMessage = this.messageList.get(lastMessageIndex).getTimeSent();
- }
- }
-
- return lastReceivedOrTransmittedMessage;
- }
-
- private long getTimestampOfLastSessionEstablished(Conversation conversation) {
- long lastSessionEstablished = Long.MAX_VALUE;
- if (null != conversation
- && null != conversation.getAccount()
- && null != conversation.getAccount().getXmppConnection()) {
- lastSessionEstablished = conversation.getAccount().getXmppConnection().getLastSessionEstablished();
- }
- return lastSessionEstablished;
- }
-}