Use customer search hook
This commit is contained in:
parent
3f28673c94
commit
b07b220b3c
6 changed files with 511 additions and 539 deletions
|
@ -16,10 +16,10 @@ import SingleAutocompleteSelectField from "@saleor/components/SingleAutocomplete
|
||||||
import Skeleton from "@saleor/components/Skeleton";
|
import Skeleton from "@saleor/components/Skeleton";
|
||||||
import useStateFromProps from "@saleor/hooks/useStateFromProps";
|
import useStateFromProps from "@saleor/hooks/useStateFromProps";
|
||||||
import { buttonMessages } from "@saleor/intl";
|
import { buttonMessages } from "@saleor/intl";
|
||||||
|
import { SearchCustomers_search_edges_node } from "@saleor/searches/types/SearchCustomers";
|
||||||
import { FetchMoreProps, UserPermissionProps } from "@saleor/types";
|
import { FetchMoreProps, UserPermissionProps } from "@saleor/types";
|
||||||
import { PermissionEnum } from "@saleor/types/globalTypes";
|
import { PermissionEnum } from "@saleor/types/globalTypes";
|
||||||
import createSingleAutocompleteSelectHandler from "@saleor/utils/handlers/singleAutocompleteSelectChangeHandler";
|
import createSingleAutocompleteSelectHandler from "@saleor/utils/handlers/singleAutocompleteSelectChangeHandler";
|
||||||
import { SearchCustomers_search_edges_node } from "../../../containers/SearchCustomers/types/SearchCustomers";
|
|
||||||
import { customerUrl } from "../../../customers/urls";
|
import { customerUrl } from "../../../customers/urls";
|
||||||
import { createHref, maybe } from "../../../misc";
|
import { createHref, maybe } from "../../../misc";
|
||||||
import { OrderDetails_order } from "../../types/OrderDetails";
|
import { OrderDetails_order } from "../../types/OrderDetails";
|
||||||
|
|
|
@ -13,8 +13,8 @@ import PageHeader from "@saleor/components/PageHeader";
|
||||||
import SaveButtonBar from "@saleor/components/SaveButtonBar";
|
import SaveButtonBar from "@saleor/components/SaveButtonBar";
|
||||||
import Skeleton from "@saleor/components/Skeleton";
|
import Skeleton from "@saleor/components/Skeleton";
|
||||||
import { sectionNames } from "@saleor/intl";
|
import { sectionNames } from "@saleor/intl";
|
||||||
|
import { SearchCustomers_search_edges_node } from "@saleor/searches/types/SearchCustomers";
|
||||||
import { FetchMoreProps, UserPermissionProps } from "@saleor/types";
|
import { FetchMoreProps, UserPermissionProps } from "@saleor/types";
|
||||||
import { SearchCustomers_search_edges_node } from "../../../containers/SearchCustomers/types/SearchCustomers";
|
|
||||||
import { maybe } from "../../../misc";
|
import { maybe } from "../../../misc";
|
||||||
import { DraftOrderInput } from "../../../types/globalTypes";
|
import { DraftOrderInput } from "../../../types/globalTypes";
|
||||||
import { OrderDetails_order } from "../../types/OrderDetails";
|
import { OrderDetails_order } from "../../types/OrderDetails";
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
import { SearchCustomers_search_edges_node } from "@saleor/searches/types/SearchCustomers";
|
||||||
import { MessageDescriptor } from "react-intl";
|
import { MessageDescriptor } from "react-intl";
|
||||||
import { SearchCustomers_search_edges_node } from "../containers/SearchCustomers/types/SearchCustomers";
|
|
||||||
import { transformOrderStatus, transformPaymentStatus } from "../misc";
|
import { transformOrderStatus, transformPaymentStatus } from "../misc";
|
||||||
import {
|
import {
|
||||||
FulfillmentStatus,
|
FulfillmentStatus,
|
||||||
|
|
|
@ -3,8 +3,8 @@ import React from "react";
|
||||||
import { WindowTitle } from "@saleor/components/WindowTitle";
|
import { WindowTitle } from "@saleor/components/WindowTitle";
|
||||||
import useNavigator from "@saleor/hooks/useNavigator";
|
import useNavigator from "@saleor/hooks/useNavigator";
|
||||||
import useUser from "@saleor/hooks/useUser";
|
import useUser from "@saleor/hooks/useUser";
|
||||||
|
import useCustomerSearch from "@saleor/searches/useCustomerSearch";
|
||||||
import { DEFAULT_INITIAL_SEARCH_DATA } from "../../../config";
|
import { DEFAULT_INITIAL_SEARCH_DATA } from "../../../config";
|
||||||
import SearchCustomers from "../../../containers/SearchCustomers";
|
|
||||||
import { customerUrl } from "../../../customers/urls";
|
import { customerUrl } from "../../../customers/urls";
|
||||||
import { getMutationState, maybe, transformAddressToForm } from "../../../misc";
|
import { getMutationState, maybe, transformAddressToForm } from "../../../misc";
|
||||||
import { productUrl } from "../../../products/urls";
|
import { productUrl } from "../../../products/urls";
|
||||||
|
@ -74,6 +74,13 @@ interface OrderDetailsProps {
|
||||||
export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
const navigate = useNavigator();
|
const navigate = useNavigator();
|
||||||
const { user } = useUser();
|
const { user } = useUser();
|
||||||
|
const {
|
||||||
|
loadMore: loadMoreCustomers,
|
||||||
|
search: searchUsers,
|
||||||
|
result: users
|
||||||
|
} = useCustomerSearch({
|
||||||
|
variables: DEFAULT_INITIAL_SEARCH_DATA
|
||||||
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TypedOrderDetailsQuery
|
<TypedOrderDetailsQuery
|
||||||
|
@ -91,12 +98,6 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
return (
|
return (
|
||||||
<SearchCustomers variables={DEFAULT_INITIAL_SEARCH_DATA}>
|
|
||||||
{({
|
|
||||||
loadMore: loadMoreCustomers,
|
|
||||||
search: searchUsers,
|
|
||||||
result: users
|
|
||||||
}) => (
|
|
||||||
<OrderDetailsMessages>
|
<OrderDetailsMessages>
|
||||||
{orderMessages => (
|
{orderMessages => (
|
||||||
<OrderOperations
|
<OrderOperations
|
||||||
|
@ -151,8 +152,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
orderDraftFinalize.opts.loading,
|
orderDraftFinalize.opts.loading,
|
||||||
maybe(
|
maybe(
|
||||||
() =>
|
() =>
|
||||||
orderDraftFinalize.opts.data.draftOrderComplete
|
orderDraftFinalize.opts.data.draftOrderComplete.errors
|
||||||
.errors
|
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
return (
|
return (
|
||||||
|
@ -160,9 +160,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
{maybe(() => order.status !== OrderStatus.DRAFT) ? (
|
{maybe(() => order.status !== OrderStatus.DRAFT) ? (
|
||||||
<>
|
<>
|
||||||
<WindowTitle
|
<WindowTitle
|
||||||
title={maybe(
|
title={maybe(() => "Order #" + data.order.number)}
|
||||||
() => "Order #" + data.order.number
|
|
||||||
)}
|
|
||||||
/>
|
/>
|
||||||
<OrderDetailsPage
|
<OrderDetailsPage
|
||||||
onNoteAdd={variables =>
|
onNoteAdd={variables =>
|
||||||
|
@ -177,10 +175,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
() => data.order.availableShippingMethods,
|
() => data.order.availableShippingMethods,
|
||||||
[]
|
[]
|
||||||
)}
|
)}
|
||||||
userPermissions={maybe(
|
userPermissions={maybe(() => user.permissions, [])}
|
||||||
() => user.permissions,
|
|
||||||
[]
|
|
||||||
)}
|
|
||||||
onOrderCancel={() => openModal("cancel")}
|
onOrderCancel={() => openModal("cancel")}
|
||||||
onOrderFulfill={() => openModal("fulfill")}
|
onOrderFulfill={() => openModal("fulfill")}
|
||||||
onFulfillmentCancel={fulfillmentId =>
|
onFulfillmentCancel={fulfillmentId =>
|
||||||
|
@ -220,8 +215,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
orderCancel.opts.called,
|
orderCancel.opts.called,
|
||||||
orderCancel.opts.loading,
|
orderCancel.opts.loading,
|
||||||
maybe(
|
maybe(
|
||||||
() =>
|
() => orderCancel.opts.data.orderCancel.errors
|
||||||
orderCancel.opts.data.orderCancel.errors
|
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
number={maybe(() => order.number)}
|
number={maybe(() => order.number)}
|
||||||
|
@ -256,9 +250,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
confirmButtonState={getMutationState(
|
confirmButtonState={getMutationState(
|
||||||
orderVoid.opts.called,
|
orderVoid.opts.called,
|
||||||
orderVoid.opts.loading,
|
orderVoid.opts.loading,
|
||||||
maybe(
|
maybe(() => orderVoid.opts.data.orderVoid.errors)
|
||||||
() => orderVoid.opts.data.orderVoid.errors
|
|
||||||
)
|
|
||||||
)}
|
)}
|
||||||
open={params.action === "void"}
|
open={params.action === "void"}
|
||||||
onClose={closeModal}
|
onClose={closeModal}
|
||||||
|
@ -328,8 +320,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
lines: maybe(() => order.lines, [])
|
lines: maybe(() => order.lines, [])
|
||||||
.filter(
|
.filter(
|
||||||
line =>
|
line =>
|
||||||
line.quantityFulfilled <
|
line.quantityFulfilled < line.quantity
|
||||||
line.quantity
|
|
||||||
)
|
)
|
||||||
.map((line, lineIndex) => ({
|
.map((line, lineIndex) => ({
|
||||||
orderLineId: line.id,
|
orderLineId: line.id,
|
||||||
|
@ -374,8 +365,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
trackingNumber={maybe(
|
trackingNumber={maybe(
|
||||||
() =>
|
() =>
|
||||||
data.order.fulfillments.find(
|
data.order.fulfillments.find(
|
||||||
fulfillment =>
|
fulfillment => fulfillment.id === params.id
|
||||||
fulfillment.id === params.id
|
|
||||||
).trackingNumber
|
).trackingNumber
|
||||||
)}
|
)}
|
||||||
onConfirm={variables =>
|
onConfirm={variables =>
|
||||||
|
@ -407,9 +397,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
}
|
}
|
||||||
users={maybe(
|
users={maybe(
|
||||||
() =>
|
() =>
|
||||||
users.data.search.edges.map(
|
users.data.search.edges.map(edge => edge.node),
|
||||||
edge => edge.node
|
|
||||||
),
|
|
||||||
[]
|
[]
|
||||||
)}
|
)}
|
||||||
hasMore={maybe(
|
hasMore={maybe(
|
||||||
|
@ -428,18 +416,15 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
}
|
}
|
||||||
onDraftFinalize={() => openModal("finalize")}
|
onDraftFinalize={() => openModal("finalize")}
|
||||||
onDraftRemove={() => openModal("cancel")}
|
onDraftRemove={() => openModal("cancel")}
|
||||||
onOrderLineAdd={() =>
|
onOrderLineAdd={() => openModal("add-order-line")}
|
||||||
openModal("add-order-line")
|
|
||||||
}
|
|
||||||
onBack={() => navigate(orderListUrl())}
|
onBack={() => navigate(orderListUrl())}
|
||||||
order={order}
|
order={order}
|
||||||
countries={maybe(
|
countries={maybe(() => data.shop.countries, []).map(
|
||||||
() => data.shop.countries,
|
country => ({
|
||||||
[]
|
|
||||||
).map(country => ({
|
|
||||||
code: country.code,
|
code: country.code,
|
||||||
label: country.country
|
label: country.country
|
||||||
}))}
|
})
|
||||||
|
)}
|
||||||
onProductClick={id => () =>
|
onProductClick={id => () =>
|
||||||
navigate(productUrl(encodeURIComponent(id)))}
|
navigate(productUrl(encodeURIComponent(id)))}
|
||||||
onBillingAddressEdit={() =>
|
onBillingAddressEdit={() =>
|
||||||
|
@ -464,10 +449,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
onProfileView={() =>
|
onProfileView={() =>
|
||||||
navigate(customerUrl(order.user.id))
|
navigate(customerUrl(order.user.id))
|
||||||
}
|
}
|
||||||
userPermissions={maybe(
|
userPermissions={maybe(() => user.permissions, [])}
|
||||||
() => user.permissions,
|
|
||||||
[]
|
|
||||||
)}
|
|
||||||
/>
|
/>
|
||||||
<OrderDraftCancelDialog
|
<OrderDraftCancelDialog
|
||||||
confirmButtonState={getMutationState(
|
confirmButtonState={getMutationState(
|
||||||
|
@ -475,23 +457,19 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
orderDraftCancel.opts.loading,
|
orderDraftCancel.opts.loading,
|
||||||
maybe(
|
maybe(
|
||||||
() =>
|
() =>
|
||||||
orderDraftCancel.opts.data
|
orderDraftCancel.opts.data.draftOrderDelete
|
||||||
.draftOrderDelete.errors
|
.errors
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
onClose={closeModal}
|
onClose={closeModal}
|
||||||
onConfirm={() =>
|
onConfirm={() => orderDraftCancel.mutate({ id })}
|
||||||
orderDraftCancel.mutate({ id })
|
|
||||||
}
|
|
||||||
open={params.action === "cancel"}
|
open={params.action === "cancel"}
|
||||||
orderNumber={maybe(() => order.number)}
|
orderNumber={maybe(() => order.number)}
|
||||||
/>
|
/>
|
||||||
<OrderDraftFinalizeDialog
|
<OrderDraftFinalizeDialog
|
||||||
confirmButtonState={finalizeTransitionState}
|
confirmButtonState={finalizeTransitionState}
|
||||||
onClose={closeModal}
|
onClose={closeModal}
|
||||||
onConfirm={() =>
|
onConfirm={() => orderDraftFinalize.mutate({ id })}
|
||||||
orderDraftFinalize.mutate({ id })
|
|
||||||
}
|
|
||||||
open={params.action === "finalize"}
|
open={params.action === "finalize"}
|
||||||
orderNumber={maybe(() => order.number)}
|
orderNumber={maybe(() => order.number)}
|
||||||
warnings={orderDraftFinalizeWarnings(order)}
|
warnings={orderDraftFinalizeWarnings(order)}
|
||||||
|
@ -575,9 +553,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
confirmButtonState={getMutationState(
|
confirmButtonState={getMutationState(
|
||||||
orderUpdate.opts.called,
|
orderUpdate.opts.called,
|
||||||
orderUpdate.opts.loading,
|
orderUpdate.opts.loading,
|
||||||
maybe(
|
maybe(() => orderUpdate.opts.data.orderUpdate.errors)
|
||||||
() => orderUpdate.opts.data.orderUpdate.errors
|
|
||||||
)
|
|
||||||
)}
|
)}
|
||||||
address={transformAddressToForm(
|
address={transformAddressToForm(
|
||||||
maybe(() => order.shippingAddress)
|
maybe(() => order.shippingAddress)
|
||||||
|
@ -608,9 +584,7 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
confirmButtonState={getMutationState(
|
confirmButtonState={getMutationState(
|
||||||
orderUpdate.opts.called,
|
orderUpdate.opts.called,
|
||||||
orderUpdate.opts.loading,
|
orderUpdate.opts.loading,
|
||||||
maybe(
|
maybe(() => orderUpdate.opts.data.orderUpdate.errors)
|
||||||
() => orderUpdate.opts.data.orderUpdate.errors
|
|
||||||
)
|
|
||||||
)}
|
)}
|
||||||
address={transformAddressToForm(
|
address={transformAddressToForm(
|
||||||
maybe(() => order.billingAddress)
|
maybe(() => order.billingAddress)
|
||||||
|
@ -643,8 +617,6 @@ export const OrderDetails: React.FC<OrderDetailsProps> = ({ id, params }) => {
|
||||||
</OrderOperations>
|
</OrderOperations>
|
||||||
)}
|
)}
|
||||||
</OrderDetailsMessages>
|
</OrderDetailsMessages>
|
||||||
)}
|
|
||||||
</SearchCustomers>
|
|
||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
</TypedOrderDetailsQuery>
|
</TypedOrderDetailsQuery>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import gql from "graphql-tag";
|
import gql from "graphql-tag";
|
||||||
|
|
||||||
|
import makeTopLevelSearch from "@saleor/hooks/makeTopLevelSearch";
|
||||||
import { pageInfoFragment } from "@saleor/queries";
|
import { pageInfoFragment } from "@saleor/queries";
|
||||||
import TopLevelSearch from "../TopLevelSearch";
|
|
||||||
import {
|
import {
|
||||||
SearchCustomers,
|
SearchCustomers,
|
||||||
SearchCustomersVariables
|
SearchCustomersVariables
|
||||||
|
@ -24,6 +24,6 @@ export const searchCustomers = gql`
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default TopLevelSearch<SearchCustomers, SearchCustomersVariables>(
|
export default makeTopLevelSearch<SearchCustomers, SearchCustomersVariables>(
|
||||||
searchCustomers
|
searchCustomers
|
||||||
);
|
);
|
Loading…
Reference in a new issue