saleor-dashboard/src/components/Navigator/modes/orders.ts
2019-11-26 15:14:21 +01:00

45 lines
1.2 KiB
TypeScript

import { IntlShape } from "react-intl";
import { UseNavigatorResult } from "@saleor/hooks/useNavigator";
import { maybe, transformOrderStatus } from "@saleor/misc";
import { orderUrl } from "@saleor/orders/urls";
import { CheckIfOrderExists_order } from "../queries/types/CheckIfOrderExists";
import { QuickSearchAction } from "../types";
import messages from "./messages";
export function isQueryValidOrderNumber(query: string): boolean {
return query === parseInt(query, 0).toString();
}
export function getGqlOrderId(orderNumber: string): string {
return btoa(`Order:${orderNumber}`);
}
function getOrdersModeActions(
query: string,
intl: IntlShape,
navigate: UseNavigatorResult,
order: CheckIfOrderExists_order
): QuickSearchAction[] {
const gqlId = getGqlOrderId(query);
if (isQueryValidOrderNumber(query) && maybe(() => order.id === gqlId)) {
return [
{
extraInfo: transformOrderStatus(order.status, intl).localized,
label: intl.formatMessage(messages.goToOrder, {
orderNumber: query
}),
onClick: () => {
navigate(orderUrl(gqlId));
return false;
},
type: "action"
}
];
}
return [];
}
export default getOrdersModeActions;