simplify progress for key import operations

This commit is contained in:
Vincent Breitmoser
2017-05-19 16:59:18 +02:00
parent f34edae294
commit c91b7e377a
13 changed files with 74 additions and 92 deletions

View File

@@ -90,8 +90,8 @@ public class ChangeUnlockOperation extends BaseReadWriteOperation<ChangeUnlockPa
// It's a success, so this must be non-null now
UncachedKeyRing ring = modifyResult.getRing();
SaveKeyringResult saveResult = mKeyWritableRepository
.saveSecretKeyRing(ring, new ProgressScaler(mProgressable, 70, 95, 100));
updateProgress(R.string.progress_saving, 80, 100);
SaveKeyringResult saveResult = mKeyWritableRepository.saveSecretKeyRing(ring);
log.add(saveResult, 1);
// If the save operation didn't succeed, exit here

View File

@@ -146,8 +146,8 @@ public class EditKeyOperation extends BaseReadWriteOperation<SaveKeyringParcel>
UploadKeyringParcel exportKeyringParcel =
new UploadKeyringParcel(saveParcel.getUploadKeyserver(), keyringBytes);
UploadResult uploadResult =
new UploadOperation(mContext, mKeyRepository, mProgressable, mCancelled)
UploadResult uploadResult = new UploadOperation(
mContext, mKeyRepository, new ProgressScaler(mProgressable, 60, 80, 100), mCancelled)
.execute(exportKeyringParcel, cryptoInput);
log.add(uploadResult, 2);
@@ -161,8 +161,8 @@ public class EditKeyOperation extends BaseReadWriteOperation<SaveKeyringParcel>
}
// Save the new keyring.
SaveKeyringResult saveResult = mKeyWritableRepository
.saveSecretKeyRing(ring, new ProgressScaler(mProgressable, 60, 95, 100));
updateProgress(R.string.progress_saving, 90, 100);
SaveKeyringResult saveResult = mKeyWritableRepository.saveSecretKeyRing(ring);
log.add(saveResult, 1);
// If the save operation didn't succeed, exit here

View File

@@ -129,13 +129,13 @@ public class ImportOperation extends BaseReadWriteOperation<ImportKeyringParcel>
* contact-to-key sync i.e ContactSyncAdapterService.requestContactsSync()
*
* @param entries keys to import
* @param num number of keys to import
* @param numTotalKeys number of keys to import
* @param hkpKeyserver contains uri of keyserver to import from, if it is an import from cloud
* @param progressable Allows multi-threaded import to supply a progressable that ignores the
* progress of a single key being imported
*/
@NonNull
private ImportKeyResult serialKeyRingImport(Iterator<ParcelableKeyRing> entries, int num,
private ImportKeyResult serialKeyRingImport(Iterator<ParcelableKeyRing> entries, int numTotalKeys,
ParcelableHkpKeyserver hkpKeyserver, Progressable progressable,
@NonNull ParcelableProxy proxy, boolean skipSave) {
if (progressable != null) {
@@ -143,7 +143,7 @@ public class ImportOperation extends BaseReadWriteOperation<ImportKeyringParcel>
}
OperationLog log = new OperationLog();
log.add(LogType.MSG_IMPORT, 0, num);
log.add(LogType.MSG_IMPORT, 0, numTotalKeys);
// If there aren't even any keys, do nothing here.
if (entries == null || !entries.hasNext()) {
@@ -156,8 +156,7 @@ public class ImportOperation extends BaseReadWriteOperation<ImportKeyringParcel>
ArrayList<CanonicalizedKeyRing> canKeyRings = new ArrayList<>();
boolean cancelled = false;
int position = 0;
double progSteps = 100.0 / num;
int keyImportsFinished = 0;
KeybaseKeyserver keybaseServer = null;
FacebookKeyserver facebookServer = null;
@@ -316,14 +315,10 @@ public class ImportOperation extends BaseReadWriteOperation<ImportKeyringParcel>
// and https://github.com/open-keychain/open-keychain/issues/1480
synchronized (mKeyRepository) {
mKeyRepository.clearLog();
ProgressScaler progressScaler = new ProgressScaler(progressable, (int) (position * progSteps),
(int) ((position + 1) * progSteps), 100);
if (key.isSecret()) {
result = mKeyWritableRepository.saveSecretKeyRing(key, progressScaler,
canKeyRings, skipSave);
result = mKeyWritableRepository.saveSecretKeyRing(key, canKeyRings, skipSave);
} else {
result = mKeyWritableRepository.savePublicKeyRing(key, progressScaler,
entry.mExpectedFingerprint, canKeyRings, skipSave);
result = mKeyWritableRepository.savePublicKeyRing(key, entry.mExpectedFingerprint, canKeyRings, skipSave);
}
}
if (!result.success()) {
@@ -354,8 +349,10 @@ public class ImportOperation extends BaseReadWriteOperation<ImportKeyringParcel>
Log.e(Constants.TAG, "Encountered bad key on import!", e);
++badKeys;
}
// update progress
position++;
keyImportsFinished += 1;
progressable.setProgress(keyImportsFinished, numTotalKeys);
}
// Special: consolidate on secret key import (cannot be cancelled!)

View File

@@ -113,8 +113,8 @@ public class PromoteKeyOperation extends BaseReadWriteOperation<PromoteKeyringPa
setPreventCancel();
// Save the new keyring.
SaveKeyringResult saveResult = mKeyWritableRepository
.saveSecretKeyRing(promotedRing, new ProgressScaler(mProgressable, 60, 95, 100));
updateProgress(R.string.progress_saving, 80, 100);
SaveKeyringResult saveResult = mKeyWritableRepository.saveSecretKeyRing(promotedRing);
log.add(saveResult, 1);
// If the save operation didn't succeed, exit here