Check server when needed only

This commit is contained in:
M66B 2018-11-10 17:58:09 +00:00
parent f34200ecbb
commit 663dfd0ea0
2 changed files with 22 additions and 8 deletions

View File

@ -631,6 +631,7 @@ public class FragmentAccount extends FragmentEx {
new SimpleTask<Void>() {
@Override
protected Void onLoad(Context context, Bundle args) throws Throwable {
long id = args.getLong("id");
String host = args.getString("host");
boolean starttls = args.getBoolean("starttls");
boolean insecure = args.getBoolean("insecure");
@ -665,11 +666,19 @@ public class FragmentAccount extends FragmentEx {
interval = "19";
if (synchronize && drafts == null)
throw new Throwable(getContext().getString(R.string.title_no_drafts));
if (Color.TRANSPARENT == color)
color = null;
DB db = DB.getInstance(context);
EntityAccount account = db.account().getAccount(id);
boolean check = (account == null || (synchronize &&
(!host.equals(account.host) || Integer.parseInt(port) != account.port) ||
!user.equals(account.user) || !password.equals(account.password)));
// Check IMAP server
if (synchronize) {
if (check) {
Session isession = Session.getInstance(MessageHelper.getSessionProperties(auth_type, insecure), null);
isession.setDebug(true);
IMAPStore istore = null;
@ -696,11 +705,9 @@ public class FragmentAccount extends FragmentEx {
if (TextUtils.isEmpty(name))
name = user;
DB db = DB.getInstance(getContext());
try {
db.beginTransaction();
EntityAccount account = db.account().getAccount(args.getLong("id"));
boolean update = (account != null);
if (account == null)
account = new EntityAccount();
@ -785,7 +792,8 @@ public class FragmentAccount extends FragmentEx {
db.endTransaction();
}
ServiceSynchronize.reload(getContext(), "save account");
if (check)
ServiceSynchronize.reload(getContext(), "save account");
return null;
}

View File

@ -406,8 +406,15 @@ public class FragmentIdentity extends FragmentEx {
if (Color.TRANSPARENT == color)
color = null;
DB db = DB.getInstance(context);
EntityIdentity identity = db.identity().getIdentity(id);
boolean check = (identity == null || (synchronize &&
(!host.equals(identity.host) || Integer.parseInt(port) != identity.port) ||
!user.equals(identity.user) || !password.equals(identity.password)));
// Check SMTP server
if (synchronize) {
if (check) {
Properties props = MessageHelper.getSessionProperties(auth_type, insecure);
Session isession = Session.getInstance(props, null);
isession.setDebug(true);
@ -427,11 +434,9 @@ public class FragmentIdentity extends FragmentEx {
}
}
DB db = DB.getInstance(getContext());
try {
db.beginTransaction();
EntityIdentity identity = db.identity().getIdentity(id);
boolean update = (identity != null);
if (identity == null)
identity = new EntityIdentity();
@ -467,7 +472,8 @@ public class FragmentIdentity extends FragmentEx {
db.endTransaction();
}
ServiceSynchronize.reload(getContext(), "save identity");
if (check)
ServiceSynchronize.reload(getContext(), "save identity");
return null;
}