@zeniai/client-epic-state 5.0.90-betaAS5 → 5.0.90-betaAS7

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.
@@ -30,3 +30,11 @@ export const InternationalWireVerificationSubfieldNames = {
30
30
  proofOfAddress: 'proof_of_address',
31
31
  ssn: 'ssn',
32
32
  };
33
+ export const InternationalWireVerificationReadonlyHideableFieldNames = [
34
+ InternationalWireVerificationFormFieldNames.stakeHolder,
35
+ InternationalWireVerificationFormFieldNames.controllingPerson,
36
+ InternationalWireVerificationFormFieldNames.businessOwnership,
37
+ InternationalWireVerificationFormFieldNames.companyProofOfAddress,
38
+ InternationalWireVerificationFormFieldNames.companyOfficerProofOfAddress,
39
+ ];
40
+ export const InternationalWireVerificationReadonlyVisibilityGateFieldName = InternationalWireVerificationFormFieldNames.businessOwnership;
@@ -1,4 +1,4 @@
1
- import { InternationalWireVerificationSubfieldNames } from './internationalWireVerificationFieldConstants';
1
+ import { InternationalWireVerificationFormFieldNames, InternationalWireVerificationSubfieldNames, } from './internationalWireVerificationFieldConstants';
2
2
  import { IntlWireVerificationLocalDataSuffix } from './internationalWireVerificationSubmitPayload';
3
3
  export const isIntlWireFileOptionLike = (value) => typeof value === 'object' &&
4
4
  value != null &&
@@ -71,3 +71,16 @@ export const getStakeHolderOwnerIndicesFromLocalData = (localData) => {
71
71
  });
72
72
  return Array.from(indices).sort((a, b) => a - b);
73
73
  };
74
+ export const hasBusinessOwnershipValueInLocalData = (localData) => {
75
+ const baseKey = InternationalWireVerificationFormFieldNames.businessOwnership;
76
+ const frontFileId = localData[baseKey];
77
+ if (typeof frontFileId === 'string' && frontFileId !== '') {
78
+ return true;
79
+ }
80
+ const backFileId = localData[`${baseKey}${IntlWireVerificationLocalDataSuffix.documentBack}`];
81
+ if (typeof backFileId === 'string' && backFileId !== '') {
82
+ return true;
83
+ }
84
+ const documentOption = localData[`${baseKey}${IntlWireVerificationLocalDataSuffix.documentOption}`];
85
+ return typeof documentOption === 'string' && documentOption !== '';
86
+ };
@@ -1,4 +1,5 @@
1
- import { InternationalWireVerificationFormFieldNames } from './internationalWireVerificationFieldConstants';
1
+ import { InternationalWireVerificationReadonlyHideableFieldNames, InternationalWireVerificationFormFieldNames, } from './internationalWireVerificationFieldConstants';
2
+ import { hasBusinessOwnershipValueInLocalData } from './internationalWireVerificationLocalDataHelpers';
2
3
  export const InternationalWireVerificationFormOrder = [
3
4
  InternationalWireVerificationFormFieldNames.certificateOfGoodStanding,
4
5
  InternationalWireVerificationFormFieldNames.businessOwnership,
@@ -40,6 +41,13 @@ export const toDynamicFormField = (key, payload) => ({
40
41
  ]))
41
42
  : undefined,
42
43
  });
44
+ const readonlyHideableVerificationFormFieldNames = new Set(InternationalWireVerificationReadonlyHideableFieldNames);
45
+ export const filterVerificationFormFieldsForReadonlyView = (fields, localData, isReadonly) => {
46
+ if (!isReadonly || hasBusinessOwnershipValueInLocalData(localData)) {
47
+ return fields;
48
+ }
49
+ return fields.filter((field) => !readonlyHideableVerificationFormFieldNames.has(field.name));
50
+ };
43
51
  export const sortVerificationFormFields = (fields) => {
44
52
  const orderIndex = new Map(InternationalWireVerificationFormOrder.map((name, index) => [name, index]));
45
53
  return fields.slice().sort((a, b) => {
@@ -1,5 +1,8 @@
1
+ import { getCompanyByCompanyId } from '../../../../entity/company/companySelector';
1
2
  import { getFilesByFileIds } from '../../../../entity/file/fileSelector';
3
+ import { getCurrentTenant } from '../../../../entity/tenant/tenantSelector';
2
4
  import { getFileDeleteStatusById, getFileUpdateNameStatusById, } from '../../../fileView/fileViewSelector';
5
+ import { filterVerificationFormFieldsForReadonlyView } from './internationalWireVerificationPayload';
3
6
  const collectFileIdsFromLocalData = (localData) => {
4
7
  const fileIds = new Set();
5
8
  Object.values(localData).forEach((value) => {
@@ -28,9 +31,18 @@ export const getIntlWireVerificationView = (state) => {
28
31
  });
29
32
  const userFiles = fileIds.length > 0 ? getFilesByFileIds(state.fileState, fileIds) : [];
30
33
  const fetchState = verificationFormFetchState.fetchState;
34
+ const currentTenant = getCurrentTenant(state);
35
+ const company = currentTenant?.companyId != null
36
+ ? getCompanyByCompanyId(state.companyState, currentTenant.companyId)
37
+ ?.company
38
+ : undefined;
39
+ const onboardingStatusCode = company?.companyBillPayInfo?.internationalWireOnboardingStatus?.code;
40
+ const isReadonly = onboardingStatusCode != null &&
41
+ onboardingStatusCode !== 'onboarding_status_not_started';
42
+ const visibleVerificationFormFields = filterVerificationFormFieldsForReadonlyView(verificationFormFields, verificationFormLocalData, isReadonly);
31
43
  return {
32
44
  verificationFormFetchState,
33
- verificationFormFields,
45
+ verificationFormFields: visibleVerificationFormFields,
34
46
  verificationFormLocalData,
35
47
  verificationFormSubmitState,
36
48
  deleteFileStatusById,
@@ -33,3 +33,6 @@ export declare const InternationalWireVerificationSubfieldNames: {
33
33
  readonly ssn: "ssn";
34
34
  };
35
35
  export type InternationalWireVerificationSubfieldName = (typeof InternationalWireVerificationSubfieldNames)[keyof typeof InternationalWireVerificationSubfieldNames];
36
+ export declare const InternationalWireVerificationReadonlyHideableFieldNames: readonly ["stake_holder", "controlling_person", "business_ownership", "company_proof_of_address", "company_officer_proof_of_address"];
37
+ export type InternationalWireVerificationReadonlyHideableFieldName = (typeof InternationalWireVerificationReadonlyHideableFieldNames)[number];
38
+ export declare const InternationalWireVerificationReadonlyVisibilityGateFieldName: "business_ownership";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InternationalWireVerificationSubfieldNames = exports.InternationalWireVerificationBooleanWithSubfieldsFieldNameList = exports.InternationalWireVerificationBooleanWithSubfieldsFieldNames = exports.InternationalWireVerificationControllingPersonFieldName = exports.InternationalWireVerificationStakeHolderFieldName = exports.InternationalWireVerificationFormFieldNames = void 0;
3
+ exports.InternationalWireVerificationReadonlyVisibilityGateFieldName = exports.InternationalWireVerificationReadonlyHideableFieldNames = exports.InternationalWireVerificationSubfieldNames = exports.InternationalWireVerificationBooleanWithSubfieldsFieldNameList = exports.InternationalWireVerificationBooleanWithSubfieldsFieldNames = exports.InternationalWireVerificationControllingPersonFieldName = exports.InternationalWireVerificationStakeHolderFieldName = exports.InternationalWireVerificationFormFieldNames = void 0;
4
4
  exports.InternationalWireVerificationFormFieldNames = {
5
5
  certificateOfGoodStanding: 'certificate_of_good_standing',
6
6
  businessOwnership: 'business_ownership',
@@ -33,3 +33,11 @@ exports.InternationalWireVerificationSubfieldNames = {
33
33
  proofOfAddress: 'proof_of_address',
34
34
  ssn: 'ssn',
35
35
  };
36
+ exports.InternationalWireVerificationReadonlyHideableFieldNames = [
37
+ exports.InternationalWireVerificationFormFieldNames.stakeHolder,
38
+ exports.InternationalWireVerificationFormFieldNames.controllingPerson,
39
+ exports.InternationalWireVerificationFormFieldNames.businessOwnership,
40
+ exports.InternationalWireVerificationFormFieldNames.companyProofOfAddress,
41
+ exports.InternationalWireVerificationFormFieldNames.companyOfficerProofOfAddress,
42
+ ];
43
+ exports.InternationalWireVerificationReadonlyVisibilityGateFieldName = exports.InternationalWireVerificationFormFieldNames.businessOwnership;
@@ -24,3 +24,4 @@ export declare const toIntlWireFileOptionArray: (items: unknown[]) => IntlWireFi
24
24
  export declare const appendIntlWireFileOptionsToLocalData: (localData: VerificationFormLocalData, baseKey: string, fileOptions: IntlWireFileOptionLike[]) => void;
25
25
  export declare const appendIntlWirePersonToLocalData: (localData: VerificationFormLocalData, keyPrefix: string, person: IntlWirePersonLike) => void;
26
26
  export declare const getStakeHolderOwnerIndicesFromLocalData: (localData: VerificationFormLocalData) => number[];
27
+ export declare const hasBusinessOwnershipValueInLocalData: (localData: VerificationFormLocalData) => boolean;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getStakeHolderOwnerIndicesFromLocalData = exports.appendIntlWirePersonToLocalData = exports.appendIntlWireFileOptionsToLocalData = exports.toIntlWireFileOptionArray = exports.isIntlWirePersonLike = exports.isIntlWireFileOptionLike = void 0;
3
+ exports.hasBusinessOwnershipValueInLocalData = exports.getStakeHolderOwnerIndicesFromLocalData = exports.appendIntlWirePersonToLocalData = exports.appendIntlWireFileOptionsToLocalData = exports.toIntlWireFileOptionArray = exports.isIntlWirePersonLike = exports.isIntlWireFileOptionLike = void 0;
4
4
  const internationalWireVerificationFieldConstants_1 = require("./internationalWireVerificationFieldConstants");
5
5
  const internationalWireVerificationSubmitPayload_1 = require("./internationalWireVerificationSubmitPayload");
6
6
  const isIntlWireFileOptionLike = (value) => typeof value === 'object' &&
@@ -80,3 +80,17 @@ const getStakeHolderOwnerIndicesFromLocalData = (localData) => {
80
80
  return Array.from(indices).sort((a, b) => a - b);
81
81
  };
82
82
  exports.getStakeHolderOwnerIndicesFromLocalData = getStakeHolderOwnerIndicesFromLocalData;
83
+ const hasBusinessOwnershipValueInLocalData = (localData) => {
84
+ const baseKey = internationalWireVerificationFieldConstants_1.InternationalWireVerificationFormFieldNames.businessOwnership;
85
+ const frontFileId = localData[baseKey];
86
+ if (typeof frontFileId === 'string' && frontFileId !== '') {
87
+ return true;
88
+ }
89
+ const backFileId = localData[`${baseKey}${internationalWireVerificationSubmitPayload_1.IntlWireVerificationLocalDataSuffix.documentBack}`];
90
+ if (typeof backFileId === 'string' && backFileId !== '') {
91
+ return true;
92
+ }
93
+ const documentOption = localData[`${baseKey}${internationalWireVerificationSubmitPayload_1.IntlWireVerificationLocalDataSuffix.documentOption}`];
94
+ return typeof documentOption === 'string' && documentOption !== '';
95
+ };
96
+ exports.hasBusinessOwnershipValueInLocalData = hasBusinessOwnershipValueInLocalData;
@@ -1,6 +1,6 @@
1
1
  import { AllowedValueWithCode } from '../../../../commonStateTypes/allowedValue';
2
2
  import { ZeniAPIResponse } from '../../../../responsePayload';
3
- import { VerificationFormField } from './internationalWireVerificationState';
3
+ import { VerificationFormField, VerificationFormLocalData } from './internationalWireVerificationState';
4
4
  export declare const InternationalWireVerificationFormOrder: readonly ["certificate_of_good_standing", "business_ownership", "company_proof_of_address", "company_officer_proof_of_address", "company_registration_date", "annual_turnover", "expected_transaction_volume", "employee_count", "intended_use_of_account", "transaction_countries", "stake_holder", "controlling_person"];
5
5
  export interface FieldOptionPayload {
6
6
  label: string;
@@ -32,6 +32,7 @@ export interface FieldPayload {
32
32
  subfields?: Record<string, SubFieldPayload>;
33
33
  }
34
34
  export declare const toDynamicFormField: (key: string, payload: FieldPayload) => VerificationFormField;
35
+ export declare const filterVerificationFormFieldsForReadonlyView: (fields: VerificationFormField[], localData: VerificationFormLocalData, isReadonly: boolean) => VerificationFormField[];
35
36
  export declare const sortVerificationFormFields: (fields: VerificationFormField[]) => VerificationFormField[];
36
37
  export declare const toVerificationFormFields: (internationalWireFormPayload: Record<string, FieldPayload>) => VerificationFormField[];
37
38
  export type IntlVerificationFormResponse = ZeniAPIResponse<IntlVerificationFormPayload>;
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toVerificationFormFields = exports.sortVerificationFormFields = exports.toDynamicFormField = exports.InternationalWireVerificationFormOrder = void 0;
3
+ exports.toVerificationFormFields = exports.sortVerificationFormFields = exports.filterVerificationFormFieldsForReadonlyView = exports.toDynamicFormField = exports.InternationalWireVerificationFormOrder = void 0;
4
4
  const internationalWireVerificationFieldConstants_1 = require("./internationalWireVerificationFieldConstants");
5
+ const internationalWireVerificationLocalDataHelpers_1 = require("./internationalWireVerificationLocalDataHelpers");
5
6
  exports.InternationalWireVerificationFormOrder = [
6
7
  internationalWireVerificationFieldConstants_1.InternationalWireVerificationFormFieldNames.certificateOfGoodStanding,
7
8
  internationalWireVerificationFieldConstants_1.InternationalWireVerificationFormFieldNames.businessOwnership,
@@ -44,6 +45,14 @@ const toDynamicFormField = (key, payload) => ({
44
45
  : undefined,
45
46
  });
46
47
  exports.toDynamicFormField = toDynamicFormField;
48
+ const readonlyHideableVerificationFormFieldNames = new Set(internationalWireVerificationFieldConstants_1.InternationalWireVerificationReadonlyHideableFieldNames);
49
+ const filterVerificationFormFieldsForReadonlyView = (fields, localData, isReadonly) => {
50
+ if (!isReadonly || (0, internationalWireVerificationLocalDataHelpers_1.hasBusinessOwnershipValueInLocalData)(localData)) {
51
+ return fields;
52
+ }
53
+ return fields.filter((field) => !readonlyHideableVerificationFormFieldNames.has(field.name));
54
+ };
55
+ exports.filterVerificationFormFieldsForReadonlyView = filterVerificationFormFieldsForReadonlyView;
47
56
  const sortVerificationFormFields = (fields) => {
48
57
  const orderIndex = new Map(exports.InternationalWireVerificationFormOrder.map((name, index) => [name, index]));
49
58
  return fields.slice().sort((a, b) => {
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getIntlWireVerificationView = void 0;
4
+ const companySelector_1 = require("../../../../entity/company/companySelector");
4
5
  const fileSelector_1 = require("../../../../entity/file/fileSelector");
6
+ const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
5
7
  const fileViewSelector_1 = require("../../../fileView/fileViewSelector");
8
+ const internationalWireVerificationPayload_1 = require("./internationalWireVerificationPayload");
6
9
  const collectFileIdsFromLocalData = (localData) => {
7
10
  const fileIds = new Set();
8
11
  Object.values(localData).forEach((value) => {
@@ -31,9 +34,18 @@ const getIntlWireVerificationView = (state) => {
31
34
  });
32
35
  const userFiles = fileIds.length > 0 ? (0, fileSelector_1.getFilesByFileIds)(state.fileState, fileIds) : [];
33
36
  const fetchState = verificationFormFetchState.fetchState;
37
+ const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
38
+ const company = currentTenant?.companyId != null
39
+ ? (0, companySelector_1.getCompanyByCompanyId)(state.companyState, currentTenant.companyId)
40
+ ?.company
41
+ : undefined;
42
+ const onboardingStatusCode = company?.companyBillPayInfo?.internationalWireOnboardingStatus?.code;
43
+ const isReadonly = onboardingStatusCode != null &&
44
+ onboardingStatusCode !== 'onboarding_status_not_started';
45
+ const visibleVerificationFormFields = (0, internationalWireVerificationPayload_1.filterVerificationFormFieldsForReadonlyView)(verificationFormFields, verificationFormLocalData, isReadonly);
34
46
  return {
35
47
  verificationFormFetchState,
36
- verificationFormFields,
48
+ verificationFormFields: visibleVerificationFormFields,
37
49
  verificationFormLocalData,
38
50
  verificationFormSubmitState,
39
51
  deleteFileStatusById,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.0.90-betaAS5",
3
+ "version": "5.0.90-betaAS7",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",