From ab485f8d4317be35df294f17e5078ae4b89715d6 Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 15 Aug 2018 11:26:59 +0000 Subject: [PATCH] Show send state/errors --- app/schemas/eu.faircode.email.DB/1.json | 18 +++++++++++++++--- .../eu/faircode/email/AdapterIdentity.java | 14 +++++++++++++- app/src/main/java/eu/faircode/email/DB.java | 2 +- .../java/eu/faircode/email/DaoIdentity.java | 6 ++++++ .../java/eu/faircode/email/EntityAccount.java | 1 + .../java/eu/faircode/email/EntityIdentity.java | 6 +++++- .../eu/faircode/email/FragmentAccount.java | 8 ++++---- .../eu/faircode/email/FragmentIdentity.java | 3 +++ .../eu/faircode/email/ServiceSynchronize.java | 12 +++++++++++- app/src/main/res/layout/item_identity.xml | 16 ++++++++++++++-- 10 files changed, 73 insertions(+), 13 deletions(-) diff --git a/app/schemas/eu.faircode.email.DB/1.json b/app/schemas/eu.faircode.email.DB/1.json index 146c4ac5..57b2db60 100644 --- a/app/schemas/eu.faircode.email.DB/1.json +++ b/app/schemas/eu.faircode.email.DB/1.json @@ -2,11 +2,11 @@ "formatVersion": 1, "database": { "version": 1, - "identityHash": "6213f410bff60ef85d8608f09052327d", + "identityHash": "23016f9b3ae09175ada077c837687ab6", "entities": [ { "tableName": "identity", - "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT NOT NULL, `email` TEXT NOT NULL, `replyto` TEXT, `account` INTEGER NOT NULL, `host` TEXT NOT NULL, `port` INTEGER NOT NULL, `starttls` INTEGER NOT NULL, `user` TEXT NOT NULL, `password` TEXT NOT NULL, `primary` INTEGER NOT NULL, `synchronize` INTEGER NOT NULL, FOREIGN KEY(`account`) REFERENCES `account`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT NOT NULL, `email` TEXT NOT NULL, `replyto` TEXT, `account` INTEGER NOT NULL, `host` TEXT NOT NULL, `port` INTEGER NOT NULL, `starttls` INTEGER NOT NULL, `user` TEXT NOT NULL, `password` TEXT NOT NULL, `primary` INTEGER NOT NULL, `synchronize` INTEGER NOT NULL, `state` TEXT, `error` TEXT, FOREIGN KEY(`account`) REFERENCES `account`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", "fields": [ { "fieldPath": "id", @@ -79,6 +79,18 @@ "columnName": "synchronize", "affinity": "INTEGER", "notNull": true + }, + { + "fieldPath": "state", + "columnName": "state", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "error", + "columnName": "error", + "affinity": "TEXT", + "notNull": false } ], "primaryKey": { @@ -770,7 +782,7 @@ ], "setupQueries": [ "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", - "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"6213f410bff60ef85d8608f09052327d\")" + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"23016f9b3ae09175ada077c837687ab6\")" ] } } \ No newline at end of file diff --git a/app/src/main/java/eu/faircode/email/AdapterIdentity.java b/app/src/main/java/eu/faircode/email/AdapterIdentity.java index fc04adf3..b1ce08ce 100644 --- a/app/src/main/java/eu/faircode/email/AdapterIdentity.java +++ b/app/src/main/java/eu/faircode/email/AdapterIdentity.java @@ -54,6 +54,7 @@ public class AdapterIdentity extends RecyclerView.Adapter folders = new ArrayList<>(); EntityFolder inbox = new EntityFolder(); @@ -479,7 +479,7 @@ public class FragmentAccount extends FragmentEx { } for (EntityFolder folder : folders) { - db.folder().setFolderUser(folder.account, folder.type); + db.folder().setFolderUser(account.id, folder.type); EntityFolder existing = db.folder().getFolderByName(account.id, folder.name); if (existing == null) { folder.account = account.id; diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index cc5c9696..1e9705a1 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -276,6 +276,9 @@ public class FragmentIdentity extends FragmentEx { identity.synchronize = synchronize; identity.primary = (identity.synchronize && args.getBoolean("primary")); + if (!identity.synchronize) + identity.error = null; + if (identity.primary) db.identity().resetPrimary(); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index e961a152..d9ab5ea4 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -978,7 +978,10 @@ public class ServiceSynchronize extends LifecycleService { Transport itransport = isession.getTransport(ident.starttls ? "smtp" : "smtps"); try { // Connect transport + db.identity().setIdentityState(ident.id, "connecting"); itransport.connect(ident.host, ident.port, ident.user, ident.password); + db.identity().setIdentityState(ident.id, "connected"); + db.identity().setIdentityError(ident.id, null); // Send message Address[] to = imessage.getAllRecipients(); @@ -1013,8 +1016,15 @@ public class ServiceSynchronize extends LifecycleService { } finally { db.endTransaction(); } + } catch (MessagingException ex) { + db.identity().setIdentityError(ident.id, Helper.formatThrowable(ex)); + throw ex; } finally { - itransport.close(); + try { + itransport.close(); + } finally { + db.identity().setIdentityState(ident.id, null); + } } } diff --git a/app/src/main/res/layout/item_identity.xml b/app/src/main/res/layout/item_identity.xml index 0d0b643e..f632338a 100644 --- a/app/src/main/res/layout/item_identity.xml +++ b/app/src/main/res/layout/item_identity.xml @@ -50,6 +50,16 @@ app:layout_constraintStart_toEndOf="@+id/ivPrimary" app:layout_constraintTop_toBottomOf="@id/ivSync" /> + + + app:layout_constraintTop_toTopOf="@id/ivState" /> + app:layout_constraintTop_toTopOf="@id/ivState" />