@zeniai/client-epic-state 5.2.72 → 5.2.74-betaAK0
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/invoicing/coupon/couponSelector.d.ts +1 -0
- package/lib/entity/invoicing/coupon/couponSelector.js +5 -0
- package/lib/epic.d.ts +2 -1
- package/lib/epic.js +2 -0
- package/lib/esm/entity/invoicing/coupon/couponSelector.js +4 -0
- package/lib/esm/epic.js +2 -0
- package/lib/esm/index.js +1 -1
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +55 -0
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewReducer.js +35 -1
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +80 -2
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/fetchInvoicingSubscriptionEstimateEpic.js +49 -0
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js +18 -13
- package/lib/esm/view/onboardingView/customerView/epic/customerDetails/updateOnboardingCustomerViewEpic.js +2 -2
- package/lib/index.d.ts +3 -3
- package/lib/index.js +7 -5
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.d.ts +46 -1
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +57 -1
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewReducer.d.ts +10 -2
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewReducer.js +36 -2
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.d.ts +21 -1
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +83 -3
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewState.d.ts +58 -0
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/fetchInvoicingSubscriptionEstimateEpic.d.ts +7 -0
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/fetchInvoicingSubscriptionEstimateEpic.js +53 -0
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.d.ts +8 -0
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js +21 -14
- package/lib/view/onboardingView/customerView/epic/customerDetails/updateOnboardingCustomerViewEpic.js +2 -2
- package/package.json +1 -26
package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
+
import { ID } from '../../../commonStateTypes/common';
|
|
3
4
|
import { updateAddresses } from '../../../entity/address/addressReducer';
|
|
4
5
|
import { updateInvoicingSubscriptions } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionReducer';
|
|
5
6
|
import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
|
|
@@ -10,5 +11,12 @@ import { invalidateInvoicingCustomerDetail } from '../editInvoicingCustomerDetai
|
|
|
10
11
|
import { invalidateInvoiceListForCustomer } from '../invoiceList/invoiceListReducer';
|
|
11
12
|
import { addInvoicingSubscriptionToList } from '../invoicingSubscriptionListView/invoicingSubscriptionListViewReducer';
|
|
12
13
|
import { submitInvoicingSubscriptionForm, submitInvoicingSubscriptionFormFailure, submitInvoicingSubscriptionFormSuccess, syncInvoicingSubscriptionCoupons } from './editInvoicingSubscriptionDetailViewReducer';
|
|
14
|
+
import { InvoicingSubscriptionFormLocalData } from './editInvoicingSubscriptionDetailViewState';
|
|
13
15
|
export type ActionType = ReturnType<typeof submitInvoicingSubscriptionForm> | ReturnType<typeof submitInvoicingSubscriptionFormSuccess> | ReturnType<typeof submitInvoicingSubscriptionFormFailure> | ReturnType<typeof syncInvoicingSubscriptionCoupons> | ReturnType<typeof resetNewAddressDataInLocalStore> | ReturnType<typeof updateAddresses> | ReturnType<typeof updateInvoicingSubscriptions> | ReturnType<typeof addInvoicingSubscriptionToList> | ReturnType<typeof invalidateInvoicingCustomerDetail> | ReturnType<typeof invalidateInvoiceListForCustomer> | ReturnType<typeof openSnackbar>;
|
|
16
|
+
export declare const isInvoicingSubscriptionCouponChanged: (previousCouponCode: string, nextCouponCode: string) => boolean;
|
|
17
|
+
export declare const invoicingSubscriptionSaveRequest: (rootState: RootState, id?: ID) => {
|
|
18
|
+
data: Record<string, unknown>;
|
|
19
|
+
localData: InvoicingSubscriptionFormLocalData;
|
|
20
|
+
previousCouponCode: string;
|
|
21
|
+
};
|
|
14
22
|
export declare const saveInvoicingSubscriptionEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.saveInvoicingSubscriptionEpic = void 0;
|
|
3
|
+
exports.saveInvoicingSubscriptionEpic = exports.invoicingSubscriptionSaveRequest = exports.isInvoicingSubscriptionCouponChanged = void 0;
|
|
4
4
|
const rxjs_1 = require("rxjs");
|
|
5
5
|
const operators_1 = require("rxjs/operators");
|
|
6
6
|
const addressReducer_1 = require("../../../entity/address/addressReducer");
|
|
@@ -17,9 +17,11 @@ const editInvoicingSubscriptionDetailViewPayload_1 = require("./editInvoicingSub
|
|
|
17
17
|
const editInvoicingSubscriptionDetailViewReducer_1 = require("./editInvoicingSubscriptionDetailViewReducer");
|
|
18
18
|
const invoicingSubscriptionFormConfig_1 = require("./invoicingSubscriptionFormConfig");
|
|
19
19
|
const normalizeCouponCode = (value) => (value ?? '').trim().toUpperCase();
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
const isInvoicingSubscriptionCouponChanged = (previousCouponCode, nextCouponCode) => normalizeCouponCode(previousCouponCode) !==
|
|
21
|
+
normalizeCouponCode(nextCouponCode);
|
|
22
|
+
exports.isInvoicingSubscriptionCouponChanged = isInvoicingSubscriptionCouponChanged;
|
|
23
|
+
// The draft a save reads and the body it sends; the estimate previews the same body.
|
|
24
|
+
const invoicingSubscriptionSaveRequest = (rootState, id) => {
|
|
23
25
|
const viewState = rootState.editInvoicingSubscriptionDetailViewState;
|
|
24
26
|
const localData = (id != null
|
|
25
27
|
? viewState.editDraftById[id]?.localData
|
|
@@ -28,18 +30,24 @@ const saveInvoicingSubscriptionEpic = (actions$, state$, zeniAPI) => actions$.pi
|
|
|
28
30
|
// object in the payload (same pattern as the customer save flow).
|
|
29
31
|
const shippingAddress = rootState.addressViewState.newAddressState?.[invoicingSubscriptionFormConfig_1.INVOICING_SUBSCRIPTION_SHIPPING_ADDRESS_TYPE]?.addressToCreate;
|
|
30
32
|
const data = (0, editInvoicingSubscriptionDetailViewPayload_1.localDataToSaveInvoicingSubscriptionPayload)(localData, shippingAddress);
|
|
31
|
-
// Coupons are synced via apply/remove-coupon after PUT (not via coupon_ids).
|
|
32
33
|
if (id != null) {
|
|
33
34
|
delete data.coupon_ids;
|
|
34
35
|
}
|
|
36
|
+
const savedCoupon = id != null
|
|
37
|
+
? rootState.invoicingSubscriptionState.invoicingSubscriptionByID[id]
|
|
38
|
+
?.coupons?.[0]
|
|
39
|
+
: undefined;
|
|
40
|
+
return {
|
|
41
|
+
data,
|
|
42
|
+
localData,
|
|
43
|
+
previousCouponCode: savedCoupon?.couponCode ?? savedCoupon?.couponID ?? '',
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
exports.invoicingSubscriptionSaveRequest = invoicingSubscriptionSaveRequest;
|
|
47
|
+
const saveInvoicingSubscriptionEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(editInvoicingSubscriptionDetailViewReducer_1.submitInvoicingSubscriptionForm.match), (0, operators_1.mergeMap)((action) => {
|
|
48
|
+
const { id } = action.payload;
|
|
49
|
+
const { data, localData, previousCouponCode } = (0, exports.invoicingSubscriptionSaveRequest)(state$.value, id);
|
|
35
50
|
const baseUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0`;
|
|
36
|
-
const previousCouponCode = id != null
|
|
37
|
-
? (rootState.invoicingSubscriptionState.invoicingSubscriptionByID[id]
|
|
38
|
-
?.coupons?.[0]?.couponCode ??
|
|
39
|
-
rootState.invoicingSubscriptionState.invoicingSubscriptionByID[id]
|
|
40
|
-
?.coupons?.[0]?.couponID ??
|
|
41
|
-
'')
|
|
42
|
-
: '';
|
|
43
51
|
const request$ = id != null
|
|
44
52
|
? zeniAPI.putAndGetJSON(`${baseUrl}/subscriptions/${encodeURIComponent(id)}`, { ...data })
|
|
45
53
|
: zeniAPI.postAndGetJSON(`${baseUrl}/subscriptions`, { ...data });
|
|
@@ -57,8 +65,7 @@ const saveInvoicingSubscriptionEpic = (actions$, state$, zeniAPI) => actions$.pi
|
|
|
57
65
|
}
|
|
58
66
|
const saved = response.data;
|
|
59
67
|
const couponChanged = id != null &&
|
|
60
|
-
|
|
61
|
-
normalizeCouponCode(localData.couponId);
|
|
68
|
+
(0, exports.isInvoicingSubscriptionCouponChanged)(previousCouponCode, localData.couponId);
|
|
62
69
|
// Edit + coupon change: merge the saved subscription, then hand the
|
|
63
70
|
// coupon attach/detach to syncInvoicingSubscriptionCouponsEpic, which
|
|
64
71
|
// finishes the flow (form success on both calls ok, form failure
|
|
@@ -93,8 +93,8 @@ const updateOnboardingCustomerViewEpic = (actions$, state$, zeniAPI) => actions$
|
|
|
93
93
|
save: 'onboarding_customer_business_verification_save',
|
|
94
94
|
},
|
|
95
95
|
setup_billing: {
|
|
96
|
-
save: '
|
|
97
|
-
sendForVerification: '
|
|
96
|
+
save: 'common',
|
|
97
|
+
sendForVerification: 'common',
|
|
98
98
|
},
|
|
99
99
|
};
|
|
100
100
|
let messageSection;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.74-betaAK0",
|
|
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",
|
|
@@ -53,31 +53,6 @@
|
|
|
53
53
|
"url": "https://github.com/zeni-ai/client-epic-state/issues"
|
|
54
54
|
},
|
|
55
55
|
"homepage": "https://github.com/zeni-ai/client-epic-state#readme",
|
|
56
|
-
"devDependencies": {
|
|
57
|
-
"@eslint/js": "^9.24.0",
|
|
58
|
-
"@liveblocks/client": "^2.23.0",
|
|
59
|
-
"@trivago/prettier-plugin-sort-imports": "^5.2.2",
|
|
60
|
-
"@types/big.js": "^6.2.2",
|
|
61
|
-
"@types/lodash": "^4.17.23",
|
|
62
|
-
"@types/node": "^20.19.0",
|
|
63
|
-
"@types/url-parse": "^1.4.11",
|
|
64
|
-
"@typescript-eslint/eslint-plugin": "^8.56.0",
|
|
65
|
-
"@typescript-eslint/parser": "^8.56.0",
|
|
66
|
-
"concurrently": "^9.1.2",
|
|
67
|
-
"eslint": "^9.24.0",
|
|
68
|
-
"eslint-config-prettier": "^10.0.2",
|
|
69
|
-
"eslint-plugin-perfectionist": "^4.15.0",
|
|
70
|
-
"eslint-plugin-unused-imports": "^4.1.4",
|
|
71
|
-
"globals": "^16.0.0",
|
|
72
|
-
"knip": "^6.21.0",
|
|
73
|
-
"madge": "^8.0.0",
|
|
74
|
-
"prettier": "^3.5.3",
|
|
75
|
-
"rimraf": "^6.0.1",
|
|
76
|
-
"semver": "^7.7.1",
|
|
77
|
-
"typescript": "^5.7.3",
|
|
78
|
-
"vite": "^7.3.5",
|
|
79
|
-
"vitest": "^4.1.11"
|
|
80
|
-
},
|
|
81
56
|
"dependencies": {
|
|
82
57
|
"@redux-devtools/extension": "^3.3.0",
|
|
83
58
|
"@reduxjs/toolkit": "^1.6.2",
|