mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-18 23:13:36 +02:00
Added empty spam
This commit is contained in:
@@ -390,6 +390,8 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
||||
|
||||
if (EntityFolder.TRASH.equals(folder.type))
|
||||
popupMenu.getMenu().add(Menu.NONE, R.string.title_empty_trash, 5, R.string.title_empty_trash);
|
||||
else if (EntityFolder.JUNK.equals(folder.type))
|
||||
popupMenu.getMenu().add(Menu.NONE, R.string.title_empty_spam, 5, R.string.title_empty_spam);
|
||||
}
|
||||
|
||||
if (folder.account != null) {
|
||||
@@ -465,7 +467,11 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
||||
return true;
|
||||
|
||||
case R.string.title_empty_trash:
|
||||
onActionEmptyTrash();
|
||||
onActionEmpty(EntityFolder.TRASH);
|
||||
return true;
|
||||
|
||||
case R.string.title_empty_spam:
|
||||
onActionEmpty(EntityFolder.JUNK);
|
||||
return true;
|
||||
|
||||
case R.string.title_edit_rules:
|
||||
@@ -602,15 +608,21 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
|
||||
ask.show(parentFragment.getFragmentManager(), "folder:delete_local");
|
||||
}
|
||||
|
||||
private void onActionEmptyTrash() {
|
||||
private void onActionEmpty(String type) {
|
||||
Bundle aargs = new Bundle();
|
||||
aargs.putString("question", context.getString(R.string.title_empty_trash_ask));
|
||||
if (EntityFolder.TRASH.equals(type))
|
||||
aargs.putString("question", context.getString(R.string.title_empty_trash_ask));
|
||||
else if (EntityFolder.JUNK.equals(type))
|
||||
aargs.putString("question", context.getString(R.string.title_empty_spam_ask));
|
||||
else
|
||||
throw new IllegalArgumentException("Invalid folder type=" + type);
|
||||
aargs.putLong("folder", folder.id);
|
||||
aargs.putString("type", type);
|
||||
|
||||
FragmentDialogAsk ask = new FragmentDialogAsk();
|
||||
ask.setArguments(aargs);
|
||||
ask.setTargetFragment(parentFragment, FragmentFolders.REQUEST_EMPTY_TRASH);
|
||||
ask.show(parentFragment.getFragmentManager(), "folder:empty_trash");
|
||||
ask.setTargetFragment(parentFragment, FragmentFolders.REQUEST_EMPTY_FOLDER);
|
||||
ask.show(parentFragment.getFragmentManager(), "folder:empty");
|
||||
}
|
||||
|
||||
private void onActionEditRules() {
|
||||
|
||||
@@ -77,7 +77,7 @@ public class FragmentFolders extends FragmentBase {
|
||||
|
||||
static final int REQUEST_SYNC = 1;
|
||||
static final int REQUEST_DELETE_LOCAL = 2;
|
||||
static final int REQUEST_EMPTY_TRASH = 3;
|
||||
static final int REQUEST_EMPTY_FOLDER = 3;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
@@ -425,22 +425,16 @@ public class FragmentFolders extends FragmentBase {
|
||||
try {
|
||||
switch (requestCode) {
|
||||
case REQUEST_SYNC:
|
||||
if (resultCode == RESULT_OK && data != null) {
|
||||
Bundle args = data.getBundleExtra("args");
|
||||
onSync(args.getLong("folder"), args.getBoolean("all"));
|
||||
}
|
||||
if (resultCode == RESULT_OK && data != null)
|
||||
onSync(data.getBundleExtra("args"));
|
||||
break;
|
||||
case REQUEST_DELETE_LOCAL:
|
||||
if (resultCode == RESULT_OK && data != null) {
|
||||
Bundle args = data.getBundleExtra("args");
|
||||
onDeleteLocal(args.getLong("folder"), args.getBoolean("browsed"));
|
||||
}
|
||||
if (resultCode == RESULT_OK && data != null)
|
||||
onDeleteLocal(data.getBundleExtra("args"));
|
||||
break;
|
||||
case REQUEST_EMPTY_TRASH:
|
||||
if (resultCode == RESULT_OK && data != null) {
|
||||
Bundle args = data.getBundleExtra("args");
|
||||
onEmptyTrash(args.getLong("folder"));
|
||||
}
|
||||
case REQUEST_EMPTY_FOLDER:
|
||||
if (resultCode == RESULT_OK && data != null)
|
||||
onEmptyFolder(data.getBundleExtra("args"));
|
||||
break;
|
||||
}
|
||||
} catch (Throwable ex) {
|
||||
@@ -448,11 +442,7 @@ public class FragmentFolders extends FragmentBase {
|
||||
}
|
||||
}
|
||||
|
||||
private void onSync(long folder, boolean all) {
|
||||
Bundle args = new Bundle();
|
||||
args.putBoolean("all", all);
|
||||
args.putLong("folder", folder);
|
||||
|
||||
private void onSync(Bundle args) {
|
||||
new SimpleTask<Void>() {
|
||||
@Override
|
||||
protected Void onExecute(Context context, Bundle args) {
|
||||
@@ -518,11 +508,7 @@ public class FragmentFolders extends FragmentBase {
|
||||
}.execute(this, args, "folder:sync");
|
||||
}
|
||||
|
||||
private void onDeleteLocal(long folder, boolean browsed) {
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("id", folder);
|
||||
args.putBoolean("browsed", browsed);
|
||||
|
||||
private void onDeleteLocal(Bundle args) {
|
||||
new SimpleTask<Void>() {
|
||||
@Override
|
||||
protected void onPreExecute(Bundle args) {
|
||||
@@ -536,13 +522,15 @@ public class FragmentFolders extends FragmentBase {
|
||||
|
||||
@Override
|
||||
protected Void onExecute(Context context, Bundle args) {
|
||||
long id = args.getLong("id");
|
||||
long fid = args.getLong("folder");
|
||||
boolean browsed = args.getBoolean("browsed");
|
||||
Log.i("Delete local messages browsed=" + browsed);
|
||||
|
||||
DB db = DB.getInstance(context);
|
||||
if (browsed)
|
||||
DB.getInstance(context).message().deleteBrowsedMessages(id);
|
||||
db.message().deleteBrowsedMessages(fid);
|
||||
else
|
||||
DB.getInstance(context).message().deleteLocalMessages(id);
|
||||
db.message().deleteLocalMessages(fid);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -553,20 +541,25 @@ public class FragmentFolders extends FragmentBase {
|
||||
}.execute(this, args, "folder:delete:local");
|
||||
}
|
||||
|
||||
private void onEmptyTrash(long folder) {
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("folder", folder);
|
||||
|
||||
private void onEmptyFolder(Bundle args) {
|
||||
new SimpleTask<Void>() {
|
||||
@Override
|
||||
protected Void onExecute(Context context, Bundle args) {
|
||||
long folder = args.getLong("folder");
|
||||
long fid = args.getLong("folder");
|
||||
String type = args.getString("type");
|
||||
|
||||
DB db = DB.getInstance(context);
|
||||
try {
|
||||
db.beginTransaction();
|
||||
|
||||
List<Long> ids = db.message().getMessageByFolder(folder);
|
||||
EntityFolder folder = db.folder().getFolder(fid);
|
||||
if (folder == null)
|
||||
return null;
|
||||
|
||||
if (!folder.type.equals(type))
|
||||
throw new IllegalStateException("Invalid folder type=" + type);
|
||||
|
||||
List<Long> ids = db.message().getMessageByFolder(folder.id);
|
||||
for (Long id : ids) {
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message.uid != null || !TextUtils.isEmpty(message.msgid))
|
||||
|
||||
@@ -262,7 +262,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
private static final int REQUEST_SEARCH = 18;
|
||||
private static final int REQUEST_ACCOUNT = 19;
|
||||
static final int REQUEST_MESSAGE_PROPERTY = 20;
|
||||
private static final int REQUEST_EMPTY_TRASH = 21;
|
||||
private static final int REQUEST_EMPTY_FOLDER = 21;
|
||||
|
||||
static final String ACTION_STORE_RAW = BuildConfig.APPLICATION_ID + ".STORE_RAW";
|
||||
static final String ACTION_DECRYPT = BuildConfig.APPLICATION_ID + ".DECRYPT";
|
||||
@@ -2597,6 +2597,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
(viewType == AdapterMessage.ViewType.UNIFIED || viewType == AdapterMessage.ViewType.FOLDER));
|
||||
menu.findItem(R.id.menu_empty_trash).setVisible(
|
||||
viewType == AdapterMessage.ViewType.FOLDER && EntityFolder.TRASH.equals(type));
|
||||
menu.findItem(R.id.menu_empty_spam).setVisible(
|
||||
viewType == AdapterMessage.ViewType.FOLDER && EntityFolder.JUNK.equals(type));
|
||||
|
||||
menu.findItem(R.id.menu_force_sync).setVisible(viewType == AdapterMessage.ViewType.UNIFIED);
|
||||
|
||||
@@ -2687,7 +2689,11 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
return true;
|
||||
|
||||
case R.id.menu_empty_trash:
|
||||
onMenuEmptyTrash();
|
||||
onMenuEmpty(EntityFolder.TRASH);
|
||||
return true;
|
||||
|
||||
case R.id.menu_empty_spam:
|
||||
onMenuEmpty(EntityFolder.JUNK);
|
||||
return true;
|
||||
|
||||
case R.id.menu_force_sync:
|
||||
@@ -2803,14 +2809,21 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
});
|
||||
}
|
||||
|
||||
private void onMenuEmptyTrash() {
|
||||
private void onMenuEmpty(String type) {
|
||||
Bundle aargs = new Bundle();
|
||||
aargs.putString("question", getString(R.string.title_empty_trash_ask));
|
||||
if (EntityFolder.TRASH.equals(type))
|
||||
aargs.putString("question", getString(R.string.title_empty_trash_ask));
|
||||
else if (EntityFolder.JUNK.equals(type))
|
||||
aargs.putString("question", getString(R.string.title_empty_spam_ask));
|
||||
else
|
||||
throw new IllegalArgumentException("Invalid folder type=" + type);
|
||||
aargs.putLong("folder", folder);
|
||||
aargs.putString("type", type);
|
||||
|
||||
FragmentDialogAsk ask = new FragmentDialogAsk();
|
||||
ask.setArguments(aargs);
|
||||
ask.setTargetFragment(this, FragmentMessages.REQUEST_EMPTY_TRASH);
|
||||
ask.show(getFragmentManager(), "messages:empty_trash");
|
||||
ask.setTargetFragment(this, FragmentMessages.REQUEST_EMPTY_FOLDER);
|
||||
ask.show(getFragmentManager(), "messages:empty");
|
||||
}
|
||||
|
||||
private void onMenuForceSync() {
|
||||
@@ -3641,7 +3654,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
break;
|
||||
case REQUEST_MESSAGES_DELETE:
|
||||
if (resultCode == RESULT_OK && data != null)
|
||||
onDelete(data.getBundleExtra("args").getLongArray("ids"));
|
||||
onDelete(data.getBundleExtra("args"));
|
||||
break;
|
||||
case REQUEST_MESSAGE_JUNK:
|
||||
if (resultCode == RESULT_OK && data != null)
|
||||
@@ -3716,9 +3729,9 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
if (resultCode == RESULT_OK)
|
||||
onPropertySet(data.getBundleExtra("args"));
|
||||
break;
|
||||
case REQUEST_EMPTY_TRASH:
|
||||
case REQUEST_EMPTY_FOLDER:
|
||||
if (resultCode == RESULT_OK)
|
||||
onEmptyTrash();
|
||||
onEmptyFolder(data.getBundleExtra("args"));
|
||||
break;
|
||||
}
|
||||
} catch (Throwable ex) {
|
||||
@@ -4032,10 +4045,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
}.execute(this, args, "message:delete");
|
||||
}
|
||||
|
||||
private void onDelete(long[] ids) {
|
||||
Bundle args = new Bundle();
|
||||
args.putLongArray("ids", ids);
|
||||
|
||||
private void onDelete(Bundle args) {
|
||||
selectionTracker.clearSelection();
|
||||
|
||||
new SimpleTask<Void>() {
|
||||
@@ -4456,20 +4466,25 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
iProperties.setValue(name, id, value);
|
||||
}
|
||||
|
||||
private void onEmptyTrash() {
|
||||
Bundle args = new Bundle();
|
||||
args.putLong("folder", folder);
|
||||
|
||||
private void onEmptyFolder(Bundle args) {
|
||||
new SimpleTask<Void>() {
|
||||
@Override
|
||||
protected Void onExecute(Context context, Bundle args) {
|
||||
long folder = args.getLong("folder");
|
||||
long fid = args.getLong("folder");
|
||||
String type = args.getString("type");
|
||||
|
||||
DB db = DB.getInstance(context);
|
||||
try {
|
||||
db.beginTransaction();
|
||||
|
||||
List<Long> ids = db.message().getMessageByFolder(folder);
|
||||
EntityFolder folder = db.folder().getFolder(fid);
|
||||
if (folder == null)
|
||||
return null;
|
||||
|
||||
if (!folder.type.equals(type))
|
||||
throw new IllegalStateException("Invalid folder type=" + type);
|
||||
|
||||
List<Long> ids = db.message().getMessageByFolder(folder.id);
|
||||
for (Long id : ids) {
|
||||
EntityMessage message = db.message().getMessage(id);
|
||||
if (message.uid != null || !TextUtils.isEmpty(message.msgid))
|
||||
|
||||
Reference in New Issue
Block a user