@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.
- package/LICENSE.md +21 -0
- package/README.md +3 -0
- package/dist/cjs/app/hooks.d.ts +50 -0
- package/dist/cjs/app/hooks.js +8 -0
- package/dist/cjs/app/index.d.ts +1 -0
- package/dist/cjs/app/index.js +4 -0
- package/dist/cjs/app/store.d.ts +146 -0
- package/dist/cjs/app/store.js +51 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.js +7 -0
- package/dist/cjs/services/api.d.ts +162 -0
- package/dist/cjs/services/api.js +691 -0
- package/dist/cjs/services/errors.d.ts +50 -0
- package/dist/cjs/services/errors.js +53 -0
- package/dist/cjs/services/index.d.ts +2 -0
- package/dist/cjs/services/index.js +6 -0
- package/dist/cjs/slices/alerts.d.ts +5 -0
- package/dist/cjs/slices/alerts.js +28 -0
- package/dist/cjs/slices/allergens.d.ts +19 -0
- package/dist/cjs/slices/allergens.js +66 -0
- package/dist/cjs/slices/announcements.d.ts +28 -0
- package/dist/cjs/slices/announcements.js +77 -0
- package/dist/cjs/slices/checkout.d.ts +38 -0
- package/dist/cjs/slices/checkout.js +276 -0
- package/dist/cjs/slices/completedOrders.d.ts +25 -0
- package/dist/cjs/slices/completedOrders.js +61 -0
- package/dist/cjs/slices/config.d.ts +87 -0
- package/dist/cjs/slices/config.js +121 -0
- package/dist/cjs/slices/confirmation.d.ts +8 -0
- package/dist/cjs/slices/confirmation.js +22 -0
- package/dist/cjs/slices/customer/account.d.ts +59 -0
- package/dist/cjs/slices/customer/account.js +288 -0
- package/dist/cjs/slices/customer/addresses.d.ts +37 -0
- package/dist/cjs/slices/customer/addresses.js +134 -0
- package/dist/cjs/slices/customer/allergens.d.ts +25 -0
- package/dist/cjs/slices/customer/allergens.js +94 -0
- package/dist/cjs/slices/customer/communicationPreferences.d.ts +44 -0
- package/dist/cjs/slices/customer/communicationPreferences.js +165 -0
- package/dist/cjs/slices/customer/creditCards.d.ts +46 -0
- package/dist/cjs/slices/customer/creditCards.js +172 -0
- package/dist/cjs/slices/customer/favorites.d.ts +45 -0
- package/dist/cjs/slices/customer/favorites.js +176 -0
- package/dist/cjs/slices/customer/fcmToken.d.ts +31 -0
- package/dist/cjs/slices/customer/fcmToken.js +110 -0
- package/dist/cjs/slices/customer/giftCards.d.ts +62 -0
- package/dist/cjs/slices/customer/giftCards.js +196 -0
- package/dist/cjs/slices/customer/groupOrders.d.ts +33 -0
- package/dist/cjs/slices/customer/groupOrders.js +148 -0
- package/dist/cjs/slices/customer/houseAccounts.d.ts +20 -0
- package/dist/cjs/slices/customer/houseAccounts.js +67 -0
- package/dist/cjs/slices/customer/index.d.ts +29 -0
- package/dist/cjs/slices/customer/index.js +52 -0
- package/dist/cjs/slices/customer/levelup.d.ts +36 -0
- package/dist/cjs/slices/customer/levelup.js +128 -0
- package/dist/cjs/slices/customer/loyalty.d.ts +27 -0
- package/dist/cjs/slices/customer/loyalty.js +87 -0
- package/dist/cjs/slices/customer/order.d.ts +25 -0
- package/dist/cjs/slices/customer/order.js +84 -0
- package/dist/cjs/slices/customer/orders.d.ts +20 -0
- package/dist/cjs/slices/customer/orders.js +67 -0
- package/dist/cjs/slices/customer/qrCode.d.ts +17 -0
- package/dist/cjs/slices/customer/qrCode.js +57 -0
- package/dist/cjs/slices/customer/rewards.d.ts +20 -0
- package/dist/cjs/slices/customer/rewards.js +67 -0
- package/dist/cjs/slices/customer/thanx.d.ts +17 -0
- package/dist/cjs/slices/customer/thanx.js +57 -0
- package/dist/cjs/slices/deals.d.ts +19 -0
- package/dist/cjs/slices/deals.js +97 -0
- package/dist/cjs/slices/donations.d.ts +26 -0
- package/dist/cjs/slices/donations.js +62 -0
- package/dist/cjs/slices/giftCards.d.ts +26 -0
- package/dist/cjs/slices/giftCards.js +63 -0
- package/dist/cjs/slices/groupOrder.d.ts +80 -0
- package/dist/cjs/slices/groupOrder.js +226 -0
- package/dist/cjs/slices/guest.d.ts +38 -0
- package/dist/cjs/slices/guest.js +101 -0
- package/dist/cjs/slices/index.d.ts +27 -0
- package/dist/cjs/slices/index.js +30 -0
- package/dist/cjs/slices/levelup.d.ts +18 -0
- package/dist/cjs/slices/levelup.js +51 -0
- package/dist/cjs/slices/menu.d.ts +22 -0
- package/dist/cjs/slices/menu.js +86 -0
- package/dist/cjs/slices/menuDisplay.d.ts +26 -0
- package/dist/cjs/slices/menuDisplay.js +59 -0
- package/dist/cjs/slices/menuItems.d.ts +20 -0
- package/dist/cjs/slices/menuItems.js +57 -0
- package/dist/cjs/slices/notifications.d.ts +5 -0
- package/dist/cjs/slices/notifications.js +27 -0
- package/dist/cjs/slices/order.d.ts +77 -0
- package/dist/cjs/slices/order.js +426 -0
- package/dist/cjs/slices/orderFulfillment.d.ts +29 -0
- package/dist/cjs/slices/orderFulfillment.js +83 -0
- package/dist/cjs/slices/orderRating.d.ts +34 -0
- package/dist/cjs/slices/orderRating.js +108 -0
- package/dist/cjs/slices/orders.d.ts +86 -0
- package/dist/cjs/slices/orders.js +311 -0
- package/dist/cjs/slices/resetPassword.d.ts +29 -0
- package/dist/cjs/slices/resetPassword.js +83 -0
- package/dist/cjs/slices/revenueCenters.d.ts +35 -0
- package/dist/cjs/slices/revenueCenters.js +95 -0
- package/dist/cjs/slices/signUp.d.ts +19 -0
- package/dist/cjs/slices/signUp.js +52 -0
- package/dist/cjs/slices/types.d.ts +43 -0
- package/dist/cjs/slices/types.js +47 -0
- package/dist/cjs/slices/validTimes.d.ts +17 -0
- package/dist/cjs/slices/validTimes.js +57 -0
- package/dist/cjs/slices/verifyAccount.d.ts +17 -0
- package/dist/cjs/slices/verifyAccount.js +54 -0
- package/dist/esm/app/hooks.d.ts +50 -0
- package/dist/esm/app/hooks.js +4 -0
- package/dist/esm/app/index.d.ts +1 -0
- package/dist/esm/app/index.js +1 -0
- package/dist/esm/app/store.d.ts +146 -0
- package/dist/esm/app/store.js +48 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/services/api.d.ts +162 -0
- package/dist/esm/services/api.js +689 -0
- package/dist/esm/services/errors.d.ts +50 -0
- package/dist/esm/services/errors.js +50 -0
- package/dist/esm/services/index.d.ts +2 -0
- package/dist/esm/services/index.js +2 -0
- package/dist/esm/slices/alerts.d.ts +5 -0
- package/dist/esm/slices/alerts.js +23 -0
- package/dist/esm/slices/allergens.d.ts +19 -0
- package/dist/esm/slices/allergens.js +60 -0
- package/dist/esm/slices/announcements.d.ts +28 -0
- package/dist/esm/slices/announcements.js +71 -0
- package/dist/esm/slices/checkout.d.ts +38 -0
- package/dist/esm/slices/checkout.js +268 -0
- package/dist/esm/slices/completedOrders.d.ts +25 -0
- package/dist/esm/slices/completedOrders.js +57 -0
- package/dist/esm/slices/config.d.ts +87 -0
- package/dist/esm/slices/config.js +102 -0
- package/dist/esm/slices/confirmation.d.ts +8 -0
- package/dist/esm/slices/confirmation.js +18 -0
- package/dist/esm/slices/customer/account.d.ts +59 -0
- package/dist/esm/slices/customer/account.js +282 -0
- package/dist/esm/slices/customer/addresses.d.ts +37 -0
- package/dist/esm/slices/customer/addresses.js +129 -0
- package/dist/esm/slices/customer/allergens.d.ts +25 -0
- package/dist/esm/slices/customer/allergens.js +89 -0
- package/dist/esm/slices/customer/communicationPreferences.d.ts +44 -0
- package/dist/esm/slices/customer/communicationPreferences.js +161 -0
- package/dist/esm/slices/customer/creditCards.d.ts +46 -0
- package/dist/esm/slices/customer/creditCards.js +166 -0
- package/dist/esm/slices/customer/favorites.d.ts +45 -0
- package/dist/esm/slices/customer/favorites.js +171 -0
- package/dist/esm/slices/customer/fcmToken.d.ts +31 -0
- package/dist/esm/slices/customer/fcmToken.js +106 -0
- package/dist/esm/slices/customer/giftCards.d.ts +62 -0
- package/dist/esm/slices/customer/giftCards.js +191 -0
- package/dist/esm/slices/customer/groupOrders.d.ts +33 -0
- package/dist/esm/slices/customer/groupOrders.js +143 -0
- package/dist/esm/slices/customer/houseAccounts.d.ts +20 -0
- package/dist/esm/slices/customer/houseAccounts.js +62 -0
- package/dist/esm/slices/customer/index.d.ts +29 -0
- package/dist/esm/slices/customer/index.js +48 -0
- package/dist/esm/slices/customer/levelup.d.ts +36 -0
- package/dist/esm/slices/customer/levelup.js +123 -0
- package/dist/esm/slices/customer/loyalty.d.ts +27 -0
- package/dist/esm/slices/customer/loyalty.js +79 -0
- package/dist/esm/slices/customer/order.d.ts +25 -0
- package/dist/esm/slices/customer/order.js +79 -0
- package/dist/esm/slices/customer/orders.d.ts +20 -0
- package/dist/esm/slices/customer/orders.js +62 -0
- package/dist/esm/slices/customer/qrCode.d.ts +17 -0
- package/dist/esm/slices/customer/qrCode.js +53 -0
- package/dist/esm/slices/customer/rewards.d.ts +20 -0
- package/dist/esm/slices/customer/rewards.js +62 -0
- package/dist/esm/slices/customer/thanx.d.ts +17 -0
- package/dist/esm/slices/customer/thanx.js +53 -0
- package/dist/esm/slices/deals.d.ts +19 -0
- package/dist/esm/slices/deals.js +91 -0
- package/dist/esm/slices/donations.d.ts +26 -0
- package/dist/esm/slices/donations.js +58 -0
- package/dist/esm/slices/giftCards.d.ts +26 -0
- package/dist/esm/slices/giftCards.js +59 -0
- package/dist/esm/slices/groupOrder.d.ts +80 -0
- package/dist/esm/slices/groupOrder.js +216 -0
- package/dist/esm/slices/guest.d.ts +38 -0
- package/dist/esm/slices/guest.js +97 -0
- package/dist/esm/slices/index.d.ts +27 -0
- package/dist/esm/slices/index.js +27 -0
- package/dist/esm/slices/levelup.d.ts +18 -0
- package/dist/esm/slices/levelup.js +48 -0
- package/dist/esm/slices/menu.d.ts +22 -0
- package/dist/esm/slices/menu.js +81 -0
- package/dist/esm/slices/menuDisplay.d.ts +26 -0
- package/dist/esm/slices/menuDisplay.js +55 -0
- package/dist/esm/slices/menuItems.d.ts +20 -0
- package/dist/esm/slices/menuItems.js +52 -0
- package/dist/esm/slices/notifications.d.ts +5 -0
- package/dist/esm/slices/notifications.js +22 -0
- package/dist/esm/slices/order.d.ts +77 -0
- package/dist/esm/slices/order.js +423 -0
- package/dist/esm/slices/orderFulfillment.d.ts +29 -0
- package/dist/esm/slices/orderFulfillment.js +79 -0
- package/dist/esm/slices/orderRating.d.ts +34 -0
- package/dist/esm/slices/orderRating.js +104 -0
- package/dist/esm/slices/orders.d.ts +86 -0
- package/dist/esm/slices/orders.js +302 -0
- package/dist/esm/slices/resetPassword.d.ts +29 -0
- package/dist/esm/slices/resetPassword.js +79 -0
- package/dist/esm/slices/revenueCenters.d.ts +35 -0
- package/dist/esm/slices/revenueCenters.js +89 -0
- package/dist/esm/slices/signUp.d.ts +19 -0
- package/dist/esm/slices/signUp.js +48 -0
- package/dist/esm/slices/types.d.ts +43 -0
- package/dist/esm/slices/types.js +44 -0
- package/dist/esm/slices/validTimes.d.ts +17 -0
- package/dist/esm/slices/validTimes.js +52 -0
- package/dist/esm/slices/verifyAccount.d.ts +17 -0
- package/dist/esm/slices/verifyAccount.js +50 -0
- package/package.json +61 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
3
|
+
import { ReducerType } from './types';
|
|
4
|
+
const initialState = {
|
|
5
|
+
entities: [],
|
|
6
|
+
loading: 'idle',
|
|
7
|
+
error: null
|
|
8
|
+
};
|
|
9
|
+
export var CompletedOrdersActionType;
|
|
10
|
+
(function (CompletedOrdersActionType) {
|
|
11
|
+
CompletedOrdersActionType["FetchCompletedOrders"] = "completedOrders/fetchCompletedOrders";
|
|
12
|
+
CompletedOrdersActionType["RefreshCompletedOrders"] = "completedOrders/refreshCompletedOrders";
|
|
13
|
+
})(CompletedOrdersActionType || (CompletedOrdersActionType = {}));
|
|
14
|
+
export const fetchCompletedOrders = createAsyncThunk(CompletedOrdersActionType.FetchCompletedOrders, (requestData, { getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
try {
|
|
16
|
+
const { api } = getState().config;
|
|
17
|
+
const args = {
|
|
18
|
+
business_date: requestData.business_date,
|
|
19
|
+
prep_status: `COMPLETED,FULFILLED`
|
|
20
|
+
};
|
|
21
|
+
if (requestData.channelTypes)
|
|
22
|
+
args.channel_type = requestData.channelTypes;
|
|
23
|
+
const orders = yield api.getOrders(args);
|
|
24
|
+
return orders;
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
return rejectWithValue(err);
|
|
28
|
+
}
|
|
29
|
+
}));
|
|
30
|
+
const completedOrdersSlice = createSlice({
|
|
31
|
+
name: ReducerType.CompletedOrders,
|
|
32
|
+
initialState,
|
|
33
|
+
reducers: {
|
|
34
|
+
resetCompletedOrders: () => initialState
|
|
35
|
+
},
|
|
36
|
+
extraReducers: builder => {
|
|
37
|
+
builder
|
|
38
|
+
.addCase(fetchCompletedOrders.fulfilled, (state, action) => {
|
|
39
|
+
state.entities = action.payload;
|
|
40
|
+
state.loading = 'idle';
|
|
41
|
+
state.error = null;
|
|
42
|
+
})
|
|
43
|
+
.addCase(fetchCompletedOrders.pending, state => {
|
|
44
|
+
state.loading = 'pending';
|
|
45
|
+
})
|
|
46
|
+
.addCase(fetchCompletedOrders.rejected, (state, action) => {
|
|
47
|
+
state.error = action.payload;
|
|
48
|
+
state.loading = 'idle';
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
export const { resetCompletedOrders } = completedOrdersSlice.actions;
|
|
53
|
+
export const selectCompletedOrders = (state) => {
|
|
54
|
+
const { entities: orders, loading, error } = state.completedOrders;
|
|
55
|
+
return { orders, loading, error };
|
|
56
|
+
};
|
|
57
|
+
export const completedOrdersReducer = completedOrdersSlice.reducer;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { ConfigApp, ConfigBrand, ConfigContent, ConfigSettings, ConfigTheme, RequestError, RequestStatus } from '@open-tender/types';
|
|
2
|
+
import { AppState } from '../app';
|
|
3
|
+
export interface ConfigState {
|
|
4
|
+
api: any;
|
|
5
|
+
itemTypes: any;
|
|
6
|
+
app: ConfigApp | null;
|
|
7
|
+
brand: ConfigBrand | null;
|
|
8
|
+
content: ConfigContent | null;
|
|
9
|
+
error: any;
|
|
10
|
+
isBackgroundFetch: boolean;
|
|
11
|
+
loading: RequestStatus;
|
|
12
|
+
retries: number;
|
|
13
|
+
settings: ConfigSettings | null;
|
|
14
|
+
theme: ConfigTheme | null;
|
|
15
|
+
}
|
|
16
|
+
export declare enum ConfigActionType {
|
|
17
|
+
FetchConfig = "config/getConfig"
|
|
18
|
+
}
|
|
19
|
+
export declare const fetchConfig: import("@reduxjs/toolkit").AsyncThunk<ConfigState, {
|
|
20
|
+
baseUrl: string;
|
|
21
|
+
authUrl: string;
|
|
22
|
+
clientId: string;
|
|
23
|
+
brandId: string;
|
|
24
|
+
callback?: (() => void) | undefined;
|
|
25
|
+
}, {
|
|
26
|
+
state: AppState;
|
|
27
|
+
rejectValue: RequestError;
|
|
28
|
+
}>;
|
|
29
|
+
export declare const resetConfig: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetRetries: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, incrementRetries: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
|
|
30
|
+
export declare const selectCateringOnly: (state: AppState) => boolean;
|
|
31
|
+
export declare const selectConfig: (state: AppState) => ConfigState;
|
|
32
|
+
export declare const selectBrand: (state: AppState) => ConfigBrand | null;
|
|
33
|
+
export declare const selectTheme: (state: AppState) => ConfigTheme | null;
|
|
34
|
+
export declare const selectContent: (state: AppState) => ConfigContent | null;
|
|
35
|
+
export declare const selectSettings: (state: AppState) => ConfigSettings | null;
|
|
36
|
+
export declare const selectApi: (state: AppState) => any;
|
|
37
|
+
export declare const selectAccountConfig: (state: AppState) => {
|
|
38
|
+
addresses: import("@open-tender/types").ConfigContentField;
|
|
39
|
+
allergens: import("@open-tender/types").ConfigContentField;
|
|
40
|
+
background: string;
|
|
41
|
+
content: string;
|
|
42
|
+
creditCards: import("@open-tender/types").ConfigContentField;
|
|
43
|
+
deals: import("@open-tender/types").ConfigContentField;
|
|
44
|
+
displayLogo: boolean;
|
|
45
|
+
displayLogoApp: boolean;
|
|
46
|
+
displayLogoMobile: boolean;
|
|
47
|
+
displayed: string[];
|
|
48
|
+
displayedMobile: string[];
|
|
49
|
+
favorites: import("@open-tender/types").ConfigContentField;
|
|
50
|
+
giftCards: import("@open-tender/types").ConfigContentField;
|
|
51
|
+
greeting: string;
|
|
52
|
+
groupOrders: import("@open-tender/types").ConfigContentField;
|
|
53
|
+
houseAccounts: import("@open-tender/types").ConfigContentField;
|
|
54
|
+
levelup: import("@open-tender/types").ConfigContentField;
|
|
55
|
+
loyalty: {
|
|
56
|
+
signUp: string;
|
|
57
|
+
title: string;
|
|
58
|
+
subtitle: string;
|
|
59
|
+
skip: string;
|
|
60
|
+
};
|
|
61
|
+
mobile: string;
|
|
62
|
+
profile: import("@open-tender/types").ConfigContentField;
|
|
63
|
+
punctuation: string;
|
|
64
|
+
recentItems: import("@open-tender/types").ConfigContentField;
|
|
65
|
+
recentOrders: import("@open-tender/types").ConfigContentField;
|
|
66
|
+
rewards: import("@open-tender/types").ConfigContentField;
|
|
67
|
+
showFirstName: boolean;
|
|
68
|
+
showHero: boolean;
|
|
69
|
+
subtitle: string;
|
|
70
|
+
thanx: import("@open-tender/types").ConfigContentField;
|
|
71
|
+
title: string;
|
|
72
|
+
} | undefined;
|
|
73
|
+
export declare const selectDisplaySettings: (state: AppState) => import("@open-tender/types").ConfigDisplaySetting | undefined;
|
|
74
|
+
export declare const selectConfigRetries: (state: AppState) => number;
|
|
75
|
+
export declare const selectLightColor: (state: AppState) => string;
|
|
76
|
+
export declare const selectOptIns: (state: AppState) => {
|
|
77
|
+
accepts_marketing: import("@open-tender/types").ConfigAcceptMarketing | undefined;
|
|
78
|
+
order_notifications: import("@open-tender/types").ConfigOrderNotifications | undefined;
|
|
79
|
+
};
|
|
80
|
+
export declare const selectFulfillment: (state: AppState) => import("@open-tender/types").ConfigFulfillment | undefined;
|
|
81
|
+
export declare const selectRecaptcha: (state: AppState) => {
|
|
82
|
+
addCard: boolean;
|
|
83
|
+
donations: boolean;
|
|
84
|
+
giftCards: boolean;
|
|
85
|
+
} | undefined;
|
|
86
|
+
export declare const selectSoldOutMsg: (state: AppState) => string;
|
|
87
|
+
export declare const configReducer: import("redux").Reducer<ConfigState, import("redux").AnyAction>;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { createSlice, createAsyncThunk } from '@reduxjs/toolkit';
|
|
3
|
+
import { decorateTheme } from '@open-tender/utils';
|
|
4
|
+
import { ReducerType } from './types';
|
|
5
|
+
import OpenTenderAPI from '../services/api';
|
|
6
|
+
const initialState = {
|
|
7
|
+
app: null,
|
|
8
|
+
brand: null,
|
|
9
|
+
content: null,
|
|
10
|
+
theme: null,
|
|
11
|
+
settings: null,
|
|
12
|
+
api: null,
|
|
13
|
+
loading: 'idle',
|
|
14
|
+
error: null,
|
|
15
|
+
retries: 0,
|
|
16
|
+
isBackgroundFetch: false,
|
|
17
|
+
itemTypes: null
|
|
18
|
+
};
|
|
19
|
+
export var ConfigActionType;
|
|
20
|
+
(function (ConfigActionType) {
|
|
21
|
+
ConfigActionType["FetchConfig"] = "config/getConfig";
|
|
22
|
+
})(ConfigActionType || (ConfigActionType = {}));
|
|
23
|
+
export const fetchConfig = createAsyncThunk(ConfigActionType.FetchConfig, (options, { rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
try {
|
|
25
|
+
const api = new OpenTenderAPI(options);
|
|
26
|
+
const response = yield api.getConfig();
|
|
27
|
+
const app = { baseUrl: options.baseUrl, authUrl: options.authUrl, clientId: options.clientId, brandId: options.brandId };
|
|
28
|
+
options.callback && options.callback();
|
|
29
|
+
return Object.assign(Object.assign({}, response), { app });
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
return rejectWithValue(err);
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
const configSlice = createSlice({
|
|
36
|
+
name: ReducerType.Config,
|
|
37
|
+
initialState: initialState,
|
|
38
|
+
reducers: {
|
|
39
|
+
resetConfig: () => initialState,
|
|
40
|
+
resetRetries: state => {
|
|
41
|
+
state.retries = 0;
|
|
42
|
+
},
|
|
43
|
+
incrementRetries: state => {
|
|
44
|
+
state.retries = state.retries + 1;
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
extraReducers: builder => {
|
|
48
|
+
builder
|
|
49
|
+
.addCase(fetchConfig.fulfilled, (state, action) => {
|
|
50
|
+
const { app, brand, content, theme, settings } = action.payload;
|
|
51
|
+
state.app = app;
|
|
52
|
+
state.brand = brand;
|
|
53
|
+
state.content = content;
|
|
54
|
+
state.theme = theme ? decorateTheme(theme) : null;
|
|
55
|
+
state.settings = settings;
|
|
56
|
+
state.loading = 'idle';
|
|
57
|
+
state.api = new OpenTenderAPI(app);
|
|
58
|
+
state.error = null;
|
|
59
|
+
state.retries = 0;
|
|
60
|
+
})
|
|
61
|
+
.addCase(fetchConfig.pending, (state, action) => {
|
|
62
|
+
var _a;
|
|
63
|
+
state.loading = 'pending';
|
|
64
|
+
state.isBackgroundFetch = ((_a = action === null || action === void 0 ? void 0 : action.meta) === null || _a === void 0 ? void 0 : _a.arg) !== undefined ? true : false;
|
|
65
|
+
})
|
|
66
|
+
.addCase(fetchConfig.rejected, (state, action) => {
|
|
67
|
+
state.error = action.payload;
|
|
68
|
+
state.loading = 'idle';
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
export const { resetConfig, resetRetries, incrementRetries } = configSlice.actions;
|
|
73
|
+
export const selectCateringOnly = (state) => {
|
|
74
|
+
const { orderTypes } = state.config.settings || {};
|
|
75
|
+
return !!((orderTypes === null || orderTypes === void 0 ? void 0 : orderTypes.includes('CATERING')) && orderTypes.length === 1);
|
|
76
|
+
};
|
|
77
|
+
export const selectConfig = (state) => state.config;
|
|
78
|
+
export const selectBrand = (state) => state.config.brand;
|
|
79
|
+
export const selectTheme = (state) => state.config.theme;
|
|
80
|
+
export const selectContent = (state) => state.config.content;
|
|
81
|
+
export const selectSettings = (state) => state.config.settings;
|
|
82
|
+
export const selectApi = (state) => state.config.api;
|
|
83
|
+
export const selectAccountConfig = (state) => { var _a; return (_a = state.config.content) === null || _a === void 0 ? void 0 : _a.account; };
|
|
84
|
+
export const selectDisplaySettings = (state) => {
|
|
85
|
+
var _a;
|
|
86
|
+
const orderType = state.order.orderType || 'OLO';
|
|
87
|
+
return (_a = state.config.settings) === null || _a === void 0 ? void 0 : _a.displaySettings[orderType];
|
|
88
|
+
};
|
|
89
|
+
export const selectConfigRetries = (state) => state.config.retries;
|
|
90
|
+
export const selectLightColor = (state) => state.config.theme ? state.config.theme.colors.light : '#ffffff';
|
|
91
|
+
export const selectOptIns = (state) => {
|
|
92
|
+
const { accepts_marketing, order_notifications } = state.config.brand || {};
|
|
93
|
+
return { accepts_marketing, order_notifications };
|
|
94
|
+
};
|
|
95
|
+
export const selectFulfillment = (state) => { var _a; return (_a = state.config.brand) === null || _a === void 0 ? void 0 : _a.fulfillment; };
|
|
96
|
+
export const selectRecaptcha = (state) => { var _a; return (_a = state.config.settings) === null || _a === void 0 ? void 0 : _a.recaptcha; };
|
|
97
|
+
export const selectSoldOutMsg = (state) => {
|
|
98
|
+
var _a;
|
|
99
|
+
const { soldOutMessage } = ((_a = state.config.content) === null || _a === void 0 ? void 0 : _a.menu) || {};
|
|
100
|
+
return soldOutMessage || 'Sold out for day';
|
|
101
|
+
};
|
|
102
|
+
export const configReducer = configSlice.reducer;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Order } from '@open-tender/types';
|
|
2
|
+
import { AppState } from '../app';
|
|
3
|
+
export interface ConfirmationState {
|
|
4
|
+
order: Order | null;
|
|
5
|
+
}
|
|
6
|
+
export declare const resetConfirmation: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>;
|
|
7
|
+
export declare const selectConfirmationOrder: (state: AppState) => Order | null;
|
|
8
|
+
export declare const confirmationReducer: import("redux").Reducer<ConfirmationState, import("redux").AnyAction>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createSlice } from '@reduxjs/toolkit';
|
|
2
|
+
import { ReducerType } from './types';
|
|
3
|
+
const initialState = {
|
|
4
|
+
order: null
|
|
5
|
+
};
|
|
6
|
+
const confirmationSlice = createSlice({
|
|
7
|
+
name: ReducerType.Confirmation,
|
|
8
|
+
initialState,
|
|
9
|
+
reducers: {
|
|
10
|
+
resetConfirmation: () => initialState,
|
|
11
|
+
setConfirmationOrder: (state, action) => {
|
|
12
|
+
state.order = action.payload;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
export const { resetConfirmation } = confirmationSlice.actions;
|
|
17
|
+
export const selectConfirmationOrder = (state) => state.confirmation.order;
|
|
18
|
+
export const confirmationReducer = confirmationSlice.reducer;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { AnyAction, ThunkDispatch } from '@reduxjs/toolkit';
|
|
2
|
+
import { AppState } from '../../app';
|
|
3
|
+
import { Auth, LoginData, Profile, RequestError, RequestStatus } from '@open-tender/types';
|
|
4
|
+
export interface AccountState {
|
|
5
|
+
auth: Auth | null;
|
|
6
|
+
profile: Partial<Profile> | null;
|
|
7
|
+
loading: RequestStatus;
|
|
8
|
+
error: RequestError;
|
|
9
|
+
}
|
|
10
|
+
export declare enum AccountActionType {
|
|
11
|
+
LoginCustomer = "customer/loginCustomer",
|
|
12
|
+
LogoutCustomer = "customer/logoutCustomer",
|
|
13
|
+
FetchCustomer = "customer/fetchCustomer",
|
|
14
|
+
UpdateCustomer = "customer/updateCustomer",
|
|
15
|
+
VerifyCustomer = "customer/verifyCustomer",
|
|
16
|
+
LinkPosToken = "customer/linkPosToken"
|
|
17
|
+
}
|
|
18
|
+
export declare const checkAuth: (err: RequestError, dispatch: ThunkDispatch<AppState, unknown, AnyAction>, rejectWithValue: () => any) => Promise<any>;
|
|
19
|
+
export declare const fetchCustomer: import("@reduxjs/toolkit").AsyncThunk<Partial<Profile>, void, {
|
|
20
|
+
state: AppState;
|
|
21
|
+
rejectValue: RequestError;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const loginCustomer: import("@reduxjs/toolkit").AsyncThunk<Auth, LoginData, {
|
|
24
|
+
state: AppState;
|
|
25
|
+
rejectValue: RequestError;
|
|
26
|
+
}>;
|
|
27
|
+
export declare const logoutCustomer: import("@reduxjs/toolkit").AsyncThunk<null, boolean | undefined, {
|
|
28
|
+
state: AppState;
|
|
29
|
+
rejectValue: RequestError;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const linkPosToken: import("@reduxjs/toolkit").AsyncThunk<void, string, {
|
|
32
|
+
state: AppState;
|
|
33
|
+
rejectValue: RequestError;
|
|
34
|
+
}>;
|
|
35
|
+
export declare const updateCustomer: import("@reduxjs/toolkit").AsyncThunk<Partial<Profile>, {
|
|
36
|
+
data: Partial<Profile>;
|
|
37
|
+
callback?: ((data: Partial<Profile>) => void) | undefined;
|
|
38
|
+
}, {
|
|
39
|
+
state: AppState;
|
|
40
|
+
rejectValue: RequestError;
|
|
41
|
+
}>;
|
|
42
|
+
export declare const sendCustomerVerificationEmail: import("@reduxjs/toolkit").AsyncThunk<void, string, {
|
|
43
|
+
state: AppState;
|
|
44
|
+
rejectValue: RequestError;
|
|
45
|
+
}>;
|
|
46
|
+
export declare const loginCustomerThanx: import("@reduxjs/toolkit").AsyncThunk<null, string, {
|
|
47
|
+
state: AppState;
|
|
48
|
+
rejectValue: RequestError;
|
|
49
|
+
}>;
|
|
50
|
+
export declare const authCustomerThanx: import("@reduxjs/toolkit").AsyncThunk<Auth, {
|
|
51
|
+
code: any;
|
|
52
|
+
path: string | null;
|
|
53
|
+
}, {
|
|
54
|
+
state: AppState;
|
|
55
|
+
rejectValue: RequestError;
|
|
56
|
+
}>;
|
|
57
|
+
export declare const resetCustomer: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, resetLoginError: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, fulfillLoginCustomer: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
|
|
58
|
+
export declare const selectToken: (state: AppState) => string | null;
|
|
59
|
+
export declare const accountReducer: import("redux").Reducer<AccountState, AnyAction>;
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';
|
|
3
|
+
import { ReducerType } from '../types';
|
|
4
|
+
import { MISSING_CUSTOMER, MISSING_CUSTOMER_TOKEN } from '@open-tender/types';
|
|
5
|
+
import { showNotification } from '../notifications';
|
|
6
|
+
import { resetCustomerAllergens, setCustomerAllergens } from './allergens';
|
|
7
|
+
import { setSelectedAllergens } from '../allergens';
|
|
8
|
+
import { resetCustomerFavorites, setCustomerFavorites, setCustomerFavoritesLookup } from './favorites';
|
|
9
|
+
import { resetCustomerCreditCards } from './creditCards';
|
|
10
|
+
import { resetCustomerAddresses } from './addresses';
|
|
11
|
+
import { resetCustomerHouseAccounts } from './houseAccounts';
|
|
12
|
+
import { resetCustomerLoyalty } from './loyalty';
|
|
13
|
+
import { resetCustomerOrder } from './order';
|
|
14
|
+
import { resetCustomerOrders } from './orders';
|
|
15
|
+
import { resetCustomerRewards } from './rewards';
|
|
16
|
+
import { resetCustomerCommunicationPreferences } from './communicationPreferences';
|
|
17
|
+
import { resetCustomerGiftCards, setCustomerGiftCards } from './giftCards';
|
|
18
|
+
import { resetCustomerLevelUp, setCustomerLevelUp } from './levelup';
|
|
19
|
+
import { addMessage, resetOrder, setAlert } from '../order';
|
|
20
|
+
import { makeCustomerProfile, makeFavoritesLookup, makeFormErrors } from '@open-tender/utils';
|
|
21
|
+
import { resetCheckout, updateCheckoutCustomer } from '../checkout';
|
|
22
|
+
import { resetGroupOrder } from '../groupOrder';
|
|
23
|
+
import { resetGuest } from '../guest';
|
|
24
|
+
const initialState = {
|
|
25
|
+
auth: null,
|
|
26
|
+
profile: null,
|
|
27
|
+
loading: 'idle',
|
|
28
|
+
error: null
|
|
29
|
+
};
|
|
30
|
+
export var AccountActionType;
|
|
31
|
+
(function (AccountActionType) {
|
|
32
|
+
AccountActionType["LoginCustomer"] = "customer/loginCustomer";
|
|
33
|
+
AccountActionType["LogoutCustomer"] = "customer/logoutCustomer";
|
|
34
|
+
AccountActionType["FetchCustomer"] = "customer/fetchCustomer";
|
|
35
|
+
AccountActionType["UpdateCustomer"] = "customer/updateCustomer";
|
|
36
|
+
AccountActionType["VerifyCustomer"] = "customer/verifyCustomer";
|
|
37
|
+
AccountActionType["LinkPosToken"] = "customer/linkPosToken";
|
|
38
|
+
})(AccountActionType || (AccountActionType = {}));
|
|
39
|
+
export const checkAuth = (err, dispatch, rejectWithValue) => __awaiter(void 0, void 0, void 0, function* () {
|
|
40
|
+
if ((err === null || err === void 0 ? void 0 : err.status) === 401) {
|
|
41
|
+
yield dispatch(logoutCustomer());
|
|
42
|
+
dispatch(addMessage('Please login to reauthenticate your account'));
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return rejectWithValue();
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
export const fetchCustomer = createAsyncThunk(AccountActionType.FetchCustomer,
|
|
50
|
+
// eslint-disable-next-line no-unused-vars
|
|
51
|
+
(_, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
52
|
+
try {
|
|
53
|
+
const api = getState().config.api;
|
|
54
|
+
const token = selectToken(getState());
|
|
55
|
+
if (!token)
|
|
56
|
+
throw new Error(MISSING_CUSTOMER);
|
|
57
|
+
const customer = yield api.getCustomer(token);
|
|
58
|
+
const { allergens, gift_cards, favorites, levelup } = customer;
|
|
59
|
+
dispatch(setCustomerAllergens(allergens || []));
|
|
60
|
+
dispatch(setSelectedAllergens(allergens || []));
|
|
61
|
+
dispatch(setCustomerGiftCards(gift_cards || []));
|
|
62
|
+
dispatch(setCustomerFavorites(favorites || []));
|
|
63
|
+
dispatch(setCustomerLevelUp(levelup || []));
|
|
64
|
+
const lookup = makeFavoritesLookup(favorites);
|
|
65
|
+
dispatch(setCustomerFavoritesLookup(lookup || {}));
|
|
66
|
+
const profile = makeCustomerProfile(customer);
|
|
67
|
+
return profile;
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
const error = err;
|
|
71
|
+
return checkAuth(error, dispatch, () => rejectWithValue(error));
|
|
72
|
+
}
|
|
73
|
+
}));
|
|
74
|
+
export const loginCustomer = createAsyncThunk(AccountActionType.LoginCustomer, (data, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
75
|
+
try {
|
|
76
|
+
const { email, password } = data;
|
|
77
|
+
const api = getState().config.api;
|
|
78
|
+
const auth = yield api.postLogin(email, password);
|
|
79
|
+
dispatch(fetchCustomer);
|
|
80
|
+
return auth;
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
return rejectWithValue(err);
|
|
84
|
+
}
|
|
85
|
+
}));
|
|
86
|
+
export const logoutCustomer = createAsyncThunk(AccountActionType.LogoutCustomer, (isReset, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
87
|
+
try {
|
|
88
|
+
const { api } = getState().config;
|
|
89
|
+
const token = selectToken(getState());
|
|
90
|
+
if (!token)
|
|
91
|
+
throw new Error(undefined);
|
|
92
|
+
if (isReset) {
|
|
93
|
+
dispatch(resetOrder());
|
|
94
|
+
dispatch(resetCheckout());
|
|
95
|
+
dispatch(setSelectedAllergens(null));
|
|
96
|
+
}
|
|
97
|
+
yield api.postLogout(token);
|
|
98
|
+
dispatch(updateCheckoutCustomer(null));
|
|
99
|
+
dispatch(resetCustomerAddresses());
|
|
100
|
+
dispatch(resetCustomerAllergens());
|
|
101
|
+
dispatch(resetCustomerCreditCards());
|
|
102
|
+
dispatch(resetCustomerFavorites());
|
|
103
|
+
dispatch(resetCustomerLevelUp());
|
|
104
|
+
dispatch(resetCustomerGiftCards());
|
|
105
|
+
dispatch(resetCustomerHouseAccounts());
|
|
106
|
+
dispatch(resetCustomerLoyalty());
|
|
107
|
+
dispatch(resetCustomerOrder());
|
|
108
|
+
dispatch(resetCustomerOrders());
|
|
109
|
+
dispatch(resetGroupOrder());
|
|
110
|
+
dispatch(resetCustomerRewards());
|
|
111
|
+
dispatch(resetCustomerCommunicationPreferences());
|
|
112
|
+
dispatch(resetGuest());
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
catch (err) {
|
|
116
|
+
return rejectWithValue(err);
|
|
117
|
+
}
|
|
118
|
+
}));
|
|
119
|
+
export const linkPosToken = createAsyncThunk(AccountActionType.LinkPosToken, (posToken, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
120
|
+
try {
|
|
121
|
+
const api = getState().config.api;
|
|
122
|
+
const token = selectToken(getState());
|
|
123
|
+
if (!token)
|
|
124
|
+
throw new Error(MISSING_CUSTOMER);
|
|
125
|
+
yield api.postCustomerPosToken(token, posToken);
|
|
126
|
+
dispatch(showNotification('Order successfully linked!'));
|
|
127
|
+
dispatch(fetchCustomer);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
const error = err;
|
|
132
|
+
dispatch(addMessage((error === null || error === void 0 ? void 0 : error.detail) || (error === null || error === void 0 ? void 0 : error.message)));
|
|
133
|
+
return rejectWithValue(error);
|
|
134
|
+
}
|
|
135
|
+
}));
|
|
136
|
+
export const updateCustomer = createAsyncThunk(AccountActionType.UpdateCustomer, (data, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
+
try {
|
|
138
|
+
const token = selectToken(getState());
|
|
139
|
+
const api = getState().config.api;
|
|
140
|
+
if (!token)
|
|
141
|
+
throw new Error(MISSING_CUSTOMER);
|
|
142
|
+
const customer = yield api.putCustomer(token, data.data);
|
|
143
|
+
const profile = makeCustomerProfile(customer);
|
|
144
|
+
dispatch(showNotification('Account updated!'));
|
|
145
|
+
if (data.callback)
|
|
146
|
+
data.callback(data.data);
|
|
147
|
+
return profile;
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
const error = err;
|
|
151
|
+
const errors = makeFormErrors(err);
|
|
152
|
+
return checkAuth(error, dispatch, () => rejectWithValue(errors));
|
|
153
|
+
}
|
|
154
|
+
}));
|
|
155
|
+
export const sendCustomerVerificationEmail = createAsyncThunk(AccountActionType.VerifyCustomer, (linkUrl, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
156
|
+
try {
|
|
157
|
+
const api = getState().config.api;
|
|
158
|
+
const token = selectToken(getState());
|
|
159
|
+
if (!token) {
|
|
160
|
+
dispatch(addMessage('Missing customer token'));
|
|
161
|
+
throw new Error(MISSING_CUSTOMER_TOKEN);
|
|
162
|
+
}
|
|
163
|
+
yield api.postSendVerificationEmail(token, linkUrl);
|
|
164
|
+
dispatch(showNotification('Verification email sent!'));
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
catch (err) {
|
|
168
|
+
dispatch(addMessage(err.detail || err.message));
|
|
169
|
+
return rejectWithValue(err);
|
|
170
|
+
}
|
|
171
|
+
}));
|
|
172
|
+
export const loginCustomerThanx = createAsyncThunk(AccountActionType.LoginCustomer, (email, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
173
|
+
try {
|
|
174
|
+
const api = getState().config.api;
|
|
175
|
+
yield api.postThanxLogin(email);
|
|
176
|
+
dispatch(setAlert({ type: 'close' }));
|
|
177
|
+
dispatch(addMessage('Thanks! Please check your email on this device.'));
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
const errr = err;
|
|
182
|
+
if (errr) {
|
|
183
|
+
const error = (errr === null || errr === void 0 ? void 0 : errr.params) ? errr.params['$.email'] : null;
|
|
184
|
+
if (error && error.includes("'email'")) {
|
|
185
|
+
errr.detail = 'Please enter a valid email address';
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return rejectWithValue(errr);
|
|
189
|
+
}
|
|
190
|
+
}));
|
|
191
|
+
export const authCustomerThanx = createAsyncThunk(AccountActionType.LoginCustomer, (data, { dispatch, getState, rejectWithValue }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
192
|
+
try {
|
|
193
|
+
const api = getState().config.api;
|
|
194
|
+
const auth = yield api.postThanxAuth(data.code, data.path);
|
|
195
|
+
dispatch(fetchCustomer());
|
|
196
|
+
return auth;
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
return rejectWithValue(err);
|
|
200
|
+
}
|
|
201
|
+
}));
|
|
202
|
+
const accountSlice = createSlice({
|
|
203
|
+
name: ReducerType.Account,
|
|
204
|
+
initialState,
|
|
205
|
+
reducers: {
|
|
206
|
+
resetCustomer: () => initialState,
|
|
207
|
+
resetLoginError: state => {
|
|
208
|
+
state.loading = 'idle';
|
|
209
|
+
state.error = null;
|
|
210
|
+
},
|
|
211
|
+
fulfillLoginCustomer: (state, action) => {
|
|
212
|
+
state.auth = action.payload;
|
|
213
|
+
state.loading = 'idle';
|
|
214
|
+
state.error = null;
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
extraReducers: builder => {
|
|
218
|
+
builder
|
|
219
|
+
.addCase(loginCustomer.fulfilled, (state, action) => {
|
|
220
|
+
state.auth = action.payload;
|
|
221
|
+
state.loading = 'idle';
|
|
222
|
+
state.error = null;
|
|
223
|
+
})
|
|
224
|
+
.addCase(loginCustomer.pending, state => {
|
|
225
|
+
state.loading = 'pending';
|
|
226
|
+
})
|
|
227
|
+
.addCase(loginCustomer.rejected, (state, action) => {
|
|
228
|
+
state.loading = 'idle';
|
|
229
|
+
state.error = action.payload;
|
|
230
|
+
})
|
|
231
|
+
.addCase(fetchCustomer.fulfilled, (state, action) => {
|
|
232
|
+
state.profile = action.payload;
|
|
233
|
+
state.loading = 'idle';
|
|
234
|
+
state.error = null;
|
|
235
|
+
})
|
|
236
|
+
.addCase(fetchCustomer.pending, state => {
|
|
237
|
+
state.loading = 'pending';
|
|
238
|
+
})
|
|
239
|
+
.addCase(fetchCustomer.rejected, (state, action) => {
|
|
240
|
+
state.loading = 'idle';
|
|
241
|
+
state.error = action.payload;
|
|
242
|
+
})
|
|
243
|
+
.addCase(updateCustomer.fulfilled, (state, action) => {
|
|
244
|
+
state.profile = action.payload;
|
|
245
|
+
state.loading = 'idle';
|
|
246
|
+
state.error = null;
|
|
247
|
+
})
|
|
248
|
+
.addCase(updateCustomer.pending, state => {
|
|
249
|
+
state.loading = 'pending';
|
|
250
|
+
})
|
|
251
|
+
.addCase(updateCustomer.rejected, (state, action) => {
|
|
252
|
+
state.loading = 'idle';
|
|
253
|
+
state.error = action.payload;
|
|
254
|
+
})
|
|
255
|
+
.addCase(logoutCustomer.fulfilled, () => initialState)
|
|
256
|
+
.addCase(logoutCustomer.pending, state => {
|
|
257
|
+
state.loading = 'pending';
|
|
258
|
+
})
|
|
259
|
+
.addCase(logoutCustomer.rejected, () => initialState)
|
|
260
|
+
.addCase(sendCustomerVerificationEmail.fulfilled, state => {
|
|
261
|
+
state.loading = 'idle';
|
|
262
|
+
})
|
|
263
|
+
.addCase(sendCustomerVerificationEmail.pending, state => {
|
|
264
|
+
state.loading = 'pending';
|
|
265
|
+
})
|
|
266
|
+
.addCase(sendCustomerVerificationEmail.rejected, state => {
|
|
267
|
+
state.loading = 'idle';
|
|
268
|
+
})
|
|
269
|
+
.addCase(linkPosToken.fulfilled, () => {
|
|
270
|
+
//do nothing
|
|
271
|
+
})
|
|
272
|
+
.addCase(linkPosToken.pending, () => {
|
|
273
|
+
//do nothing
|
|
274
|
+
})
|
|
275
|
+
.addCase(linkPosToken.rejected, () => {
|
|
276
|
+
//do nothing
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
});
|
|
280
|
+
export const { resetCustomer, resetLoginError, fulfillLoginCustomer } = accountSlice.actions;
|
|
281
|
+
export const selectToken = (state) => state.customer.account.auth ? state.customer.account.auth.access_token : null;
|
|
282
|
+
export const accountReducer = accountSlice.reducer;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AppState } from '../../app';
|
|
2
|
+
import { Address, Addresses, RequestError, RequestStatus } from '@open-tender/types';
|
|
3
|
+
export interface CustomerAddressesState {
|
|
4
|
+
entities: Addresses;
|
|
5
|
+
error: RequestError;
|
|
6
|
+
loading: RequestStatus;
|
|
7
|
+
lookup: {
|
|
8
|
+
[key: number]: number;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export declare enum CustomerAddressesActionType {
|
|
12
|
+
FetchCustomerAddresses = "customer/fetchCustomerAddresses",
|
|
13
|
+
UpdateCustomerAddresses = "customer/updateCustomerAddresses",
|
|
14
|
+
RemoveCustomerAddress = "customer/removeCustomerAddress"
|
|
15
|
+
}
|
|
16
|
+
export declare const fetchCustomerAddresses: import("@reduxjs/toolkit").AsyncThunk<Addresses, number, {
|
|
17
|
+
state: AppState;
|
|
18
|
+
rejectValue: RequestError;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const updateCustomerAddress: import("@reduxjs/toolkit").AsyncThunk<Addresses, {
|
|
21
|
+
addressId: number;
|
|
22
|
+
data: Address;
|
|
23
|
+
callback?: (() => void) | undefined;
|
|
24
|
+
}, {
|
|
25
|
+
state: AppState;
|
|
26
|
+
rejectValue: RequestError;
|
|
27
|
+
}>;
|
|
28
|
+
export declare const removeCustomerAddress: import("@reduxjs/toolkit").AsyncThunk<Addresses, {
|
|
29
|
+
addressId: number;
|
|
30
|
+
callback?: (() => void) | undefined;
|
|
31
|
+
}, {
|
|
32
|
+
state: AppState;
|
|
33
|
+
rejectValue: RequestError;
|
|
34
|
+
}>;
|
|
35
|
+
export declare const resetCustomerAddresses: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<string>, setCustomerAddresses: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, string>;
|
|
36
|
+
export declare const selectCustomerAddresses: (state: AppState) => CustomerAddressesState;
|
|
37
|
+
export declare const customerAddressesReducer: import("redux").Reducer<CustomerAddressesState, import("redux").AnyAction>;
|