diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index b6e20c4e9ae6c2d93b54884eb862e8e8015ad493..f9dddadfe9a6fe8a47e1ac535eb8c7935b084568 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -695,7 +695,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl .result(); } - private long getSortableTime() { + public long getSortableTime() { Draft draft = getDraft(); long messageTime = getLatestMessage().getTimeReceived(); if (draft == null) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java index 3ab33e564094a40b47f7c7686a11166f7328a1f9..fb4aa94e5edbf9072d9792894de79095dbd48da7 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java @@ -62,6 +62,8 @@ import androidx.databinding.DataBindingUtil; import com.cheogram.android.DownloadDefaultStickers; +import com.google.common.collect.ImmutableList; + import org.openintents.openpgp.util.OpenPgpApi; import java.util.Arrays; @@ -626,6 +628,18 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio case R.id.action_scan_qr_code: UriHandlerActivity.scan(this); return true; + case R.id.action_cleanup: + for (Conversation c : ImmutableList.copyOf(xmppConnectionService.getConversations())) { + c.trim(); + if (c.getDraftMessage() != null) continue; + if (c.getReplyTo() != null) continue; + if (c.getMode() == Conversation.MODE_MULTI) continue; + if (c.getBooleanAttribute(Conversation.ATTRIBUTE_PINNED_ON_TOP, false)) continue; + if (c.unreadCount() > 0) continue; + if (c.getSortableTime() > System.currentTimeMillis() - 600000) continue; + xmppConnectionService.archiveConversation(c); + } + break; case R.id.action_search_all_conversations: startActivity(new Intent(this, SearchActivity.class)); return true; diff --git a/src/main/res/menu/activity_conversations.xml b/src/main/res/menu/activity_conversations.xml index bcf227ee50da6c9e2cde3b7e95e041db1af3a6f9..e764539217a9db62b799a77d1f557c60b46738f9 100644 --- a/src/main/res/menu/activity_conversations.xml +++ b/src/main/res/menu/activity_conversations.xml @@ -22,4 +22,10 @@ android:title="@string/scan_qr_code" android:visible="@bool/show_qr_code_scan" app:showAsAction="always" /> - \ No newline at end of file + +