mirror of https://github.com/M66B/FairEmail.git
Warn messages not identical when moving across accounts
This commit is contained in:
parent
abfa20cb84
commit
1f83f4a9c1
|
@ -548,7 +548,7 @@ public class FragmentMessages extends FragmentBase {
|
||||||
|
|
||||||
if (target != null) {
|
if (target != null) {
|
||||||
EntityAccount account = db.account().getAccount(target.account);
|
EntityAccount account = db.account().getAccount(target.account);
|
||||||
result.add(new MessageTarget(id, account, target));
|
result.add(new MessageTarget(message, account, target));
|
||||||
}
|
}
|
||||||
|
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
|
@ -678,7 +678,7 @@ public class FragmentMessages extends FragmentBase {
|
||||||
List<EntityMessage> messages = db.message().getMessageByThread(
|
List<EntityMessage> messages = db.message().getMessageByThread(
|
||||||
message.account, message.thread, threading && thread ? null : id, message.folder);
|
message.account, message.thread, threading && thread ? null : id, message.folder);
|
||||||
for (EntityMessage threaded : messages) {
|
for (EntityMessage threaded : messages) {
|
||||||
result.add(new MessageTarget(threaded.id, account, target));
|
result.add(new MessageTarget(threaded, account, target));
|
||||||
db.message().setMessageUiHide(threaded.id, true);
|
db.message().setMessageUiHide(threaded.id, true);
|
||||||
// Prevent new message notification on undo
|
// Prevent new message notification on undo
|
||||||
db.message().setMessageUiIgnored(threaded.id, true);
|
db.message().setMessageUiIgnored(threaded.id, true);
|
||||||
|
@ -762,7 +762,7 @@ public class FragmentMessages extends FragmentBase {
|
||||||
(!EntityFolder.SENT.equals(folder.type) || EntityFolder.TRASH.equals(target.type)) &&
|
(!EntityFolder.SENT.equals(folder.type) || EntityFolder.TRASH.equals(target.type)) &&
|
||||||
!EntityFolder.TRASH.equals(folder.type) &&
|
!EntityFolder.TRASH.equals(folder.type) &&
|
||||||
!EntityFolder.JUNK.equals(folder.type))
|
!EntityFolder.JUNK.equals(folder.type))
|
||||||
result.add(new MessageTarget(threaded.id, account, target));
|
result.add(new MessageTarget(threaded, account, target));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1192,7 +1192,7 @@ public class FragmentMessages extends FragmentBase {
|
||||||
for (EntityMessage threaded : messages) {
|
for (EntityMessage threaded : messages) {
|
||||||
EntityFolder target = db.folder().getFolderByType(message.account, type);
|
EntityFolder target = db.folder().getFolderByType(message.account, type);
|
||||||
EntityAccount account = db.account().getAccount(target.account);
|
EntityAccount account = db.account().getAccount(target.account);
|
||||||
result.add(new MessageTarget(threaded.id, account, target));
|
result.add(new MessageTarget(threaded, account, target));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1245,7 +1245,7 @@ public class FragmentMessages extends FragmentBase {
|
||||||
List<EntityMessage> messages = db.message().getMessageByThread(
|
List<EntityMessage> messages = db.message().getMessageByThread(
|
||||||
message.account, message.thread, threading ? null : id, message.folder);
|
message.account, message.thread, threading ? null : id, message.folder);
|
||||||
for (EntityMessage threaded : messages)
|
for (EntityMessage threaded : messages)
|
||||||
result.add(new MessageTarget(threaded.id, account, target));
|
result.add(new MessageTarget(threaded, account, target));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2041,7 +2041,7 @@ public class FragmentMessages extends FragmentBase {
|
||||||
|
|
||||||
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||||
if (prefs.getBoolean("automove", false)) {
|
if (prefs.getBoolean("automove", false)) {
|
||||||
moveAskConfirmed(result);
|
moveAskAcross(result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2059,13 +2059,36 @@ public class FragmentMessages extends FragmentBase {
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
if (cbNotAgain.isChecked())
|
if (cbNotAgain.isChecked())
|
||||||
prefs.edit().putBoolean("automove", true).apply();
|
prefs.edit().putBoolean("automove", true).apply();
|
||||||
moveAskConfirmed(result);
|
moveAskAcross(result);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.setNegativeButton(android.R.string.cancel, null)
|
.setNegativeButton(android.R.string.cancel, null)
|
||||||
.show();
|
.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void moveAskAcross(final ArrayList<MessageTarget> result) {
|
||||||
|
boolean across = false;
|
||||||
|
for (MessageTarget target : result)
|
||||||
|
if (target.across) {
|
||||||
|
across = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (across)
|
||||||
|
new DialogBuilderLifecycle(getContext(), getViewLifecycleOwner())
|
||||||
|
.setMessage(R.string.title_accross_remark)
|
||||||
|
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
moveAskConfirmed(result);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.setNegativeButton(android.R.string.cancel, null)
|
||||||
|
.show();
|
||||||
|
else
|
||||||
|
moveAskConfirmed(result);
|
||||||
|
}
|
||||||
|
|
||||||
private void moveAskConfirmed(ArrayList<MessageTarget> result) {
|
private void moveAskConfirmed(ArrayList<MessageTarget> result) {
|
||||||
Bundle args = new Bundle();
|
Bundle args = new Bundle();
|
||||||
args.putParcelableArrayList("result", result);
|
args.putParcelableArrayList("result", result);
|
||||||
|
@ -2243,17 +2266,20 @@ public class FragmentMessages extends FragmentBase {
|
||||||
|
|
||||||
private static class MessageTarget implements Parcelable {
|
private static class MessageTarget implements Parcelable {
|
||||||
long id;
|
long id;
|
||||||
|
boolean across;
|
||||||
EntityAccount account;
|
EntityAccount account;
|
||||||
EntityFolder folder;
|
EntityFolder folder;
|
||||||
|
|
||||||
MessageTarget(long id, EntityAccount account, EntityFolder folder) {
|
MessageTarget(EntityMessage message, EntityAccount account, EntityFolder folder) {
|
||||||
this.id = id;
|
this.id = message.id;
|
||||||
|
this.across = !folder.account.equals(message.account);
|
||||||
this.account = account;
|
this.account = account;
|
||||||
this.folder = folder;
|
this.folder = folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected MessageTarget(Parcel in) {
|
protected MessageTarget(Parcel in) {
|
||||||
id = in.readLong();
|
id = in.readLong();
|
||||||
|
across = (in.readInt() != 0);
|
||||||
account = (EntityAccount) in.readSerializable();
|
account = (EntityAccount) in.readSerializable();
|
||||||
folder = (EntityFolder) in.readSerializable();
|
folder = (EntityFolder) in.readSerializable();
|
||||||
}
|
}
|
||||||
|
@ -2261,6 +2287,7 @@ public class FragmentMessages extends FragmentBase {
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
dest.writeLong(id);
|
dest.writeLong(id);
|
||||||
|
dest.writeInt(across ? 1 : 0);
|
||||||
dest.writeSerializable(account);
|
dest.writeSerializable(account);
|
||||||
dest.writeSerializable(folder);
|
dest.writeSerializable(folder);
|
||||||
}
|
}
|
||||||
|
|
|
@ -307,6 +307,7 @@
|
||||||
<string name="title_no_contacts">Contact picker not available</string>
|
<string name="title_no_contacts">Contact picker not available</string>
|
||||||
<string name="title_no_internet">No internet connection</string>
|
<string name="title_no_internet">No internet connection</string>
|
||||||
<string name="title_no_accross">Moving across accounts requires all message content to be downloaded</string>
|
<string name="title_no_accross">Moving across accounts requires all message content to be downloaded</string>
|
||||||
|
<string name="title_accross_remark">Messages moved across accounts will not be identical after moving</string>
|
||||||
<string name="title_raw_saved">Raw message saved</string>
|
<string name="title_raw_saved">Raw message saved</string>
|
||||||
<string name="title_attachment_saved">Attachment saved</string>
|
<string name="title_attachment_saved">Attachment saved</string>
|
||||||
<string name="title_attachments_saved">Attachments saved</string>
|
<string name="title_attachments_saved">Attachments saved</string>
|
||||||
|
|
Loading…
Reference in New Issue