Cleanup POP3 keywords

pull/217/head
M66B 7 months ago
parent 472b9a21be
commit 8989b43b88

@ -488,6 +488,9 @@ public interface DaoMessage {
" OR (NOT :hash IS NULL AND message.hash IS :hash))") " OR (NOT :hash IS NULL AND message.hash IS :hash))")
List<EntityMessage> getMessagesBySimilarity(long account, long id, String msgid, String hash); List<EntityMessage> getMessagesBySimilarity(long account, long id, String msgid, String hash);
@Query("SELECT DISTINCT keywords FROM message WHERE folder = :folder")
List<String[]> getKeywords(long folder);
@Query("SELECT COUNT(*) FROM message" + @Query("SELECT COUNT(*) FROM message" +
" WHERE folder = :folder" + " WHERE folder = :folder" +
" AND msgid = :msgid" + " AND msgid = :msgid" +

@ -205,6 +205,24 @@ public class EntityOperation {
db.folder().setFolderKeywords(folder.id, db.folder().setFolderKeywords(folder.id,
DB.Converters.fromStringArray(fkeywords.toArray(new String[0]))); DB.Converters.fromStringArray(fkeywords.toArray(new String[0])));
} }
} else {
EntityAccount account = db.account().getAccount(message.account);
if (account != null && account.protocol == EntityAccount.TYPE_POP) {
EntityFolder folder = db.folder().getFolder(message.folder);
if (folder != null) {
List<String> fkeywords = new ArrayList<>();
List<String[]> mkeywords = db.message().getKeywords(folder.id);
if (mkeywords != null)
for (String[] kws : mkeywords) {
for (String kw : kws)
if (!fkeywords.contains(kw))
fkeywords.add(kw);
}
Collections.sort(fkeywords);
db.folder().setFolderKeywords(folder.id,
DB.Converters.fromStringArray(fkeywords.toArray(new String[0])));
}
}
} }
} else if (LABEL.equals(name)) { } else if (LABEL.equals(name)) {

Loading…
Cancel
Save