MCPcopy Create free account
hub / github.com/M66B/FairEmail / onSetFlag

Method onSetFlag

app/src/main/java/eu/faircode/email/Core.java:966–1037  ·  view source on GitHub ↗
(Context context, JSONArray jargs, EntityFolder folder, List<EntityMessage> messages, IMAPFolder ifolder, Flags.Flag flag)

Source from the content-addressed store, hash-verified

964 }
965
966 private static void onSetFlag(Context context, JSONArray jargs, EntityFolder folder, List<EntityMessage> messages, IMAPFolder ifolder, Flags.Flag flag) throws MessagingException, JSONException {
967 // Mark message (un)seen
968 DB db = DB.getInstance(context);
969
970 if (flag != Flags.Flag.SEEN &&
971 flag != Flags.Flag.ANSWERED &&
972 flag != Flags.Flag.FLAGGED &&
973 flag != Flags.Flag.DELETED)
974 throw new IllegalArgumentException("Invalid flag=" + flag);
975
976 if (folder.read_only)
977 return;
978
979 if (!ifolder.getPermanentFlags().contains(flag)) {
980 for (EntityMessage message : messages)
981 if (flag == Flags.Flag.SEEN) {
982 db.message().setMessageSeen(message.id, false);
983 db.message().setMessageUiSeen(message.id, false);
984 } else if (flag == Flags.Flag.ANSWERED) {
985 db.message().setMessageAnswered(message.id, false);
986 db.message().setMessageUiAnswered(message.id, false);
987 } else if (flag == Flags.Flag.FLAGGED) {
988 db.message().setMessageFlagged(message.id, false);
989 db.message().setMessageUiFlagged(message.id, false, null);
990 } else if (flag == Flags.Flag.DELETED) {
991 db.message().setMessageDeleted(message.id, false);
992 db.message().setMessageUiDeleted(message.id, false);
993 }
994 return;
995 }
996
997 List<Long> uids = new ArrayList<>();
998 boolean set = jargs.getBoolean(0);
999 for (EntityMessage message : messages) {
1000 if (message.uid == null)
1001 if (messages.size() == 1)
1002 throw new IllegalArgumentException("Set flag: uid missing");
1003 else
1004 throw new MessagingException("Set flag: uid missing");
1005 if (flag == Flags.Flag.SEEN && !message.seen.equals(set))
1006 uids.add(message.uid);
1007 else if (flag == Flags.Flag.ANSWERED && !message.answered.equals(set))
1008 uids.add(message.uid);
1009 else if (flag == Flags.Flag.FLAGGED && !message.flagged.equals(set))
1010 uids.add(message.uid);
1011 else if (flag == Flags.Flag.DELETED && !message.deleted.equals(set))
1012 uids.add(message.uid);
1013 }
1014
1015 if (uids.size() == 0)
1016 return;
1017
1018 Message[] imessages = ifolder.getMessagesByUID(Helper.toLongArray(uids));
1019 for (Message imessage : imessages)
1020 if (imessage == null)
1021 if (messages.size() == 1)
1022 throw new MessageRemovedException();
1023 else

Callers 1

processOperationsMethod · 0.95

Calls 15

getInstanceMethod · 0.95
messageMethod · 0.95
toLongArrayMethod · 0.95
setMessageSeenMethod · 0.80
setMessageUiSeenMethod · 0.80
setMessageAnsweredMethod · 0.80
setMessageUiAnsweredMethod · 0.80
setMessageFlaggedMethod · 0.80
setMessageUiFlaggedMethod · 0.80
setMessageDeletedMethod · 0.80
setMessageUiDeletedMethod · 0.80
getBooleanMethod · 0.80

Tested by

no test coverage detected