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

Method expunge

app/src/main/java/eu/faircode/email/Core.java:5372–5420  ·  view source on GitHub ↗
(Context context, IMAPFolder ifolder, List<Message> messages)

Source from the content-addressed store, hash-verified

5370 }
5371
5372 private static boolean expunge(Context context, IMAPFolder ifolder, List<Message> messages) {
5373 if (messages.size() == 0)
5374 return false;
5375
5376 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
5377 boolean perform_expunge = prefs.getBoolean("perform_expunge", true);
5378 boolean uid_expunge = prefs.getBoolean("uid_expunge", false);
5379
5380 if (!perform_expunge)
5381 return false;
5382
5383 try {
5384 if (uid_expunge)
5385 uid_expunge = MessageHelper.hasCapability(ifolder, "UIDPLUS");
5386 if (MessageHelper.hasCapability(ifolder, "X-UIDONLY"))
5387 uid_expunge = true;
5388
5389 if (uid_expunge) {
5390 FetchProfile fp = new FetchProfile();
5391 fp.add(UIDFolder.FetchProfileItem.UID);
5392 ifolder.fetch(messages.toArray(new Message[0]), fp);
5393
5394 List<Long> uids = new ArrayList<>();
5395 for (Message m : messages)
5396 try {
5397 long uid = ifolder.getUID(m);
5398 if (uid < 0)
5399 continue;
5400 uids.add(uid);
5401 } catch (MessageRemovedException ex) {
5402 Log.w(ex);
5403 }
5404
5405 Log.i(ifolder.getName() + " expunging " + TextUtils.join(",", uids));
5406 uidExpunge(context, ifolder, uids);
5407 Log.i(ifolder.getName() + " expunged " + TextUtils.join(",", uids));
5408 } else {
5409 Log.i(ifolder.getName() + " expunging all=" + messages.size());
5410 ifolder.expunge();
5411 Log.i(ifolder.getName() + " expunged all=" + messages.size());
5412 }
5413
5414 return true;
5415 } catch (MessagingException ex) {
5416 // NO EXPUNGE failed.
5417 Log.w(ex);
5418 return false;
5419 }
5420 }
5421
5422 private static void uidExpunge(Context context, IMAPFolder ifolder, List<Long> uids) throws MessagingException {
5423 SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

Callers 10

onLabelMethod · 0.95
onAddMethod · 0.95
onMoveMethod · 0.95
onDeleteMethod · 0.95
onDetachMethod · 0.95
onPurgeFolderMethod · 0.95
onSubjectMethod · 0.95
onSynchronizeMessagesMethod · 0.95
synchronizeMessageMethod · 0.95
onExpungeFolderMethod · 0.45

Calls 13

hasCapabilityMethod · 0.95
addMethod · 0.95
wMethod · 0.95
iMethod · 0.95
uidExpungeMethod · 0.95
getBooleanMethod · 0.80
toArrayMethod · 0.80
joinMethod · 0.80
sizeMethod · 0.65
getUIDMethod · 0.65
getNameMethod · 0.65
fetchMethod · 0.45

Tested by

no test coverage detected