@open-tender/cloud 0.0.1

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.
Files changed (215) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/app/hooks.d.ts +50 -0
  4. package/dist/cjs/app/hooks.js +8 -0
  5. package/dist/cjs/app/index.d.ts +1 -0
  6. package/dist/cjs/app/index.js +4 -0
  7. package/dist/cjs/app/store.d.ts +146 -0
  8. package/dist/cjs/app/store.js +51 -0
  9. package/dist/cjs/index.d.ts +3 -0
  10. package/dist/cjs/index.js +7 -0
  11. package/dist/cjs/services/api.d.ts +162 -0
  12. package/dist/cjs/services/api.js +691 -0
  13. package/dist/cjs/services/errors.d.ts +50 -0
  14. package/dist/cjs/services/errors.js +53 -0
  15. package/dist/cjs/services/index.d.ts +2 -0
  16. package/dist/cjs/services/index.js +6 -0
  17. package/dist/cjs/slices/alerts.d.ts +5 -0
  18. package/dist/cjs/slices/alerts.js +28 -0
  19. package/dist/cjs/slices/allergens.d.ts +19 -0
  20. package/dist/cjs/slices/allergens.js +66 -0
  21. package/dist/cjs/slices/announcements.d.ts +28 -0
  22. package/dist/cjs/slices/announcements.js +77 -0
  23. package/dist/cjs/slices/checkout.d.ts +38 -0
  24. package/dist/cjs/slices/checkout.js +276 -0
  25. package/dist/cjs/slices/completedOrders.d.ts +25 -0
  26. package/dist/cjs/slices/completedOrders.js +61 -0
  27. package/dist/cjs/slices/config.d.ts +87 -0
  28. package/dist/cjs/slices/config.js +121 -0
  29. package/dist/cjs/slices/confirmation.d.ts +8 -0
  30. package/dist/cjs/slices/confirmation.js +22 -0
  31. package/dist/cjs/slices/customer/account.d.ts +59 -0
  32. package/dist/cjs/slices/customer/account.js +288 -0
  33. package/dist/cjs/slices/customer/addresses.d.ts +37 -0
  34. package/dist/cjs/slices/customer/addresses.js +134 -0
  35. package/dist/cjs/slices/customer/allergens.d.ts +25 -0
  36. package/dist/cjs/slices/customer/allergens.js +94 -0
  37. package/dist/cjs/slices/customer/communicationPreferences.d.ts +44 -0
  38. package/dist/cjs/slices/customer/communicationPreferences.js +165 -0
  39. package/dist/cjs/slices/customer/creditCards.d.ts +46 -0
  40. package/dist/cjs/slices/customer/creditCards.js +172 -0
  41. package/dist/cjs/slices/customer/favorites.d.ts +45 -0
  42. package/dist/cjs/slices/customer/favorites.js +176 -0
  43. package/dist/cjs/slices/customer/fcmToken.d.ts +31 -0
  44. package/dist/cjs/slices/customer/fcmToken.js +110 -0
  45. package/dist/cjs/slices/customer/giftCards.d.ts +62 -0
  46. package/dist/cjs/slices/customer/giftCards.js +196 -0
  47. package/dist/cjs/slices/customer/groupOrders.d.ts +33 -0
  48. package/dist/cjs/slices/customer/groupOrders.js +148 -0
  49. package/dist/cjs/slices/customer/houseAccounts.d.ts +20 -0
  50. package/dist/cjs/slices/customer/houseAccounts.js +67 -0
  51. package/dist/cjs/slices/customer/index.d.ts +29 -0
  52. package/dist/cjs/slices/customer/index.js +52 -0
  53. package/dist/cjs/slices/customer/levelup.d.ts +36 -0
  54. package/dist/cjs/slices/customer/levelup.js +128 -0
  55. package/dist/cjs/slices/customer/loyalty.d.ts +27 -0
  56. package/dist/cjs/slices/customer/loyalty.js +87 -0
  57. package/dist/cjs/slices/customer/order.d.ts +25 -0
  58. package/dist/cjs/slices/customer/order.js +84 -0
  59. package/dist/cjs/slices/customer/orders.d.ts +20 -0
  60. package/dist/cjs/slices/customer/orders.js +67 -0
  61. package/dist/cjs/slices/customer/qrCode.d.ts +17 -0
  62. package/dist/cjs/slices/customer/qrCode.js +57 -0
  63. package/dist/cjs/slices/customer/rewards.d.ts +20 -0
  64. package/dist/cjs/slices/customer/rewards.js +67 -0
  65. package/dist/cjs/slices/customer/thanx.d.ts +17 -0
  66. package/dist/cjs/slices/customer/thanx.js +57 -0
  67. package/dist/cjs/slices/deals.d.ts +19 -0
  68. package/dist/cjs/slices/deals.js +97 -0
  69. package/dist/cjs/slices/donations.d.ts +26 -0
  70. package/dist/cjs/slices/donations.js +62 -0
  71. package/dist/cjs/slices/giftCards.d.ts +26 -0
  72. package/dist/cjs/slices/giftCards.js +63 -0
  73. package/dist/cjs/slices/groupOrder.d.ts +80 -0
  74. package/dist/cjs/slices/groupOrder.js +226 -0
  75. package/dist/cjs/slices/guest.d.ts +38 -0
  76. package/dist/cjs/slices/guest.js +101 -0
  77. package/dist/cjs/slices/index.d.ts +27 -0
  78. package/dist/cjs/slices/index.js +30 -0
  79. package/dist/cjs/slices/levelup.d.ts +18 -0
  80. package/dist/cjs/slices/levelup.js +51 -0
  81. package/dist/cjs/slices/menu.d.ts +22 -0
  82. package/dist/cjs/slices/menu.js +86 -0
  83. package/dist/cjs/slices/menuDisplay.d.ts +26 -0
  84. package/dist/cjs/slices/menuDisplay.js +59 -0
  85. package/dist/cjs/slices/menuItems.d.ts +20 -0
  86. package/dist/cjs/slices/menuItems.js +57 -0
  87. package/dist/cjs/slices/notifications.d.ts +5 -0
  88. package/dist/cjs/slices/notifications.js +27 -0
  89. package/dist/cjs/slices/order.d.ts +77 -0
  90. package/dist/cjs/slices/order.js +426 -0
  91. package/dist/cjs/slices/orderFulfillment.d.ts +29 -0
  92. package/dist/cjs/slices/orderFulfillment.js +83 -0
  93. package/dist/cjs/slices/orderRating.d.ts +34 -0
  94. package/dist/cjs/slices/orderRating.js +108 -0
  95. package/dist/cjs/slices/orders.d.ts +86 -0
  96. package/dist/cjs/slices/orders.js +311 -0
  97. package/dist/cjs/slices/resetPassword.d.ts +29 -0
  98. package/dist/cjs/slices/resetPassword.js +83 -0
  99. package/dist/cjs/slices/revenueCenters.d.ts +35 -0
  100. package/dist/cjs/slices/revenueCenters.js +95 -0
  101. package/dist/cjs/slices/signUp.d.ts +19 -0
  102. package/dist/cjs/slices/signUp.js +52 -0
  103. package/dist/cjs/slices/types.d.ts +43 -0
  104. package/dist/cjs/slices/types.js +47 -0
  105. package/dist/cjs/slices/validTimes.d.ts +17 -0
  106. package/dist/cjs/slices/validTimes.js +57 -0
  107. package/dist/cjs/slices/verifyAccount.d.ts +17 -0
  108. package/dist/cjs/slices/verifyAccount.js +54 -0
  109. package/dist/esm/app/hooks.d.ts +50 -0
  110. package/dist/esm/app/hooks.js +4 -0
  111. package/dist/esm/app/index.d.ts +1 -0
  112. package/dist/esm/app/index.js +1 -0
  113. package/dist/esm/app/store.d.ts +146 -0
  114. package/dist/esm/app/store.js +48 -0
  115. package/dist/esm/index.d.ts +3 -0
  116. package/dist/esm/index.js +3 -0
  117. package/dist/esm/services/api.d.ts +162 -0
  118. package/dist/esm/services/api.js +689 -0
  119. package/dist/esm/services/errors.d.ts +50 -0
  120. package/dist/esm/services/errors.js +50 -0
  121. package/dist/esm/services/index.d.ts +2 -0
  122. package/dist/esm/services/index.js +2 -0
  123. package/dist/esm/slices/alerts.d.ts +5 -0
  124. package/dist/esm/slices/alerts.js +23 -0
  125. package/dist/esm/slices/allergens.d.ts +19 -0
  126. package/dist/esm/slices/allergens.js +60 -0
  127. package/dist/esm/slices/announcements.d.ts +28 -0
  128. package/dist/esm/slices/announcements.js +71 -0
  129. package/dist/esm/slices/checkout.d.ts +38 -0
  130. package/dist/esm/slices/checkout.js +268 -0
  131. package/dist/esm/slices/completedOrders.d.ts +25 -0
  132. package/dist/esm/slices/completedOrders.js +57 -0
  133. package/dist/esm/slices/config.d.ts +87 -0
  134. package/dist/esm/slices/config.js +102 -0
  135. package/dist/esm/slices/confirmation.d.ts +8 -0
  136. package/dist/esm/slices/confirmation.js +18 -0
  137. package/dist/esm/slices/customer/account.d.ts +59 -0
  138. package/dist/esm/slices/customer/account.js +282 -0
  139. package/dist/esm/slices/customer/addresses.d.ts +37 -0
  140. package/dist/esm/slices/customer/addresses.js +129 -0
  141. package/dist/esm/slices/customer/allergens.d.ts +25 -0
  142. package/dist/esm/slices/customer/allergens.js +89 -0
  143. package/dist/esm/slices/customer/communicationPreferences.d.ts +44 -0
  144. package/dist/esm/slices/customer/communicationPreferences.js +161 -0
  145. package/dist/esm/slices/customer/creditCards.d.ts +46 -0
  146. package/dist/esm/slices/customer/creditCards.js +166 -0
  147. package/dist/esm/slices/customer/favorites.d.ts +45 -0
  148. package/dist/esm/slices/customer/favorites.js +171 -0
  149. package/dist/esm/slices/customer/fcmToken.d.ts +31 -0
  150. package/dist/esm/slices/customer/fcmToken.js +106 -0
  151. package/dist/esm/slices/customer/giftCards.d.ts +62 -0
  152. package/dist/esm/slices/customer/giftCards.js +191 -0
  153. package/dist/esm/slices/customer/groupOrders.d.ts +33 -0
  154. package/dist/esm/slices/customer/groupOrders.js +143 -0
  155. package/dist/esm/slices/customer/houseAccounts.d.ts +20 -0
  156. package/dist/esm/slices/customer/houseAccounts.js +62 -0
  157. package/dist/esm/slices/customer/index.d.ts +29 -0
  158. package/dist/esm/slices/customer/index.js +48 -0
  159. package/dist/esm/slices/customer/levelup.d.ts +36 -0
  160. package/dist/esm/slices/customer/levelup.js +123 -0
  161. package/dist/esm/slices/customer/loyalty.d.ts +27 -0
  162. package/dist/esm/slices/customer/loyalty.js +79 -0
  163. package/dist/esm/slices/customer/order.d.ts +25 -0
  164. package/dist/esm/slices/customer/order.js +79 -0
  165. package/dist/esm/slices/customer/orders.d.ts +20 -0
  166. package/dist/esm/slices/customer/orders.js +62 -0
  167. package/dist/esm/slices/customer/qrCode.d.ts +17 -0
  168. package/dist/esm/slices/customer/qrCode.js +53 -0
  169. package/dist/esm/slices/customer/rewards.d.ts +20 -0
  170. package/dist/esm/slices/customer/rewards.js +62 -0
  171. package/dist/esm/slices/customer/thanx.d.ts +17 -0
  172. package/dist/esm/slices/customer/thanx.js +53 -0
  173. package/dist/esm/slices/deals.d.ts +19 -0
  174. package/dist/esm/slices/deals.js +91 -0
  175. package/dist/esm/slices/donations.d.ts +26 -0
  176. package/dist/esm/slices/donations.js +58 -0
  177. package/dist/esm/slices/giftCards.d.ts +26 -0
  178. package/dist/esm/slices/giftCards.js +59 -0
  179. package/dist/esm/slices/groupOrder.d.ts +80 -0
  180. package/dist/esm/slices/groupOrder.js +216 -0
  181. package/dist/esm/slices/guest.d.ts +38 -0
  182. package/dist/esm/slices/guest.js +97 -0
  183. package/dist/esm/slices/index.d.ts +27 -0
  184. package/dist/esm/slices/index.js +27 -0
  185. package/dist/esm/slices/levelup.d.ts +18 -0
  186. package/dist/esm/slices/levelup.js +48 -0
  187. package/dist/esm/slices/menu.d.ts +22 -0
  188. package/dist/esm/slices/menu.js +81 -0
  189. package/dist/esm/slices/menuDisplay.d.ts +26 -0
  190. package/dist/esm/slices/menuDisplay.js +55 -0
  191. package/dist/esm/slices/menuItems.d.ts +20 -0
  192. package/dist/esm/slices/menuItems.js +52 -0
  193. package/dist/esm/slices/notifications.d.ts +5 -0
  194. package/dist/esm/slices/notifications.js +22 -0
  195. package/dist/esm/slices/order.d.ts +77 -0
  196. package/dist/esm/slices/order.js +423 -0
  197. package/dist/esm/slices/orderFulfillment.d.ts +29 -0
  198. package/dist/esm/slices/orderFulfillment.js +79 -0
  199. package/dist/esm/slices/orderRating.d.ts +34 -0
  200. package/dist/esm/slices/orderRating.js +104 -0
  201. package/dist/esm/slices/orders.d.ts +86 -0
  202. package/dist/esm/slices/orders.js +302 -0
  203. package/dist/esm/slices/resetPassword.d.ts +29 -0
  204. package/dist/esm/slices/resetPassword.js +79 -0
  205. package/dist/esm/slices/revenueCenters.d.ts +35 -0
  206. package/dist/esm/slices/revenueCenters.js +89 -0
  207. package/dist/esm/slices/signUp.d.ts +19 -0
  208. package/dist/esm/slices/signUp.js +48 -0
  209. package/dist/esm/slices/types.d.ts +43 -0
  210. package/dist/esm/slices/types.js +44 -0
  211. package/dist/esm/slices/validTimes.d.ts +17 -0
  212. package/dist/esm/slices/validTimes.js +52 -0
  213. package/dist/esm/slices/verifyAccount.d.ts +17 -0
  214. package/dist/esm/slices/verifyAccount.js +50 -0
  215. package/package.json +61 -0
@@ -0,0 +1,143 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
+ import { ReducerType } from '../types';
4
+ import { MISSING_CUSTOMER } from '@open-tender/types';
5
+ import { checkAuth, selectToken } from './account';
6
+ import { makeCartPayload } from '../groupOrder';
7
+ import { makeSimpleCart } from '@open-tender/utils';
8
+ const initialState = {
9
+ entities: [],
10
+ lookup: {},
11
+ loading: 'idle',
12
+ error: null
13
+ };
14
+ export var CustomerGroupOrdersActionType;
15
+ (function (CustomerGroupOrdersActionType) {
16
+ CustomerGroupOrdersActionType["FetchCustomerGroupOrders"] = "customer/fetchCustomerGroupOrders";
17
+ CustomerGroupOrdersActionType["FetchCustomerGroupOrder"] = "customer/fetchCustomerGroupOrder";
18
+ CustomerGroupOrdersActionType["AddCustomerGroupOrder"] = "customer/addCustomerGroupOrder";
19
+ })(CustomerGroupOrdersActionType || (CustomerGroupOrdersActionType = {}));
20
+ export const fetchCustomerGroupOrders = createAsyncThunk(CustomerGroupOrdersActionType.FetchCustomerGroupOrders, (_, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
21
+ try {
22
+ const api = getState().config.api;
23
+ const token = selectToken(getState());
24
+ if (!token)
25
+ throw new Error(MISSING_CUSTOMER);
26
+ const orders = yield api.getCustomerGroupOrders(token);
27
+ return orders;
28
+ }
29
+ catch (err) {
30
+ const error = err;
31
+ return checkAuth(error, dispatch, () => rejectWithValue(error));
32
+ }
33
+ }));
34
+ export const fetchCustomerGroupOrder = createAsyncThunk(CustomerGroupOrdersActionType.FetchCustomerGroupOrder, (cartId, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
35
+ try {
36
+ const api = getState().config.api;
37
+ const token = selectToken(getState());
38
+ if (!token)
39
+ throw new Error(MISSING_CUSTOMER);
40
+ const response = yield api.getCustomerGroupOrder(token, cartId);
41
+ const payload = Object.assign(Object.assign({}, makeCartPayload(response)), { isCartOwner: true });
42
+ return payload;
43
+ }
44
+ catch (err) {
45
+ const error = err;
46
+ return checkAuth(error, dispatch, () => rejectWithValue(error));
47
+ }
48
+ }));
49
+ const makeCartData = (order, data = {}) => {
50
+ const { address, revenueCenter, requestedAt, serviceType, cart } = order;
51
+ const orderData = {
52
+ address,
53
+ revenue_center_id: revenueCenter === null || revenueCenter === void 0 ? void 0 : revenueCenter.revenue_center_id,
54
+ service_type: serviceType,
55
+ requested_at: requestedAt,
56
+ cart: makeSimpleCart(cart !== null && cart !== void 0 ? cart : []),
57
+ spending_limit: null
58
+ };
59
+ const { spendingLimit } = data;
60
+ if (spendingLimit !== undefined) {
61
+ delete data.spendingLimit;
62
+ orderData.spending_limit = isNaN(parseFloat(spendingLimit))
63
+ ? null
64
+ : parseFloat(spendingLimit).toFixed(2);
65
+ }
66
+ return Object.assign(Object.assign({}, orderData), data);
67
+ };
68
+ export const addCustomerGroupOrder = createAsyncThunk(CustomerGroupOrdersActionType.AddCustomerGroupOrder, (requestData, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
69
+ try {
70
+ const api = getState().config.api;
71
+ const token = selectToken(getState());
72
+ if (!token)
73
+ throw new Error(MISSING_CUSTOMER);
74
+ const cartData = makeCartData(getState().order, requestData.data);
75
+ const response = yield api.postCustomerGroupOrder(token, cartData);
76
+ const customer = getState().customer.account.profile;
77
+ const payload = Object.assign(Object.assign({}, makeCartPayload(response)), { isCartOwner: true, cartOwner: customer });
78
+ if (requestData.callback)
79
+ requestData.callback();
80
+ return payload;
81
+ }
82
+ catch (err) {
83
+ const error = err;
84
+ return checkAuth(error, dispatch, () => rejectWithValue(error));
85
+ }
86
+ }));
87
+ const customerGroupOrdersSlice = createSlice({
88
+ name: ReducerType.GroupOrders,
89
+ initialState,
90
+ reducers: {
91
+ resetCustomerGroupOrders: () => initialState,
92
+ resetCustomerGroupOrdersError: state => {
93
+ state.error = null;
94
+ state.loading = 'idle';
95
+ },
96
+ setCustomerGroupOrders: (state, action) => {
97
+ state.entities = action.payload;
98
+ state.error = null;
99
+ }
100
+ },
101
+ extraReducers: builder => {
102
+ builder
103
+ .addCase(fetchCustomerGroupOrders.fulfilled, (state, action) => {
104
+ state.entities = action.payload;
105
+ state.loading = 'idle';
106
+ state.error = null;
107
+ })
108
+ .addCase(fetchCustomerGroupOrders.pending, state => {
109
+ state.loading = 'pending';
110
+ })
111
+ .addCase(fetchCustomerGroupOrders.rejected, (state, action) => {
112
+ state.error = action.payload;
113
+ state.loading = 'idle';
114
+ })
115
+ .addCase(fetchCustomerGroupOrder.fulfilled, (state, action) => {
116
+ state.entities = action.payload;
117
+ state.loading = 'idle';
118
+ state.error = null;
119
+ })
120
+ .addCase(fetchCustomerGroupOrder.pending, state => {
121
+ state.loading = 'pending';
122
+ })
123
+ .addCase(fetchCustomerGroupOrder.rejected, (state, action) => {
124
+ state.error = action.payload;
125
+ state.loading = 'idle';
126
+ })
127
+ .addCase(addCustomerGroupOrder.fulfilled, (state, action) => {
128
+ state.entities = action.payload;
129
+ state.loading = 'idle';
130
+ state.error = null;
131
+ })
132
+ .addCase(addCustomerGroupOrder.pending, state => {
133
+ state.loading = 'pending';
134
+ })
135
+ .addCase(addCustomerGroupOrder.rejected, (state, action) => {
136
+ state.error = action.payload;
137
+ state.loading = 'idle';
138
+ });
139
+ }
140
+ });
141
+ export const { resetCustomerGroupOrders, resetCustomerGroupOrdersError, setCustomerGroupOrders } = customerGroupOrdersSlice.actions;
142
+ export const selectCustomerGroupOrders = (state) => state.customer.groupOrders;
143
+ export const customerGroupOrdersReducer = customerGroupOrdersSlice.reducer;
@@ -0,0 +1,20 @@
1
+ import { AppState } from '../../app';
2
+ import { HouseAccounts, RequestError, RequestStatus } from '@open-tender/types';
3
+ export interface CustomerHouseAccountsState {
4
+ entities: HouseAccounts;
5
+ error: RequestError;
6
+ loading: RequestStatus;
7
+ lookup: {
8
+ [key: number]: number;
9
+ };
10
+ }
11
+ export declare enum CustomerHouseAccountsActionType {
12
+ FetchCustomerHouseAccounts = "customer/fetchCustomerHouseAccounts"
13
+ }
14
+ export declare const fetchCustomerHouseAccounts: import("@reduxjs/toolkit").AsyncThunk<HouseAccounts, void, {
15
+ state: AppState;
16
+ rejectValue: RequestError;
17
+ }>;
18
+ export declare const resetCustomerHouseAccounts: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetCustomerHouseAccountsError: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setCustomerHouseAccounts: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
19
+ export declare const selectCustomerHouseAccounts: (state: AppState) => import("./orders").CustomerOrdersState;
20
+ export declare const customerHouseAccountsReducer: import("redux").Reducer<CustomerHouseAccountsState, import("redux").AnyAction>;
@@ -0,0 +1,62 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
+ import { ReducerType } from '../types';
4
+ import { MISSING_CUSTOMER } from '@open-tender/types';
5
+ import { checkAuth, selectToken } from './account';
6
+ const initialState = {
7
+ entities: [],
8
+ error: null,
9
+ loading: 'idle',
10
+ lookup: {}
11
+ };
12
+ export var CustomerHouseAccountsActionType;
13
+ (function (CustomerHouseAccountsActionType) {
14
+ CustomerHouseAccountsActionType["FetchCustomerHouseAccounts"] = "customer/fetchCustomerHouseAccounts";
15
+ })(CustomerHouseAccountsActionType || (CustomerHouseAccountsActionType = {}));
16
+ export const fetchCustomerHouseAccounts = createAsyncThunk(CustomerHouseAccountsActionType.FetchCustomerHouseAccounts, (_, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
17
+ try {
18
+ const api = getState().config.api;
19
+ const token = selectToken(getState());
20
+ if (!token)
21
+ throw new Error(MISSING_CUSTOMER);
22
+ const houseAccounts = yield api.getCustomerHouseAccounts(token);
23
+ return houseAccounts;
24
+ }
25
+ catch (err) {
26
+ const error = err;
27
+ return checkAuth(error, dispatch, () => rejectWithValue(error));
28
+ }
29
+ }));
30
+ const customerHouseAccountsSlice = createSlice({
31
+ name: ReducerType.HouseAccounts,
32
+ initialState,
33
+ reducers: {
34
+ resetCustomerHouseAccounts: () => initialState,
35
+ resetCustomerHouseAccountsError: state => {
36
+ state.error = null;
37
+ state.loading = 'idle';
38
+ },
39
+ setCustomerHouseAccounts: (state, action) => {
40
+ state.entities = action.payload;
41
+ state.error = null;
42
+ }
43
+ },
44
+ extraReducers: builder => {
45
+ builder
46
+ .addCase(fetchCustomerHouseAccounts.fulfilled, (state, action) => {
47
+ state.entities = action.payload;
48
+ state.loading = 'idle';
49
+ state.error = null;
50
+ })
51
+ .addCase(fetchCustomerHouseAccounts.pending, state => {
52
+ state.loading = 'pending';
53
+ })
54
+ .addCase(fetchCustomerHouseAccounts.rejected, (state, action) => {
55
+ state.error = action.payload;
56
+ state.loading = 'idle';
57
+ });
58
+ }
59
+ });
60
+ export const { resetCustomerHouseAccounts, resetCustomerHouseAccountsError, setCustomerHouseAccounts } = customerHouseAccountsSlice.actions;
61
+ export const selectCustomerHouseAccounts = (state) => state.customer.orders;
62
+ export const customerHouseAccountsReducer = customerHouseAccountsSlice.reducer;
@@ -0,0 +1,29 @@
1
+ export declare const customerReducer: import("redux").Reducer<import("redux").CombinedState<{
2
+ account: import("./account").AccountState;
3
+ allergens: import("./allergens").CustomerAllergensState;
4
+ addresses: import("./addresses").CustomerAddressesState;
5
+ communicationPreferences: import("./communicationPreferences").CustomerCommunicationPrefsState;
6
+ creditCards: import("./creditCards").CustomerCreditCardsState;
7
+ favorites: import("./favorites").CustomerFavoritesState;
8
+ fcmToken: import("./fcmToken").CustomerFcmTokenState;
9
+ giftCards: import("./giftCards").CustomerGiftCardsState;
10
+ orders: import("./orders").CustomerOrdersState;
11
+ order: import("./order").CustomerOrderState;
12
+ loyalty: import("./loyalty").CustomerLoyaltyState;
13
+ groupOrders: import("./groupOrders").CustomerGroupOrdersState;
14
+ houseAccounts: import("./houseAccounts").CustomerHouseAccountsState;
15
+ rewards: import("./rewards").CustomerRewardsState;
16
+ qrcode: import("./qrCode").CustomerQRCodeState;
17
+ thanx: import("./thanx").CustomerThanxState;
18
+ levelup: import("./levelup").CustomerLevelUpState;
19
+ }>, import("redux").AnyAction>;
20
+ export * from './account';
21
+ export * from './allergens';
22
+ export * from './addresses';
23
+ export * from './communicationPreferences';
24
+ export * from './creditCards';
25
+ export * from './favorites';
26
+ export * from './fcmToken';
27
+ export * from './giftCards';
28
+ export * from './orders';
29
+ export * from './loyalty';
@@ -0,0 +1,48 @@
1
+ import { combineReducers } from 'redux';
2
+ import { ReducerType } from '../types';
3
+ import { accountReducer } from './account';
4
+ import { customerAddressesReducer } from './addresses';
5
+ import { customerAllergensReducer } from './allergens';
6
+ import { customerCommunicationPrefsReducer } from './communicationPreferences';
7
+ import { customerCreditCardsReducer } from './creditCards';
8
+ import { customerFavoritesReducer } from './favorites';
9
+ import { customerFcmTokenReducer } from './fcmToken';
10
+ import { customerGiftCardsReducer } from './giftCards';
11
+ import { customerGroupOrdersReducer } from './groupOrders';
12
+ import { customerHouseAccountsReducer } from './houseAccounts';
13
+ import { customerLevelUpReducer } from './levelup';
14
+ import { customerLoyaltyReducer } from './loyalty';
15
+ import { customerOrderReducer } from './order';
16
+ import { customerOrdersReducer } from './orders';
17
+ import { customerQRCodeReducer } from './qrCode';
18
+ import { customerRewardsReducer } from './rewards';
19
+ import { customerThanxReducer } from './thanx';
20
+ export const customerReducer = combineReducers({
21
+ [ReducerType.Account]: accountReducer,
22
+ [ReducerType.CustomerAllergens]: customerAllergensReducer,
23
+ [ReducerType.CustomerAddresses]: customerAddressesReducer,
24
+ [ReducerType.CommunicationPrefs]: customerCommunicationPrefsReducer,
25
+ [ReducerType.CreditCards]: customerCreditCardsReducer,
26
+ [ReducerType.Favorites]: customerFavoritesReducer,
27
+ [ReducerType.FcmToken]: customerFcmTokenReducer,
28
+ [ReducerType.GiftCards]: customerGiftCardsReducer,
29
+ [ReducerType.Orders]: customerOrdersReducer,
30
+ [ReducerType.Order]: customerOrderReducer,
31
+ [ReducerType.Loyalty]: customerLoyaltyReducer,
32
+ [ReducerType.GroupOrders]: customerGroupOrdersReducer,
33
+ [ReducerType.HouseAccounts]: customerHouseAccountsReducer,
34
+ [ReducerType.Rewards]: customerRewardsReducer,
35
+ [ReducerType.QRCode]: customerQRCodeReducer,
36
+ [ReducerType.Thanx]: customerThanxReducer,
37
+ [ReducerType.Levelup]: customerLevelUpReducer
38
+ });
39
+ export * from './account';
40
+ export * from './allergens';
41
+ export * from './addresses';
42
+ export * from './communicationPreferences';
43
+ export * from './creditCards';
44
+ export * from './favorites';
45
+ export * from './fcmToken';
46
+ export * from './giftCards';
47
+ export * from './orders';
48
+ export * from './loyalty';
@@ -0,0 +1,36 @@
1
+ import { AppState } from '../../app';
2
+ import { LevelUp, RequestError, RequestStatus } from '@open-tender/types';
3
+ export interface CustomerLevelUpState {
4
+ entities: LevelUp[];
5
+ error: RequestError;
6
+ loading: RequestStatus;
7
+ lookup: {
8
+ [key: number]: number;
9
+ };
10
+ }
11
+ export declare enum CustomerLevelUpActionType {
12
+ FetchCustomerLevelUp = "customer/fetchCustomerLevelUp",
13
+ RemoveCustomerLevelUp = "customer/removeCustomerLevelUp",
14
+ AddCustomerLevelUp = "customer/addCustomerLevelUp"
15
+ }
16
+ export declare const fetchCustomerLevelUp: import("@reduxjs/toolkit").AsyncThunk<LevelUp[], void, {
17
+ state: AppState;
18
+ rejectValue: RequestError;
19
+ }>;
20
+ export declare const removeCustomerLevelUp: import("@reduxjs/toolkit").AsyncThunk<LevelUp[], {
21
+ levelupConnectId: number;
22
+ callback?: (() => void) | undefined;
23
+ }, {
24
+ state: AppState;
25
+ rejectValue: RequestError;
26
+ }>;
27
+ export declare const addCustomerLevelUp: import("@reduxjs/toolkit").AsyncThunk<LevelUp[], {
28
+ data: LevelUp;
29
+ callback?: (() => void) | undefined;
30
+ }, {
31
+ state: AppState;
32
+ rejectValue: RequestError;
33
+ }>;
34
+ export declare const resetCustomerLevelUp: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setCustomerLevelUp: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
35
+ export declare const selectCustomerLevelUp: (state: AppState) => CustomerLevelUpState;
36
+ export declare const customerLevelUpReducer: import("redux").Reducer<CustomerLevelUpState, import("redux").AnyAction>;
@@ -0,0 +1,123 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
+ import { ReducerType } from '../types';
4
+ import { MISSING_CUSTOMER } from '@open-tender/types';
5
+ import { checkAuth, selectToken } from './account';
6
+ import { showNotification } from '../notifications';
7
+ const initialState = {
8
+ entities: [],
9
+ lookup: {},
10
+ loading: 'idle',
11
+ error: null
12
+ };
13
+ export var CustomerLevelUpActionType;
14
+ (function (CustomerLevelUpActionType) {
15
+ CustomerLevelUpActionType["FetchCustomerLevelUp"] = "customer/fetchCustomerLevelUp";
16
+ CustomerLevelUpActionType["RemoveCustomerLevelUp"] = "customer/removeCustomerLevelUp";
17
+ CustomerLevelUpActionType["AddCustomerLevelUp"] = "customer/addCustomerLevelUp";
18
+ })(CustomerLevelUpActionType || (CustomerLevelUpActionType = {}));
19
+ export const fetchCustomerLevelUp = createAsyncThunk(CustomerLevelUpActionType.FetchCustomerLevelUp, (_, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
20
+ try {
21
+ const api = getState().config.api;
22
+ const token = selectToken(getState());
23
+ if (!token)
24
+ throw new Error(MISSING_CUSTOMER);
25
+ const levelup = yield api.getCustomerLevelUp(token);
26
+ return levelup;
27
+ }
28
+ catch (err) {
29
+ const error = err;
30
+ return checkAuth(error, dispatch, () => rejectWithValue(error));
31
+ }
32
+ }));
33
+ export const removeCustomerLevelUp = createAsyncThunk(CustomerLevelUpActionType.RemoveCustomerLevelUp, (requestData, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
34
+ try {
35
+ const api = getState().config.api;
36
+ const token = selectToken(getState());
37
+ if (!token)
38
+ throw new Error(MISSING_CUSTOMER);
39
+ yield api.deleteCustomerLevelUp(token, requestData.levelupConnectId);
40
+ dispatch(showNotification('LevelUp disconnected!'));
41
+ if (requestData.callback)
42
+ requestData.callback();
43
+ return [];
44
+ }
45
+ catch (err) {
46
+ const error = err;
47
+ return checkAuth(error, dispatch, () => rejectWithValue(error));
48
+ }
49
+ }));
50
+ export const addCustomerLevelUp = createAsyncThunk(CustomerLevelUpActionType.AddCustomerLevelUp, (requestData, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
51
+ try {
52
+ const api = getState().config.api;
53
+ const token = selectToken(getState());
54
+ if (!token)
55
+ throw new Error(MISSING_CUSTOMER);
56
+ const response = yield api.postCustomerLevelUp(token, requestData.data);
57
+ dispatch(showNotification('LevelUp connected!'));
58
+ if (requestData.callback)
59
+ requestData.callback();
60
+ return [response];
61
+ }
62
+ catch (err) {
63
+ const error = err;
64
+ return checkAuth(error, dispatch, () => rejectWithValue(error));
65
+ }
66
+ }));
67
+ const customerLevelUpSlice = createSlice({
68
+ name: ReducerType.Levelup,
69
+ initialState,
70
+ reducers: {
71
+ resetCustomerLevelUp: () => initialState,
72
+ setCustomerLevelUp: (state, action) => {
73
+ state.entities = action.payload;
74
+ state.error = null;
75
+ },
76
+ resetCustomerLevelUpError: state => {
77
+ state.error = null;
78
+ state.loading = 'idle';
79
+ }
80
+ },
81
+ extraReducers: builder => {
82
+ builder
83
+ .addCase(fetchCustomerLevelUp.fulfilled, (state, action) => {
84
+ state.entities = action.payload;
85
+ state.loading = 'idle';
86
+ state.error = null;
87
+ })
88
+ .addCase(fetchCustomerLevelUp.pending, state => {
89
+ state.loading = 'pending';
90
+ })
91
+ .addCase(fetchCustomerLevelUp.rejected, (state, action) => {
92
+ state.error = action.payload;
93
+ state.loading = 'idle';
94
+ })
95
+ .addCase(removeCustomerLevelUp.fulfilled, (state, action) => {
96
+ state.entities = action.payload;
97
+ state.loading = 'idle';
98
+ state.error = null;
99
+ })
100
+ .addCase(removeCustomerLevelUp.pending, state => {
101
+ state.loading = 'pending';
102
+ })
103
+ .addCase(removeCustomerLevelUp.rejected, (state, action) => {
104
+ state.error = action.payload;
105
+ state.loading = 'idle';
106
+ })
107
+ .addCase(addCustomerLevelUp.fulfilled, (state, action) => {
108
+ state.entities = action.payload;
109
+ state.loading = 'idle';
110
+ state.error = null;
111
+ })
112
+ .addCase(addCustomerLevelUp.pending, state => {
113
+ state.loading = 'pending';
114
+ })
115
+ .addCase(addCustomerLevelUp.rejected, (state, action) => {
116
+ state.error = action.payload;
117
+ state.loading = 'idle';
118
+ });
119
+ }
120
+ });
121
+ export const { resetCustomerLevelUp, setCustomerLevelUp } = customerLevelUpSlice.actions;
122
+ export const selectCustomerLevelUp = (state) => state.customer.levelup;
123
+ export const customerLevelUpReducer = customerLevelUpSlice.reducer;
@@ -0,0 +1,27 @@
1
+ import { AppState } from '../../app';
2
+ import { CustomerLoyalties, OrderType, RequestError, RequestStatus } from '@open-tender/types';
3
+ export interface CustomerLoyaltyState {
4
+ entities: CustomerLoyalties;
5
+ error: RequestError;
6
+ loading: RequestStatus;
7
+ lookup: {
8
+ [key: number]: number;
9
+ };
10
+ }
11
+ export declare enum CustomerLoyaltyActionType {
12
+ FetchCustomerLoyalty = "customer/fetchCustomerLoyalty"
13
+ }
14
+ export declare const fetchCustomerLoyalty: import("@reduxjs/toolkit").AsyncThunk<CustomerLoyalties, void, {
15
+ state: AppState;
16
+ rejectValue: RequestError;
17
+ }>;
18
+ export declare const resetCustomerLoyalty: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetCustomerLoyaltyError: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setCustomerLoyalty: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
19
+ export declare const selectCustomerLoyalty: (state: AppState) => CustomerLoyaltyState;
20
+ export declare const selectCustomerLoyaltyProgram: (state: AppState) => {
21
+ program: import("@open-tender/types").CustomerLoyalty | null;
22
+ loading: RequestStatus;
23
+ error: RequestError;
24
+ };
25
+ export declare const selectCustomerPointsProgram: (orderType: OrderType) => (state: AppState) => import("@open-tender/types").CustomerLoyalty | null;
26
+ export declare const selectCustomerPoints: (orderType: OrderType) => (state: AppState) => import("@open-tender/types").LoyaltyPoints | null;
27
+ export declare const customerLoyaltyReducer: import("redux").Reducer<CustomerLoyaltyState, import("redux").AnyAction>;
@@ -0,0 +1,79 @@
1
+ import { __awaiter } from "tslib";
2
+ import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
3
+ import { ReducerType } from '../types';
4
+ import { MISSING_CUSTOMER } from '@open-tender/types';
5
+ import { checkAuth, selectToken } from './account';
6
+ const initialState = {
7
+ entities: [],
8
+ error: null,
9
+ loading: 'idle',
10
+ lookup: {}
11
+ };
12
+ export var CustomerLoyaltyActionType;
13
+ (function (CustomerLoyaltyActionType) {
14
+ CustomerLoyaltyActionType["FetchCustomerLoyalty"] = "customer/fetchCustomerLoyalty";
15
+ })(CustomerLoyaltyActionType || (CustomerLoyaltyActionType = {}));
16
+ export const fetchCustomerLoyalty = createAsyncThunk(CustomerLoyaltyActionType.FetchCustomerLoyalty, (_, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
17
+ try {
18
+ const api = getState().config.api;
19
+ const token = selectToken(getState());
20
+ if (!token)
21
+ throw new Error(MISSING_CUSTOMER);
22
+ const loyalty = yield api.getCustomerLoyalty(token);
23
+ return loyalty;
24
+ }
25
+ catch (err) {
26
+ const error = err;
27
+ return checkAuth(error, dispatch, () => rejectWithValue(error));
28
+ }
29
+ }));
30
+ const customerLoyaltySlice = createSlice({
31
+ name: ReducerType.Loyalty,
32
+ initialState,
33
+ reducers: {
34
+ resetCustomerLoyalty: () => initialState,
35
+ resetCustomerLoyaltyError: state => {
36
+ state.error = null;
37
+ state.loading = 'idle';
38
+ },
39
+ setCustomerLoyalty: (state, action) => {
40
+ state.entities = action.payload;
41
+ state.error = null;
42
+ }
43
+ },
44
+ extraReducers: builder => {
45
+ builder
46
+ .addCase(fetchCustomerLoyalty.fulfilled, (state, action) => {
47
+ state.entities = action.payload;
48
+ state.loading = 'idle';
49
+ state.error = null;
50
+ })
51
+ .addCase(fetchCustomerLoyalty.pending, state => {
52
+ state.loading = 'pending';
53
+ })
54
+ .addCase(fetchCustomerLoyalty.rejected, (state, action) => {
55
+ state.error = action.payload;
56
+ state.loading = 'idle';
57
+ });
58
+ }
59
+ });
60
+ export const { resetCustomerLoyalty, resetCustomerLoyaltyError, setCustomerLoyalty } = customerLoyaltySlice.actions;
61
+ export const selectCustomerLoyalty = (state) => state.customer.loyalty;
62
+ export const selectCustomerLoyaltyProgram = (state) => {
63
+ const { entities, loading, error } = state.customer.loyalty;
64
+ const programs = entities.filter(i => (i.loyalty_type === 'CREDIT' || i.loyalty_type === 'POINTS') &&
65
+ (i.spend.order_type === null || i.spend.order_type === 'OLO'));
66
+ const program = programs.length ? programs[0] : null;
67
+ return { program, loading, error };
68
+ };
69
+ export const selectCustomerPointsProgram = (orderType) => (state) => {
70
+ const { loyalty } = state.customer;
71
+ const programs = loyalty.entities.filter(i => i.loyalty_type === 'POINTS' &&
72
+ (i.spend.order_type === null || i.spend.order_type === orderType));
73
+ return programs.length ? programs[0] : null;
74
+ };
75
+ export const selectCustomerPoints = (orderType) => (state) => {
76
+ const program = selectCustomerPointsProgram(orderType)(state);
77
+ return program ? program.points : null;
78
+ };
79
+ export const customerLoyaltyReducer = customerLoyaltySlice.reducer;
@@ -0,0 +1,25 @@
1
+ import { AppState } from '../../app';
2
+ import { Order, OrderRating, RequestError, RequestStatus } from '@open-tender/types';
3
+ export interface CustomerOrderState {
4
+ entity: Order | Partial<Order>;
5
+ error: RequestError;
6
+ loading: RequestStatus;
7
+ }
8
+ export declare enum CustomerOrderActionType {
9
+ FetchCustomerOrder = "customer/fetchCustomerOrder",
10
+ UpdateCustomerFavorite = "customer/updateCustomerFavorite"
11
+ }
12
+ export declare const fetchCustomerOrder: import("@reduxjs/toolkit").AsyncThunk<Order, number, {
13
+ state: AppState;
14
+ rejectValue: RequestError;
15
+ }>;
16
+ export declare const updateCustomerOrderRating: import("@reduxjs/toolkit").AsyncThunk<void, {
17
+ orderId: number;
18
+ data: OrderRating;
19
+ }, {
20
+ state: AppState;
21
+ rejectValue: RequestError;
22
+ }>;
23
+ export declare const resetCustomerOrder: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetCustomerOrderError: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setCustomerOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
24
+ export declare const selectCustomerOrder: (state: AppState) => CustomerOrderState;
25
+ export declare const customerOrderReducer: import("redux").Reducer<CustomerOrderState, import("redux").AnyAction>;