diff options
| author | mar-v-in <github@rvin.mooo.com> | 2014-06-18 17:01:36 +0200 | 
|---|---|---|
| committer | mar-v-in <github@rvin.mooo.com> | 2014-06-18 17:01:36 +0200 | 
| commit | b9d88de286022f29561eff3e6826e3052eb9c9ea (patch) | |
| tree | 4da25aa0a6521eccb8cfd4afc00db81ff773037a /OpenKeychain | |
| parent | 4bbaf6faa1b29bd66f662eb34208bef91260987b (diff) | |
| download | open-keychain-b9d88de286022f29561eff3e6826e3052eb9c9ea.tar.gz open-keychain-b9d88de286022f29561eff3e6826e3052eb9c9ea.tar.bz2 open-keychain-b9d88de286022f29561eff3e6826e3052eb9c9ea.zip | |
Wait for import to be done before writing contacts
Diffstat (limited to 'OpenKeychain')
| -rw-r--r-- | OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java | 21 | 
1 files changed, 19 insertions, 2 deletions
| diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java index 8db9294df..b245c5e2a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/ContactSyncAdapterService.java @@ -30,10 +30,14 @@ import org.sufficientlysecure.keychain.helper.ContactHelper;  import org.sufficientlysecure.keychain.helper.EmailKeyHelper;  import org.sufficientlysecure.keychain.util.Log; +import java.util.concurrent.atomic.AtomicBoolean; +  public class ContactSyncAdapterService extends Service {      private class ContactSyncAdapter extends AbstractThreadedSyncAdapter { +        private final AtomicBoolean importDone = new AtomicBoolean(false); +          public ContactSyncAdapter() {              super(ContactSyncAdapterService.this, true);          } @@ -41,6 +45,7 @@ public class ContactSyncAdapterService extends Service {          @Override          public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider,                                    final SyncResult syncResult) { +            KeychainApplication.setupAccountAsNeeded(ContactSyncAdapterService.this);              EmailKeyHelper.importContacts(getContext(), new Messenger(new Handler(Looper.getMainLooper(),                      new Handler.Callback() {                          @Override @@ -48,11 +53,16 @@ public class ContactSyncAdapterService extends Service {                              Bundle data = msg.getData();                              switch (msg.arg1) {                                  case KeychainIntentServiceHandler.MESSAGE_OKAY: +                                    Log.d(Constants.TAG, "Syncing... Done."); +                                    synchronized (importDone) { +                                        importDone.set(true); +                                        importDone.notifyAll(); +                                    }                                      return true;                                  case KeychainIntentServiceHandler.MESSAGE_UPDATE_PROGRESS:                                      if (data.containsKey(KeychainIntentServiceHandler.DATA_PROGRESS) &&                                              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_MAX));                                          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);          }      } | 
