@open-tender/cloud
Version:
A library of hooks, reducers, utility functions, and types for use with Open Tender applications that utilize our cloud-based Order API.
423 lines (422 loc) • 20.1 kB
TypeScript
import { AppState } from '../app';
import { CartOwner, GroupOrder, ISOString, SimpleCart, RequestError, RequestStatus, ServiceType, RequestedAt, GroupOrderGuests } from '@open-tender/types';
export interface GroupOrderGuestState {
cartGuestId: number;
firstName: string;
lastName: string;
}
export interface GroupOrderState {
cart: SimpleCart;
cartGuest: GroupOrderGuestState | null;
cartGuests: GroupOrderGuests;
cartId: number | null;
cartOwner: CartOwner | null;
closed: boolean;
cutoffAt: ISOString | null;
error: RequestError;
guestCount: number | null;
guestLimit: number | null;
isCartOwner: boolean;
loading: RequestStatus;
requestedAt: RequestedAt | null;
revenueCenterId: number | null;
serviceType: ServiceType | null;
spendingLimit: string | null;
token: string | null;
}
export declare enum GroupOrderActionType {
JoinGroupOrder = "groupOrder/joinGroupOrder",
FetchGroupOrder = "groupOrder/fetchGroupOrder",
UpdateGroupOrder = "groupOrder/updateGroupOrder",
ReloadGuestOrder = "groupOrder/reloadGuestOrder",
AddCustomerGroupOrder = "customer/addCustomerGroupOrder"
}
export declare const makeCartPayload: (response: GroupOrder, cartGuestId?: number | null) => {
cartId: number;
token: string;
revenueCenterId: number;
serviceType: ServiceType;
requestedAt: RequestedAt;
cutoffAt: `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}Z` | null;
guestLimit: number | null;
guestCount: number;
spendingLimit: string | null;
closed: boolean;
cartOwner: CartOwner | null;
cart: SimpleCart;
cartGuests: GroupOrderGuests;
};
export declare const joinGroupOrder: import("@reduxjs/toolkit").AsyncThunk<any, {
cart_id: number;
first_name: string;
last_name: string;
}, {
state: AppState;
rejectValue: RequestError;
dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
extra?: unknown;
serializedErrorType?: unknown;
pendingMeta?: unknown;
fulfilledMeta?: unknown;
rejectedMeta?: unknown;
}>;
export declare const fetchGroupOrder: import("@reduxjs/toolkit").AsyncThunk<void | Partial<GroupOrderState>, string | number, {
state: AppState;
rejectValue: RequestError;
dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
extra?: unknown;
serializedErrorType?: unknown;
pendingMeta?: unknown;
fulfilledMeta?: unknown;
rejectedMeta?: unknown;
}>;
export declare const updateGroupOrder: import("@reduxjs/toolkit").AsyncThunk<void | Partial<GroupOrderState>, void, {
state: AppState;
rejectValue: RequestError;
dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
extra?: unknown;
serializedErrorType?: unknown;
pendingMeta?: unknown;
fulfilledMeta?: unknown;
rejectedMeta?: unknown;
}>;
export declare const reloadGuestOrder: import("@reduxjs/toolkit").AsyncThunk<void, void, {
state: AppState;
rejectValue: RequestError;
dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
extra?: unknown;
serializedErrorType?: unknown;
pendingMeta?: unknown;
fulfilledMeta?: unknown;
rejectedMeta?: unknown;
}>;
export declare const addCustomerGroupOrder: import("@reduxjs/toolkit").AsyncThunk<GroupOrderState, {
spendingLimit?: string | undefined;
callback?: (() => void) | undefined;
}, {
state: AppState;
rejectValue: RequestError;
dispatch?: import("redux").Dispatch<import("redux").AnyAction> | undefined;
extra?: unknown;
serializedErrorType?: unknown;
pendingMeta?: unknown;
fulfilledMeta?: unknown;
rejectedMeta?: unknown;
}>;
export declare const resetGroupOrder: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"groupOrder/resetGroupOrder">, adjustGroupOrder: import("@reduxjs/toolkit").ActionCreatorWithPayload<any, "groupOrder/adjustGroupOrder">;
export declare const selectGroupOrder: (state: AppState) => GroupOrderState;
export declare const selectGroupOrderToken: (state: AppState) => string | null;
export declare const selectSpendingLimit: ((state: import("redux").EmptyObject & {
alerts: import("@open-tender/types").Alerts;
allergens: import("./allergens").AllergensState;
announcements: import("./announcements").AnnouncementsState;
checkout: import("./checkout").CheckoutState;
completedOrders: import("./completedOrders").CompletedOrdersState;
config: import("./config").ConfigState;
confirmation: import("./confirmation").ConfirmationState;
customer: import("redux").CombinedState<{
account: import("./customer").AccountState;
communicationPreferences: import("./customer").CustomerCommunicationPrefsState;
creditCards: import("./customer").CustomerCreditCardsState;
allergens: import("./customer").CustomerAllergensState;
addresses: import("./customer").CustomerAddressesState;
favorites: import("./customer").CustomerFavoritesState;
fcmToken: import("./customer").CustomerFcmTokenState;
giftCards: import("./customer").CustomerGiftCardsState;
groupOrders: import("./customer").CustomerGroupOrdersState;
history: import("./customer").CustomerHistoryState;
houseAccounts: import("./customer").CustomerHouseAccountsState;
loyalty: import("./customer").CustomerLoyaltyState;
order: import("./customer").CustomerOrderState;
orders: import("./customer").CustomerOrdersState;
pointsShop: import("./customer").PointsShopState;
tplsPointsShop: import("./customer").TplsPointsShopState;
qrcode: import("./customer").CustomerQRCodeState;
rewards: import("./customer").CustomerRewardsState;
thanx: import("./customer").CustomerThanxState;
tpls: import("./customer").CustomerTplsState;
}>;
deals: import("./deals").DealsState;
donations: import("./donations").DonationState;
geolocation: import("./geolocation").GeoLocationState;
giftCards: import("./giftCards").GiftCardsState;
groupOrder: GroupOrderState;
guest: import("./guest").GuestState;
loader: import("./loader").LoaderState;
menu: import("./menu").MenuState;
menuDisplay: import("./menuDisplay").MenuDisplayState;
menuItems: import("./menuItems").MenuItemsState;
modal: import("@open-tender/types").Modal;
misc: import("./misc").MiscState;
nav: import("./nav").NavState;
navSite: import("./navSite").NavSiteState;
notifications: import("@open-tender/types").Notifications;
oneTimePasscode: import("./oneTimePasscode").OneTimePasscodeState;
order: import("./order").OrderState;
orderFulfillment: import("./orderFulfillment").OrderFulfillmentState;
orderRating: import("./orderRating").OrderRatingState;
posts: import("./posts").PostsSlice;
pushNotifications: import("./pushNotifications").PushNotificationsState;
qr: import("./qr").QrState;
quote: import("./quote").QuoteState;
resetPassword: import("./resetPassword").ResetPasswordState;
revenueCenters: import("./revenueCenters").RevenueCentersState;
rewardCode: import("./rewardCode").RewardCodeState;
sidebar: import("./sidebar").SidebarState;
sidebarModal: import("./sidebarModal").SidebarModalState;
signUp: import("./signUp").SignUpState;
tags: import("./tags").TagsState;
terms: import("./terms").TermsSlice;
Unsubscribe: import("./unsubscribe").UnsubscribeState;
validTimes: import("./validTimes").ValidTimesState;
verifyAccount: import("./verifyAccount").VerifyAccountState;
}) => number | null) & import("reselect").OutputSelectorFields<(args_0: {
cartGuest: GroupOrderGuestState | null;
spendingLimit: string | null;
}) => number | null, {
clearCache: () => void;
}> & {
clearCache: () => void;
};
export declare const selectGroupOrderClosed: ((state: import("redux").EmptyObject & {
alerts: import("@open-tender/types").Alerts;
allergens: import("./allergens").AllergensState;
announcements: import("./announcements").AnnouncementsState;
checkout: import("./checkout").CheckoutState;
completedOrders: import("./completedOrders").CompletedOrdersState;
config: import("./config").ConfigState;
confirmation: import("./confirmation").ConfirmationState;
customer: import("redux").CombinedState<{
account: import("./customer").AccountState;
communicationPreferences: import("./customer").CustomerCommunicationPrefsState;
creditCards: import("./customer").CustomerCreditCardsState;
allergens: import("./customer").CustomerAllergensState;
addresses: import("./customer").CustomerAddressesState;
favorites: import("./customer").CustomerFavoritesState;
fcmToken: import("./customer").CustomerFcmTokenState;
giftCards: import("./customer").CustomerGiftCardsState;
groupOrders: import("./customer").CustomerGroupOrdersState;
history: import("./customer").CustomerHistoryState;
houseAccounts: import("./customer").CustomerHouseAccountsState;
loyalty: import("./customer").CustomerLoyaltyState;
order: import("./customer").CustomerOrderState;
orders: import("./customer").CustomerOrdersState;
pointsShop: import("./customer").PointsShopState;
tplsPointsShop: import("./customer").TplsPointsShopState;
qrcode: import("./customer").CustomerQRCodeState;
rewards: import("./customer").CustomerRewardsState;
thanx: import("./customer").CustomerThanxState;
tpls: import("./customer").CustomerTplsState;
}>;
deals: import("./deals").DealsState;
donations: import("./donations").DonationState;
geolocation: import("./geolocation").GeoLocationState;
giftCards: import("./giftCards").GiftCardsState;
groupOrder: GroupOrderState;
guest: import("./guest").GuestState;
loader: import("./loader").LoaderState;
menu: import("./menu").MenuState;
menuDisplay: import("./menuDisplay").MenuDisplayState;
menuItems: import("./menuItems").MenuItemsState;
modal: import("@open-tender/types").Modal;
misc: import("./misc").MiscState;
nav: import("./nav").NavState;
navSite: import("./navSite").NavSiteState;
notifications: import("@open-tender/types").Notifications;
oneTimePasscode: import("./oneTimePasscode").OneTimePasscodeState;
order: import("./order").OrderState;
orderFulfillment: import("./orderFulfillment").OrderFulfillmentState;
orderRating: import("./orderRating").OrderRatingState;
posts: import("./posts").PostsSlice;
pushNotifications: import("./pushNotifications").PushNotificationsState;
qr: import("./qr").QrState;
quote: import("./quote").QuoteState;
resetPassword: import("./resetPassword").ResetPasswordState;
revenueCenters: import("./revenueCenters").RevenueCentersState;
rewardCode: import("./rewardCode").RewardCodeState;
sidebar: import("./sidebar").SidebarState;
sidebarModal: import("./sidebarModal").SidebarModalState;
signUp: import("./signUp").SignUpState;
tags: import("./tags").TagsState;
terms: import("./terms").TermsSlice;
Unsubscribe: import("./unsubscribe").UnsubscribeState;
validTimes: import("./validTimes").ValidTimesState;
verifyAccount: import("./verifyAccount").VerifyAccountState;
}) => boolean | null) & import("reselect").OutputSelectorFields<(args_0: {
cartGuest: GroupOrderGuestState | null;
cutoffAt: `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}Z` | null;
closed: boolean;
tz: import("@open-tender/types").Timezone;
}) => boolean | null, {
clearCache: () => void;
}> & {
clearCache: () => void;
};
export declare const selectGroupOrderTests: ((state: import("redux").EmptyObject & {
alerts: import("@open-tender/types").Alerts;
allergens: import("./allergens").AllergensState;
announcements: import("./announcements").AnnouncementsState;
checkout: import("./checkout").CheckoutState;
completedOrders: import("./completedOrders").CompletedOrdersState;
config: import("./config").ConfigState;
confirmation: import("./confirmation").ConfirmationState;
customer: import("redux").CombinedState<{
account: import("./customer").AccountState;
communicationPreferences: import("./customer").CustomerCommunicationPrefsState;
creditCards: import("./customer").CustomerCreditCardsState;
allergens: import("./customer").CustomerAllergensState;
addresses: import("./customer").CustomerAddressesState;
favorites: import("./customer").CustomerFavoritesState;
fcmToken: import("./customer").CustomerFcmTokenState;
giftCards: import("./customer").CustomerGiftCardsState;
groupOrders: import("./customer").CustomerGroupOrdersState;
history: import("./customer").CustomerHistoryState;
houseAccounts: import("./customer").CustomerHouseAccountsState;
loyalty: import("./customer").CustomerLoyaltyState;
order: import("./customer").CustomerOrderState;
orders: import("./customer").CustomerOrdersState;
pointsShop: import("./customer").PointsShopState;
tplsPointsShop: import("./customer").TplsPointsShopState;
qrcode: import("./customer").CustomerQRCodeState;
rewards: import("./customer").CustomerRewardsState;
thanx: import("./customer").CustomerThanxState;
tpls: import("./customer").CustomerTplsState;
}>;
deals: import("./deals").DealsState;
donations: import("./donations").DonationState;
geolocation: import("./geolocation").GeoLocationState;
giftCards: import("./giftCards").GiftCardsState;
groupOrder: GroupOrderState;
guest: import("./guest").GuestState;
loader: import("./loader").LoaderState;
menu: import("./menu").MenuState;
menuDisplay: import("./menuDisplay").MenuDisplayState;
menuItems: import("./menuItems").MenuItemsState;
modal: import("@open-tender/types").Modal;
misc: import("./misc").MiscState;
nav: import("./nav").NavState;
navSite: import("./navSite").NavSiteState;
notifications: import("@open-tender/types").Notifications;
oneTimePasscode: import("./oneTimePasscode").OneTimePasscodeState;
order: import("./order").OrderState;
orderFulfillment: import("./orderFulfillment").OrderFulfillmentState;
orderRating: import("./orderRating").OrderRatingState;
posts: import("./posts").PostsSlice;
pushNotifications: import("./pushNotifications").PushNotificationsState;
qr: import("./qr").QrState;
quote: import("./quote").QuoteState;
resetPassword: import("./resetPassword").ResetPasswordState;
revenueCenters: import("./revenueCenters").RevenueCentersState;
rewardCode: import("./rewardCode").RewardCodeState;
sidebar: import("./sidebar").SidebarState;
sidebarModal: import("./sidebarModal").SidebarModalState;
signUp: import("./signUp").SignUpState;
tags: import("./tags").TagsState;
terms: import("./terms").TermsSlice;
Unsubscribe: import("./unsubscribe").UnsubscribeState;
validTimes: import("./validTimes").ValidTimesState;
verifyAccount: import("./verifyAccount").VerifyAccountState;
}) => {
closed: boolean;
pastCutoff: boolean;
atCapacity: boolean;
}) & import("reselect").OutputSelectorFields<(args_0: {
closed: boolean;
cutoffAt: `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}Z` | null;
guestLimit: number | null;
guestCount: number | null;
tz: import("@open-tender/types").Timezone;
}) => {
closed: boolean;
pastCutoff: boolean;
atCapacity: boolean;
}, {
clearCache: () => void;
}> & {
clearCache: () => void;
};
export declare const selectGroupOrderPrepTimes: ((state: import("redux").EmptyObject & {
alerts: import("@open-tender/types").Alerts;
allergens: import("./allergens").AllergensState;
announcements: import("./announcements").AnnouncementsState;
checkout: import("./checkout").CheckoutState;
completedOrders: import("./completedOrders").CompletedOrdersState;
config: import("./config").ConfigState;
confirmation: import("./confirmation").ConfirmationState;
customer: import("redux").CombinedState<{
account: import("./customer").AccountState;
communicationPreferences: import("./customer").CustomerCommunicationPrefsState;
creditCards: import("./customer").CustomerCreditCardsState;
allergens: import("./customer").CustomerAllergensState;
addresses: import("./customer").CustomerAddressesState;
favorites: import("./customer").CustomerFavoritesState;
fcmToken: import("./customer").CustomerFcmTokenState;
giftCards: import("./customer").CustomerGiftCardsState;
groupOrders: import("./customer").CustomerGroupOrdersState;
history: import("./customer").CustomerHistoryState;
houseAccounts: import("./customer").CustomerHouseAccountsState;
loyalty: import("./customer").CustomerLoyaltyState;
order: import("./customer").CustomerOrderState;
orders: import("./customer").CustomerOrdersState;
pointsShop: import("./customer").PointsShopState;
tplsPointsShop: import("./customer").TplsPointsShopState;
qrcode: import("./customer").CustomerQRCodeState;
rewards: import("./customer").CustomerRewardsState;
thanx: import("./customer").CustomerThanxState;
tpls: import("./customer").CustomerTplsState;
}>;
deals: import("./deals").DealsState;
donations: import("./donations").DonationState;
geolocation: import("./geolocation").GeoLocationState;
giftCards: import("./giftCards").GiftCardsState;
groupOrder: GroupOrderState;
guest: import("./guest").GuestState;
loader: import("./loader").LoaderState;
menu: import("./menu").MenuState;
menuDisplay: import("./menuDisplay").MenuDisplayState;
menuItems: import("./menuItems").MenuItemsState;
modal: import("@open-tender/types").Modal;
misc: import("./misc").MiscState;
nav: import("./nav").NavState;
navSite: import("./navSite").NavSiteState;
notifications: import("@open-tender/types").Notifications;
oneTimePasscode: import("./oneTimePasscode").OneTimePasscodeState;
order: import("./order").OrderState;
orderFulfillment: import("./orderFulfillment").OrderFulfillmentState;
orderRating: import("./orderRating").OrderRatingState;
posts: import("./posts").PostsSlice;
pushNotifications: import("./pushNotifications").PushNotificationsState;
qr: import("./qr").QrState;
quote: import("./quote").QuoteState;
resetPassword: import("./resetPassword").ResetPasswordState;
revenueCenters: import("./revenueCenters").RevenueCentersState;
rewardCode: import("./rewardCode").RewardCodeState;
sidebar: import("./sidebar").SidebarState;
sidebarModal: import("./sidebarModal").SidebarModalState;
signUp: import("./signUp").SignUpState;
tags: import("./tags").TagsState;
terms: import("./terms").TermsSlice;
Unsubscribe: import("./unsubscribe").UnsubscribeState;
validTimes: import("./validTimes").ValidTimesState;
verifyAccount: import("./verifyAccount").VerifyAccountState;
}) => {
prepTime?: undefined;
leadTime?: undefined;
} | {
prepTime: number;
leadTime: number;
}) & import("reselect").OutputSelectorFields<(args_0: {
revenueCenter: import("@open-tender/types").RevenueCenter | null;
serviceType: ServiceType | null;
}) => {
prepTime?: undefined;
leadTime?: undefined;
} | {
prepTime: number;
leadTime: number;
}, {
clearCache: () => void;
}> & {
clearCache: () => void;
};
export declare const groupOrderReducer: import("redux").Reducer<GroupOrderState, import("redux").AnyAction>;