@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.
Files changed (131) hide show
  1. package/lib/commonjs/analytics/sentry/SentryAnalyticsSingleton.js +0 -2
  2. package/lib/commonjs/analytics/sentry/SentryAnalyticsSingleton.js.map +1 -1
  3. package/lib/commonjs/analytics/sentry/SentryAnalyticsUtils.js +0 -6
  4. package/lib/commonjs/analytics/sentry/SentryAnalyticsUtils.js.map +1 -1
  5. package/lib/commonjs/analytics/sentry/SentrySdkConstants.js +2 -0
  6. package/lib/commonjs/analytics/sentry/SentrySdkConstants.js.map +1 -1
  7. package/lib/commonjs/components/executiontasks/imageCapture/ImageCapture.js +1 -1
  8. package/lib/commonjs/components/executiontasks/imageCapture/ImageCapture.js.map +1 -1
  9. package/lib/commonjs/index.js.map +1 -1
  10. package/lib/commonjs/manager/sdk/DispatchSDKManager.js +5 -4
  11. package/lib/commonjs/manager/sdk/DispatchSDKManager.js.map +1 -1
  12. package/lib/commonjs/manager/sdk/callbacksHandler.js +28 -1
  13. package/lib/commonjs/manager/sdk/callbacksHandler.js.map +1 -1
  14. package/lib/commonjs/manager/syncmanager/AppSyncManager.js +7 -5
  15. package/lib/commonjs/manager/syncmanager/AppSyncManager.js.map +1 -1
  16. package/lib/commonjs/manager/syncmanager/DBConfig.js +3 -1
  17. package/lib/commonjs/manager/syncmanager/DBConfig.js.map +1 -1
  18. package/lib/commonjs/manager/syncmanager/constants.js +4 -1
  19. package/lib/commonjs/manager/syncmanager/constants.js.map +1 -1
  20. package/lib/commonjs/manager/syncmanager/document/DocumentHttpClient.js +37 -20
  21. package/lib/commonjs/manager/syncmanager/document/DocumentHttpClient.js.map +1 -1
  22. package/lib/commonjs/manager/syncmanager/document/DocumentManager.js +26 -4
  23. package/lib/commonjs/manager/syncmanager/document/DocumentManager.js.map +1 -1
  24. package/lib/commonjs/manager/syncmanager/document/DocumentSyncManager.js +276 -20
  25. package/lib/commonjs/manager/syncmanager/document/DocumentSyncManager.js.map +1 -1
  26. package/lib/commonjs/manager/syncmanager/events/ETEventsManager.js +41 -13
  27. package/lib/commonjs/manager/syncmanager/events/ETEventsManager.js.map +1 -1
  28. package/lib/commonjs/manager/syncmanager/events/EventsSyncManager.js +116 -59
  29. package/lib/commonjs/manager/syncmanager/events/EventsSyncManager.js.map +1 -1
  30. package/lib/commonjs/manager/syncmanager/events/SyncHttpClient.js +17 -0
  31. package/lib/commonjs/manager/syncmanager/events/SyncHttpClient.js.map +1 -1
  32. package/lib/commonjs/models/auth.js.map +1 -1
  33. package/lib/commonjs/models/sdk.js.map +1 -1
  34. package/lib/commonjs/network/NetworkClient.js +12 -2
  35. package/lib/commonjs/network/NetworkClient.js.map +1 -1
  36. package/lib/commonjs/network/NetworkUtils.js +14 -7
  37. package/lib/commonjs/network/NetworkUtils.js.map +1 -1
  38. package/lib/commonjs/network/client.js +1 -1
  39. package/lib/commonjs/network/client.js.map +1 -1
  40. package/lib/commonjs/ui/screens/DeliverScreen.js.map +1 -1
  41. package/lib/commonjs/ui/screens/FormsScreen.js.map +1 -1
  42. package/lib/commonjs/utils/SyncManagerUtils.js +29 -2
  43. package/lib/commonjs/utils/SyncManagerUtils.js.map +1 -1
  44. package/lib/commonjs/utils/storage.js +21 -5
  45. package/lib/commonjs/utils/storage.js.map +1 -1
  46. package/lib/commonjs/utils/utils.js +0 -9
  47. package/lib/commonjs/utils/utils.js.map +1 -1
  48. package/lib/module/analytics/sentry/SentryAnalyticsSingleton.js +0 -2
  49. package/lib/module/analytics/sentry/SentryAnalyticsSingleton.js.map +1 -1
  50. package/lib/module/analytics/sentry/SentryAnalyticsUtils.js +0 -6
  51. package/lib/module/analytics/sentry/SentryAnalyticsUtils.js.map +1 -1
  52. package/lib/module/analytics/sentry/SentrySdkConstants.js +2 -0
  53. package/lib/module/analytics/sentry/SentrySdkConstants.js.map +1 -1
  54. package/lib/module/components/executiontasks/imageCapture/ImageCapture.js +1 -1
  55. package/lib/module/components/executiontasks/imageCapture/ImageCapture.js.map +1 -1
  56. package/lib/module/index.js.map +1 -1
  57. package/lib/module/manager/sdk/DispatchSDKManager.js +5 -4
  58. package/lib/module/manager/sdk/DispatchSDKManager.js.map +1 -1
  59. package/lib/module/manager/sdk/callbacksHandler.js +27 -1
  60. package/lib/module/manager/sdk/callbacksHandler.js.map +1 -1
  61. package/lib/module/manager/syncmanager/AppSyncManager.js +7 -5
  62. package/lib/module/manager/syncmanager/AppSyncManager.js.map +1 -1
  63. package/lib/module/manager/syncmanager/DBConfig.js +3 -1
  64. package/lib/module/manager/syncmanager/DBConfig.js.map +1 -1
  65. package/lib/module/manager/syncmanager/constants.js +3 -0
  66. package/lib/module/manager/syncmanager/constants.js.map +1 -1
  67. package/lib/module/manager/syncmanager/document/DocumentHttpClient.js +38 -21
  68. package/lib/module/manager/syncmanager/document/DocumentHttpClient.js.map +1 -1
  69. package/lib/module/manager/syncmanager/document/DocumentManager.js +26 -4
  70. package/lib/module/manager/syncmanager/document/DocumentManager.js.map +1 -1
  71. package/lib/module/manager/syncmanager/document/DocumentSyncManager.js +276 -20
  72. package/lib/module/manager/syncmanager/document/DocumentSyncManager.js.map +1 -1
  73. package/lib/module/manager/syncmanager/events/ETEventsManager.js +42 -14
  74. package/lib/module/manager/syncmanager/events/ETEventsManager.js.map +1 -1
  75. package/lib/module/manager/syncmanager/events/EventsSyncManager.js +119 -61
  76. package/lib/module/manager/syncmanager/events/EventsSyncManager.js.map +1 -1
  77. package/lib/module/manager/syncmanager/events/SyncHttpClient.js +15 -0
  78. package/lib/module/manager/syncmanager/events/SyncHttpClient.js.map +1 -1
  79. package/lib/module/models/auth.js.map +1 -1
  80. package/lib/module/models/sdk.js.map +1 -1
  81. package/lib/module/network/NetworkClient.js +12 -2
  82. package/lib/module/network/NetworkClient.js.map +1 -1
  83. package/lib/module/network/NetworkUtils.js +14 -7
  84. package/lib/module/network/NetworkUtils.js.map +1 -1
  85. package/lib/module/network/client.js +1 -1
  86. package/lib/module/network/client.js.map +1 -1
  87. package/lib/module/ui/screens/DeliverScreen.js.map +1 -1
  88. package/lib/module/ui/screens/FormsScreen.js.map +1 -1
  89. package/lib/module/utils/SyncManagerUtils.js +30 -3
  90. package/lib/module/utils/SyncManagerUtils.js.map +1 -1
  91. package/lib/module/utils/storage.js +21 -5
  92. package/lib/module/utils/storage.js.map +1 -1
  93. package/lib/module/utils/utils.js +0 -9
  94. package/lib/module/utils/utils.js.map +1 -1
  95. package/lib/typescript/analytics/sentry/SentrySdkConstants.d.ts +2 -0
  96. package/lib/typescript/manager/sdk/callbacksHandler.d.ts +3 -1
  97. package/lib/typescript/manager/syncmanager/DBConfig.d.ts +4 -0
  98. package/lib/typescript/manager/syncmanager/constants.d.ts +3 -0
  99. package/lib/typescript/manager/syncmanager/document/DocumentManager.d.ts +2 -0
  100. package/lib/typescript/manager/syncmanager/document/DocumentSyncManager.d.ts +2 -1
  101. package/lib/typescript/manager/syncmanager/events/ETEventsManager.d.ts +2 -0
  102. package/lib/typescript/manager/syncmanager/events/EventsSyncManager.d.ts +1 -1
  103. package/lib/typescript/models/sdk.d.ts +1 -0
  104. package/lib/typescript/utils/storage.d.ts +3 -3
  105. package/package.json +5 -5
  106. package/src/analytics/sentry/SentryAnalyticsSingleton.ts +7 -9
  107. package/src/analytics/sentry/SentryAnalyticsUtils.ts +24 -36
  108. package/src/analytics/sentry/SentrySdkConstants.ts +2 -0
  109. package/src/components/executiontasks/imageCapture/ImageCapture.tsx +1 -3
  110. package/src/index.tsx +1 -1
  111. package/src/manager/sdk/DispatchSDKManager.ts +8 -3
  112. package/src/manager/sdk/callbacksHandler.ts +39 -2
  113. package/src/manager/syncmanager/AppSyncManager.ts +15 -13
  114. package/src/manager/syncmanager/DBConfig.ts +4 -0
  115. package/src/manager/syncmanager/constants.ts +3 -0
  116. package/src/manager/syncmanager/document/DocumentHttpClient.ts +54 -24
  117. package/src/manager/syncmanager/document/DocumentManager.ts +48 -7
  118. package/src/manager/syncmanager/document/DocumentSyncManager.ts +351 -30
  119. package/src/manager/syncmanager/events/ETEventsManager.ts +50 -16
  120. package/src/manager/syncmanager/events/EventsSyncManager.ts +157 -74
  121. package/src/manager/syncmanager/events/SyncHttpClient.ts +30 -1
  122. package/src/models/auth.ts +1 -0
  123. package/src/models/sdk.ts +1 -0
  124. package/src/network/NetworkClient.ts +18 -2
  125. package/src/network/NetworkUtils.ts +9 -1
  126. package/src/network/client.ts +1 -1
  127. package/src/ui/screens/DeliverScreen.tsx +6 -5
  128. package/src/ui/screens/FormsScreen.tsx +8 -6
  129. package/src/utils/SyncManagerUtils.ts +41 -6
  130. package/src/utils/storage.ts +21 -8
  131. package/src/utils/utils.ts +0 -8
@@ -11,8 +11,12 @@ var _BaseError = require("../../../errors/BaseError");
11
11
  var _ErrorCodes = _interopRequireWildcard(require("../../../errors/ErrorCodes"));
12
12
  var _Logger = _interopRequireWildcard(require("../../../utils/Logger"));
13
13
  var _NetworkUtil = _interopRequireDefault(require("../../../utils/NetworkUtil"));
14
+ var _ETEventsManager = _interopRequireDefault(require("../events/ETEventsManager"));
15
+ var _constants = require("../../syncmanager/constants");
16
+ var _EventsSyncManager = _interopRequireDefault(require("../events/EventsSyncManager"));
14
17
  var _reactNativeImageMarker = _interopRequireWildcard(require("react-native-image-marker"));
15
18
  var _reactNativeFs = _interopRequireDefault(require("react-native-fs"));
19
+ var _storage = _interopRequireDefault(require("../../../utils/storage"));
16
20
  var _reactNative = require("react-native");
17
21
  var _SentrySdkConstants = require("../../../analytics/sentry/SentrySdkConstants");
18
22
  var _SentryAnalyticsUtils = require("../../../analytics/sentry/SentryAnalyticsUtils");
@@ -35,7 +39,7 @@ class DocumentSyncManager {
35
39
  _defineProperty(this, "documentHttpClient", void 0);
36
40
  _defineProperty(this, "inProgress", false);
37
41
  _defineProperty(this, "docManager", void 0);
38
- _defineProperty(this, "maxRetryCount", 3);
42
+ _defineProperty(this, "maxRetryCount", _constants.MAX_RETRY_COUNT);
39
43
  _defineProperty(this, "_retries", 0);
40
44
  }
41
45
  init(baseURL, retryCount) {
@@ -63,19 +67,78 @@ class DocumentSyncManager {
63
67
  if ((documentRows === null || documentRows === void 0 ? void 0 : documentRows.length) > 0) {
64
68
  await this.uploadDocToServer(documentRows[0]);
65
69
  } else {
66
- _Logger.default.getInstance().logEvent('startDocumentSync', 'No data to sync', _Logger.LOG_TYPE.SDK_INFO);
70
+ let cta = 'startDocumentSync-NoData';
71
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
72
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
73
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
74
+ screenName: cta,
75
+ cta: cta,
76
+ extraParams: {
77
+ msg: 'No data to sync'
78
+ }
79
+ });
80
+ _Logger.default.getInstance().logEvent(cta, 'No data to sync', _Logger.LOG_TYPE.SDK_ERROR);
67
81
  }
68
82
  } else {
69
- _Logger.default.getInstance().logEvent('startDocumentSync', 'No Network', _Logger.LOG_TYPE.SDK_INFO);
83
+ let cta = 'startDocumentSync-NoNetwork';
84
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
85
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
86
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
87
+ screenName: cta,
88
+ cta: cta,
89
+ extraParams: {
90
+ msg: 'No Network'
91
+ }
92
+ });
93
+ _Logger.default.getInstance().logEvent(cta, 'No Network', _Logger.LOG_TYPE.SDK_ERROR);
70
94
  }
71
- } catch (error) {} finally {
95
+ } catch (error) {
96
+ let cta = 'startDocumentSync-error';
97
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
98
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
99
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
100
+ screenName: cta,
101
+ cta: cta,
102
+ extraParams: {
103
+ msg: (0, _utils.flattenObject)(error)
104
+ }
105
+ });
106
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(error), _Logger.LOG_TYPE.SDK_ERROR);
107
+ } finally {
72
108
  this.inProgress = false;
73
- if ((await this.isSyncPending()) && hasNetwork) {
109
+ let syncPending = await this.isSyncPending();
110
+ if (syncPending && hasNetwork) {
74
111
  await this.startDocumentSync();
112
+ } else {
113
+ let cta = 'startDocumentSync-error';
114
+ let extraParameters = {
115
+ hasNetwork: hasNetwork,
116
+ pending: syncPending
117
+ };
118
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
119
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
120
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
121
+ screenName: cta,
122
+ cta: cta,
123
+ extraParams: {
124
+ msg: (0, _utils.flattenObject)(extraParameters)
125
+ }
126
+ });
127
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(extraParameters), _Logger.LOG_TYPE.SDK_ERROR);
75
128
  }
76
129
  }
77
130
  } else {
78
- _Logger.default.getInstance().logEvent('startDocumentSync', 'sync already in progress ', _Logger.LOG_TYPE.SDK_INFO);
131
+ let cta = 'startDocumentSync';
132
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
133
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
134
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
135
+ screenName: cta,
136
+ cta: cta,
137
+ extraParams: {
138
+ msg: 'sync already in progress or max count reached'
139
+ }
140
+ });
141
+ _Logger.default.getInstance().logEvent(cta, 'sync already in progress or max count reached', _Logger.LOG_TYPE.SDK_ERROR);
79
142
  }
80
143
  }
81
144
  async isSyncPending() {
@@ -94,7 +157,17 @@ class DocumentSyncManager {
94
157
  (0, _utils.isEmptyOrBlank)(fileType) || (0, _utils.isEmptyOrBlank)(fileName) || base64 && (0, _utils.isEmptyOrBlank)(data) || !base64 && (0, _utils.isEmptyOrBlank)(filePath)) throw new _BaseError.BaseError(_ErrorCodes.default.InvalidArgumentError, _ErrorCodes.InvalidArgumentsError);else {
95
158
  var _this$docManager;
96
159
  if (!this.docManager) {
97
- _Logger.default.getInstance().logEvent('insertDocument', 'INIT DOC SYNC AGAIN', _Logger.LOG_TYPE.SDK_INFO);
160
+ let cta = 'insertDocument';
161
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
162
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
163
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
164
+ screenName: cta,
165
+ cta: cta,
166
+ extraParams: {
167
+ msg: 'INIT DOC SYNC AGAIN'
168
+ }
169
+ });
170
+ _Logger.default.getInstance().logEvent(cta, 'INIT DOC SYNC AGAIN', _Logger.LOG_TYPE.SDK_ERROR);
98
171
  this.docManager = await _DocumentManager.default.getInstance();
99
172
  }
100
173
  console.log('insertDocument1:', fmsFolderID);
@@ -110,12 +183,56 @@ class DocumentSyncManager {
110
183
  this._retries = 0;
111
184
  await this.startDocumentSync();
112
185
  }
113
- async updateDocument(documentRow, fmsID) {
186
+
187
+ // private async updateDocument(documentRow: DocumentRow, fmsID: string) {
188
+ // if (!this.docManager) this.docManager = await DocumentManager.getInstance();
189
+ // try {
190
+ // await this.docManager.markDocumentSynced(documentRow.id, fmsID);
191
+ // let eventsManager = await ETEventsManager.getInstance();
192
+ // let podId = POD_DOC + '_' + documentRow.id;
193
+ // await eventsManager.markPODDocEventSynced(1, 1, podId);
194
+ // EventsSyncManager.getInstance().startSync();
195
+ // } catch (err: any) {
196
+ // Logger.getInstance().logEvent(
197
+ // 'updateDocument',
198
+ // err.message,
199
+ // LOG_TYPE.SDK_WARNING
200
+ // );
201
+ // }
202
+ // }
203
+
204
+ // This function will update document row with attempt count and sync status
205
+ async updateDocumentWithAttempt(documentRow, fmsID, attempt, sync) {
114
206
  if (!this.docManager) this.docManager = await _DocumentManager.default.getInstance();
115
207
  try {
116
- await this.docManager.markDocumentSynced(documentRow.id, fmsID);
208
+ // Calling document row update method for attempt count and sync.
209
+ await this.docManager.markDocumentSyncedWithAttempt(documentRow.id, fmsID, attempt, sync);
210
+ let eventsManager = await _ETEventsManager.default.getInstance();
211
+ let podId = _constants.POD_DOC + '_' + documentRow.id;
212
+ let extraParameters = {
213
+ podId: podId
214
+ };
215
+ _Logger.default.getInstance().logEvent('updateDocumentWithAttempt-success', (0, _utils.flattenObject)(extraParameters), _Logger.LOG_TYPE.SDK_ERROR);
216
+ // Calling update method for attempt count and sync to update event row of type POD_DOC
217
+ await eventsManager.markPODDocEventSynced(sync, attempt, podId);
218
+ if (sync == 1) {
219
+ const lastSyncedEventId = await _storage.default.getInstance().getSharedItem(_constants.LAST_SYNCED_EVENT_ID);
220
+ const syncEventId = parseInt(lastSyncedEventId) + 1;
221
+ await _storage.default.getInstance().setSharedItem(_constants.LAST_SYNCED_EVENT_ID, `${syncEventId}`);
222
+ }
223
+ _EventsSyncManager.default.getInstance().startSync();
117
224
  } catch (err) {
118
- _Logger.default.getInstance().logEvent('updateDocument', err.message, _Logger.LOG_TYPE.SDK_WARNING);
225
+ let cta = 'updateDocumentWithAttempt';
226
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
227
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
228
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
229
+ screenName: cta,
230
+ cta: cta,
231
+ extraParams: {
232
+ msg: (0, _utils.flattenObject)(err)
233
+ }
234
+ });
235
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(err), _Logger.LOG_TYPE.SDK_WARNING);
119
236
  }
120
237
  }
121
238
 
@@ -125,7 +242,17 @@ class DocumentSyncManager {
125
242
  try {
126
243
  await this.docManager.updateProcesedFilePath(documentRow.id, origialFilePath, processedPath);
127
244
  } catch (err) {
128
- _Logger.default.getInstance().logEvent('updateDocument', err.message, _Logger.LOG_TYPE.SDK_WARNING);
245
+ let cta = 'updateDocument-updateDocumentProcessedPath';
246
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
247
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.ERROR,
248
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_ERROR,
249
+ screenName: cta,
250
+ cta: cta,
251
+ extraParams: {
252
+ msg: (0, _utils.flattenObject)(err)
253
+ }
254
+ });
255
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(err), _Logger.LOG_TYPE.SDK_WARNING);
129
256
  }
130
257
  }
131
258
  async updateDocError(documentRow, uploadError) {
@@ -133,7 +260,17 @@ class DocumentSyncManager {
133
260
  try {
134
261
  await this.docManager.updateDocSyncError(documentRow.id, uploadError);
135
262
  } catch (err) {
136
- _Logger.default.getInstance().logEvent('updateDocError', err.message, _Logger.LOG_TYPE.SDK_WARNING);
263
+ let cta = 'updateDocError';
264
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
265
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.ERROR,
266
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_ERROR,
267
+ screenName: cta,
268
+ cta: cta,
269
+ extraParams: {
270
+ msg: (0, _utils.flattenObject)(err)
271
+ }
272
+ });
273
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(err), _Logger.LOG_TYPE.SDK_WARNING);
137
274
  }
138
275
  }
139
276
  checkForInitialization() {
@@ -146,6 +283,21 @@ class DocumentSyncManager {
146
283
  async processImageData(documentRow) {
147
284
  // If processed_file_path of overlayed image already existing then do not generate it again.
148
285
  if (documentRow.processed_file_path === null || documentRow.processed_file_path === '') {
286
+ let cta = 'processImageData-started';
287
+ let extra = {
288
+ msg: 'processImageData-started',
289
+ fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4) : '',
290
+ dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4) : '',
291
+ dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9) : ''
292
+ };
293
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
294
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
295
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
296
+ screenName: cta,
297
+ cta: cta,
298
+ extraParams: extra
299
+ });
300
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(extra), _Logger.LOG_TYPE.SDK_ERROR);
149
301
  let pFilePath = 'processed_' + documentRow.file_name; // File name for processed file.
150
302
  let strGeoStamp = documentRow.geo_timestamp; // Saved geostamp string
151
303
  let objGeoStamp = JSON.parse(strGeoStamp); // Conversion to geostamp object
@@ -210,6 +362,21 @@ class DocumentSyncManager {
210
362
  documentRow.processed_file_path = completeFilePath;
211
363
  }
212
364
  }
365
+ let cta = 'processImageData-completed';
366
+ let extra = {
367
+ msg: 'processImageData-completed',
368
+ fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4) : '',
369
+ dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4) : '',
370
+ dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9) : ''
371
+ };
372
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
373
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
374
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
375
+ screenName: cta,
376
+ cta: cta,
377
+ extraParams: extra
378
+ });
379
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(extra), _Logger.LOG_TYPE.SDK_ERROR);
213
380
  return documentRow;
214
381
  }
215
382
 
@@ -217,6 +384,21 @@ class DocumentSyncManager {
217
384
  async processBase64Data(documentRow) {
218
385
  // If base64 overlayed data already existing then do not generate it again.
219
386
  if (documentRow.processed_file_path === null || documentRow.processed_file_path === '') {
387
+ let cta = 'processBase64Data-started';
388
+ let extra = {
389
+ msg: 'processBase64Data-started',
390
+ fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4) : '',
391
+ dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4) : '',
392
+ dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9) : ''
393
+ };
394
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
395
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
396
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
397
+ screenName: cta,
398
+ cta: cta,
399
+ extraParams: extra
400
+ });
401
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(extra), _Logger.LOG_TYPE.SDK_ERROR);
220
402
  let filePath = '';
221
403
  // If templrary base 64 file already exist then do not create again
222
404
  if (documentRow.file_path === null || documentRow.file_path === '') {
@@ -284,6 +466,21 @@ class DocumentSyncManager {
284
466
  documentRow.processed_file_path = splittedDase64Data[1];
285
467
  }
286
468
  }
469
+ let cta = 'processBase64Data-completed';
470
+ let extra = {
471
+ msg: 'processBase64Data-completed',
472
+ fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4) : '',
473
+ dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4) : '',
474
+ dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9) : ''
475
+ };
476
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
477
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
478
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
479
+ screenName: cta,
480
+ cta: cta,
481
+ extraParams: extra
482
+ });
483
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(extra), _Logger.LOG_TYPE.SDK_ERROR);
287
484
  return documentRow;
288
485
  }
289
486
 
@@ -298,25 +495,61 @@ class DocumentSyncManager {
298
495
  async uploadDocToServer(documentRow) {
299
496
  try {
300
497
  var _this$documentHttpCli;
301
- let docRow = await this.processPODData(documentRow);
498
+ let docRow = documentRow;
499
+ let cta = 'uploadDocToServer-geoStamp';
500
+ let geoStampAvailable = false;
501
+ if (documentRow.geo_timestamp && documentRow.geo_timestamp.length != 0) {
502
+ geoStampAvailable = true;
503
+ docRow = await this.processPODData(documentRow);
504
+ }
505
+ let extra = {
506
+ msg: geoStampAvailable ? "geoStamp availale" : 'geoStamp not availale',
507
+ fName: docRow.file_name && docRow.file_name.length != 0 ? docRow.file_name.substring(4) : '',
508
+ dName: docRow.fms_folder_id && docRow.fms_folder_id.length != 0 ? docRow.fms_folder_id.substring(4) : '',
509
+ dispId: docRow.dispatch_id && docRow.dispatch_id.length != 0 ? docRow.dispatch_id.substring(9) : ''
510
+ };
511
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
512
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
513
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
514
+ screenName: cta,
515
+ cta: cta,
516
+ extraParams: extra
517
+ });
518
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(extra), _Logger.LOG_TYPE.SDK_ERROR);
302
519
  console.log('uploadDocToServer999:', docRow);
303
- let fmsID = await ((_this$documentHttpCli = this.documentHttpClient) === null || _this$documentHttpCli === void 0 ? void 0 : _this$documentHttpCli.uploadDocument(documentRow));
520
+ let fmsID = await ((_this$documentHttpCli = this.documentHttpClient) === null || _this$documentHttpCli === void 0 ? void 0 : _this$documentHttpCli.uploadDocument(docRow));
304
521
  let extraParameters = {
305
522
  fmsID: fmsID ?? '',
306
- fileName: docRow.file_name,
307
- folderName: docRow.fms_folder_id
523
+ fName: docRow.file_name && docRow.file_name.length != 0 ? docRow.file_name.substring(4) : '',
524
+ dName: docRow.fms_folder_id && docRow.fms_folder_id.length != 0 ? docRow.fms_folder_id.substring(4) : '',
525
+ dispId: docRow.dispatch_id && docRow.dispatch_id.length != 0 ? docRow.dispatch_id.substring(9) : ''
308
526
  };
309
527
  // TODO: SOLELY DEPENDS ON FMS_ID WHICH IS WRONG => IT SHOULD BE Response.status = 202
310
528
  if (fmsID) {
529
+ // Calling function updating document row along with attempt count and sync as true.
530
+ await this.updateDocumentWithAttempt(documentRow, fmsID, this._retries + 1, 1);
311
531
  this._retries = 0;
312
- await this.updateDocument(docRow, fmsID);
532
+ // await this.updateDocument(docRow, fmsID);
313
533
  } else {
534
+ // Calling function updating document row withalong attempt count and sync as false.
535
+ await this.updateDocumentWithAttempt(documentRow, '', this._retries + 1, 0);
314
536
  this._retries++;
315
- _Logger.default.getInstance().logEvent('uploadDocToServer-empty-fms-id', (0, _utils.flattenObject)(extraParameters), _Logger.LOG_TYPE.SDK_ERROR);
537
+ let cta = 'uploadDocToServer-empty-fms-id';
538
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
539
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
540
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
541
+ screenName: cta,
542
+ cta: cta,
543
+ extraParams: extraParameters
544
+ });
545
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(extraParameters), _Logger.LOG_TYPE.SDK_ERROR);
546
+ this.startSyncAfterMaxRetry(extraParameters, null);
316
547
  await this.updateDocError(docRow, 'Unexpected Error');
317
548
  }
318
549
  } catch (error) {
319
550
  var _error$response, _error$response2;
551
+ // Calling function updating document row withalong attempt count and sync as false.
552
+ await this.updateDocumentWithAttempt(documentRow, '', this._retries + 1, 0);
320
553
  const cta = 'uploadDocToServer-error';
321
554
  (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
322
555
  severityLevel: _SentrySdkConstants.SeverityLevelValue.ERROR,
@@ -324,11 +557,12 @@ class DocumentSyncManager {
324
557
  screenName: cta,
325
558
  cta: cta,
326
559
  extraParams: {
327
- error: error.message
560
+ error: (0, _utils.flattenObject)(error)
328
561
  }
329
562
  });
563
+ _Logger.default.getInstance().logEvent(cta, (0, _utils.flattenObject)(error), _Logger.LOG_TYPE.SDK_ERROR);
330
564
  this._retries++;
331
- _Logger.default.getInstance().logEvent('uploadDocToServer-sync-error', error.message, _Logger.LOG_TYPE.SDK_ERROR);
565
+ this.startSyncAfterMaxRetry(null, error);
332
566
  await this.updateDocError(documentRow, JSON.stringify({
333
567
  message: error.message,
334
568
  error: JSON.stringify(error === null || error === void 0 || (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.data),
@@ -336,6 +570,28 @@ class DocumentSyncManager {
336
570
  }));
337
571
  }
338
572
  }
573
+ async startSyncAfterMaxRetry(extraParameters, error) {
574
+ if (this.retries >= this.maxRetryCount) {
575
+ let cta = 'startSyncAfterMaxRetry-max-retry-reached';
576
+ (0, _SentryAnalyticsUtils.fireEventWithScreenName)({
577
+ severityLevel: _SentrySdkConstants.SeverityLevelValue.LOG,
578
+ eventName: _SentrySdkConstants.SentryEventNameSdkConstants.APP_LOG,
579
+ screenName: cta,
580
+ cta: cta,
581
+ extraParams: extraParameters ? extraParameters : error
582
+ });
583
+ _Logger.default.getInstance().logEvent(cta, extraParameters ? (0, _utils.flattenObject)(extraParameters) : error, _Logger.LOG_TYPE.SDK_ERROR);
584
+ if (!this.docManager) {
585
+ this.docManager = await _DocumentManager.default.getInstance();
586
+ }
587
+ let documentRows = await this.docManager.getUnsyncedDocument();
588
+ if ((documentRows === null || documentRows === void 0 ? void 0 : documentRows.length) > 0) {
589
+ await this.docManager.updateDocPriority(documentRows[0].id, documentRows[0].priority + 1);
590
+ this._retries = 0;
591
+ this.startDocumentSync();
592
+ }
593
+ }
594
+ }
339
595
  async getAllDocuments(dispatchID) {
340
596
  if (!this.docManager) this.docManager = await _DocumentManager.default.getInstance();
341
597
  return this.docManager.getAllDocuments(dispatchID);
@@ -1 +1 @@
1
- {"version":3,"names":["_DocumentManager","_interopRequireDefault","require","_DocumentHttpClient","_utils","_BaseError","_ErrorCodes","_interopRequireWildcard","_Logger","_NetworkUtil","_reactNativeImageMarker","_reactNativeFs","_reactNative","_SentrySdkConstants","_SentryAnalyticsUtils","_class","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_defineProperty","key","value","_toPropertyKey","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","latlngToDms","DocumentSyncManager","retries","_retries","constructor","init","baseURL","retryCount","isEmptyOrBlank","BaseError","BaseErrorCodes","InvalidBaseURL","maxRetryCount","documentHttpClient","DocumentHttpClient","getInstance","instance","startDocumentSync","inProgress","hasNetwork","NetworkUtil","isAvailableAsync","checkForInitialization","docManager","DocumentManager","documentRows","getUnsyncedDocument","length","uploadDocToServer","Logger","logEvent","LOG_TYPE","SDK_INFO","error","isSyncPending","leftDocuments","getAllUnsyncedDocs","insertDocument","fmsFolderID","data","base64","desc","dspID","filePath","fileType","fileName","geoTimeStamp","processedFilePath","priority","arguments","InvalidArgumentError","InvalidArgumentsError","_this$docManager","console","log","insertResponse","forceDocumentSync","updateDocument","documentRow","fmsID","markDocumentSynced","id","err","message","SDK_WARNING","updateDocumentProcessedPath","origialFilePath","processedPath","updateProcesedFilePath","updateDocError","uploadError","updateDocSyncError","SyncManagerNotInitialized","processImageData","processed_file_path","pFilePath","file_name","strGeoStamp","geo_timestamp","objGeoStamp","JSON","parse","dateTime","lat","lng","accuracy","strDMS","strDMSWithAccuracy","fontSize","Platform","OS","options","backgroundImage","src","file_path","scale","watermarkTexts","text","position","Position","topLeft","style","color","fontName","textBackgroundStyle","padding","type","TextBackgroundType","none","quality","filename","saveFormat","ImageFormat","jpg","Marker","markText","completeFilePath","includes","processBase64Data","imagePath","RNFS","TemporaryDirectoryPath","writeFile","processedBase64","splittedDase64Data","split","processPODData","_this$documentHttpCli","docRow","uploadDocument","extraParameters","folderName","fms_folder_id","flattenObject","SDK_ERROR","_error$response","_error$response2","cta","fireEventWithScreenName","severityLevel","SeverityLevelValue","ERROR","eventName","SentryEventNameSdkConstants","API_ERROR","screenName","extraParams","stringify","response","status","getAllDocuments","dispatchID","clearSyncedDocs","deleteAllSyncedDocuments","exports"],"sources":["DocumentSyncManager.ts"],"sourcesContent":["import type { DocumentRow } from '../DBConfig';\nimport DocumentManager from './DocumentManager';\nimport DocumentHttpClient from './DocumentHttpClient';\nimport { isEmptyOrBlank, flattenObject } from '../../../utils/utils';\nimport { BaseError } from '../../../errors/BaseError';\nimport BaseErrorCodes, {\n InvalidArgumentsError,\n InvalidBaseURL,\n SyncManagerNotInitialized,\n} from '../../../errors/ErrorCodes';\nimport Logger, { LOG_TYPE } from '../../../utils/Logger';\nimport type { SQLResultSet } from 'expo-sqlite';\nimport NetworkUtil from '../../../utils/NetworkUtil';\nimport Marker, {\n Position,\n TextBackgroundType,\n ImageFormat,\n} from 'react-native-image-marker';\nimport RNFS from 'react-native-fs';\nimport Storage from '../../../utils/storage';\nimport { Platform } from 'react-native';\nimport { ScreenNameSdkConstants, SentryEventNameSdkConstants, SeverityLevelValue } from '../../../analytics/sentry/SentrySdkConstants';\nimport { fireEventWithScreenName } from '../../../analytics/sentry/SentryAnalyticsUtils';\nconst latlngToDms = require('latlng-to-dms');\n\n\nexport default class DocumentSyncManager {\n private documentHttpClient: DocumentHttpClient | undefined;\n private inProgress: boolean = false;\n private static instance: DocumentSyncManager;\n private docManager: DocumentManager | undefined;\n private maxRetryCount: number = 3;\n private _retries = 0;\n\n get retries(): number {\n return this._retries;\n }\n\n set retries(value: number) {\n this._retries = value;\n }\n\n private constructor() {}\n\n public init(baseURL: string, retryCount: number) {\n if (isEmptyOrBlank(baseURL))\n throw new BaseError(BaseErrorCodes.InvalidBaseURL, InvalidBaseURL);\n this.maxRetryCount = retryCount;\n this.documentHttpClient = new DocumentHttpClient(baseURL);\n }\n\n public static getInstance(): DocumentSyncManager {\n if (!DocumentSyncManager.instance) {\n DocumentSyncManager.instance = new DocumentSyncManager();\n }\n return DocumentSyncManager.instance;\n }\n\n public async startDocumentSync(): Promise<void> {\n if (!this.inProgress && this._retries < this.maxRetryCount) {\n this.inProgress = true;\n const hasNetwork = await NetworkUtil.isAvailableAsync();\n try {\n this.checkForInitialization();\n if (!this.docManager) {\n this.docManager = await DocumentManager.getInstance();\n }\n if (hasNetwork) {\n let documentRows: DocumentRow[] =\n await this.docManager.getUnsyncedDocument();\n if (documentRows?.length > 0) {\n await this.uploadDocToServer(documentRows[0]);\n } else {\n Logger.getInstance().logEvent(\n 'startDocumentSync',\n 'No data to sync',\n LOG_TYPE.SDK_INFO\n );\n }\n } else {\n Logger.getInstance().logEvent(\n 'startDocumentSync',\n 'No Network',\n LOG_TYPE.SDK_INFO\n );\n }\n } catch (error: any) {\n } finally {\n this.inProgress = false;\n if ((await this.isSyncPending()) && hasNetwork) {\n await this.startDocumentSync();\n }\n }\n } else {\n Logger.getInstance().logEvent(\n 'startDocumentSync',\n 'sync already in progress ',\n LOG_TYPE.SDK_INFO\n );\n }\n }\n\n public async isSyncPending(): Promise<boolean> {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n let leftDocuments = await this.docManager.getAllUnsyncedDocs();\n return leftDocuments?.length > 0 && this._retries < this.maxRetryCount;\n }\n\n public async insertDocument(\n fmsFolderID: string | null,\n data: string | null,\n base64: boolean,\n desc: string,\n dspID: string,\n // jobID: string,\n // objRef: string,\n filePath: string | null,\n fileType: string,\n fileName: string,\n geoTimeStamp: string,\n processedFilePath: string,\n priority: number = 1\n ): Promise<SQLResultSet> {\n if (\n isEmptyOrBlank(desc) ||\n isEmptyOrBlank(dspID) ||\n // isEmptyOrBlank(jobID) ||\n // isEmptyOrBlank(objRef) ||\n isEmptyOrBlank(fileType) ||\n isEmptyOrBlank(fileName) ||\n (base64 && isEmptyOrBlank(data)) ||\n (!base64 && isEmptyOrBlank(filePath))\n )\n throw new BaseError(\n BaseErrorCodes.InvalidArgumentError,\n InvalidArgumentsError\n );\n else {\n if (!this.docManager) {\n Logger.getInstance().logEvent(\n 'insertDocument',\n 'INIT DOC SYNC AGAIN',\n LOG_TYPE.SDK_INFO\n );\n this.docManager = await DocumentManager.getInstance();\n }\n console.log('insertDocument1:',fmsFolderID);\n let insertResponse = await this.docManager?.insertDocument(\n fmsFolderID,\n desc,\n dspID,\n // jobID,\n // objRef,\n base64,\n fileName,\n fileType,\n data,\n filePath,\n geoTimeStamp,\n processedFilePath,\n priority\n );\n return insertResponse;\n }\n }\n\n public async forceDocumentSync() {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n this._retries = 0;\n await this.startDocumentSync();\n }\n\n private async updateDocument(documentRow: DocumentRow, fmsID: string) {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n try {\n await this.docManager.markDocumentSynced(documentRow.id, fmsID);\n } catch (err: any) {\n Logger.getInstance().logEvent(\n 'updateDocument',\n err.message,\n LOG_TYPE.SDK_WARNING\n );\n }\n }\n\n // This function is updating processed_file_path column for the base64 overlayed data and overlayed image file for POD. Also if it is base 64 then it is also storing temprary file path in file_path as original bae64 image.\n private async updateDocumentProcessedPath(\n documentRow: DocumentRow,\n origialFilePath: String,\n processedPath: String\n ) {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n try {\n await this.docManager.updateProcesedFilePath(\n documentRow.id,\n origialFilePath,\n processedPath\n );\n } catch (err: any) {\n Logger.getInstance().logEvent(\n 'updateDocument',\n err.message,\n LOG_TYPE.SDK_WARNING\n );\n }\n }\n\n private async updateDocError(documentRow: DocumentRow, uploadError: string) {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n try {\n await this.docManager.updateDocSyncError(documentRow.id, uploadError);\n } catch (err: any) {\n Logger.getInstance().logEvent(\n 'updateDocError',\n err.message,\n LOG_TYPE.SDK_WARNING\n );\n }\n }\n private checkForInitialization() {\n if (!this.documentHttpClient) {\n throw new BaseError(\n BaseErrorCodes.SyncManagerNotInitialized,\n SyncManagerNotInitialized\n );\n }\n }\n\n // This function will generate overlay image and update documents table for processed_file_path columns with overlayed image path.\n private async processImageData(documentRow: DocumentRow) {\n // If processed_file_path of overlayed image already existing then do not generate it again.\n if (\n documentRow.processed_file_path === null ||\n documentRow.processed_file_path === ''\n ) {\n let pFilePath = 'processed_' + documentRow.file_name; // File name for processed file.\n let strGeoStamp = documentRow.geo_timestamp; // Saved geostamp string\n let objGeoStamp = JSON.parse(strGeoStamp); // Conversion to geostamp object\n let dateTime = objGeoStamp.dateTime; // Date time stamp in UTC format\n let lat = objGeoStamp.lat; // Latitide\n let lng = objGeoStamp.lng; // Longitude\n let accuracy = objGeoStamp.accuracy; // Location accuracy\n let strDMS = latlngToDms(`${lat}, ${lng}`); // Location in degree format\n let strDMSWithAccuracy = strDMS; \n if (accuracy !== '') {\n strDMSWithAccuracy = strDMS + ' (Accuracy: ' + accuracy + 'm)'; // Appedning accuracy in location \n }\n let fontSize = 14;\n if (Platform.OS !== 'android') {\n fontSize = 28;\n }\n const options = {\n backgroundImage: { // Image for overlay\n src: documentRow.file_path,\n scale: 1,\n },\n watermarkTexts: [ \n {\n text: `${dateTime}\\n${strDMSWithAccuracy}`, //Overlay text\n position: {\n position: Position.topLeft, // Overlay text position\n },\n style: { // Style for overlay\n color: '#ffffff',\n fontSize: fontSize,\n fontName: 'Arial',\n textBackgroundStyle: {\n padding: '1% 1%',\n type: TextBackgroundType.none,\n color: '#444444CC',\n },\n },\n },\n ],\n scale: 0,\n quality: 100, \n filename: pFilePath,\n saveFormat: ImageFormat.jpg, // Saving in jpeg format\n };\n let processedFilePath = await Marker.markText(options); // Generating overlay image\n if (processedFilePath !== null && processedFilePath !== '') {\n let completeFilePath = processedFilePath;\n // If processd image file path does not have prefix file:// then we are addding manually\n if (!processedFilePath.includes('file')) {\n completeFilePath = 'file://' + processedFilePath;\n }\n // Updating document document table with overlayed image path\n this.updateDocumentProcessedPath(\n documentRow,\n documentRow.file_path, //original file path catprued from camera\n completeFilePath // completeFilePath is the path with file:// of processed file \n );\n documentRow.processed_file_path = completeFilePath; \n }\n }\n return documentRow;\n }\n\n // This function will generate overlay base64 data and update documents table for processed_file_path columns with overlayed base64 data.\n private async processBase64Data(documentRow: DocumentRow) {\n // If base64 overlayed data already existing then do not generate it again.\n if (\n documentRow.processed_file_path === null ||\n documentRow.processed_file_path === ''\n ) {\n let filePath = '';\n // If templrary base 64 file already exist then do not create again\n if (documentRow.file_path === null || documentRow.file_path === '') {\n const imagePath = `${RNFS.TemporaryDirectoryPath}/${documentRow.file_name}`;\n await RNFS.writeFile(imagePath, documentRow.data, 'base64'); // Write file to temprary location\n filePath = imagePath;\n // If file generated frommbase64 data does not have file:// then we are adding manually.\n if (!imagePath.includes('file')) {\n filePath = `file://${imagePath}`;\n }\n documentRow.file_path = filePath;\n } else {\n filePath = documentRow.file_path;\n }\n let pFilePath = 'processed_' + documentRow.file_name; // File name for processed file.\n let strGeoStamp = documentRow.geo_timestamp; // Saved geostamp string\n let objGeoStamp = JSON.parse(strGeoStamp); // Conversion to geostamp object\n let dateTime = objGeoStamp.dateTime; // Date time stamp in UTC format\n let lat = objGeoStamp.lat; // Latitide\n let lng = objGeoStamp.lng; // Longitude\n let accuracy = objGeoStamp.accuracy; // Location accuracy\n let strDMS = latlngToDms(`${lat}, ${lng}`); // Location in degree format\n let strDMSWithAccuracy = strDMS; \n if (accuracy !== '') {\n strDMSWithAccuracy = strDMS + ' (Accuracy: ' + accuracy + 'm)'; // Appedning accuracy in location \n }\n const options = {\n backgroundImage: {\n src: filePath, // Image for overlay\n scale: 1,\n },\n watermarkTexts: [\n {\n text: `${dateTime}\\n${strDMSWithAccuracy}`, // Ooverlay text\n position: {\n position: Position.topLeft, // Overlay text position\n },\n style: { // Style for overlay\n color: '#ffffff',\n fontSize: 14,\n fontName: 'Arial',\n textBackgroundStyle: {\n padding: '1% 1%',\n type: TextBackgroundType.none,\n color: '#444444CC',\n },\n },\n },\n ],\n scale: 1,\n quality: 100,\n filename: pFilePath,\n saveFormat: ImageFormat.base64, // Saving in base6 format\n };\n let processedBase64 = await Marker.markText(options); // Generating overlay image\n if (processedBase64 !== null && processedBase64 !== '') {\n // Fetching base64 data from processed data.\n var splittedDase64Data = processedBase64.split(\n 'data:image/png;base64,'\n );\n // Updating document document table with overlayed base64 data\n await this.updateDocumentProcessedPath(\n documentRow,\n filePath,\n splittedDase64Data[1]\n );\n documentRow.processed_file_path = splittedDase64Data[1];\n }\n }\n return documentRow;\n }\n\n // This function will calling respective overlay method for base64 (for signature POD) or image (for image POD).\n private async processPODData(documentRow: DocumentRow) {\n if (documentRow.base64 && documentRow.data != null) {\n return await this.processBase64Data(documentRow);\n } else {\n return await this.processImageData(documentRow);\n }\n }\n\n private async uploadDocToServer(documentRow: DocumentRow) {\n try {\n let docRow = await this.processPODData(documentRow);\n console.log('uploadDocToServer999:', docRow);\n let fmsID = await this.documentHttpClient?.uploadDocument(documentRow);\n\n let extraParameters = {\n fmsID: fmsID ?? '',\n fileName: docRow.file_name,\n folderName: docRow.fms_folder_id\n };\n // TODO: SOLELY DEPENDS ON FMS_ID WHICH IS WRONG => IT SHOULD BE Response.status = 202\n if (fmsID) {\n this._retries = 0;\n await this.updateDocument(docRow, fmsID);\n } else {\n this._retries++;\n Logger.getInstance().logEvent(\n 'uploadDocToServer-empty-fms-id',\n flattenObject(extraParameters),\n LOG_TYPE.SDK_ERROR\n );\n await this.updateDocError(docRow, 'Unexpected Error');\n }\n } catch (error: any) {\n const cta = 'uploadDocToServer-error';\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.ERROR,\n eventName: SentryEventNameSdkConstants.API_ERROR,\n screenName: cta,\n cta: cta,\n extraParams: {\n error: error.message,\n },\n });\n this._retries++;\n Logger.getInstance().logEvent(\n 'uploadDocToServer-sync-error',\n error.message,\n LOG_TYPE.SDK_ERROR\n );\n await this.updateDocError(\n documentRow,\n JSON.stringify({\n message: error.message,\n error: JSON.stringify(error?.response?.data),\n status: error?.response?.status,\n })\n );\n }\n }\n\n public async getAllDocuments(dispatchID?: string): Promise<DocumentRow[]> {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n return this.docManager.getAllDocuments(dispatchID);\n }\n\n public async clearSyncedDocs(dspID: string) {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n if (dspID) await this.docManager.deleteAllSyncedDocuments(dspID);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_DocumentManager","_interopRequireDefault","require","_DocumentHttpClient","_utils","_BaseError","_ErrorCodes","_interopRequireWildcard","_Logger","_NetworkUtil","_ETEventsManager","_constants","_EventsSyncManager","_reactNativeImageMarker","_reactNativeFs","_storage","_reactNative","_SentrySdkConstants","_SentryAnalyticsUtils","_class","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","_defineProperty","key","value","_toPropertyKey","enumerable","configurable","writable","arg","_toPrimitive","String","input","hint","prim","Symbol","toPrimitive","undefined","res","TypeError","Number","latlngToDms","DocumentSyncManager","retries","_retries","constructor","MAX_RETRY_COUNT","init","baseURL","retryCount","isEmptyOrBlank","BaseError","BaseErrorCodes","InvalidBaseURL","maxRetryCount","documentHttpClient","DocumentHttpClient","getInstance","instance","startDocumentSync","inProgress","hasNetwork","NetworkUtil","isAvailableAsync","checkForInitialization","docManager","DocumentManager","documentRows","getUnsyncedDocument","length","uploadDocToServer","cta","fireEventWithScreenName","severityLevel","SeverityLevelValue","LOG","eventName","SentryEventNameSdkConstants","APP_LOG","screenName","extraParams","msg","Logger","logEvent","LOG_TYPE","SDK_ERROR","error","flattenObject","syncPending","isSyncPending","extraParameters","pending","leftDocuments","getAllUnsyncedDocs","insertDocument","fmsFolderID","data","base64","desc","dspID","filePath","fileType","fileName","geoTimeStamp","processedFilePath","priority","arguments","InvalidArgumentError","InvalidArgumentsError","_this$docManager","console","log","insertResponse","forceDocumentSync","updateDocumentWithAttempt","documentRow","fmsID","attempt","sync","markDocumentSyncedWithAttempt","id","eventsManager","ETEventsManager","podId","POD_DOC","markPODDocEventSynced","lastSyncedEventId","Storage","getSharedItem","LAST_SYNCED_EVENT_ID","syncEventId","parseInt","setSharedItem","EventsSyncManager","startSync","err","SDK_WARNING","updateDocumentProcessedPath","origialFilePath","processedPath","updateProcesedFilePath","ERROR","APP_ERROR","updateDocError","uploadError","updateDocSyncError","SyncManagerNotInitialized","processImageData","processed_file_path","extra","fName","file_name","substring","dName","fms_folder_id","dispId","dispatch_id","pFilePath","strGeoStamp","geo_timestamp","objGeoStamp","JSON","parse","dateTime","lat","lng","accuracy","strDMS","strDMSWithAccuracy","fontSize","Platform","OS","options","backgroundImage","src","file_path","scale","watermarkTexts","text","position","Position","topLeft","style","color","fontName","textBackgroundStyle","padding","type","TextBackgroundType","none","quality","filename","saveFormat","ImageFormat","jpg","Marker","markText","completeFilePath","includes","processBase64Data","imagePath","RNFS","TemporaryDirectoryPath","writeFile","processedBase64","splittedDase64Data","split","processPODData","_this$documentHttpCli","docRow","geoStampAvailable","uploadDocument","startSyncAfterMaxRetry","_error$response","_error$response2","API_ERROR","stringify","message","response","status","updateDocPriority","getAllDocuments","dispatchID","clearSyncedDocs","deleteAllSyncedDocuments","exports"],"sources":["DocumentSyncManager.ts"],"sourcesContent":["import type { DocumentRow } from '../DBConfig';\nimport DocumentManager from './DocumentManager';\nimport DocumentHttpClient from './DocumentHttpClient';\nimport { isEmptyOrBlank, flattenObject } from '../../../utils/utils';\nimport { BaseError } from '../../../errors/BaseError';\nimport BaseErrorCodes, {\n InvalidArgumentsError,\n InvalidBaseURL,\n SyncManagerNotInitialized,\n} from '../../../errors/ErrorCodes';\nimport Logger, { LOG_TYPE } from '../../../utils/Logger';\nimport type { SQLResultSet } from 'expo-sqlite';\nimport NetworkUtil from '../../../utils/NetworkUtil';\nimport ETEventsManager from '../events/ETEventsManager';\nimport { LAST_SYNCED_EVENT_ID, MAX_RETRY_COUNT, POD_DOC } from '../../syncmanager/constants';\nimport EventsSyncManager from '../events/EventsSyncManager';\nimport Marker, {\n Position,\n TextBackgroundType,\n ImageFormat,\n} from 'react-native-image-marker';\nimport RNFS from 'react-native-fs';\nimport Storage from '../../../utils/storage';\nimport { Platform } from 'react-native';\nimport { ScreenNameSdkConstants, SentryEventNameSdkConstants, SeverityLevelValue } from '../../../analytics/sentry/SentrySdkConstants';\nimport { fireEventWithScreenName } from '../../../analytics/sentry/SentryAnalyticsUtils';\nconst latlngToDms = require('latlng-to-dms');\n\n\nexport default class DocumentSyncManager {\n private documentHttpClient: DocumentHttpClient | undefined;\n private inProgress: boolean = false;\n private static instance: DocumentSyncManager;\n private docManager: DocumentManager | undefined;\n private maxRetryCount: number = MAX_RETRY_COUNT;\n private _retries = 0;\n get retries(): number {\n return this._retries;\n }\n\n set retries(value: number) {\n this._retries = value;\n }\n\n private constructor() {}\n\n public init(baseURL: string, retryCount: number) {\n if (isEmptyOrBlank(baseURL))\n throw new BaseError(BaseErrorCodes.InvalidBaseURL, InvalidBaseURL);\n this.maxRetryCount = retryCount;\n this.documentHttpClient = new DocumentHttpClient(baseURL);\n }\n\n public static getInstance(): DocumentSyncManager {\n if (!DocumentSyncManager.instance) {\n DocumentSyncManager.instance = new DocumentSyncManager();\n }\n return DocumentSyncManager.instance;\n }\n\n public async startDocumentSync(): Promise<void> {\n if (!this.inProgress && this._retries < this.maxRetryCount) {\n this.inProgress = true;\n const hasNetwork = await NetworkUtil.isAvailableAsync();\n try {\n this.checkForInitialization();\n if (!this.docManager) {\n this.docManager = await DocumentManager.getInstance();\n }\n if (hasNetwork) {\n let documentRows: DocumentRow[] =\n await this.docManager.getUnsyncedDocument();\n if (documentRows?.length > 0) {\n await this.uploadDocToServer(documentRows[0]);\n } else {\n let cta = 'startDocumentSync-NoData'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: {\n msg:'No data to sync'\n },\n });\n Logger.getInstance().logEvent(\n cta,\n 'No data to sync',\n LOG_TYPE.SDK_ERROR\n );\n }\n } else {\n let cta = 'startDocumentSync-NoNetwork'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: {\n msg:'No Network'\n },\n });\n Logger.getInstance().logEvent(\n cta,\n 'No Network',\n LOG_TYPE.SDK_ERROR\n );\n }\n } catch (error: any) {\n let cta = 'startDocumentSync-error'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: {\n msg:flattenObject(error)\n },\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(error),\n LOG_TYPE.SDK_ERROR\n );\n } finally {\n this.inProgress = false;\n let syncPending = await this.isSyncPending();\n if (syncPending && hasNetwork) {\n await this.startDocumentSync();\n }else{\n let cta = 'startDocumentSync-error'\n let extraParameters = {\n hasNetwork: hasNetwork,\n pending: syncPending,\n };\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: {\n msg:flattenObject(extraParameters)\n },\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(extraParameters),\n LOG_TYPE.SDK_ERROR\n );\n }\n }\n } else {\n let cta = 'startDocumentSync'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: {\n msg:'sync already in progress or max count reached'\n },\n });\n Logger.getInstance().logEvent(\n cta,\n 'sync already in progress or max count reached',\n LOG_TYPE.SDK_ERROR\n );\n }\n }\n\n public async isSyncPending(): Promise<boolean> {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n let leftDocuments = await this.docManager.getAllUnsyncedDocs();\n return leftDocuments?.length > 0 && this._retries < this.maxRetryCount;\n }\n\n public async insertDocument(\n fmsFolderID: string | null,\n data: string | null,\n base64: boolean,\n desc: string,\n dspID: string,\n // jobID: string,\n // objRef: string,\n filePath: string | null,\n fileType: string,\n fileName: string,\n geoTimeStamp: string,\n processedFilePath: string,\n priority: number = 1\n ): Promise<SQLResultSet> {\n if (\n isEmptyOrBlank(desc) ||\n isEmptyOrBlank(dspID) ||\n // isEmptyOrBlank(jobID) ||\n // isEmptyOrBlank(objRef) ||\n isEmptyOrBlank(fileType) ||\n isEmptyOrBlank(fileName) ||\n (base64 && isEmptyOrBlank(data)) ||\n (!base64 && isEmptyOrBlank(filePath))\n )\n throw new BaseError(\n BaseErrorCodes.InvalidArgumentError,\n InvalidArgumentsError\n );\n else {\n if (!this.docManager) {\n let cta = 'insertDocument'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: {\n msg:'INIT DOC SYNC AGAIN'\n },\n });\n Logger.getInstance().logEvent(\n cta,\n 'INIT DOC SYNC AGAIN',\n LOG_TYPE.SDK_ERROR\n );\n this.docManager = await DocumentManager.getInstance();\n }\n console.log('insertDocument1:',fmsFolderID);\n let insertResponse = await this.docManager?.insertDocument(\n fmsFolderID,\n desc,\n dspID,\n // jobID,\n // objRef,\n base64,\n fileName,\n fileType,\n data,\n filePath,\n geoTimeStamp,\n processedFilePath,\n priority\n );\n return insertResponse;\n }\n }\n\n public async forceDocumentSync() {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n this._retries = 0;\n await this.startDocumentSync();\n }\n\n // private async updateDocument(documentRow: DocumentRow, fmsID: string) {\n // if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n // try {\n // await this.docManager.markDocumentSynced(documentRow.id, fmsID);\n // let eventsManager = await ETEventsManager.getInstance();\n // let podId = POD_DOC + '_' + documentRow.id;\n // await eventsManager.markPODDocEventSynced(1, 1, podId);\n // EventsSyncManager.getInstance().startSync();\n // } catch (err: any) {\n // Logger.getInstance().logEvent(\n // 'updateDocument',\n // err.message,\n // LOG_TYPE.SDK_WARNING\n // );\n // }\n // }\n\n // This function will update document row with attempt count and sync status\n private async updateDocumentWithAttempt(\n documentRow: DocumentRow,\n fmsID: string,\n attempt: number,\n sync: number\n ) {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n try {\n // Calling document row update method for attempt count and sync.\n await this.docManager.markDocumentSyncedWithAttempt(\n documentRow.id,\n fmsID,\n attempt,\n sync\n );\n let eventsManager = await ETEventsManager.getInstance();\n let podId = POD_DOC + '_' + documentRow.id;\n\n let extraParameters = {\n podId: podId,\n };\n Logger.getInstance().logEvent(\n 'updateDocumentWithAttempt-success',\n flattenObject(extraParameters),\n LOG_TYPE.SDK_ERROR\n );\n // Calling update method for attempt count and sync to update event row of type POD_DOC\n await eventsManager.markPODDocEventSynced(sync, attempt, podId);\n if(sync == 1){\n const lastSyncedEventId = await Storage.getInstance().getSharedItem(\n LAST_SYNCED_EVENT_ID\n );\n const syncEventId = parseInt(lastSyncedEventId) + 1;\n await Storage.getInstance().setSharedItem(\n LAST_SYNCED_EVENT_ID,\n `${syncEventId}`\n );\n }\n EventsSyncManager.getInstance().startSync();\n } catch (err: any) {\n let cta = 'updateDocumentWithAttempt'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: {\n msg:flattenObject(err)\n },\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(err),\n LOG_TYPE.SDK_WARNING\n );\n }\n }\n\n // This function is updating processed_file_path column for the base64 overlayed data and overlayed image file for POD. Also if it is base 64 then it is also storing temprary file path in file_path as original bae64 image.\n private async updateDocumentProcessedPath(\n documentRow: DocumentRow,\n origialFilePath: String,\n processedPath: String\n ) {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n try {\n await this.docManager.updateProcesedFilePath(\n documentRow.id,\n origialFilePath,\n processedPath\n );\n } catch (err: any) {\n let cta = 'updateDocument-updateDocumentProcessedPath'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.ERROR,\n eventName: SentryEventNameSdkConstants.APP_ERROR,\n screenName: cta,\n cta: cta,\n extraParams: {\n msg:flattenObject(err)\n },\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(err),\n LOG_TYPE.SDK_WARNING\n );\n }\n }\n\n private async updateDocError(documentRow: DocumentRow, uploadError: string) {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n try {\n await this.docManager.updateDocSyncError(documentRow.id, uploadError);\n } catch (err: any) {\n let cta = 'updateDocError'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.ERROR,\n eventName: SentryEventNameSdkConstants.APP_ERROR,\n screenName: cta,\n cta: cta,\n extraParams: {\n msg:flattenObject(err)\n },\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(err),\n LOG_TYPE.SDK_WARNING\n );\n }\n }\n private checkForInitialization() {\n if (!this.documentHttpClient) {\n throw new BaseError(\n BaseErrorCodes.SyncManagerNotInitialized,\n SyncManagerNotInitialized\n );\n }\n }\n\n // This function will generate overlay image and update documents table for processed_file_path columns with overlayed image path.\n private async processImageData(documentRow: DocumentRow) {\n // If processed_file_path of overlayed image already existing then do not generate it again.\n if (\n documentRow.processed_file_path === null ||\n documentRow.processed_file_path === ''\n ) {\n let cta = 'processImageData-started';\n let extra = {\n msg: 'processImageData-started',\n fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4): '',\n dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4): '',\n dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9): ''\n };\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: extra,\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(extra),\n LOG_TYPE.SDK_ERROR\n );\n let pFilePath = 'processed_' + documentRow.file_name; // File name for processed file.\n let strGeoStamp = documentRow.geo_timestamp; // Saved geostamp string\n let objGeoStamp = JSON.parse(strGeoStamp); // Conversion to geostamp object\n let dateTime = objGeoStamp.dateTime; // Date time stamp in UTC format\n let lat = objGeoStamp.lat; // Latitide\n let lng = objGeoStamp.lng; // Longitude\n let accuracy = objGeoStamp.accuracy; // Location accuracy\n let strDMS = latlngToDms(`${lat}, ${lng}`); // Location in degree format\n let strDMSWithAccuracy = strDMS; \n if (accuracy !== '') {\n strDMSWithAccuracy = strDMS + ' (Accuracy: ' + accuracy + 'm)'; // Appedning accuracy in location \n }\n let fontSize = 14;\n if (Platform.OS !== 'android') {\n fontSize = 28;\n }\n const options = {\n backgroundImage: { // Image for overlay\n src: documentRow.file_path,\n scale: 1,\n },\n watermarkTexts: [ \n {\n text: `${dateTime}\\n${strDMSWithAccuracy}`, //Overlay text\n position: {\n position: Position.topLeft, // Overlay text position\n },\n style: { // Style for overlay\n color: '#ffffff',\n fontSize: fontSize,\n fontName: 'Arial',\n textBackgroundStyle: {\n padding: '1% 1%',\n type: TextBackgroundType.none,\n color: '#444444CC',\n },\n },\n },\n ],\n scale: 0,\n quality: 100, \n filename: pFilePath,\n saveFormat: ImageFormat.jpg, // Saving in jpeg format\n };\n let processedFilePath = await Marker.markText(options); // Generating overlay image\n if (processedFilePath !== null && processedFilePath !== '') {\n let completeFilePath = processedFilePath;\n // If processd image file path does not have prefix file:// then we are addding manually\n if (!processedFilePath.includes('file')) {\n completeFilePath = 'file://' + processedFilePath;\n }\n // Updating document document table with overlayed image path\n this.updateDocumentProcessedPath(\n documentRow,\n documentRow.file_path, //original file path catprued from camera\n completeFilePath // completeFilePath is the path with file:// of processed file \n );\n documentRow.processed_file_path = completeFilePath; \n }\n }\n let cta = 'processImageData-completed';\n let extra = {\n msg: 'processImageData-completed',\n fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4): '',\n dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4): '',\n dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9): ''\n };\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: extra,\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(extra),\n LOG_TYPE.SDK_ERROR\n );\n return documentRow;\n }\n\n // This function will generate overlay base64 data and update documents table for processed_file_path columns with overlayed base64 data.\n private async processBase64Data(documentRow: DocumentRow) {\n // If base64 overlayed data already existing then do not generate it again.\n if (\n documentRow.processed_file_path === null ||\n documentRow.processed_file_path === ''\n ) {\n let cta = 'processBase64Data-started';\n let extra = {\n msg: 'processBase64Data-started',\n fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4): '',\n dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4): '',\n dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9): ''\n };\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: extra,\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(extra),\n LOG_TYPE.SDK_ERROR\n );\n let filePath = '';\n // If templrary base 64 file already exist then do not create again\n if (documentRow.file_path === null || documentRow.file_path === '') {\n const imagePath = `${RNFS.TemporaryDirectoryPath}/${documentRow.file_name}`;\n await RNFS.writeFile(imagePath, documentRow.data, 'base64'); // Write file to temprary location\n filePath = imagePath;\n // If file generated frommbase64 data does not have file:// then we are adding manually.\n if (!imagePath.includes('file')) {\n filePath = `file://${imagePath}`;\n }\n documentRow.file_path = filePath;\n } else {\n filePath = documentRow.file_path;\n }\n let pFilePath = 'processed_' + documentRow.file_name; // File name for processed file.\n let strGeoStamp = documentRow.geo_timestamp; // Saved geostamp string\n let objGeoStamp = JSON.parse(strGeoStamp); // Conversion to geostamp object\n let dateTime = objGeoStamp.dateTime; // Date time stamp in UTC format\n let lat = objGeoStamp.lat; // Latitide\n let lng = objGeoStamp.lng; // Longitude\n let accuracy = objGeoStamp.accuracy; // Location accuracy\n let strDMS = latlngToDms(`${lat}, ${lng}`); // Location in degree format\n let strDMSWithAccuracy = strDMS; \n if (accuracy !== '') {\n strDMSWithAccuracy = strDMS + ' (Accuracy: ' + accuracy + 'm)'; // Appedning accuracy in location \n }\n const options = {\n backgroundImage: {\n src: filePath, // Image for overlay\n scale: 1,\n },\n watermarkTexts: [\n {\n text: `${dateTime}\\n${strDMSWithAccuracy}`, // Ooverlay text\n position: {\n position: Position.topLeft, // Overlay text position\n },\n style: { // Style for overlay\n color: '#ffffff',\n fontSize: 14,\n fontName: 'Arial',\n textBackgroundStyle: {\n padding: '1% 1%',\n type: TextBackgroundType.none,\n color: '#444444CC',\n },\n },\n },\n ],\n scale: 1,\n quality: 100,\n filename: pFilePath,\n saveFormat: ImageFormat.base64, // Saving in base6 format\n };\n let processedBase64 = await Marker.markText(options); // Generating overlay image\n if (processedBase64 !== null && processedBase64 !== '') {\n // Fetching base64 data from processed data.\n var splittedDase64Data = processedBase64.split(\n 'data:image/png;base64,'\n );\n // Updating document document table with overlayed base64 data\n await this.updateDocumentProcessedPath(\n documentRow,\n filePath,\n splittedDase64Data[1]\n );\n documentRow.processed_file_path = splittedDase64Data[1];\n }\n }\n let cta = 'processBase64Data-completed';\n let extra = {\n msg: 'processBase64Data-completed',\n fName: documentRow.file_name && documentRow.file_name.length != 0 ? documentRow.file_name.substring(4): '',\n dName: documentRow.fms_folder_id && documentRow.fms_folder_id.length != 0 ? documentRow.fms_folder_id.substring(4): '',\n dispId: documentRow.dispatch_id && documentRow.dispatch_id.length != 0 ? documentRow.dispatch_id.substring(9): ''\n };\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: extra,\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(extra),\n LOG_TYPE.SDK_ERROR\n );\n return documentRow;\n }\n\n // This function will calling respective overlay method for base64 (for signature POD) or image (for image POD).\n private async processPODData(documentRow: DocumentRow) {\n if (documentRow.base64 && documentRow.data != null) {\n return await this.processBase64Data(documentRow);\n } else {\n return await this.processImageData(documentRow);\n }\n }\n\n private async uploadDocToServer(documentRow: DocumentRow) {\n try {\n let docRow = documentRow;\n let cta = 'uploadDocToServer-geoStamp';\n let geoStampAvailable = false\n if(documentRow.geo_timestamp && documentRow.geo_timestamp.length != 0){\n geoStampAvailable = true;\n docRow = await this.processPODData(documentRow);\n }\n let extra = {\n msg: geoStampAvailable ? \"geoStamp availale\" : 'geoStamp not availale',\n fName: docRow.file_name && docRow.file_name.length != 0 ? docRow.file_name.substring(4): '',\n dName: docRow.fms_folder_id && docRow.fms_folder_id.length != 0 ? docRow.fms_folder_id.substring(4): '',\n dispId: docRow.dispatch_id && docRow.dispatch_id.length != 0 ? docRow.dispatch_id.substring(9): ''\n };\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: extra,\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(extra),\n LOG_TYPE.SDK_ERROR\n );\n console.log('uploadDocToServer999:', docRow);\n let fmsID = await this.documentHttpClient?.uploadDocument(docRow);\n\n let extraParameters = {\n fmsID: fmsID ?? '',\n fName: docRow.file_name && docRow.file_name.length != 0 ? docRow.file_name.substring(4): '',\n dName: docRow.fms_folder_id && docRow.fms_folder_id.length != 0 ? docRow.fms_folder_id.substring(4): '',\n dispId: docRow.dispatch_id && docRow.dispatch_id.length != 0 ? docRow.dispatch_id.substring(9): ''\n };\n // TODO: SOLELY DEPENDS ON FMS_ID WHICH IS WRONG => IT SHOULD BE Response.status = 202\n if (fmsID) {\n // Calling function updating document row along with attempt count and sync as true.\n await this.updateDocumentWithAttempt(\n documentRow,\n fmsID,\n this._retries + 1,\n 1\n );\n this._retries = 0;\n // await this.updateDocument(docRow, fmsID);\n } else {\n // Calling function updating document row withalong attempt count and sync as false.\n await this.updateDocumentWithAttempt(\n documentRow,\n '',\n this._retries + 1,\n 0\n );\n this._retries++;\n let cta = 'uploadDocToServer-empty-fms-id'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: extraParameters,\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(extraParameters),\n LOG_TYPE.SDK_ERROR\n );\n this.startSyncAfterMaxRetry(extraParameters, null);\n await this.updateDocError(docRow, 'Unexpected Error');\n }\n } catch (error: any) {\n // Calling function updating document row withalong attempt count and sync as false.\n await this.updateDocumentWithAttempt(\n documentRow,\n '',\n this._retries + 1,\n 0\n );\n const cta = 'uploadDocToServer-error';\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.ERROR,\n eventName: SentryEventNameSdkConstants.API_ERROR,\n screenName: cta,\n cta: cta,\n extraParams: {\n error: flattenObject(error),\n },\n });\n Logger.getInstance().logEvent(\n cta,\n flattenObject(error),\n LOG_TYPE.SDK_ERROR\n );\n this._retries++;\n this.startSyncAfterMaxRetry(null, error);\n await this.updateDocError(\n documentRow,\n JSON.stringify({\n message: error.message,\n error: JSON.stringify(error?.response?.data),\n status: error?.response?.status,\n })\n );\n }\n }\n\n private async startSyncAfterMaxRetry(extraParameters:any, error:any){\n if(this.retries >= this.maxRetryCount){\n let cta = 'startSyncAfterMaxRetry-max-retry-reached'\n fireEventWithScreenName({\n severityLevel: SeverityLevelValue.LOG,\n eventName: SentryEventNameSdkConstants.APP_LOG,\n screenName: cta,\n cta: cta,\n extraParams: extraParameters ? extraParameters : error,\n });\n Logger.getInstance().logEvent(\n cta,\n extraParameters ? flattenObject(extraParameters) : error,\n LOG_TYPE.SDK_ERROR\n );\n if (!this.docManager) {\n this.docManager = await DocumentManager.getInstance();\n }\n let documentRows: DocumentRow[] =\n await this.docManager.getUnsyncedDocument();\n if (documentRows?.length > 0) {\n await this.docManager.updateDocPriority(documentRows[0].id, documentRows[0].priority + 1);\n this._retries = 0;\n this.startDocumentSync();\n }\n }\n }\n\n public async getAllDocuments(dispatchID?: string): Promise<DocumentRow[]> {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n return this.docManager.getAllDocuments(dispatchID);\n }\n\n public async clearSyncedDocs(dspID: string) {\n if (!this.docManager) this.docManager = await DocumentManager.getInstance();\n if (dspID) await this.docManager.deleteAllSyncedDocuments(dspID);\n }\n}\n"],"mappings":"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"}