Skip to content

Commit 50e40f8

Browse files
refactor android upload duration logic
1 parent c8cb416 commit 50e40f8

3 files changed

Lines changed: 22 additions & 18 deletions

File tree

src/android/FileTransferBackground.java

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,8 @@ private void initManager(String options, final CallbackContext callbackContext)
201201

202202
int ackDelay = 0;
203203
for (UploadEvent ack : uploadEvents) {
204-
long startUploadTime = ack.getOutputData().getLong("output_upload_start_time", 0);
205-
long endUploadTime = ack.getOutputData().getLong("output_upload_end_time", 0);
206-
long uploadDuration = endUploadTime - startUploadTime;
207204
executorService.schedule(() -> {
208-
handleAck(ack.getOutputData(), uploadDuration, endUploadTime);
205+
handleAck(ack.getOutputData());
209206
}, ackDelay, TimeUnit.MILLISECONDS);
210207
ackDelay += 200;
211208
}
@@ -239,10 +236,7 @@ private void initManager(String options, final CallbackContext callbackContext)
239236
// The corresponding ACK is already in the DB, if it not, the task is just a leftover
240237
String id = info.getOutputData().getString(UploadTask.KEY_OUTPUT_ID);
241238
if (ackDatabase.uploadEventDao().exists(id)) {
242-
long startUploadTime = info.getOutputData().getLong("output_upload_start_time", 0);
243-
long endUploadTime = info.getOutputData().getLong("output_upload_end_time", 0);
244-
long uploadDuration = endUploadTime - startUploadTime;
245-
handleAck(info.getOutputData(), uploadDuration, endUploadTime);
239+
handleAck(info.getOutputData());
246240
}
247241
}, 0, TimeUnit.MILLISECONDS);
248242
break;
@@ -415,7 +409,7 @@ private void acknowledgeEvent(String eventId, CallbackContext context) {
415409
/**
416410
* Handle ACK data and send it to the JS.
417411
*/
418-
private void handleAck(final Data ackData, final long uploadDuration, final long finishUploadTime) {
412+
private void handleAck(final Data ackData) {
419413
// If upload was successful
420414
if (!ackData.getBoolean(UploadTask.KEY_OUTPUT_IS_ERROR, false)) {
421415
// Read response from file if present
@@ -424,12 +418,22 @@ private void handleAck(final Data ackData, final long uploadDuration, final long
424418
response = readFileToStringNoThrow(ackData.getString(UploadTask.KEY_OUTPUT_RESPONSE_FILE));
425419
}
426420

421+
long startUploadTime = ackData.getLong("output_upload_start_time", 0);
422+
long finishUploadTime = ackData.getLong("output_upload_finish_time", 0);
423+
long uploadDuration = finishUploadTime - startUploadTime;
424+
427425
HashMap<String, Object> uploadData = new HashMap<>();
428-
uploadData.put("outputId", ackData.getString(UploadTask.KEY_OUTPUT_ID));
429-
uploadData.put("response", response);
430-
uploadData.put("statusCode", ackData.getInt(UploadTask.KEY_OUTPUT_STATUS_CODE, -1));
431-
uploadData.put("uploadDuration", uploadDuration);
432-
uploadData.put("finishUploadTime", finishUploadTime);
426+
if (uploadDuration <= 0) {
427+
uploadData.put("outputId", ackData.getString(UploadTask.KEY_OUTPUT_ID));
428+
uploadData.put("response", response);
429+
uploadData.put("statusCode", ackData.getInt(UploadTask.KEY_OUTPUT_STATUS_CODE, -1));
430+
} else {
431+
uploadData.put("outputId", ackData.getString(UploadTask.KEY_OUTPUT_ID));
432+
uploadData.put("response", response);
433+
uploadData.put("statusCode", ackData.getInt(UploadTask.KEY_OUTPUT_STATUS_CODE, -1));
434+
uploadData.put("uploadDuration", uploadDuration);
435+
uploadData.put("finishUploadTime", finishUploadTime);
436+
}
433437

434438
sendSuccess(uploadData);
435439
} else {

src/android/UploadEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public class UploadEvent {
1616
@NonNull
1717
private Data outputData;
1818

19-
public UploadEvent(@NonNull final String id, @NonNull final Data outputData ) {
19+
public UploadEvent(@NonNull final String id, @NonNull final Data outputData) {
2020
this.id = id;
2121
this.outputData = outputData;
2222
}

src/android/UploadTask.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public final class UploadTask extends Worker {
8080
public static final String KEY_OUTPUT_FAILURE_REASON = "output_failure_reason";
8181
public static final String KEY_OUTPUT_FAILURE_CANCELED = "output_failure_canceled";
8282
public static final String KEY_OUTPUT_UPLOAD_START_TIME = "output_upload_start_time";
83-
public static final String KEY_OUTPUT_UPLOAD_END_TIME = "output_upload_end_time";
83+
public static final String KEY_OUTPUT_UPLOAD_FINISH_TIME = "output_upload_finish_time";
8484
// </editor-fold>
8585

8686
private static UploadNotification uploadNotification = null;
@@ -242,7 +242,7 @@ public Result doWork() {
242242
.putString(KEY_OUTPUT_FAILURE_REASON, "User cancelled")
243243
.putBoolean(KEY_OUTPUT_FAILURE_CANCELED, true)
244244
.putLong(KEY_OUTPUT_UPLOAD_START_TIME, startTime)
245-
.putLong(KEY_OUTPUT_UPLOAD_END_TIME, endTime)
245+
.putLong(KEY_OUTPUT_UPLOAD_FINISH_TIME, endTime)
246246
.build();
247247
AckDatabase.getInstance(getApplicationContext()).uploadEventDao().insert(new UploadEvent(id, data));
248248
return Result.success(data);
@@ -264,7 +264,7 @@ public Result doWork() {
264264
.putBoolean(KEY_OUTPUT_IS_ERROR, false)
265265
.putInt(KEY_OUTPUT_STATUS_CODE, (!DEBUG_SKIP_UPLOAD) ? response.code() : 200)
266266
.putLong(KEY_OUTPUT_UPLOAD_START_TIME, startTime)
267-
.putLong(KEY_OUTPUT_UPLOAD_END_TIME, endTime);
267+
.putLong(KEY_OUTPUT_UPLOAD_FINISH_TIME, endTime);
268268

269269
// Try read the response body, if any
270270
try {

0 commit comments

Comments
 (0)