Improved demo account handling

master
M66B 2 weeks ago
parent d3b3adc42a
commit a6d70ce6f1

@ -425,7 +425,7 @@ public class BoundaryCallbackMessages extends PagedList.BoundaryCallback<TupleMe
}
EntityAccount account = db.account().getAccount(browsable.account);
if (account == null || account.protocol != EntityAccount.TYPE_IMAP)
if (account == null || account.protocol != EntityAccount.TYPE_IMAP || account.isTestAccount())
return 0;
if (criteria == null) {

@ -167,11 +167,6 @@ class Core {
State state, long serial)
throws JSONException, FolderClosedException {
try {
if (EntityAccount.isTestUser(account.user)) {
ops.clear();
return;
}
Log.i(folder.name + " start process");
Store istore = iservice.getStore();

@ -908,14 +908,12 @@ public class EmailService implements AutoCloseable {
if ("pop3".equals(protocol) || "pop3s".equals(protocol)) {
iservice = isession.getStore(protocol);
if (!EntityAccount.isTestUser(user))
iservice.connect(address.getHostAddress(), port, user, null);
} else if ("imap".equals(protocol) || "imaps".equals(protocol) || "gimaps".equals(protocol)) {
iservice = isession.getStore(protocol);
if (listener != null)
((IMAPStore) iservice).addStoreListener(listener);
if (!EntityAccount.isTestUser(user)) {
iservice.connect(address.getHostAddress(), port, user, null);
// https://www.ietf.org/rfc/rfc2971.txt
@ -950,7 +948,6 @@ public class EmailService implements AutoCloseable {
} catch (ProtocolException ex) {
Log.e(ex);
}
}
} else if ("smtp".equals(protocol) || "smtps".equals(protocol)) {
// https://tools.ietf.org/html/rfc5321#section-4.1.3
@ -962,7 +959,6 @@ public class EmailService implements AutoCloseable {
Log.i("Using localhost=" + properties.getProperty("mail." + protocol + ".localhost"));
iservice = isession.getTransport(protocol);
if (!EntityAccount.isTestUser(user))
try {
iservice.connect(address.getHostAddress(), port, user, null);
} catch (MessagingException ex) {

@ -565,6 +565,10 @@ public class EntityAccount extends EntityOrder implements Serializable {
};
}
boolean isTestAccount() {
return isTestUser(this.user);
}
static boolean isTestUser(String user) {
return (user != null && user.endsWith("@demo.faircode.eu"));
}

@ -458,6 +458,10 @@ public class EntityIdentity {
return (display == null ? name : display);
}
boolean isTestIdentity() {
return EntityAccount.isTestUser(this.user);
}
static EntityIdentity getTestIdentity(Long account, String user) {
EntityIdentity identity = new EntityIdentity();
identity.account = account;

@ -116,6 +116,13 @@ public class EntityOperation {
static void queue(Context context, EntityMessage message, String name, Object... values) {
DB db = DB.getInstance(context);
EntityAccount account = db.account().getAccount(message.account);
if (account != null && account.isTestAccount()) {
if (DELETE.equals(name) || SEND.equals(name))
db.message().deleteMessage(message.id);
return;
}
try {
JSONArray jargs = new JSONArray();
for (Object value : values)
@ -124,7 +131,6 @@ public class EntityOperation {
if (SEEN.equals(name)) {
boolean seen = jargs.getBoolean(0);
boolean ignore = jargs.optBoolean(1, true);
EntityAccount account = db.account().getAccount(message.account);
for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid, message.hash)) {
if ((account != null && !account.isGmail() && !account.isWebDe()) &&
!Objects.equals(message.id, similar.id) &&
@ -141,7 +147,6 @@ public class EntityOperation {
} else if (FLAG.equals(name)) {
boolean flagged = jargs.getBoolean(0);
Integer color = (jargs.length() > 1 && !jargs.isNull(1) ? jargs.getInt(1) : null);
EntityAccount account = db.account().getAccount(message.id);
for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid, message.hash)) {
if ((account != null && !account.isGmail()) &&
!Objects.equals(message.id, similar.id) &&
@ -164,7 +169,6 @@ public class EntityOperation {
return;
} else if (ANSWERED.equals(name)) {
EntityAccount account = db.account().getAccount(message.id);
for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid, message.hash)) {
if ((account != null && !account.isGmail()) &&
!Objects.equals(message.id, similar.id) &&
@ -206,7 +210,6 @@ public class EntityOperation {
DB.Converters.fromStringArray(fkeywords.toArray(new String[0])));
}
} else {
EntityAccount account = db.account().getAccount(message.account);
if (account != null && account.protocol == EntityAccount.TYPE_POP) {
EntityFolder folder = db.folder().getFolder(message.folder);
if (folder != null) {
@ -320,7 +323,6 @@ public class EntityOperation {
" auto read=" + autoread + " flag=" + autounflag + " importance=" + reset_importance);
if (autoread || autounflag || reset_importance) {
EntityAccount account = db.account().getAccount(message.account);
for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid, message.hash)) {
if ((account != null && !account.isGmail()) &&
!Objects.equals(message.id, similar.id) &&
@ -343,7 +345,6 @@ public class EntityOperation {
boolean premove = true;
if (source.account.equals(target.account)) {
EntityAccount account = db.account().getAccount(message.account);
if (account != null && account.isGmail()) {
if (EntityFolder.ARCHIVE.equals(source.type) &&
!(EntityFolder.SENT.equals(target.type) ||
@ -540,8 +541,6 @@ public class EntityOperation {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean perform_expunge = prefs.getBoolean("perform_expunge", true);
EntityAccount account = db.account().getAccount(message.account);
if (perform_expunge ||
account == null ||
account.protocol != EntityAccount.TYPE_IMAP) {

@ -672,11 +672,6 @@ public class ServiceSend extends ServiceBase implements SharedPreferences.OnShar
throw new IllegalArgumentException("Message body missing");
EntityAccount account = db.account().getAccount(message.account);
if (EntityAccount.isTestUser(account.user)){
db.operation().deleteOperation(operation.id);
db.message().deleteMessage(message.id);
return;
}
EntityIdentity ident = db.identity().getIdentity(message.identity);
if (ident == null)

@ -1631,6 +1631,9 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
final PowerManager.WakeLock wlMessage = pm.newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK, BuildConfig.APPLICATION_ID + ":account." + account.id + ".message");
if (account != null && account.isTestAccount())
return;
long start = new Date().getTime();
try {
wlAccount.acquire(Helper.WAKELOCK_MAX);

Loading…
Cancel
Save