mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 00:59:49 +01:00
Show backup progress as a percentage.
This commit is contained in:
committed by
Greyson Parrelli
parent
4f73e36d72
commit
8014a70134
@@ -59,7 +59,7 @@ final class OldDeviceClientTask implements ClientTask {
|
||||
public void onEvent(FullBackupBase.BackupEvent event) {
|
||||
if (event.getType() == FullBackupBase.BackupEvent.Type.PROGRESS) {
|
||||
if (System.currentTimeMillis() > lastProgressUpdate + PROGRESS_UPDATE_THROTTLE) {
|
||||
EventBus.getDefault().post(new Status(event.getCount(), false));
|
||||
EventBus.getDefault().post(new Status(event.getCount(), event.getEstimatedTotalCount(), event.getCompletionPercentage(), false));
|
||||
lastProgressUpdate = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
@@ -68,22 +68,34 @@ final class OldDeviceClientTask implements ClientTask {
|
||||
@Override
|
||||
public void success() {
|
||||
SignalStore.misc().markOldDeviceTransferLocked();
|
||||
EventBus.getDefault().post(new Status(0, true));
|
||||
EventBus.getDefault().post(new Status(0, 0, 0,true));
|
||||
}
|
||||
|
||||
public static final class Status {
|
||||
private final long messages;
|
||||
private final long estimatedMessages;
|
||||
private final double completionPercentage;
|
||||
private final boolean done;
|
||||
|
||||
public Status(long messages, boolean done) {
|
||||
this.messages = messages;
|
||||
this.done = done;
|
||||
public Status(long messages, long estimatedMessages, double completionPercentage, boolean done) {
|
||||
this.messages = messages;
|
||||
this.estimatedMessages = estimatedMessages;
|
||||
this.completionPercentage = completionPercentage;
|
||||
this.done = done;
|
||||
}
|
||||
|
||||
public long getMessageCount() {
|
||||
return messages;
|
||||
}
|
||||
|
||||
public long getEstimatedMessageCount() {
|
||||
return estimatedMessages;
|
||||
}
|
||||
|
||||
public double getCompletionPercentage() {
|
||||
return completionPercentage;
|
||||
}
|
||||
|
||||
public boolean isDone() {
|
||||
return done;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,9 @@ import org.signal.devicetransfer.TransferStatus;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.devicetransfer.DeviceTransferFragment;
|
||||
|
||||
import java.text.NumberFormat;
|
||||
import java.util.Locale;
|
||||
|
||||
/**
|
||||
* Shows transfer progress on the old device. Most logic is in {@link DeviceTransferFragment}
|
||||
* and it delegates to this class for strings, navigation, and updating progress.
|
||||
@@ -52,6 +55,14 @@ public final class OldDeviceTransferFragment extends DeviceTransferFragment {
|
||||
}
|
||||
|
||||
private class ClientTaskListener {
|
||||
private final NumberFormat formatter;
|
||||
|
||||
public ClientTaskListener() {
|
||||
formatter = NumberFormat.getInstance();
|
||||
formatter.setMinimumFractionDigits(1);
|
||||
formatter.setMaximumFractionDigits(1);
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
public void onEventMainThread(@NonNull OldDeviceClientTask.Status event) {
|
||||
if (event.isDone()) {
|
||||
@@ -61,7 +72,11 @@ public final class OldDeviceTransferFragment extends DeviceTransferFragment {
|
||||
DeviceToDeviceTransferService.stop(requireContext());
|
||||
NavHostFragment.findNavController(OldDeviceTransferFragment.this).navigate(R.id.action_oldDeviceTransfer_to_oldDeviceTransferComplete);
|
||||
} else {
|
||||
status.setText(getString(R.string.DeviceTransfer__d_messages_so_far, event.getMessageCount()));
|
||||
if (event.getEstimatedMessageCount() == 0) {
|
||||
status.setText(getString(R.string.DeviceTransfer__d_messages_so_far, event.getMessageCount()));
|
||||
} else {
|
||||
status.setText(getString(R.string.DeviceTransfer__s_of_messages_so_far, formatter.format(event.getCompletionPercentage())));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user