(Context context, IMAPFolder ifolder, List<Message> messages)
| 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); |
no test coverage detected