Skip to content

Commit e69ba5f

Browse files
Merge pull request #134 from DickSmith/master
Fix/improve error handling
2 parents b4170a2 + e72ce73 commit e69ba5f

File tree

4 files changed

+1516
-382
lines changed

4 files changed

+1516
-382
lines changed

src/background-http.android.ts

+56-35
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,54 @@
1-
import application = require("application");
1+
import * as application from "application";
22
import { Observable } from "data/observable";
33
import { ad } from "utils/utils";
44
import * as fileSystemModule from "file-system";
55
import * as common from "./index";
66

7-
declare const net: any;
8-
interface UploadInfo {
9-
getUploadId(): string;
10-
getTotalBytes(): number;
11-
getUploadedBytes(): number;
12-
}
13-
14-
interface ServerResponse {
15-
getBodyAsString(): string;
16-
}
7+
type Context = android.content.Context;
8+
type ServerResponse = net.gotev.uploadservice.ServerResponse;
9+
type UploadInfo = net.gotev.uploadservice.UploadInfo;
10+
type UploadServiceBroadcastReceiver = net.gotev.uploadservice.UploadServiceBroadcastReceiver;
1711

1812
/* A snapshot-friendly, lazy-loaded class for ProgressReceiver BEGIN */
1913
let ProgressReceiver: any;
2014

21-
function onProgressReceiverProgress(context: any, uploadInfo: UploadInfo) {
15+
function onProgressReceiverProgress(context: Context, uploadInfo: UploadInfo) {
2216
const uploadId = uploadInfo.getUploadId();
2317
const task = Task.fromId(uploadId);
2418
const totalBytes = uploadInfo.getTotalBytes();
2519
const currentBytes = uploadInfo.getUploadedBytes();
2620
task.setTotalUpload(totalBytes);
2721
task.setUpload(currentBytes);
2822
task.setStatus("uploading");
29-
task.notify({ eventName: "progress", object: task, currentBytes: currentBytes, totalBytes: totalBytes });
23+
task.notify(<common.ProgressEventData>{
24+
eventName: "progress",
25+
object: task,
26+
currentBytes: currentBytes,
27+
totalBytes: totalBytes
28+
});
3029
}
3130

32-
function onProgressReceiverCancelled(context: any, uploadInfo: UploadInfo) {
31+
function onProgressReceiverCancelled(context: Context, uploadInfo: UploadInfo) {
3332
const uploadId = uploadInfo.getUploadId();
3433
const task = Task.fromId(uploadId);
3534
task.setStatus("cancelled");
3635
task.notify({ eventName: "cancelled", object: task });
3736
}
3837

39-
function onProgressReceiverError(context: any, uploadInfo: UploadInfo, error) {
38+
function onProgressReceiverError(context: Context, uploadInfo: UploadInfo, response: ServerResponse, error: java.lang.Exception) {
4039
const uploadId = uploadInfo.getUploadId();
4140
const task = Task.fromId(uploadId);
4241
task.setStatus("error");
43-
task.notify({ eventName: "error", object: task, error: error });
42+
task.notify(<common.ErrorEventData>{
43+
eventName: "error",
44+
object: task,
45+
error,
46+
responseCode: response && typeof response.getHttpCode === 'function' ? response.getHttpCode() : -1,
47+
response
48+
});
4449
}
4550

46-
function onProgressReceiverCompleted(context: any, uploadInfo: UploadInfo, serverResponse: ServerResponse) {
51+
function onProgressReceiverCompleted(context: Context, uploadInfo: UploadInfo, response: ServerResponse) {
4752
const uploadId = uploadInfo.getUploadId();
4853
const task = Task.fromId(uploadId);
4954

@@ -55,9 +60,23 @@ function onProgressReceiverCompleted(context: any, uploadInfo: UploadInfo, serve
5560
task.setTotalUpload(totalUpload);
5661
task.setStatus("complete");
5762

58-
task.notify({ eventName: "progress", object: task, currentBytes: totalUpload, totalBytes: totalUpload });
59-
task.notify({ eventName: "responded", object: task, data: serverResponse.getBodyAsString() });
60-
task.notify({ eventName: "complete", object: task, response: serverResponse });
63+
task.notify(<common.ProgressEventData>{
64+
eventName: "progress",
65+
object: task,
66+
currentBytes: totalUpload,
67+
totalBytes: totalUpload
68+
});
69+
task.notify(<common.ResultEventData>{
70+
eventName: "responded",
71+
object: task,
72+
data: response.getBodyAsString(),
73+
responseCode: response && typeof response.getHttpCode === 'function' ? response.getHttpCode() : -1
74+
});
75+
task.notify(<common.CompleteEventData>{
76+
eventName: "complete",
77+
object: task,
78+
responseCode: response && typeof response.getHttpCode === 'function' ? response.getHttpCode() : -1
79+
});
6180
}
6281

6382
function initializeProgressReceiver() {
@@ -70,23 +89,25 @@ function initializeProgressReceiver() {
7089
const zonedOnError = global.zonedCallback(onProgressReceiverError);
7190
const zonedOnCompleted = global.zonedCallback(onProgressReceiverCompleted);
7291

73-
const ProgressReceiverImpl = net.gotev.uploadservice.UploadServiceBroadcastReceiver.extend({
74-
onProgress(context: any, uploadInfo: UploadInfo) {
75-
zonedOnProgress(context, uploadInfo);
76-
},
92+
const temp: Partial<UploadServiceBroadcastReceiver> = {
93+
onProgress(context: Context, uploadInfo: UploadInfo) {
94+
zonedOnProgress(context, uploadInfo);
95+
},
7796

78-
onCancelled(context: any, uploadInfo: UploadInfo) {
79-
zonedOnCancelled(context, uploadInfo);
80-
},
97+
onCancelled(context: Context, uploadInfo: UploadInfo) {
98+
zonedOnCancelled(context, uploadInfo);
99+
},
81100

82-
onError(context: any, uploadInfo: UploadInfo, error) {
83-
zonedOnError(context, uploadInfo);
84-
},
101+
onError(context: Context, uploadInfo: UploadInfo, response: ServerResponse, error: java.lang.Exception) {
102+
zonedOnError(context, uploadInfo, response, error);
103+
},
85104

86-
onCompleted(context: any, uploadInfo: UploadInfo, serverResponse: ServerResponse) {
87-
zonedOnCompleted(context, uploadInfo, serverResponse);
88-
}
89-
});
105+
onCompleted(context: Context, uploadInfo: UploadInfo, serverResponse: ServerResponse) {
106+
zonedOnCompleted(context, uploadInfo, serverResponse);
107+
}
108+
};
109+
110+
const ProgressReceiverImpl = (<any>net.gotev.uploadservice.UploadServiceBroadcastReceiver).extend(temp);
90111

91112
ProgressReceiver = ProgressReceiverImpl as any;
92113
}
@@ -309,4 +330,4 @@ class Task extends ObservableBase {
309330
cancel(): void {
310331
(<any>net).gotev.uploadservice.UploadService.stopUpload(this._id);
311332
}
312-
}
333+
}

0 commit comments

Comments
 (0)