45 lines
1.2 KiB
TypeScript
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;
|