mirror of
https://github.com/moparisthebest/open-keychain
synced 2025-02-07 18:40:19 -05:00
Wait for import to be done before writing contacts
This commit is contained in:
parent
4bbaf6faa1
commit
b9d88de286
@ -30,10 +30,14 @@ import org.sufficientlysecure.keychain.helper.ContactHelper;
|
|||||||
import org.sufficientlysecure.keychain.helper.EmailKeyHelper;
|
import org.sufficientlysecure.keychain.helper.EmailKeyHelper;
|
||||||
import org.sufficientlysecure.keychain.util.Log;
|
import org.sufficientlysecure.keychain.util.Log;
|
||||||
|
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
public class ContactSyncAdapterService extends Service {
|
public class ContactSyncAdapterService extends Service {
|
||||||
|
|
||||||
private class ContactSyncAdapter extends AbstractThreadedSyncAdapter {
|
private class ContactSyncAdapter extends AbstractThreadedSyncAdapter {
|
||||||
|
|
||||||
|
private final AtomicBoolean importDone = new AtomicBoolean(false);
|
||||||
|
|
||||||
public ContactSyncAdapter() {
|
public ContactSyncAdapter() {
|
||||||
super(ContactSyncAdapterService.this, true);
|
super(ContactSyncAdapterService.this, true);
|
||||||
}
|
}
|
||||||
@ -41,6 +45,7 @@ public class ContactSyncAdapterService extends Service {
|
|||||||
@Override
|
@Override
|
||||||
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider,
|
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider,
|
||||||
final SyncResult syncResult) {
|
final SyncResult syncResult) {
|
||||||
|
KeychainApplication.setupAccountAsNeeded(ContactSyncAdapterService.this);
|
||||||
EmailKeyHelper.importContacts(getContext(), new Messenger(new Handler(Looper.getMainLooper(),
|
EmailKeyHelper.importContacts(getContext(), new Messenger(new Handler(Looper.getMainLooper(),
|
||||||
new Handler.Callback() {
|
new Handler.Callback() {
|
||||||
@Override
|
@Override
|
||||||
@ -48,11 +53,16 @@ public class ContactSyncAdapterService extends Service {
|
|||||||
Bundle data = msg.getData();
|
Bundle data = msg.getData();
|
||||||
switch (msg.arg1) {
|
switch (msg.arg1) {
|
||||||
case KeychainIntentServiceHandler.MESSAGE_OKAY:
|
case KeychainIntentServiceHandler.MESSAGE_OKAY:
|
||||||
|
Log.d(Constants.TAG, "Syncing... Done.");
|
||||||
|
synchronized (importDone) {
|
||||||
|
importDone.set(true);
|
||||||
|
importDone.notifyAll();
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
case KeychainIntentServiceHandler.MESSAGE_UPDATE_PROGRESS:
|
case KeychainIntentServiceHandler.MESSAGE_UPDATE_PROGRESS:
|
||||||
if (data.containsKey(KeychainIntentServiceHandler.DATA_PROGRESS) &&
|
if (data.containsKey(KeychainIntentServiceHandler.DATA_PROGRESS) &&
|
||||||
data.containsKey(KeychainIntentServiceHandler.DATA_PROGRESS_MAX)) {
|
data.containsKey(KeychainIntentServiceHandler.DATA_PROGRESS_MAX)) {
|
||||||
Log.d(Constants.TAG, "Progress: " +
|
Log.d(Constants.TAG, "Syncing... Progress: " +
|
||||||
data.getInt(KeychainIntentServiceHandler.DATA_PROGRESS) + "/" +
|
data.getInt(KeychainIntentServiceHandler.DATA_PROGRESS) + "/" +
|
||||||
data.getInt(KeychainIntentServiceHandler.DATA_PROGRESS_MAX));
|
data.getInt(KeychainIntentServiceHandler.DATA_PROGRESS_MAX));
|
||||||
return false;
|
return false;
|
||||||
@ -63,7 +73,14 @@ public class ContactSyncAdapterService extends Service {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})));
|
})));
|
||||||
KeychainApplication.setupAccountAsNeeded(ContactSyncAdapterService.this);
|
synchronized (importDone) {
|
||||||
|
try {
|
||||||
|
if (!importDone.get()) importDone.wait();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
Log.w(Constants.TAG, e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
ContactHelper.writeKeysToContacts(ContactSyncAdapterService.this);
|
ContactHelper.writeKeysToContacts(ContactSyncAdapterService.this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user