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.
- package/bundles/taxtank-core.umd.js +129 -134
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/models/bank/bank-login-data.js +1 -1
- package/esm2015/lib/models/bank/basiq/basiq-connection-data.interface.js +2 -0
- package/esm2015/lib/models/bank/basiq/basiq-job-response.js +1 -1
- package/esm2015/lib/models/bank/basiq/index.js +2 -1
- package/esm2015/lib/models/event/app-event-type.enum.js +60 -59
- package/esm2015/lib/services/http/bank/bank-connection/bank-connection.service.js +25 -5
- package/esm2015/lib/services/http/bank/basiq/basiq.service.js +47 -72
- package/fesm2015/taxtank-core.js +126 -130
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/models/bank/bank-login-data.d.ts +4 -0
- package/lib/models/bank/basiq/basiq-connection-data.interface.d.ts +8 -0
- package/lib/models/bank/basiq/basiq-job-response.d.ts +1 -0
- package/lib/models/bank/basiq/index.d.ts +1 -0
- package/lib/models/event/app-event-type.enum.d.ts +59 -58
- package/lib/services/http/bank/bank-connection/bank-connection.service.d.ts +3 -0
- package/lib/services/http/bank/basiq/basiq.service.d.ts +16 -21
- package/package.json +1 -1
package/fesm2015/taxtank-core.js
CHANGED
|
@@ -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["
|
|
211
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
212
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
213
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
214
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
215
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
216
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
217
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
218
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
219
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
220
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
221
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
222
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
223
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
224
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
225
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
226
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
227
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
228
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
229
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
230
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
231
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
232
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
233
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
234
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
235
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
236
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
237
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
238
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
239
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
240
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
241
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
242
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
243
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
244
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
245
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
246
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
247
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
248
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
249
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
250
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
251
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
252
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
253
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
254
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
255
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
256
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
257
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
258
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
259
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
260
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
261
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
262
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
263
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
264
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
265
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
266
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
267
|
-
AppEventTypeEnum[AppEventTypeEnum["
|
|
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,
|
|
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.
|
|
5261
|
-
this.
|
|
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,
|
|
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.
|
|
5320
|
+
this.listenJobCreated();
|
|
5299
5321
|
}
|
|
5300
5322
|
/**
|
|
5301
|
-
*
|
|
5302
|
-
*
|
|
5303
|
-
*
|
|
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
|
-
|
|
5307
|
-
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
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
|
-
|
|
5361
|
-
|
|
5362
|
-
|
|
5363
|
-
|
|
5364
|
-
|
|
5365
|
-
|
|
5366
|
-
|
|
5367
|
-
|
|
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)
|
|
5363
|
+
map((response) => plainToClass(BasiqJobResponse, response)),
|
|
5373
5364
|
// check credentials status again if not finished
|
|
5374
|
-
filter((
|
|
5375
|
-
if (!
|
|
5365
|
+
filter((response) => {
|
|
5366
|
+
if (!response.getVerifyCredentialsStep().isInProgress()) {
|
|
5376
5367
|
return true;
|
|
5377
5368
|
}
|
|
5378
5369
|
setTimeout(() => {
|
|
5379
|
-
this.
|
|
5370
|
+
this.checkLoginStatus(data);
|
|
5380
5371
|
}, BasiqService.bankCredintialsCheckInterval);
|
|
5381
5372
|
return false;
|
|
5382
5373
|
}))
|
|
5383
|
-
.subscribe((
|
|
5384
|
-
|
|
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
|
-
*
|
|
5394
|
+
* Start check job credential status when it created
|
|
5399
5395
|
*/
|
|
5400
|
-
|
|
5401
|
-
this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_JOB_CREATED).subscribe((
|
|
5402
|
-
this.
|
|
5396
|
+
listenJobCreated() {
|
|
5397
|
+
this.eventDispatcherService.on(AppEventTypeEnum.BASIQ_JOB_CREATED).subscribe((data) => {
|
|
5398
|
+
this.checkLoginStatus(data);
|
|
5403
5399
|
});
|
|
5404
5400
|
}
|
|
5405
5401
|
}
|