@zeniai/client-epic-state 5.0.83-betaRR5 → 5.0.83
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/entity/aiCfo/aiCfoPayload.d.ts +4 -1
- package/lib/entity/aiCfo/aiCfoReducer.js +17 -4
- package/lib/entity/aiCfo/aiCfoState.d.ts +19 -0
- package/lib/entity/aiCfo/aiCfoState.js +8 -1
- package/lib/entity/cardPolicy/cardPolicyReducer.js +99 -9
- package/lib/entity/cardPolicy/cardPolicySelector.js +4 -0
- package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.d.ts +2 -3
- package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.js +10 -4
- package/lib/epic.d.ts +12 -15
- package/lib/epic.js +12 -15
- package/lib/esm/entity/aiCfo/aiCfoReducer.js +18 -5
- package/lib/esm/entity/aiCfo/aiCfoState.js +7 -0
- package/lib/esm/entity/cardPolicy/cardPolicyReducer.js +99 -9
- package/lib/esm/entity/cardPolicy/cardPolicySelector.js +4 -0
- package/lib/esm/entity/cardPolicy/policyRecommendationFromUploadEpic.js +11 -5
- package/lib/esm/epic.js +12 -15
- package/lib/esm/index.js +6 -21
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +19 -138
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +0 -18
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +5 -38
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +0 -23
- package/lib/index.d.ts +7 -28
- package/lib/index.js +14 -68
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.d.ts +1 -40
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +20 -139
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.d.ts +0 -15
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +0 -20
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.d.ts +0 -28
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.d.ts +1 -7
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +6 -39
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.d.ts +0 -15
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +1 -26
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardState.d.ts +0 -16
- package/package.json +1 -1
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +0 -328
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +0 -120
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +0 -60
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +0 -118
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +0 -33
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +0 -385
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +0 -34
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +0 -33
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +0 -17
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +0 -144
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +0 -148
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +0 -112
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +0 -101
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +0 -71
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +0 -34
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +0 -1
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +0 -42
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +0 -69
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +0 -45
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +0 -65
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +0 -64
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.d.ts +0 -38
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +0 -333
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.d.ts +0 -25
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +0 -124
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.d.ts +0 -28
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +0 -64
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.d.ts +0 -17
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +0 -122
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.d.ts +0 -23
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +0 -37
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.d.ts +0 -38
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +0 -391
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.d.ts +0 -11
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +0 -38
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.d.ts +0 -24
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +0 -40
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.d.ts +0 -253
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +0 -21
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.d.ts +0 -66
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +0 -151
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.d.ts +0 -30
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +0 -152
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.d.ts +0 -26
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +0 -116
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.d.ts +0 -35
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +0 -105
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.d.ts +0 -23
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +0 -75
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.d.ts +0 -15
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +0 -38
- package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.d.ts +0 -76
- package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +0 -2
- package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.d.ts +0 -7
- package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +0 -46
- package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.d.ts +0 -28
- package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +0 -73
- package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.d.ts +0 -23
- package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +0 -49
- package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts +0 -11
- package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +0 -69
- package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.d.ts +0 -11
- package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +0 -68
package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildAiCardCreationFormDraftSeed = void 0;
|
|
4
|
-
const deriveAiCardRowsFromTeams_1 = require("./deriveAiCardRowsFromTeams");
|
|
5
|
-
/**
|
|
6
|
-
* Build the initial `CardsFormDraft` + companion seed context for a
|
|
7
|
-
* fresh AI card-creation session. Used by the `seedAiCardCreationFormDraft`
|
|
8
|
-
* reducer.
|
|
9
|
-
*
|
|
10
|
-
* Branches on `initialData.mode`:
|
|
11
|
-
* - `review`: step-1 team rows start fully checked and step-2 `cardRows`
|
|
12
|
-
* are seeded by `deriveAiCardRowsFromTeams` so the table is populated
|
|
13
|
-
* on first render. `applyAiCardCreationFormDraftUpdate` only re-derives
|
|
14
|
-
* when a team is toggled in step 1, so without this initial seed the
|
|
15
|
-
* happy path (user proceeds to step 2 without un/re-checking) would
|
|
16
|
-
* land on an empty table.
|
|
17
|
-
* - `create`: no step-1 list — seed `cardRows` directly from the AI's
|
|
18
|
-
* suggested cards (resolving owners via `allUsers`) and leave
|
|
19
|
-
* `teamRows` empty.
|
|
20
|
-
*/
|
|
21
|
-
const buildAiCardCreationFormDraftSeed = ({ initialData, allUsers, }) => {
|
|
22
|
-
const context = {
|
|
23
|
-
allUsers,
|
|
24
|
-
mode: initialData.mode,
|
|
25
|
-
suggestedOwnerUserIdByTeamId: initialData.suggestedOwnerUserIdByTeamId,
|
|
26
|
-
};
|
|
27
|
-
if (initialData.mode === 'create') {
|
|
28
|
-
return {
|
|
29
|
-
context,
|
|
30
|
-
draft: {
|
|
31
|
-
teamRows: [],
|
|
32
|
-
cardRows: initialData.cardRows.map((seed) => buildCardRowFromSeed(seed, allUsers)),
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
const teamRows = initialData.teamRows.map((row) => ({
|
|
37
|
-
cardKind: row.cardKind,
|
|
38
|
-
id: row.id,
|
|
39
|
-
isChecked: true,
|
|
40
|
-
label: row.label,
|
|
41
|
-
value: row.avgMonthlySpend,
|
|
42
|
-
rightLabel: row.recommendedLimit,
|
|
43
|
-
rightSubLabel: row.recommendedLimitCadence,
|
|
44
|
-
}));
|
|
45
|
-
return {
|
|
46
|
-
context,
|
|
47
|
-
draft: {
|
|
48
|
-
teamRows,
|
|
49
|
-
cardRows: (0, deriveAiCardRowsFromTeams_1.deriveAiCardRowsFromTeams)({
|
|
50
|
-
teamRows,
|
|
51
|
-
prevCardRows: [],
|
|
52
|
-
allUsers,
|
|
53
|
-
suggestedOwnerUserIdByTeamId: initialData.suggestedOwnerUserIdByTeamId,
|
|
54
|
-
}),
|
|
55
|
-
},
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
exports.buildAiCardCreationFormDraftSeed = buildAiCardCreationFormDraftSeed;
|
|
59
|
-
const buildCardRowFromSeed = (seed, allUsers) => {
|
|
60
|
-
const selectedUser = seed.suggestedOwnerUserId != null
|
|
61
|
-
? allUsers.find((user) => user.userId === seed.suggestedOwnerUserId)
|
|
62
|
-
: undefined;
|
|
63
|
-
return {
|
|
64
|
-
cardKind: seed.cardKind,
|
|
65
|
-
id: seed.id,
|
|
66
|
-
label: seed.label,
|
|
67
|
-
owner: {
|
|
68
|
-
allUsers,
|
|
69
|
-
selectedUser,
|
|
70
|
-
},
|
|
71
|
-
recommendedLimit: seed.recommendedLimit,
|
|
72
|
-
};
|
|
73
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { User } from '../../../../entity/user/userState';
|
|
2
|
-
import { CardsCardRow, CardsTeamRow } from './aiCardCreationFormDraftTypes';
|
|
3
|
-
export interface DeriveAiCardRowsFromTeamsArgs {
|
|
4
|
-
allUsers: User[];
|
|
5
|
-
/** Map of teamId -> suggested owner userId surfaced by the AI. */
|
|
6
|
-
suggestedOwnerUserIdByTeamId: Record<string, string | undefined>;
|
|
7
|
-
teamRows: CardsTeamRow[];
|
|
8
|
-
/** Existing step-2 rows; preserved row-for-row when the team is still checked. */
|
|
9
|
-
prevCardRows?: CardsCardRow[];
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Derive the step-2 `cardRows` from the user's step-1 team selection.
|
|
13
|
-
*
|
|
14
|
-
* Behaviour:
|
|
15
|
-
* - One output row per `teamRow.isChecked === true`, in the same order.
|
|
16
|
-
* - When a team is still checked AND we have a previous row for it, the
|
|
17
|
-
* previous row is preserved verbatim — so user edits made in step 2
|
|
18
|
-
* aren't blown away when an upstream watchHandler re-derives.
|
|
19
|
-
* - Newly-included teams fall back to:
|
|
20
|
-
* - `selectedUser = the User whose userId === suggestedOwnerUserIdByTeamId[teamId]`
|
|
21
|
-
* - `recommendedLimit = numeric parse of `teamRow.rightLabel` (e.g. "$20,000")`
|
|
22
|
-
*/
|
|
23
|
-
export declare const deriveAiCardRowsFromTeams: ({ teamRows, prevCardRows, allUsers, suggestedOwnerUserIdByTeamId, }: DeriveAiCardRowsFromTeamsArgs) => CardsCardRow[];
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deriveAiCardRowsFromTeams = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Derive the step-2 `cardRows` from the user's step-1 team selection.
|
|
6
|
-
*
|
|
7
|
-
* Behaviour:
|
|
8
|
-
* - One output row per `teamRow.isChecked === true`, in the same order.
|
|
9
|
-
* - When a team is still checked AND we have a previous row for it, the
|
|
10
|
-
* previous row is preserved verbatim — so user edits made in step 2
|
|
11
|
-
* aren't blown away when an upstream watchHandler re-derives.
|
|
12
|
-
* - Newly-included teams fall back to:
|
|
13
|
-
* - `selectedUser = the User whose userId === suggestedOwnerUserIdByTeamId[teamId]`
|
|
14
|
-
* - `recommendedLimit = numeric parse of `teamRow.rightLabel` (e.g. "$20,000")`
|
|
15
|
-
*/
|
|
16
|
-
const deriveAiCardRowsFromTeams = ({ teamRows, prevCardRows = [], allUsers, suggestedOwnerUserIdByTeamId, }) => {
|
|
17
|
-
const prevById = new Map(prevCardRows.map((row) => [row.id, row]));
|
|
18
|
-
const userById = new Map(allUsers.map((user) => [user.userId, user]));
|
|
19
|
-
return teamRows
|
|
20
|
-
.filter((row) => row.isChecked)
|
|
21
|
-
.map((teamRow) => {
|
|
22
|
-
const previous = prevById.get(teamRow.id);
|
|
23
|
-
if (previous != null) {
|
|
24
|
-
return previous;
|
|
25
|
-
}
|
|
26
|
-
const suggestedUserId = suggestedOwnerUserIdByTeamId[teamRow.id];
|
|
27
|
-
const selectedUser = suggestedUserId != null ? userById.get(suggestedUserId) : undefined;
|
|
28
|
-
return {
|
|
29
|
-
cardKind: teamRow.cardKind,
|
|
30
|
-
id: teamRow.id,
|
|
31
|
-
label: teamRow.label,
|
|
32
|
-
owner: {
|
|
33
|
-
allUsers,
|
|
34
|
-
selectedUser,
|
|
35
|
-
},
|
|
36
|
-
recommendedLimit: parseLimitToFloat(teamRow.rightLabel),
|
|
37
|
-
};
|
|
38
|
-
});
|
|
39
|
-
};
|
|
40
|
-
exports.deriveAiCardRowsFromTeams = deriveAiCardRowsFromTeams;
|
|
41
|
-
// Best-effort numeric parse of an AI-provided limit string like "$20,000".
|
|
42
|
-
const parseLimitToFloat = (raw) => {
|
|
43
|
-
const cleaned = raw.replace(/[^0-9.-]/g, '');
|
|
44
|
-
if (cleaned.length === 0) {
|
|
45
|
-
return undefined;
|
|
46
|
-
}
|
|
47
|
-
const parsed = Number(cleaned);
|
|
48
|
-
return Number.isFinite(parsed) ? parsed : undefined;
|
|
49
|
-
};
|
package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { upsertAnswerPayload, upsertOrAddQuestionAnswerPayload } from '../../../../entity/aiCfo/aiCfoReducer';
|
|
4
|
-
import { RootState } from '../../../../reducer';
|
|
5
|
-
import { fetchUserListByType } from '../../../userListView/userListViewReducer';
|
|
6
|
-
import { clearAiCardCreationFormDraft, issueChargeCardSuccessOrFailure, seedAiCardCreationFormDraft } from './issueChargeCardReducer';
|
|
7
|
-
export type ActionType = ReturnType<typeof fetchUserListByType> | ReturnType<typeof seedAiCardCreationFormDraft> | ReturnType<typeof clearAiCardCreationFormDraft>;
|
|
8
|
-
type SeedTriggerAction = ReturnType<typeof upsertAnswerPayload> | ReturnType<typeof upsertOrAddQuestionAnswerPayload>;
|
|
9
|
-
type InboundAction = SeedTriggerAction | ReturnType<typeof issueChargeCardSuccessOrFailure>;
|
|
10
|
-
export declare const seedAiCardCreationFormDraftEpic: (actions$: ActionsObservable<InboundAction>, state$: StateObservable<RootState>) => Observable<ActionType>;
|
|
11
|
-
export {};
|
package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.seedAiCardCreationFormDraftEpic = void 0;
|
|
4
|
-
const rxjs_1 = require("rxjs");
|
|
5
|
-
const operators_1 = require("rxjs/operators");
|
|
6
|
-
const aiCfoReducer_1 = require("../../../../entity/aiCfo/aiCfoReducer");
|
|
7
|
-
const aiCfoSelector_1 = require("../../../../entity/aiCfo/aiCfoSelector");
|
|
8
|
-
const userListViewReducer_1 = require("../../../userListView/userListViewReducer");
|
|
9
|
-
const userListViewSelector_1 = require("../../../userListView/userListViewSelector");
|
|
10
|
-
const issueChargeCardReducer_1 = require("./issueChargeCardReducer");
|
|
11
|
-
const readAllUsersAsUserArray = (state) => (0, userListViewSelector_1.getUserList)(state.userState, state.userRoleState, state.userListViewState, 'cardHolderCandidate')
|
|
12
|
-
.users.map((person) => person.user)
|
|
13
|
-
.filter((user) => user != null);
|
|
14
|
-
const readCardsCreationPayload = (state, chatSessionId, questionAnswerId) => {
|
|
15
|
-
const qa = (0, aiCfoSelector_1.getQuestionAnswerByIdForChatSession)(state.aiCfoState, chatSessionId, questionAnswerId);
|
|
16
|
-
const visualization = qa?.responses.answer?.content.visualization;
|
|
17
|
-
if (visualization?.type !== 'interactive_form') {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
const data = visualization.data;
|
|
21
|
-
if (!('formType' in data) || data.formType !== 'cards_creation') {
|
|
22
|
-
return undefined;
|
|
23
|
-
}
|
|
24
|
-
return data.payload;
|
|
25
|
-
};
|
|
26
|
-
// Pusher (`upsertAnswerPayload`) targets either an explicit
|
|
27
|
-
// `questionAnswerId` or "latest QA in session"; REST
|
|
28
|
-
// (`upsertOrAddQuestionAnswerPayload`) always carries the id. Resolve to
|
|
29
|
-
// the QA the reducer just wrote so we can read the freshly-decoded
|
|
30
|
-
// visualization off state.
|
|
31
|
-
const resolveQuestionAnswerId = (state, action) => {
|
|
32
|
-
if (action.payload.questionAnswerId != null) {
|
|
33
|
-
return action.payload.questionAnswerId;
|
|
34
|
-
}
|
|
35
|
-
const session = state.aiCfoState.aiCfoByChatSessionId[action.payload.chatSessionId];
|
|
36
|
-
return session?.questionAnswers.slice(-1)[0]?.questionAnswerId;
|
|
37
|
-
};
|
|
38
|
-
const isSeedTrigger = (action) => aiCfoReducer_1.upsertAnswerPayload.match(action) ||
|
|
39
|
-
aiCfoReducer_1.upsertOrAddQuestionAnswerPayload.match(action);
|
|
40
|
-
const seedAiCardCreationFormDraftEpic = (actions$, state$) => actions$.pipe((0, operators_1.mergeMap)((action) => {
|
|
41
|
-
if (issueChargeCardReducer_1.issueChargeCardSuccessOrFailure.match(action) &&
|
|
42
|
-
action.payload.fetchState === 'Completed') {
|
|
43
|
-
return (0, rxjs_1.of)((0, issueChargeCardReducer_1.clearAiCardCreationFormDraft)());
|
|
44
|
-
}
|
|
45
|
-
if (!isSeedTrigger(action)) {
|
|
46
|
-
return rxjs_1.EMPTY;
|
|
47
|
-
}
|
|
48
|
-
const state = state$.value;
|
|
49
|
-
const questionAnswerId = resolveQuestionAnswerId(state, action);
|
|
50
|
-
if (questionAnswerId == null) {
|
|
51
|
-
return rxjs_1.EMPTY;
|
|
52
|
-
}
|
|
53
|
-
const payload = readCardsCreationPayload(state, action.payload.chatSessionId, questionAnswerId);
|
|
54
|
-
if (payload == null) {
|
|
55
|
-
return rxjs_1.EMPTY;
|
|
56
|
-
}
|
|
57
|
-
const allUsersNow = readAllUsersAsUserArray(state);
|
|
58
|
-
if (allUsersNow.length > 0) {
|
|
59
|
-
return (0, rxjs_1.of)((0, issueChargeCardReducer_1.seedAiCardCreationFormDraft)(allUsersNow, payload));
|
|
60
|
-
}
|
|
61
|
-
const seedWhenUsersLoaded$ = state$.pipe((0, operators_1.map)(readAllUsersAsUserArray), (0, operators_1.distinctUntilChanged)((prev, next) => prev.length === next.length &&
|
|
62
|
-
prev.every((user, idx) => user === next[idx])), (0, operators_1.filter)((users) => users.length > 0), (0, operators_1.take)(1), (0, operators_1.map)((users) => (0, issueChargeCardReducer_1.seedAiCardCreationFormDraft)(users, payload)));
|
|
63
|
-
const userListFetchState = state.userListViewState.userListByType.cardHolderCandidate.fetchState;
|
|
64
|
-
if (userListFetchState === 'In-Progress') {
|
|
65
|
-
return seedWhenUsersLoaded$;
|
|
66
|
-
}
|
|
67
|
-
return (0, rxjs_1.concat)((0, rxjs_1.of)((0, userListViewReducer_1.fetchUserListByType)('cardHolderCandidate', false)), seedWhenUsersLoaded$);
|
|
68
|
-
}));
|
|
69
|
-
exports.seedAiCardCreationFormDraftEpic = seedAiCardCreationFormDraftEpic;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { CardsFormDraft } from './aiCardCreationFormDraftTypes';
|
|
2
|
-
import { IssueChargeCardLocalData } from './issueChargeCardState';
|
|
3
|
-
/**
|
|
4
|
-
* Convert a `CardsFormDraft` into the `IssueChargeCardLocalData[]`
|
|
5
|
-
* payload `issueChargeCardEpic` expects in
|
|
6
|
-
* `state.issueChargeCardState.localData`.
|
|
7
|
-
*
|
|
8
|
-
* Returns an empty array when `cardRows` is empty so callers can
|
|
9
|
-
* short-circuit without dispatching a no-op bulk POST.
|
|
10
|
-
*/
|
|
11
|
-
export declare const toIssueChargeCardLocalDataFromDraft: (draft: CardsFormDraft) => IssueChargeCardLocalData[];
|
package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toIssueChargeCardLocalDataFromDraft = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Default credit limit frequency emitted on the wire when the AI CFO
|
|
6
|
-
* card creation form is submitted. The interactive form has no
|
|
7
|
-
* frequency field today (v1 product decision: AI CFO only ever issues
|
|
8
|
-
* monthly virtual credit cards).
|
|
9
|
-
*/
|
|
10
|
-
const DEFAULT_FREQUENCY = 'monthly';
|
|
11
|
-
const DEFAULT_CURRENCY_CODE = 'USD';
|
|
12
|
-
const DEFAULT_CURRENCY_SYMBOL = '$';
|
|
13
|
-
/**
|
|
14
|
-
* Map a single AI card-creation row to the `IssueChargeCardLocalData`
|
|
15
|
-
* shape consumed by `issueChargeCardEpic`.
|
|
16
|
-
*
|
|
17
|
-
* AI CFO only issues `business_virtual_credit_card`s in v1, so:
|
|
18
|
-
* - `chargeCardType` is hard-coded to `'credit_card'`
|
|
19
|
-
* - `creditCard.cardType` is hard-coded to `'business_virtual_credit_card'`
|
|
20
|
-
* - the physicalCard / debitCard.* slots are populated with empty
|
|
21
|
-
* defaults that the epic ignores.
|
|
22
|
-
*/
|
|
23
|
-
const mapCardRow = (row) => {
|
|
24
|
-
const ownerUserId = row.owner.selectedUser?.userId;
|
|
25
|
-
return {
|
|
26
|
-
lineId: row.id,
|
|
27
|
-
chargeCardType: 'credit_card',
|
|
28
|
-
creditCard: {
|
|
29
|
-
cardType: 'business_virtual_credit_card',
|
|
30
|
-
virtualCard: {
|
|
31
|
-
cardName: row.label,
|
|
32
|
-
frequency: DEFAULT_FREQUENCY,
|
|
33
|
-
userIds: ownerUserId != null ? [ownerUserId] : [],
|
|
34
|
-
amount: {
|
|
35
|
-
amount: row.recommendedLimit ?? 0,
|
|
36
|
-
currencyCode: DEFAULT_CURRENCY_CODE,
|
|
37
|
-
currencySymbol: DEFAULT_CURRENCY_SYMBOL,
|
|
38
|
-
},
|
|
39
|
-
},
|
|
40
|
-
physicalCard: {
|
|
41
|
-
cardName: '',
|
|
42
|
-
frequency: DEFAULT_FREQUENCY,
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
debitCard: {
|
|
46
|
-
cardType: 'business_virtual_debit_card',
|
|
47
|
-
virtualCard: {
|
|
48
|
-
cardName: '',
|
|
49
|
-
frequency: DEFAULT_FREQUENCY,
|
|
50
|
-
userIds: [],
|
|
51
|
-
},
|
|
52
|
-
physicalCard: {
|
|
53
|
-
cardName: '',
|
|
54
|
-
frequency: DEFAULT_FREQUENCY,
|
|
55
|
-
},
|
|
56
|
-
},
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Convert a `CardsFormDraft` into the `IssueChargeCardLocalData[]`
|
|
61
|
-
* payload `issueChargeCardEpic` expects in
|
|
62
|
-
* `state.issueChargeCardState.localData`.
|
|
63
|
-
*
|
|
64
|
-
* Returns an empty array when `cardRows` is empty so callers can
|
|
65
|
-
* short-circuit without dispatching a no-op bulk POST.
|
|
66
|
-
*/
|
|
67
|
-
const toIssueChargeCardLocalDataFromDraft = (draft) => draft.cardRows.map(mapCardRow);
|
|
68
|
-
exports.toIssueChargeCardLocalDataFromDraft = toIssueChargeCardLocalDataFromDraft;
|