taxtank-core 0.28.67 → 0.28.68

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.
@@ -15,11 +15,11 @@ import first from 'lodash/first';
15
15
  import last from 'lodash/last';
16
16
  import uniqBy from 'lodash/uniqBy';
17
17
  import concat from 'lodash/concat';
18
- import { throwError as throwError$1 } from 'rxjs/internal/observable/throwError';
19
18
  import { __decorate, __awaiter } from 'tslib';
20
19
  import * as moment$1 from 'moment';
21
20
  import { DateRange, extendMoment } from 'moment-range';
22
21
  import cloneDeep$1 from 'lodash/cloneDeep';
22
+ import { throwError as throwError$1 } from 'rxjs/internal/observable/throwError';
23
23
  import { EventSourcePolyfill } from 'event-source-polyfill/src/eventsource.min.js';
24
24
  import compact from 'lodash/compact';
25
25
  import differenceBy from 'lodash/differenceBy';
@@ -207,64 +207,65 @@ var AppEventTypeEnum;
207
207
  AppEventTypeEnum[AppEventTypeEnum["BASIQ_CONSENT_UPDATED"] = 7] = "BASIQ_CONSENT_UPDATED";
208
208
  AppEventTypeEnum[AppEventTypeEnum["BASIQ_CONNECTION_UPDATED"] = 8] = "BASIQ_CONNECTION_UPDATED";
209
209
  AppEventTypeEnum[AppEventTypeEnum["BASIQ_JOB_CREATED"] = 9] = "BASIQ_JOB_CREATED";
210
- AppEventTypeEnum[AppEventTypeEnum["BASIQ_LOGIN_FINISHED"] = 10] = "BASIQ_LOGIN_FINISHED";
211
- AppEventTypeEnum[AppEventTypeEnum["CLIENT_INVITE_ACCEPTED"] = 11] = "CLIENT_INVITE_ACCEPTED";
212
- AppEventTypeEnum[AppEventTypeEnum["CLIENT_OPEN_CHAT"] = 12] = "CLIENT_OPEN_CHAT";
213
- AppEventTypeEnum[AppEventTypeEnum["CLIENT_TRANSFER_TO_OTHER_EMPLOYEE"] = 13] = "CLIENT_TRANSFER_TO_OTHER_EMPLOYEE";
214
- AppEventTypeEnum[AppEventTypeEnum["CURRENT_USER_GET_FAILED"] = 14] = "CURRENT_USER_GET_FAILED";
215
- AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_DELETED"] = 15] = "DEPRECIATION_DELETED";
216
- AppEventTypeEnum[AppEventTypeEnum["DEPRECIATIONS_CREATED"] = 16] = "DEPRECIATIONS_CREATED";
217
- AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_UPDATED_WITH_RECEIPT"] = 17] = "DEPRECIATION_UPDATED_WITH_RECEIPT";
218
- AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_UPDATED_WITH_DELETED_RECEIPT"] = 18] = "DEPRECIATION_UPDATED_WITH_DELETED_RECEIPT";
219
- AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_RECEIPT_CREATED"] = 19] = "DEPRECIATION_RECEIPT_CREATED";
220
- AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_RECEIPT_DELETED"] = 20] = "DEPRECIATION_RECEIPT_DELETED";
221
- AppEventTypeEnum[AppEventTypeEnum["INCOME_SOURCES_CREATED"] = 21] = "INCOME_SOURCES_CREATED";
222
- AppEventTypeEnum[AppEventTypeEnum["INCOME_SOURCES_UPDATED"] = 22] = "INCOME_SOURCES_UPDATED";
223
- AppEventTypeEnum[AppEventTypeEnum["INCOME_SOURCES_FORECASTS_CREATED"] = 23] = "INCOME_SOURCES_FORECASTS_CREATED";
224
- AppEventTypeEnum[AppEventTypeEnum["INCOME_SOURCES_FORECASTS_UPDATED"] = 24] = "INCOME_SOURCES_FORECASTS_UPDATED";
225
- AppEventTypeEnum[AppEventTypeEnum["LOAN_UPDATED"] = 25] = "LOAN_UPDATED";
226
- AppEventTypeEnum[AppEventTypeEnum["LOAN_PAYOUT_UPDATED"] = 26] = "LOAN_PAYOUT_UPDATED";
227
- AppEventTypeEnum[AppEventTypeEnum["MESSAGE_CREATED"] = 27] = "MESSAGE_CREATED";
228
- AppEventTypeEnum[AppEventTypeEnum["MESSAGE_FILE_CREATED"] = 28] = "MESSAGE_FILE_CREATED";
229
- AppEventTypeEnum[AppEventTypeEnum["MESSAGE_FILE_DELETED"] = 29] = "MESSAGE_FILE_DELETED";
230
- AppEventTypeEnum[AppEventTypeEnum["NOTIFICATION_ADDED"] = 30] = "NOTIFICATION_ADDED";
231
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_DEPRECIATION_CALCULATION_UPDATED"] = 31] = "PROPERTY_DEPRECIATION_CALCULATION_UPDATED";
232
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_UPDATED"] = 32] = "PROPERTY_UPDATED";
233
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_UPDATED_WITH_DOCUMENT"] = 33] = "PROPERTY_UPDATED_WITH_DOCUMENT";
234
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_DOCUMENT_ADDED"] = 34] = "PROPERTY_DOCUMENT_ADDED";
235
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_MOVEMENT_CREATED"] = 35] = "PROPERTY_MOVEMENT_CREATED";
236
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_MOVEMENT_UPDATED"] = 36] = "PROPERTY_MOVEMENT_UPDATED";
237
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_MOVEMENT_DELETED"] = 37] = "PROPERTY_MOVEMENT_DELETED";
238
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SHARE_UPDATED"] = 38] = "PROPERTY_SHARE_UPDATED";
239
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SALE_ADDED"] = 39] = "PROPERTY_SALE_ADDED";
240
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SALE_DELETED"] = 40] = "PROPERTY_SALE_DELETED";
241
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SUBSCRIPTION_ADDED"] = 41] = "PROPERTY_SUBSCRIPTION_ADDED";
242
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SUBSCRIPTION_DELETED"] = 42] = "PROPERTY_SUBSCRIPTION_DELETED";
243
- AppEventTypeEnum[AppEventTypeEnum["PROPERTY_VALUATION_DOCUMENT_CREATED"] = 43] = "PROPERTY_VALUATION_DOCUMENT_CREATED";
244
- AppEventTypeEnum[AppEventTypeEnum["SERVICE_SUBSCRIPTION_UPDATED"] = 44] = "SERVICE_SUBSCRIPTION_UPDATED";
245
- AppEventTypeEnum[AppEventTypeEnum["SOLE_BUSINESS_CREATED"] = 45] = "SOLE_BUSINESS_CREATED";
246
- AppEventTypeEnum[AppEventTypeEnum["SOLE_DEPRECIATION_METHOD_UPDATED"] = 46] = "SOLE_DEPRECIATION_METHOD_UPDATED";
247
- AppEventTypeEnum[AppEventTypeEnum["SOLE_DETAILS_CREATED"] = 47] = "SOLE_DETAILS_CREATED";
248
- AppEventTypeEnum[AppEventTypeEnum["SOLE_DETAILS_UPDATED"] = 48] = "SOLE_DETAILS_UPDATED";
249
- AppEventTypeEnum[AppEventTypeEnum["SOLE_INVOICE_PUBLISHED"] = 49] = "SOLE_INVOICE_PUBLISHED";
250
- AppEventTypeEnum[AppEventTypeEnum["TAX_REVIEW_UPDATED"] = 50] = "TAX_REVIEW_UPDATED";
251
- AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_CREATED"] = 51] = "TRANSACTION_CREATED";
252
- AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_DELETED"] = 52] = "TRANSACTION_DELETED";
253
- AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_UPDATED"] = 53] = "TRANSACTION_UPDATED";
254
- AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_UPDATED_WITH_RECEIPT"] = 54] = "TRANSACTION_UPDATED_WITH_RECEIPT";
255
- AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_UPDATED_WITH_DELETED_RECEIPT"] = 55] = "TRANSACTION_UPDATED_WITH_DELETED_RECEIPT";
256
- AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_RECEIPT_CREATED"] = 56] = "TRANSACTION_RECEIPT_CREATED";
257
- AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_RECEIPT_DELETED"] = 57] = "TRANSACTION_RECEIPT_DELETED";
258
- AppEventTypeEnum[AppEventTypeEnum["TRANSACTIONS_CREATED"] = 58] = "TRANSACTIONS_CREATED";
259
- AppEventTypeEnum[AppEventTypeEnum["USER_UPDATED"] = 59] = "USER_UPDATED";
260
- AppEventTypeEnum[AppEventTypeEnum["VEHICLE_CLAIM_UPDATED"] = 60] = "VEHICLE_CLAIM_UPDATED";
261
- AppEventTypeEnum[AppEventTypeEnum["VEHICLE_CLAIM_CREATED"] = 61] = "VEHICLE_CLAIM_CREATED";
262
- AppEventTypeEnum[AppEventTypeEnum["VEHICLE_CLAIM_DETAILS_UPDATED"] = 62] = "VEHICLE_CLAIM_DETAILS_UPDATED";
263
- AppEventTypeEnum[AppEventTypeEnum["VEHICLE_CLAIM_DETAILS_CREATED"] = 63] = "VEHICLE_CLAIM_DETAILS_CREATED";
264
- AppEventTypeEnum[AppEventTypeEnum["VEHICLE_LOGBOOK_CREATED"] = 64] = "VEHICLE_LOGBOOK_CREATED";
265
- AppEventTypeEnum[AppEventTypeEnum["VEHICLE_LOGBOOK_UPDATED"] = 65] = "VEHICLE_LOGBOOK_UPDATED";
266
- AppEventTypeEnum[AppEventTypeEnum["VEHICLE_LOGBOOK_DELETED"] = 66] = "VEHICLE_LOGBOOK_DELETED";
267
- AppEventTypeEnum[AppEventTypeEnum["VEHICLE_LOGBOOK_BEST_PERIOD_UPDATED"] = 67] = "VEHICLE_LOGBOOK_BEST_PERIOD_UPDATED";
210
+ AppEventTypeEnum[AppEventTypeEnum["BASIQ_LOGIN_SUCCESS"] = 10] = "BASIQ_LOGIN_SUCCESS";
211
+ AppEventTypeEnum[AppEventTypeEnum["BASIQ_LOGIN_FAILED"] = 11] = "BASIQ_LOGIN_FAILED";
212
+ AppEventTypeEnum[AppEventTypeEnum["CLIENT_INVITE_ACCEPTED"] = 12] = "CLIENT_INVITE_ACCEPTED";
213
+ AppEventTypeEnum[AppEventTypeEnum["CLIENT_OPEN_CHAT"] = 13] = "CLIENT_OPEN_CHAT";
214
+ AppEventTypeEnum[AppEventTypeEnum["CLIENT_TRANSFER_TO_OTHER_EMPLOYEE"] = 14] = "CLIENT_TRANSFER_TO_OTHER_EMPLOYEE";
215
+ AppEventTypeEnum[AppEventTypeEnum["CURRENT_USER_GET_FAILED"] = 15] = "CURRENT_USER_GET_FAILED";
216
+ AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_DELETED"] = 16] = "DEPRECIATION_DELETED";
217
+ AppEventTypeEnum[AppEventTypeEnum["DEPRECIATIONS_CREATED"] = 17] = "DEPRECIATIONS_CREATED";
218
+ AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_UPDATED_WITH_RECEIPT"] = 18] = "DEPRECIATION_UPDATED_WITH_RECEIPT";
219
+ AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_UPDATED_WITH_DELETED_RECEIPT"] = 19] = "DEPRECIATION_UPDATED_WITH_DELETED_RECEIPT";
220
+ AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_RECEIPT_CREATED"] = 20] = "DEPRECIATION_RECEIPT_CREATED";
221
+ AppEventTypeEnum[AppEventTypeEnum["DEPRECIATION_RECEIPT_DELETED"] = 21] = "DEPRECIATION_RECEIPT_DELETED";
222
+ AppEventTypeEnum[AppEventTypeEnum["INCOME_SOURCES_CREATED"] = 22] = "INCOME_SOURCES_CREATED";
223
+ AppEventTypeEnum[AppEventTypeEnum["INCOME_SOURCES_UPDATED"] = 23] = "INCOME_SOURCES_UPDATED";
224
+ AppEventTypeEnum[AppEventTypeEnum["INCOME_SOURCES_FORECASTS_CREATED"] = 24] = "INCOME_SOURCES_FORECASTS_CREATED";
225
+ AppEventTypeEnum[AppEventTypeEnum["INCOME_SOURCES_FORECASTS_UPDATED"] = 25] = "INCOME_SOURCES_FORECASTS_UPDATED";
226
+ AppEventTypeEnum[AppEventTypeEnum["LOAN_UPDATED"] = 26] = "LOAN_UPDATED";
227
+ AppEventTypeEnum[AppEventTypeEnum["LOAN_PAYOUT_UPDATED"] = 27] = "LOAN_PAYOUT_UPDATED";
228
+ AppEventTypeEnum[AppEventTypeEnum["MESSAGE_CREATED"] = 28] = "MESSAGE_CREATED";
229
+ AppEventTypeEnum[AppEventTypeEnum["MESSAGE_FILE_CREATED"] = 29] = "MESSAGE_FILE_CREATED";
230
+ AppEventTypeEnum[AppEventTypeEnum["MESSAGE_FILE_DELETED"] = 30] = "MESSAGE_FILE_DELETED";
231
+ AppEventTypeEnum[AppEventTypeEnum["NOTIFICATION_ADDED"] = 31] = "NOTIFICATION_ADDED";
232
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_DEPRECIATION_CALCULATION_UPDATED"] = 32] = "PROPERTY_DEPRECIATION_CALCULATION_UPDATED";
233
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_UPDATED"] = 33] = "PROPERTY_UPDATED";
234
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_UPDATED_WITH_DOCUMENT"] = 34] = "PROPERTY_UPDATED_WITH_DOCUMENT";
235
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_DOCUMENT_ADDED"] = 35] = "PROPERTY_DOCUMENT_ADDED";
236
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_MOVEMENT_CREATED"] = 36] = "PROPERTY_MOVEMENT_CREATED";
237
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_MOVEMENT_UPDATED"] = 37] = "PROPERTY_MOVEMENT_UPDATED";
238
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_MOVEMENT_DELETED"] = 38] = "PROPERTY_MOVEMENT_DELETED";
239
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SHARE_UPDATED"] = 39] = "PROPERTY_SHARE_UPDATED";
240
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SALE_ADDED"] = 40] = "PROPERTY_SALE_ADDED";
241
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SALE_DELETED"] = 41] = "PROPERTY_SALE_DELETED";
242
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SUBSCRIPTION_ADDED"] = 42] = "PROPERTY_SUBSCRIPTION_ADDED";
243
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_SUBSCRIPTION_DELETED"] = 43] = "PROPERTY_SUBSCRIPTION_DELETED";
244
+ AppEventTypeEnum[AppEventTypeEnum["PROPERTY_VALUATION_DOCUMENT_CREATED"] = 44] = "PROPERTY_VALUATION_DOCUMENT_CREATED";
245
+ AppEventTypeEnum[AppEventTypeEnum["SERVICE_SUBSCRIPTION_UPDATED"] = 45] = "SERVICE_SUBSCRIPTION_UPDATED";
246
+ AppEventTypeEnum[AppEventTypeEnum["SOLE_BUSINESS_CREATED"] = 46] = "SOLE_BUSINESS_CREATED";
247
+ AppEventTypeEnum[AppEventTypeEnum["SOLE_DEPRECIATION_METHOD_UPDATED"] = 47] = "SOLE_DEPRECIATION_METHOD_UPDATED";
248
+ AppEventTypeEnum[AppEventTypeEnum["SOLE_DETAILS_CREATED"] = 48] = "SOLE_DETAILS_CREATED";
249
+ AppEventTypeEnum[AppEventTypeEnum["SOLE_DETAILS_UPDATED"] = 49] = "SOLE_DETAILS_UPDATED";
250
+ AppEventTypeEnum[AppEventTypeEnum["SOLE_INVOICE_PUBLISHED"] = 50] = "SOLE_INVOICE_PUBLISHED";
251
+ AppEventTypeEnum[AppEventTypeEnum["TAX_REVIEW_UPDATED"] = 51] = "TAX_REVIEW_UPDATED";
252
+ AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_CREATED"] = 52] = "TRANSACTION_CREATED";
253
+ AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_DELETED"] = 53] = "TRANSACTION_DELETED";
254
+ AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_UPDATED"] = 54] = "TRANSACTION_UPDATED";
255
+ AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_UPDATED_WITH_RECEIPT"] = 55] = "TRANSACTION_UPDATED_WITH_RECEIPT";
256
+ AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_UPDATED_WITH_DELETED_RECEIPT"] = 56] = "TRANSACTION_UPDATED_WITH_DELETED_RECEIPT";
257
+ AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_RECEIPT_CREATED"] = 57] = "TRANSACTION_RECEIPT_CREATED";
258
+ AppEventTypeEnum[AppEventTypeEnum["TRANSACTION_RECEIPT_DELETED"] = 58] = "TRANSACTION_RECEIPT_DELETED";
259
+ AppEventTypeEnum[AppEventTypeEnum["TRANSACTIONS_CREATED"] = 59] = "TRANSACTIONS_CREATED";
260
+ AppEventTypeEnum[AppEventTypeEnum["USER_UPDATED"] = 60] = "USER_UPDATED";
261
+ AppEventTypeEnum[AppEventTypeEnum["VEHICLE_CLAIM_UPDATED"] = 61] = "VEHICLE_CLAIM_UPDATED";
262
+ AppEventTypeEnum[AppEventTypeEnum["VEHICLE_CLAIM_CREATED"] = 62] = "VEHICLE_CLAIM_CREATED";
263
+ AppEventTypeEnum[AppEventTypeEnum["VEHICLE_CLAIM_DETAILS_UPDATED"] = 63] = "VEHICLE_CLAIM_DETAILS_UPDATED";
264
+ AppEventTypeEnum[AppEventTypeEnum["VEHICLE_CLAIM_DETAILS_CREATED"] = 64] = "VEHICLE_CLAIM_DETAILS_CREATED";
265
+ AppEventTypeEnum[AppEventTypeEnum["VEHICLE_LOGBOOK_CREATED"] = 65] = "VEHICLE_LOGBOOK_CREATED";
266
+ AppEventTypeEnum[AppEventTypeEnum["VEHICLE_LOGBOOK_UPDATED"] = 66] = "VEHICLE_LOGBOOK_UPDATED";
267
+ AppEventTypeEnum[AppEventTypeEnum["VEHICLE_LOGBOOK_DELETED"] = 67] = "VEHICLE_LOGBOOK_DELETED";
268
+ AppEventTypeEnum[AppEventTypeEnum["VEHICLE_LOGBOOK_BEST_PERIOD_UPDATED"] = 68] = "VEHICLE_LOGBOOK_BEST_PERIOD_UPDATED";
268
269
  })(AppEventTypeEnum || (AppEventTypeEnum = {}));
269
270
 
270
271
  class EventDispatcherService {
@@ -5232,8 +5233,18 @@ class BankConnectionService extends RestService {
5232
5233
  this.cacheSubject.next(cloneDeep$1(this.cache));
5233
5234
  }
5234
5235
  }
5235
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_CONNECTION_ADDED, null));
5236
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BANK_CONNECTION_ADDED, connection));
5236
5237
  return plainToClass(BankConnection, connection);
5238
+ }), catchError((error) => {
5239
+ // Show error when user provided wrong login data
5240
+ if (error.status === 401) {
5241
+ this.toastService.error('Invalid credentials');
5242
+ }
5243
+ // Show error when user provided another login (not login he used before)
5244
+ if (error.status === 400) {
5245
+ this.toastService.error('Please enter the login you used before');
5246
+ }
5247
+ return throwError$1(error);
5237
5248
  }));
5238
5249
  }
5239
5250
  listenToAddedBankAccounts() {
@@ -5256,9 +5267,18 @@ class BankConnectionService extends RestService {
5256
5267
  }
5257
5268
  });
5258
5269
  }
5270
+ /**
5271
+ * Create/reconnect bank connection when user successfully logged in to basiq
5272
+ */
5259
5273
  listenBasiqLogin() {
5260
- this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_LOGIN_FINISHED).subscribe(() => {
5261
- this.resetCache();
5274
+ this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_LOGIN_SUCCESS).subscribe((data) => {
5275
+ this.add(plainToClass(BankConnection, { id: data.connectionId, basiqJob: { externalId: data.jobId } }))
5276
+ .subscribe(() => { },
5277
+ // When user already has some bank accounts in handling connection and trying to login with different credentials, backend can not save this connection.
5278
+ // So we should handle this case as failed login
5279
+ () => {
5280
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_LOGIN_FAILED, null));
5281
+ });
5262
5282
  });
5263
5283
  }
5264
5284
  }
@@ -5280,7 +5300,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
5280
5300
  * service is responsible for fetching bank related information
5281
5301
  */
5282
5302
  class BasiqService extends RestService {
5283
- constructor(http, eventDispatcherService, environment, toastService, bankConnectionService) {
5303
+ constructor(http, eventDispatcherService, environment, toastService,
5304
+ // this inject required to init bank connection service and listen basiq login event
5305
+ bankConnectionService) {
5284
5306
  super(http, eventDispatcherService, environment, toastService);
5285
5307
  this.http = http;
5286
5308
  this.eventDispatcherService = eventDispatcherService;
@@ -5295,56 +5317,24 @@ class BasiqService extends RestService {
5295
5317
  */
5296
5318
  listenEvents() {
5297
5319
  this.listenNotifications();
5298
- this.listenJobs();
5320
+ this.listenJobCreated();
5299
5321
  }
5300
5322
  /**
5301
- * Create a new Bank connection based on Basiq job.
5302
- * Here we have nested requests because we need to get a job id before we create a bank connection.
5303
- * There is no way to use event dispatcher because we expect some errors from bank-connections API, but in components
5304
- * we interact with basiq service.
5323
+ * Start basiq login process.
5324
+ * Create a basiq job, which contain credentials verifying status.
5325
+ * We can not see login result immediately, because it may take some time (average 10-20 sec)
5305
5326
  */
5306
- createConnection(loginData, userId) {
5307
- // Send login data to basiq API to create a basiq job
5308
- return this.http.post(`${BasiqService.basiqApiUrl}/users/${userId}/connections`, loginData)
5309
- .pipe(mergeMap((response) => {
5310
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_JOB_CREATED, response.id));
5311
- // Create bank connection based on basiq job
5312
- return this.bankConnectionService.add(plainToClass(BankConnection, { basiqJob: { externalId: response.id } }));
5313
- }), catchError((error) => {
5314
- // Show error when user provided wrong login data
5315
- if (error.status === 401) {
5316
- this.toastService.error('Invalid credentials');
5317
- }
5318
- return throwError$1(error);
5319
- }));
5320
- }
5321
- /**
5322
- * Update disconnected bank connection
5323
- * Here we have nested requests because we need to get a job id before we create a bank connection.
5324
- * There is no way to use event dispatcher because we expect some errors from bank-connections API, but in components
5325
- * we interact with basiq service.
5326
- */
5327
- updateConnection(data, userId, connection) {
5328
- // Send login data and connection id to basiq API to create a basiq job
5329
- return this.http.post(`${BasiqService.basiqApiUrl}/users/${userId}/connections`, Object.assign(data, { id: connection.externalId }))
5330
- .pipe(mergeMap((response) => {
5331
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_JOB_CREATED, response.id));
5332
- // Create bank connection based on basiq job
5333
- return this.bankConnectionService.add(plainToClass(BankConnection, {
5334
- id: connection.id,
5335
- basiqJob: { externalId: response.id }
5336
- }));
5337
- }), catchError((error) => {
5338
- // Show error when user provided wrong login data
5339
- if (error.status === 401) {
5340
- this.toastService.error('Invalid credentials');
5341
- }
5342
- // Show error when user provided another login (not login he used before)
5343
- if (error.status === 400) {
5344
- this.toastService.error('Please enter the login you used before');
5345
- }
5346
- return throwError$1(error);
5347
- }));
5327
+ login(loginData, userId) {
5328
+ this.http.post(`${BasiqService.basiqApiUrl}/users/${userId}/connections`, loginData)
5329
+ .subscribe((response) => {
5330
+ // we need jobId to check credentials verifying statis from Basiq API
5331
+ // we need connectionId to know if we are creating a new connection or reconnecting existing invalid connection
5332
+ const data = {
5333
+ jobId: response.id,
5334
+ connectionId: loginData.id
5335
+ };
5336
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_JOB_CREATED, data));
5337
+ });
5348
5338
  }
5349
5339
  getByConnection(connection) {
5350
5340
  return this.get().pipe(map((bankAccounts) => {
@@ -5357,31 +5347,37 @@ class BasiqService extends RestService {
5357
5347
  }));
5358
5348
  }
5359
5349
  /**
5360
- * Get status of credentials verifying. Expected statuses: 'in-progress', 'failed' or 'success'
5361
- * We send this request by interval until basiq return success or failed
5362
- * @TODO Alex (TT-2431): check logic and try to remove subscribe, use pipes instead
5363
- * @TODO Alex (TT-2431): implement some limit and handle (message or something) if basiq stuck
5364
- * @TODO Alex (TT-2431): check logic and handle case when user cancelled loading
5365
- */
5366
- checkBankCredentials(jobId) {
5367
- this.http.get(`${BasiqService.basiqApiUrl}/jobs/${jobId}`)
5350
+ * Get status of credentials verifying. Expected statuses: 'in-progress', 'failed' or 'success'
5351
+ * We send this request by interval until basiq return success or failed.
5352
+ *
5353
+ * Because of Basiq login may take a long time (10-20sec) we have to check job status until it seccess or failed.
5354
+ *
5355
+ * @TODO Alex (TT-2431): check logic and try to remove subscribe, use pipes instead
5356
+ * @TODO Alex (TT-2431): implement some limit and handle (message or something) if basiq stuck
5357
+ * @TODO Alex (TT-2431): check logic and handle case when user cancelled loading
5358
+ */
5359
+ checkLoginStatus(data) {
5360
+ this.http.get(`${BasiqService.basiqApiUrl}/jobs/${data.jobId}`)
5368
5361
  .pipe(
5369
- // unsubscribe after each request to avoid wrong requests (example: user cancelled too long login and login to another bank, then we will send 2 different requests)
5370
- take(1),
5371
5362
  // get verify-credentials step from basiq job
5372
- map((response) => plainToClass(BasiqJobResponse, response).getVerifyCredentialsStep()),
5363
+ map((response) => plainToClass(BasiqJobResponse, response)),
5373
5364
  // check credentials status again if not finished
5374
- filter((step) => {
5375
- if (!step.isInProgress()) {
5365
+ filter((response) => {
5366
+ if (!response.getVerifyCredentialsStep().isInProgress()) {
5376
5367
  return true;
5377
5368
  }
5378
5369
  setTimeout(() => {
5379
- this.checkBankCredentials(jobId);
5370
+ this.checkLoginStatus(data);
5380
5371
  }, BasiqService.bankCredintialsCheckInterval);
5381
5372
  return false;
5382
5373
  }))
5383
- .subscribe((step) => {
5384
- this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_LOGIN_FINISHED, step.isSuccess()));
5374
+ .subscribe((response) => {
5375
+ if (response.getVerifyCredentialsStep().isSuccess()) {
5376
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_LOGIN_SUCCESS, data));
5377
+ }
5378
+ else {
5379
+ this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.BASIQ_LOGIN_FAILED, null));
5380
+ }
5385
5381
  });
5386
5382
  }
5387
5383
  /**
@@ -5395,11 +5391,11 @@ class BasiqService extends RestService {
5395
5391
  });
5396
5392
  }
5397
5393
  /**
5398
- * Listen Basiq job created to check its verify credentials status
5394
+ * Start check job credential status when it created
5399
5395
  */
5400
- listenJobs() {
5401
- this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_JOB_CREATED).subscribe((jobId) => {
5402
- this.checkBankCredentials(jobId);
5396
+ listenJobCreated() {
5397
+ this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_JOB_CREATED).subscribe((data) => {
5398
+ this.checkLoginStatus(data);
5403
5399
  });
5404
5400
  }
5405
5401
  }