Update local contacts after account creation only

This is to prevent double counts after importing settings
This commit is contained in:
M66B 2019-03-18 09:52:20 +00:00
parent b99d7dd4eb
commit 8a0ac170c6
3 changed files with 15 additions and 7 deletions

View File

@ -985,7 +985,8 @@ class Core {
db.beginTransaction();
EntityMessage message = synchronizeMessage(
context,
folder, ifolder, (IMAPMessage) isub[j],
account, folder,
ifolder, (IMAPMessage) isub[j],
false,
rules);
ids[from + j] = message.id;
@ -1075,7 +1076,8 @@ class Core {
static EntityMessage synchronizeMessage(
Context context,
EntityFolder folder, IMAPFolder ifolder, IMAPMessage imessage,
EntityAccount account, EntityFolder folder,
IMAPFolder ifolder, IMAPMessage imessage,
boolean browsed,
List<EntityRule> rules) throws MessagingException, IOException {
long uid = ifolder.getUID(imessage);
@ -1239,7 +1241,8 @@ class Core {
attachment.id = db.attachment().insertAttachment(attachment);
}
if (!EntityFolder.ARCHIVE.equals(folder.type) &&
if (message.received > account.created &&
!EntityFolder.ARCHIVE.equals(folder.type) &&
!EntityFolder.TRASH.equals(folder.type) &&
!EntityFolder.JUNK.equals(folder.type)) {
int type = (folder.isOutgoing() ? EntityContact.TYPE_TO : EntityContact.TYPE_FROM);

View File

@ -668,7 +668,8 @@ public class ServiceSynchronize extends LifecycleService {
db.beginTransaction();
message = Core.synchronizeMessage(
ServiceSynchronize.this,
folder, (IMAPFolder) ifolder, (IMAPMessage) imessage,
account, folder,
(IMAPFolder) ifolder, (IMAPMessage) imessage,
false,
db.rule().getEnabledRules(folder.id));
db.setTransactionSuccessful();
@ -757,7 +758,8 @@ public class ServiceSynchronize extends LifecycleService {
db.beginTransaction();
message = Core.synchronizeMessage(
ServiceSynchronize.this,
folder, (IMAPFolder) ifolder, (IMAPMessage) e.getMessage(),
account, folder,
(IMAPFolder) ifolder, (IMAPMessage) e.getMessage(),
false,
db.rule().getEnabledRules(folder.id));
db.setTransactionSuccessful();

View File

@ -151,9 +151,11 @@ public class ViewModelBrowse extends ViewModel {
final EntityFolder folder = db.folder().getBrowsableFolder(state.fid, state.search != null);
if (folder == null)
return local;
EntityAccount account = db.account().getAccount(folder.account);
if (account == null)
return local;
if (state.imessages == null) {
EntityAccount account = db.account().getAccount(folder.account);
try {
// Check connectivity
@ -323,7 +325,8 @@ public class ViewModelBrowse extends ViewModel {
EntityMessage message = db.message().getMessageByUid(folder.id, uid);
if (message == null) {
message = Core.synchronizeMessage(state.context,
folder, state.ifolder, (IMAPMessage) isub[j],
account, folder,
state.ifolder, (IMAPMessage) isub[j],
true,
new ArrayList<EntityRule>());
remote++;