@os1-platform/dispatch-mobile 2.1.8 → 2.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/analytics/sentry/SentryAnalyticsSingleton.js +0 -2
- package/lib/commonjs/analytics/sentry/SentryAnalyticsSingleton.js.map +1 -1
- package/lib/commonjs/analytics/sentry/SentryAnalyticsUtils.js +0 -6
- package/lib/commonjs/analytics/sentry/SentryAnalyticsUtils.js.map +1 -1
- package/lib/commonjs/analytics/sentry/SentrySdkConstants.js +2 -0
- package/lib/commonjs/analytics/sentry/SentrySdkConstants.js.map +1 -1
- package/lib/commonjs/components/executiontasks/imageCapture/ImageCapture.js +1 -1
- package/lib/commonjs/components/executiontasks/imageCapture/ImageCapture.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/manager/sdk/DispatchSDKManager.js +5 -4
- package/lib/commonjs/manager/sdk/DispatchSDKManager.js.map +1 -1
- package/lib/commonjs/manager/sdk/callbacksHandler.js +28 -1
- package/lib/commonjs/manager/sdk/callbacksHandler.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/AppSyncManager.js +7 -5
- package/lib/commonjs/manager/syncmanager/AppSyncManager.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/DBConfig.js +3 -1
- package/lib/commonjs/manager/syncmanager/DBConfig.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/constants.js +4 -1
- package/lib/commonjs/manager/syncmanager/constants.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/document/DocumentHttpClient.js +37 -20
- package/lib/commonjs/manager/syncmanager/document/DocumentHttpClient.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/document/DocumentManager.js +26 -4
- package/lib/commonjs/manager/syncmanager/document/DocumentManager.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/document/DocumentSyncManager.js +276 -20
- package/lib/commonjs/manager/syncmanager/document/DocumentSyncManager.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/events/ETEventsManager.js +41 -13
- package/lib/commonjs/manager/syncmanager/events/ETEventsManager.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/events/EventsSyncManager.js +116 -59
- package/lib/commonjs/manager/syncmanager/events/EventsSyncManager.js.map +1 -1
- package/lib/commonjs/manager/syncmanager/events/SyncHttpClient.js +17 -0
- package/lib/commonjs/manager/syncmanager/events/SyncHttpClient.js.map +1 -1
- package/lib/commonjs/models/auth.js.map +1 -1
- package/lib/commonjs/models/sdk.js.map +1 -1
- package/lib/commonjs/network/NetworkClient.js +12 -2
- package/lib/commonjs/network/NetworkClient.js.map +1 -1
- package/lib/commonjs/network/NetworkUtils.js +14 -7
- package/lib/commonjs/network/NetworkUtils.js.map +1 -1
- package/lib/commonjs/network/client.js +1 -1
- package/lib/commonjs/network/client.js.map +1 -1
- package/lib/commonjs/ui/screens/DeliverScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FormsScreen.js.map +1 -1
- package/lib/commonjs/utils/SyncManagerUtils.js +29 -2
- package/lib/commonjs/utils/SyncManagerUtils.js.map +1 -1
- package/lib/commonjs/utils/storage.js +21 -5
- package/lib/commonjs/utils/storage.js.map +1 -1
- package/lib/commonjs/utils/utils.js +0 -9
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/module/analytics/sentry/SentryAnalyticsSingleton.js +0 -2
- package/lib/module/analytics/sentry/SentryAnalyticsSingleton.js.map +1 -1
- package/lib/module/analytics/sentry/SentryAnalyticsUtils.js +0 -6
- package/lib/module/analytics/sentry/SentryAnalyticsUtils.js.map +1 -1
- package/lib/module/analytics/sentry/SentrySdkConstants.js +2 -0
- package/lib/module/analytics/sentry/SentrySdkConstants.js.map +1 -1
- package/lib/module/components/executiontasks/imageCapture/ImageCapture.js +1 -1
- package/lib/module/components/executiontasks/imageCapture/ImageCapture.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/manager/sdk/DispatchSDKManager.js +5 -4
- package/lib/module/manager/sdk/DispatchSDKManager.js.map +1 -1
- package/lib/module/manager/sdk/callbacksHandler.js +27 -1
- package/lib/module/manager/sdk/callbacksHandler.js.map +1 -1
- package/lib/module/manager/syncmanager/AppSyncManager.js +7 -5
- package/lib/module/manager/syncmanager/AppSyncManager.js.map +1 -1
- package/lib/module/manager/syncmanager/DBConfig.js +3 -1
- package/lib/module/manager/syncmanager/DBConfig.js.map +1 -1
- package/lib/module/manager/syncmanager/constants.js +3 -0
- package/lib/module/manager/syncmanager/constants.js.map +1 -1
- package/lib/module/manager/syncmanager/document/DocumentHttpClient.js +38 -21
- package/lib/module/manager/syncmanager/document/DocumentHttpClient.js.map +1 -1
- package/lib/module/manager/syncmanager/document/DocumentManager.js +26 -4
- package/lib/module/manager/syncmanager/document/DocumentManager.js.map +1 -1
- package/lib/module/manager/syncmanager/document/DocumentSyncManager.js +276 -20
- package/lib/module/manager/syncmanager/document/DocumentSyncManager.js.map +1 -1
- package/lib/module/manager/syncmanager/events/ETEventsManager.js +42 -14
- package/lib/module/manager/syncmanager/events/ETEventsManager.js.map +1 -1
- package/lib/module/manager/syncmanager/events/EventsSyncManager.js +119 -61
- package/lib/module/manager/syncmanager/events/EventsSyncManager.js.map +1 -1
- package/lib/module/manager/syncmanager/events/SyncHttpClient.js +15 -0
- package/lib/module/manager/syncmanager/events/SyncHttpClient.js.map +1 -1
- package/lib/module/models/auth.js.map +1 -1
- package/lib/module/models/sdk.js.map +1 -1
- package/lib/module/network/NetworkClient.js +12 -2
- package/lib/module/network/NetworkClient.js.map +1 -1
- package/lib/module/network/NetworkUtils.js +14 -7
- package/lib/module/network/NetworkUtils.js.map +1 -1
- package/lib/module/network/client.js +1 -1
- package/lib/module/network/client.js.map +1 -1
- package/lib/module/ui/screens/DeliverScreen.js.map +1 -1
- package/lib/module/ui/screens/FormsScreen.js.map +1 -1
- package/lib/module/utils/SyncManagerUtils.js +30 -3
- package/lib/module/utils/SyncManagerUtils.js.map +1 -1
- package/lib/module/utils/storage.js +21 -5
- package/lib/module/utils/storage.js.map +1 -1
- package/lib/module/utils/utils.js +0 -9
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/typescript/analytics/sentry/SentrySdkConstants.d.ts +2 -0
- package/lib/typescript/manager/sdk/callbacksHandler.d.ts +3 -1
- package/lib/typescript/manager/syncmanager/DBConfig.d.ts +4 -0
- package/lib/typescript/manager/syncmanager/constants.d.ts +3 -0
- package/lib/typescript/manager/syncmanager/document/DocumentManager.d.ts +2 -0
- package/lib/typescript/manager/syncmanager/document/DocumentSyncManager.d.ts +2 -1
- package/lib/typescript/manager/syncmanager/events/ETEventsManager.d.ts +2 -0
- package/lib/typescript/manager/syncmanager/events/EventsSyncManager.d.ts +1 -1
- package/lib/typescript/models/sdk.d.ts +1 -0
- package/lib/typescript/utils/storage.d.ts +3 -3
- package/package.json +5 -5
- package/src/analytics/sentry/SentryAnalyticsSingleton.ts +7 -9
- package/src/analytics/sentry/SentryAnalyticsUtils.ts +24 -36
- package/src/analytics/sentry/SentrySdkConstants.ts +2 -0
- package/src/components/executiontasks/imageCapture/ImageCapture.tsx +1 -3
- package/src/index.tsx +1 -1
- package/src/manager/sdk/DispatchSDKManager.ts +8 -3
- package/src/manager/sdk/callbacksHandler.ts +39 -2
- package/src/manager/syncmanager/AppSyncManager.ts +15 -13
- package/src/manager/syncmanager/DBConfig.ts +4 -0
- package/src/manager/syncmanager/constants.ts +3 -0
- package/src/manager/syncmanager/document/DocumentHttpClient.ts +54 -24
- package/src/manager/syncmanager/document/DocumentManager.ts +48 -7
- package/src/manager/syncmanager/document/DocumentSyncManager.ts +351 -30
- package/src/manager/syncmanager/events/ETEventsManager.ts +50 -16
- package/src/manager/syncmanager/events/EventsSyncManager.ts +157 -74
- package/src/manager/syncmanager/events/SyncHttpClient.ts +30 -1
- package/src/models/auth.ts +1 -0
- package/src/models/sdk.ts +1 -0
- package/src/network/NetworkClient.ts +18 -2
- package/src/network/NetworkUtils.ts +9 -1
- package/src/network/client.ts +1 -1
- package/src/ui/screens/DeliverScreen.tsx +6 -5
- package/src/ui/screens/FormsScreen.tsx +8 -6
- package/src/utils/SyncManagerUtils.ts +41 -6
- package/src/utils/storage.ts +21 -8
- package/src/utils/utils.ts +0 -8
|
@@ -11,6 +11,9 @@ import BaseErrorCodes, {
|
|
|
11
11
|
import Logger, { LOG_TYPE } from '../../../utils/Logger';
|
|
12
12
|
import type { SQLResultSet } from 'expo-sqlite';
|
|
13
13
|
import NetworkUtil from '../../../utils/NetworkUtil';
|
|
14
|
+
import ETEventsManager from '../events/ETEventsManager';
|
|
15
|
+
import { LAST_SYNCED_EVENT_ID, MAX_RETRY_COUNT, POD_DOC } from '../../syncmanager/constants';
|
|
16
|
+
import EventsSyncManager from '../events/EventsSyncManager';
|
|
14
17
|
import Marker, {
|
|
15
18
|
Position,
|
|
16
19
|
TextBackgroundType,
|
|
@@ -29,9 +32,8 @@ export default class DocumentSyncManager {
|
|
|
29
32
|
private inProgress: boolean = false;
|
|
30
33
|
private static instance: DocumentSyncManager;
|
|
31
34
|
private docManager: DocumentManager | undefined;
|
|
32
|
-
private maxRetryCount: number =
|
|
35
|
+
private maxRetryCount: number = MAX_RETRY_COUNT;
|
|
33
36
|
private _retries = 0;
|
|
34
|
-
|
|
35
37
|
get retries(): number {
|
|
36
38
|
return this._retries;
|
|
37
39
|
}
|
|
@@ -71,31 +73,97 @@ export default class DocumentSyncManager {
|
|
|
71
73
|
if (documentRows?.length > 0) {
|
|
72
74
|
await this.uploadDocToServer(documentRows[0]);
|
|
73
75
|
} else {
|
|
76
|
+
let cta = 'startDocumentSync-NoData'
|
|
77
|
+
fireEventWithScreenName({
|
|
78
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
79
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
80
|
+
screenName: cta,
|
|
81
|
+
cta: cta,
|
|
82
|
+
extraParams: {
|
|
83
|
+
msg:'No data to sync'
|
|
84
|
+
},
|
|
85
|
+
});
|
|
74
86
|
Logger.getInstance().logEvent(
|
|
75
|
-
|
|
87
|
+
cta,
|
|
76
88
|
'No data to sync',
|
|
77
|
-
LOG_TYPE.
|
|
89
|
+
LOG_TYPE.SDK_ERROR
|
|
78
90
|
);
|
|
79
91
|
}
|
|
80
92
|
} else {
|
|
93
|
+
let cta = 'startDocumentSync-NoNetwork'
|
|
94
|
+
fireEventWithScreenName({
|
|
95
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
96
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
97
|
+
screenName: cta,
|
|
98
|
+
cta: cta,
|
|
99
|
+
extraParams: {
|
|
100
|
+
msg:'No Network'
|
|
101
|
+
},
|
|
102
|
+
});
|
|
81
103
|
Logger.getInstance().logEvent(
|
|
82
|
-
|
|
104
|
+
cta,
|
|
83
105
|
'No Network',
|
|
84
|
-
LOG_TYPE.
|
|
106
|
+
LOG_TYPE.SDK_ERROR
|
|
85
107
|
);
|
|
86
108
|
}
|
|
87
109
|
} catch (error: any) {
|
|
110
|
+
let cta = 'startDocumentSync-error'
|
|
111
|
+
fireEventWithScreenName({
|
|
112
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
113
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
114
|
+
screenName: cta,
|
|
115
|
+
cta: cta,
|
|
116
|
+
extraParams: {
|
|
117
|
+
msg:flattenObject(error)
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
Logger.getInstance().logEvent(
|
|
121
|
+
cta,
|
|
122
|
+
flattenObject(error),
|
|
123
|
+
LOG_TYPE.SDK_ERROR
|
|
124
|
+
);
|
|
88
125
|
} finally {
|
|
89
126
|
this.inProgress = false;
|
|
90
|
-
|
|
127
|
+
let syncPending = await this.isSyncPending();
|
|
128
|
+
if (syncPending && hasNetwork) {
|
|
91
129
|
await this.startDocumentSync();
|
|
130
|
+
}else{
|
|
131
|
+
let cta = 'startDocumentSync-error'
|
|
132
|
+
let extraParameters = {
|
|
133
|
+
hasNetwork: hasNetwork,
|
|
134
|
+
pending: syncPending,
|
|
135
|
+
};
|
|
136
|
+
fireEventWithScreenName({
|
|
137
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
138
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
139
|
+
screenName: cta,
|
|
140
|
+
cta: cta,
|
|
141
|
+
extraParams: {
|
|
142
|
+
msg:flattenObject(extraParameters)
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
Logger.getInstance().logEvent(
|
|
146
|
+
cta,
|
|
147
|
+
flattenObject(extraParameters),
|
|
148
|
+
LOG_TYPE.SDK_ERROR
|
|
149
|
+
);
|
|
92
150
|
}
|
|
93
151
|
}
|
|
94
152
|
} else {
|
|
153
|
+
let cta = 'startDocumentSync'
|
|
154
|
+
fireEventWithScreenName({
|
|
155
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
156
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
157
|
+
screenName: cta,
|
|
158
|
+
cta: cta,
|
|
159
|
+
extraParams: {
|
|
160
|
+
msg:'sync already in progress or max count reached'
|
|
161
|
+
},
|
|
162
|
+
});
|
|
95
163
|
Logger.getInstance().logEvent(
|
|
96
|
-
|
|
97
|
-
'sync already in progress ',
|
|
98
|
-
LOG_TYPE.
|
|
164
|
+
cta,
|
|
165
|
+
'sync already in progress or max count reached',
|
|
166
|
+
LOG_TYPE.SDK_ERROR
|
|
99
167
|
);
|
|
100
168
|
}
|
|
101
169
|
}
|
|
@@ -137,10 +205,20 @@ export default class DocumentSyncManager {
|
|
|
137
205
|
);
|
|
138
206
|
else {
|
|
139
207
|
if (!this.docManager) {
|
|
208
|
+
let cta = 'insertDocument'
|
|
209
|
+
fireEventWithScreenName({
|
|
210
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
211
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
212
|
+
screenName: cta,
|
|
213
|
+
cta: cta,
|
|
214
|
+
extraParams: {
|
|
215
|
+
msg:'INIT DOC SYNC AGAIN'
|
|
216
|
+
},
|
|
217
|
+
});
|
|
140
218
|
Logger.getInstance().logEvent(
|
|
141
|
-
|
|
219
|
+
cta,
|
|
142
220
|
'INIT DOC SYNC AGAIN',
|
|
143
|
-
LOG_TYPE.
|
|
221
|
+
LOG_TYPE.SDK_ERROR
|
|
144
222
|
);
|
|
145
223
|
this.docManager = await DocumentManager.getInstance();
|
|
146
224
|
}
|
|
@@ -170,14 +248,77 @@ export default class DocumentSyncManager {
|
|
|
170
248
|
await this.startDocumentSync();
|
|
171
249
|
}
|
|
172
250
|
|
|
173
|
-
private async updateDocument(documentRow: DocumentRow, fmsID: string) {
|
|
251
|
+
// private async updateDocument(documentRow: DocumentRow, fmsID: string) {
|
|
252
|
+
// if (!this.docManager) this.docManager = await DocumentManager.getInstance();
|
|
253
|
+
// try {
|
|
254
|
+
// await this.docManager.markDocumentSynced(documentRow.id, fmsID);
|
|
255
|
+
// let eventsManager = await ETEventsManager.getInstance();
|
|
256
|
+
// let podId = POD_DOC + '_' + documentRow.id;
|
|
257
|
+
// await eventsManager.markPODDocEventSynced(1, 1, podId);
|
|
258
|
+
// EventsSyncManager.getInstance().startSync();
|
|
259
|
+
// } catch (err: any) {
|
|
260
|
+
// Logger.getInstance().logEvent(
|
|
261
|
+
// 'updateDocument',
|
|
262
|
+
// err.message,
|
|
263
|
+
// LOG_TYPE.SDK_WARNING
|
|
264
|
+
// );
|
|
265
|
+
// }
|
|
266
|
+
// }
|
|
267
|
+
|
|
268
|
+
// This function will update document row with attempt count and sync status
|
|
269
|
+
private async updateDocumentWithAttempt(
|
|
270
|
+
documentRow: DocumentRow,
|
|
271
|
+
fmsID: string,
|
|
272
|
+
attempt: number,
|
|
273
|
+
sync: number
|
|
274
|
+
) {
|
|
174
275
|
if (!this.docManager) this.docManager = await DocumentManager.getInstance();
|
|
175
276
|
try {
|
|
176
|
-
|
|
277
|
+
// Calling document row update method for attempt count and sync.
|
|
278
|
+
await this.docManager.markDocumentSyncedWithAttempt(
|
|
279
|
+
documentRow.id,
|
|
280
|
+
fmsID,
|
|
281
|
+
attempt,
|
|
282
|
+
sync
|
|
283
|
+
);
|
|
284
|
+
let eventsManager = await ETEventsManager.getInstance();
|
|
285
|
+
let podId = POD_DOC + '_' + documentRow.id;
|
|
286
|
+
|
|
287
|
+
let extraParameters = {
|
|
288
|
+
podId: podId,
|
|
289
|
+
};
|
|
290
|
+
Logger.getInstance().logEvent(
|
|
291
|
+
'updateDocumentWithAttempt-success',
|
|
292
|
+
flattenObject(extraParameters),
|
|
293
|
+
LOG_TYPE.SDK_ERROR
|
|
294
|
+
);
|
|
295
|
+
// Calling update method for attempt count and sync to update event row of type POD_DOC
|
|
296
|
+
await eventsManager.markPODDocEventSynced(sync, attempt, podId);
|
|
297
|
+
if(sync == 1){
|
|
298
|
+
const lastSyncedEventId = await Storage.getInstance().getSharedItem(
|
|
299
|
+
LAST_SYNCED_EVENT_ID
|
|
300
|
+
);
|
|
301
|
+
const syncEventId = parseInt(lastSyncedEventId) + 1;
|
|
302
|
+
await Storage.getInstance().setSharedItem(
|
|
303
|
+
LAST_SYNCED_EVENT_ID,
|
|
304
|
+
`${syncEventId}`
|
|
305
|
+
);
|
|
306
|
+
}
|
|
307
|
+
EventsSyncManager.getInstance().startSync();
|
|
177
308
|
} catch (err: any) {
|
|
309
|
+
let cta = 'updateDocumentWithAttempt'
|
|
310
|
+
fireEventWithScreenName({
|
|
311
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
312
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
313
|
+
screenName: cta,
|
|
314
|
+
cta: cta,
|
|
315
|
+
extraParams: {
|
|
316
|
+
msg:flattenObject(err)
|
|
317
|
+
},
|
|
318
|
+
});
|
|
178
319
|
Logger.getInstance().logEvent(
|
|
179
|
-
|
|
180
|
-
err
|
|
320
|
+
cta,
|
|
321
|
+
flattenObject(err),
|
|
181
322
|
LOG_TYPE.SDK_WARNING
|
|
182
323
|
);
|
|
183
324
|
}
|
|
@@ -197,9 +338,19 @@ export default class DocumentSyncManager {
|
|
|
197
338
|
processedPath
|
|
198
339
|
);
|
|
199
340
|
} catch (err: any) {
|
|
341
|
+
let cta = 'updateDocument-updateDocumentProcessedPath'
|
|
342
|
+
fireEventWithScreenName({
|
|
343
|
+
severityLevel: SeverityLevelValue.ERROR,
|
|
344
|
+
eventName: SentryEventNameSdkConstants.APP_ERROR,
|
|
345
|
+
screenName: cta,
|
|
346
|
+
cta: cta,
|
|
347
|
+
extraParams: {
|
|
348
|
+
msg:flattenObject(err)
|
|
349
|
+
},
|
|
350
|
+
});
|
|
200
351
|
Logger.getInstance().logEvent(
|
|
201
|
-
|
|
202
|
-
err
|
|
352
|
+
cta,
|
|
353
|
+
flattenObject(err),
|
|
203
354
|
LOG_TYPE.SDK_WARNING
|
|
204
355
|
);
|
|
205
356
|
}
|
|
@@ -210,9 +361,19 @@ export default class DocumentSyncManager {
|
|
|
210
361
|
try {
|
|
211
362
|
await this.docManager.updateDocSyncError(documentRow.id, uploadError);
|
|
212
363
|
} catch (err: any) {
|
|
364
|
+
let cta = 'updateDocError'
|
|
365
|
+
fireEventWithScreenName({
|
|
366
|
+
severityLevel: SeverityLevelValue.ERROR,
|
|
367
|
+
eventName: SentryEventNameSdkConstants.APP_ERROR,
|
|
368
|
+
screenName: cta,
|
|
369
|
+
cta: cta,
|
|
370
|
+
extraParams: {
|
|
371
|
+
msg:flattenObject(err)
|
|
372
|
+
},
|
|
373
|
+
});
|
|
213
374
|
Logger.getInstance().logEvent(
|
|
214
|
-
|
|
215
|
-
err
|
|
375
|
+
cta,
|
|
376
|
+
flattenObject(err),
|
|
216
377
|
LOG_TYPE.SDK_WARNING
|
|
217
378
|
);
|
|
218
379
|
}
|
|
@@ -233,6 +394,25 @@ export default class DocumentSyncManager {
|
|
|
233
394
|
documentRow.processed_file_path === null ||
|
|
234
395
|
documentRow.processed_file_path === ''
|
|
235
396
|
) {
|
|
397
|
+
let cta = 'processImageData-started';
|
|
398
|
+
let extra = {
|
|
399
|
+
msg: 'processImageData-started',
|
|
400
|
+
fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4): '',
|
|
401
|
+
dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4): '',
|
|
402
|
+
dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9): ''
|
|
403
|
+
};
|
|
404
|
+
fireEventWithScreenName({
|
|
405
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
406
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
407
|
+
screenName: cta,
|
|
408
|
+
cta: cta,
|
|
409
|
+
extraParams: extra,
|
|
410
|
+
});
|
|
411
|
+
Logger.getInstance().logEvent(
|
|
412
|
+
cta,
|
|
413
|
+
flattenObject(extra),
|
|
414
|
+
LOG_TYPE.SDK_ERROR
|
|
415
|
+
);
|
|
236
416
|
let pFilePath = 'processed_' + documentRow.file_name; // File name for processed file.
|
|
237
417
|
let strGeoStamp = documentRow.geo_timestamp; // Saved geostamp string
|
|
238
418
|
let objGeoStamp = JSON.parse(strGeoStamp); // Conversion to geostamp object
|
|
@@ -293,6 +473,25 @@ export default class DocumentSyncManager {
|
|
|
293
473
|
documentRow.processed_file_path = completeFilePath;
|
|
294
474
|
}
|
|
295
475
|
}
|
|
476
|
+
let cta = 'processImageData-completed';
|
|
477
|
+
let extra = {
|
|
478
|
+
msg: 'processImageData-completed',
|
|
479
|
+
fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4): '',
|
|
480
|
+
dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4): '',
|
|
481
|
+
dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9): ''
|
|
482
|
+
};
|
|
483
|
+
fireEventWithScreenName({
|
|
484
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
485
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
486
|
+
screenName: cta,
|
|
487
|
+
cta: cta,
|
|
488
|
+
extraParams: extra,
|
|
489
|
+
});
|
|
490
|
+
Logger.getInstance().logEvent(
|
|
491
|
+
cta,
|
|
492
|
+
flattenObject(extra),
|
|
493
|
+
LOG_TYPE.SDK_ERROR
|
|
494
|
+
);
|
|
296
495
|
return documentRow;
|
|
297
496
|
}
|
|
298
497
|
|
|
@@ -303,6 +502,25 @@ export default class DocumentSyncManager {
|
|
|
303
502
|
documentRow.processed_file_path === null ||
|
|
304
503
|
documentRow.processed_file_path === ''
|
|
305
504
|
) {
|
|
505
|
+
let cta = 'processBase64Data-started';
|
|
506
|
+
let extra = {
|
|
507
|
+
msg: 'processBase64Data-started',
|
|
508
|
+
fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4): '',
|
|
509
|
+
dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4): '',
|
|
510
|
+
dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9): ''
|
|
511
|
+
};
|
|
512
|
+
fireEventWithScreenName({
|
|
513
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
514
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
515
|
+
screenName: cta,
|
|
516
|
+
cta: cta,
|
|
517
|
+
extraParams: extra,
|
|
518
|
+
});
|
|
519
|
+
Logger.getInstance().logEvent(
|
|
520
|
+
cta,
|
|
521
|
+
flattenObject(extra),
|
|
522
|
+
LOG_TYPE.SDK_ERROR
|
|
523
|
+
);
|
|
306
524
|
let filePath = '';
|
|
307
525
|
// If templrary base 64 file already exist then do not create again
|
|
308
526
|
if (documentRow.file_path === null || documentRow.file_path === '') {
|
|
@@ -372,6 +590,25 @@ export default class DocumentSyncManager {
|
|
|
372
590
|
documentRow.processed_file_path = splittedDase64Data[1];
|
|
373
591
|
}
|
|
374
592
|
}
|
|
593
|
+
let cta = 'processBase64Data-completed';
|
|
594
|
+
let extra = {
|
|
595
|
+
msg: 'processBase64Data-completed',
|
|
596
|
+
fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4): '',
|
|
597
|
+
dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4): '',
|
|
598
|
+
dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9): ''
|
|
599
|
+
};
|
|
600
|
+
fireEventWithScreenName({
|
|
601
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
602
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
603
|
+
screenName: cta,
|
|
604
|
+
cta: cta,
|
|
605
|
+
extraParams: extra,
|
|
606
|
+
});
|
|
607
|
+
Logger.getInstance().logEvent(
|
|
608
|
+
cta,
|
|
609
|
+
flattenObject(extra),
|
|
610
|
+
LOG_TYPE.SDK_ERROR
|
|
611
|
+
);
|
|
375
612
|
return documentRow;
|
|
376
613
|
}
|
|
377
614
|
|
|
@@ -386,29 +623,84 @@ export default class DocumentSyncManager {
|
|
|
386
623
|
|
|
387
624
|
private async uploadDocToServer(documentRow: DocumentRow) {
|
|
388
625
|
try {
|
|
389
|
-
let docRow =
|
|
626
|
+
let docRow = documentRow;
|
|
627
|
+
let cta = 'uploadDocToServer-geoStamp';
|
|
628
|
+
let geoStampAvailable = false
|
|
629
|
+
if(documentRow.geo_timestamp && documentRow.geo_timestamp.length != 0){
|
|
630
|
+
geoStampAvailable = true;
|
|
631
|
+
docRow = await this.processPODData(documentRow);
|
|
632
|
+
}
|
|
633
|
+
let extra = {
|
|
634
|
+
msg: geoStampAvailable ? "geoStamp availale" : 'geoStamp not availale',
|
|
635
|
+
fName: docRow.file_name && docRow.file_name.length != 0 ? docRow.file_name.substring(4): '',
|
|
636
|
+
dName: docRow.fms_folder_id && docRow.fms_folder_id.length != 0 ? docRow.fms_folder_id.substring(4): '',
|
|
637
|
+
dispId: docRow.dispatch_id && docRow.dispatch_id.length != 0 ? docRow.dispatch_id.substring(9): ''
|
|
638
|
+
};
|
|
639
|
+
fireEventWithScreenName({
|
|
640
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
641
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
642
|
+
screenName: cta,
|
|
643
|
+
cta: cta,
|
|
644
|
+
extraParams: extra,
|
|
645
|
+
});
|
|
646
|
+
Logger.getInstance().logEvent(
|
|
647
|
+
cta,
|
|
648
|
+
flattenObject(extra),
|
|
649
|
+
LOG_TYPE.SDK_ERROR
|
|
650
|
+
);
|
|
390
651
|
console.log('uploadDocToServer999:', docRow);
|
|
391
|
-
let fmsID = await this.documentHttpClient?.uploadDocument(
|
|
652
|
+
let fmsID = await this.documentHttpClient?.uploadDocument(docRow);
|
|
392
653
|
|
|
393
654
|
let extraParameters = {
|
|
394
655
|
fmsID: fmsID ?? '',
|
|
395
|
-
|
|
396
|
-
|
|
656
|
+
fName: docRow.file_name && docRow.file_name.length != 0 ? docRow.file_name.substring(4): '',
|
|
657
|
+
dName: docRow.fms_folder_id && docRow.fms_folder_id.length != 0 ? docRow.fms_folder_id.substring(4): '',
|
|
658
|
+
dispId: docRow.dispatch_id && docRow.dispatch_id.length != 0 ? docRow.dispatch_id.substring(9): ''
|
|
397
659
|
};
|
|
398
660
|
// TODO: SOLELY DEPENDS ON FMS_ID WHICH IS WRONG => IT SHOULD BE Response.status = 202
|
|
399
661
|
if (fmsID) {
|
|
662
|
+
// Calling function updating document row along with attempt count and sync as true.
|
|
663
|
+
await this.updateDocumentWithAttempt(
|
|
664
|
+
documentRow,
|
|
665
|
+
fmsID,
|
|
666
|
+
this._retries + 1,
|
|
667
|
+
1
|
|
668
|
+
);
|
|
400
669
|
this._retries = 0;
|
|
401
|
-
|
|
670
|
+
// await this.updateDocument(docRow, fmsID);
|
|
402
671
|
} else {
|
|
672
|
+
// Calling function updating document row withalong attempt count and sync as false.
|
|
673
|
+
await this.updateDocumentWithAttempt(
|
|
674
|
+
documentRow,
|
|
675
|
+
'',
|
|
676
|
+
this._retries + 1,
|
|
677
|
+
0
|
|
678
|
+
);
|
|
403
679
|
this._retries++;
|
|
680
|
+
let cta = 'uploadDocToServer-empty-fms-id'
|
|
681
|
+
fireEventWithScreenName({
|
|
682
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
683
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
684
|
+
screenName: cta,
|
|
685
|
+
cta: cta,
|
|
686
|
+
extraParams: extraParameters,
|
|
687
|
+
});
|
|
404
688
|
Logger.getInstance().logEvent(
|
|
405
|
-
|
|
689
|
+
cta,
|
|
406
690
|
flattenObject(extraParameters),
|
|
407
691
|
LOG_TYPE.SDK_ERROR
|
|
408
692
|
);
|
|
693
|
+
this.startSyncAfterMaxRetry(extraParameters, null);
|
|
409
694
|
await this.updateDocError(docRow, 'Unexpected Error');
|
|
410
695
|
}
|
|
411
696
|
} catch (error: any) {
|
|
697
|
+
// Calling function updating document row withalong attempt count and sync as false.
|
|
698
|
+
await this.updateDocumentWithAttempt(
|
|
699
|
+
documentRow,
|
|
700
|
+
'',
|
|
701
|
+
this._retries + 1,
|
|
702
|
+
0
|
|
703
|
+
);
|
|
412
704
|
const cta = 'uploadDocToServer-error';
|
|
413
705
|
fireEventWithScreenName({
|
|
414
706
|
severityLevel: SeverityLevelValue.ERROR,
|
|
@@ -416,15 +708,16 @@ export default class DocumentSyncManager {
|
|
|
416
708
|
screenName: cta,
|
|
417
709
|
cta: cta,
|
|
418
710
|
extraParams: {
|
|
419
|
-
error: error
|
|
711
|
+
error: flattenObject(error),
|
|
420
712
|
},
|
|
421
713
|
});
|
|
422
|
-
this._retries++;
|
|
423
714
|
Logger.getInstance().logEvent(
|
|
424
|
-
|
|
425
|
-
error
|
|
715
|
+
cta,
|
|
716
|
+
flattenObject(error),
|
|
426
717
|
LOG_TYPE.SDK_ERROR
|
|
427
718
|
);
|
|
719
|
+
this._retries++;
|
|
720
|
+
this.startSyncAfterMaxRetry(null, error);
|
|
428
721
|
await this.updateDocError(
|
|
429
722
|
documentRow,
|
|
430
723
|
JSON.stringify({
|
|
@@ -436,6 +729,34 @@ export default class DocumentSyncManager {
|
|
|
436
729
|
}
|
|
437
730
|
}
|
|
438
731
|
|
|
732
|
+
private async startSyncAfterMaxRetry(extraParameters:any, error:any){
|
|
733
|
+
if(this.retries >= this.maxRetryCount){
|
|
734
|
+
let cta = 'startSyncAfterMaxRetry-max-retry-reached'
|
|
735
|
+
fireEventWithScreenName({
|
|
736
|
+
severityLevel: SeverityLevelValue.LOG,
|
|
737
|
+
eventName: SentryEventNameSdkConstants.APP_LOG,
|
|
738
|
+
screenName: cta,
|
|
739
|
+
cta: cta,
|
|
740
|
+
extraParams: extraParameters ? extraParameters : error,
|
|
741
|
+
});
|
|
742
|
+
Logger.getInstance().logEvent(
|
|
743
|
+
cta,
|
|
744
|
+
extraParameters ? flattenObject(extraParameters) : error,
|
|
745
|
+
LOG_TYPE.SDK_ERROR
|
|
746
|
+
);
|
|
747
|
+
if (!this.docManager) {
|
|
748
|
+
this.docManager = await DocumentManager.getInstance();
|
|
749
|
+
}
|
|
750
|
+
let documentRows: DocumentRow[] =
|
|
751
|
+
await this.docManager.getUnsyncedDocument();
|
|
752
|
+
if (documentRows?.length > 0) {
|
|
753
|
+
await this.docManager.updateDocPriority(documentRows[0].id, documentRows[0].priority + 1);
|
|
754
|
+
this._retries = 0;
|
|
755
|
+
this.startDocumentSync();
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
|
|
439
760
|
public async getAllDocuments(dispatchID?: string): Promise<DocumentRow[]> {
|
|
440
761
|
if (!this.docManager) this.docManager = await DocumentManager.getInstance();
|
|
441
762
|
return this.docManager.getAllDocuments(dispatchID);
|
|
@@ -21,7 +21,7 @@ import BaseErrorCodes, {
|
|
|
21
21
|
InvalidArgumentsError,
|
|
22
22
|
} from '../../../errors/ErrorCodes';
|
|
23
23
|
import Logger, { LOG_TYPE } from '../../../utils/Logger';
|
|
24
|
-
import { BULK_DATA_LIMIT } from '../constants';
|
|
24
|
+
import { BULK_DATA_LIMIT, MAX_RETRY_COUNT, PROCESS_MAX_RETRIED_ROWS } from '../constants';
|
|
25
25
|
import Storage from '../../../utils/storage';
|
|
26
26
|
|
|
27
27
|
// NEW CODE
|
|
@@ -33,7 +33,7 @@ const SyncType = IDispatch.SyncType;
|
|
|
33
33
|
|
|
34
34
|
export default class ETEventsManager {
|
|
35
35
|
private static instance: ETEventsManager;
|
|
36
|
-
private maxRetryCount: number =
|
|
36
|
+
private maxRetryCount: number = MAX_RETRY_COUNT;
|
|
37
37
|
private _retries = 0;
|
|
38
38
|
|
|
39
39
|
private constructor() {}
|
|
@@ -59,11 +59,20 @@ export default class ETEventsManager {
|
|
|
59
59
|
${EVENTS_COLUMNS.DATA_LENGTH} INTEGER DEFAULT 0 NOT NULL,\
|
|
60
60
|
${EVENTS_COLUMNS.META} TEXT NOT NULL,\
|
|
61
61
|
${EVENTS_COLUMNS.SYNCED} INTEGER DEFAULT 0 NOT NULL,\
|
|
62
|
+
${EVENTS_COLUMNS.ATTEMPT_COUNT} INTEGER DEFAULT 0 NOT NULL,\
|
|
62
63
|
${EVENTS_COLUMNS.SYNC_ERROR} TEXT);`,
|
|
63
64
|
[]
|
|
64
65
|
);
|
|
65
66
|
}
|
|
66
67
|
|
|
68
|
+
// This is the function to insert POD_DOC type event in event table.
|
|
69
|
+
async insertPODDocEvent(dspID: string, syncType: string): Promise<void> {
|
|
70
|
+
await Database.executeQuery(
|
|
71
|
+
`INSERT INTO ${EVENTS_TABLE}(${EVENTS_COLUMNS.DISPATCH_ID},${EVENTS_COLUMNS.SYNC_TYPE},${EVENTS_COLUMNS.PAYLOAD},${EVENTS_COLUMNS.DATA_LENGTH},${EVENTS_COLUMNS.META},${EVENTS_COLUMNS.SYNCED},${EVENTS_COLUMNS.CONFIG},${EVENTS_COLUMNS.SYNC_ERROR}) values (?,?,?,?,?,?,?,?)`,
|
|
72
|
+
[dspID, syncType, '', 1, '', 0, '', '']
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
67
76
|
async insertEvent(
|
|
68
77
|
sequence: number,
|
|
69
78
|
payload: string,
|
|
@@ -570,6 +579,15 @@ export default class ETEventsManager {
|
|
|
570
579
|
);
|
|
571
580
|
}
|
|
572
581
|
|
|
582
|
+
// This function will actualy update the POD_DOC type of event as sync along with attempt count.
|
|
583
|
+
async markPODDocEventSynced(sync: number, attempt:number, podDocId: String): Promise<void> {
|
|
584
|
+
if (!podDocId) throw new TypeError('podDocId cannot be null');
|
|
585
|
+
await Database.executeQuery(
|
|
586
|
+
`UPDATE ${EVENTS_TABLE} SET ${EVENTS_COLUMNS.SYNCED} = ?, ${EVENTS_COLUMNS.ATTEMPT_COUNT} = ? WHERE ${EVENTS_COLUMNS.SYNC_TYPE} = ?;`,
|
|
587
|
+
[sync,attempt,podDocId]
|
|
588
|
+
);
|
|
589
|
+
}
|
|
590
|
+
|
|
573
591
|
async markEventSynced(id: number): Promise<void> {
|
|
574
592
|
if (!id) throw new TypeError('Event ID cannot be null');
|
|
575
593
|
await Database.executeQuery(
|
|
@@ -629,19 +647,35 @@ export default class ETEventsManager {
|
|
|
629
647
|
}
|
|
630
648
|
|
|
631
649
|
async getBulkRowsToSync(id: string, dispatchId: string): Promise<EventRow[]> {
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
650
|
+
// If it is allowed max_retried_rows are allowed to process then it will refetch those data which are even have tried max attempt otherwise it will skip those events.
|
|
651
|
+
if(PROCESS_MAX_RETRIED_ROWS){
|
|
652
|
+
const query = `SELECT * FROM \
|
|
653
|
+
(SELECT *, \
|
|
654
|
+
(SELECT SUM(${EVENTS_COLUMNS.DATA_LENGTH}) \
|
|
655
|
+
FROM ${EVENTS_TABLE} \
|
|
656
|
+
WHERE id <= t.id and ${EVENTS_COLUMNS.ID} > ${id} and ${EVENTS_COLUMNS.DISPATCH_ID} \ = '${dispatchId}' and ${EVENTS_COLUMNS.DATA_LENGTH} > 0 and ${EVENTS_COLUMNS.SYNCED} = 0 \
|
|
657
|
+
) total \
|
|
658
|
+
FROM ${EVENTS_TABLE} t \
|
|
659
|
+
) q \
|
|
660
|
+
WHERE total <= ${BULK_DATA_LIMIT} \
|
|
661
|
+
ORDER BY ${EVENTS_COLUMNS.ID};`;
|
|
662
|
+
|
|
663
|
+
const sqlResult = await Database.executeQuery(query, []);
|
|
664
|
+
return sqlResult.rows._array;
|
|
665
|
+
}else{
|
|
666
|
+
const query = `SELECT * FROM \
|
|
667
|
+
(SELECT *, \
|
|
668
|
+
(SELECT SUM(${EVENTS_COLUMNS.DATA_LENGTH}) \
|
|
669
|
+
FROM ${EVENTS_TABLE} \
|
|
670
|
+
WHERE id <= t.id and ${EVENTS_COLUMNS.ID} > ${id} and ${EVENTS_COLUMNS.DISPATCH_ID} \ = '${dispatchId}' and ${EVENTS_COLUMNS.DATA_LENGTH} > 0 and ${EVENTS_COLUMNS.SYNCED} = 0 and ${EVENTS_COLUMNS.ATTEMPT_COUNT} < ${MAX_RETRY_COUNT} \
|
|
671
|
+
) total \
|
|
672
|
+
FROM ${EVENTS_TABLE} t \
|
|
673
|
+
) q \
|
|
674
|
+
WHERE total <= ${BULK_DATA_LIMIT} \
|
|
675
|
+
ORDER BY ${EVENTS_COLUMNS.ID};`;
|
|
676
|
+
|
|
677
|
+
const sqlResult = await Database.executeQuery(query, []);
|
|
678
|
+
return sqlResult.rows._array;
|
|
679
|
+
}
|
|
646
680
|
}
|
|
647
681
|
}
|