saleor-dashboard/src/translations/urls.ts

61 lines
1.6 KiB
TypeScript
Raw Normal View History

import { Pagination } from "@saleor/types";
2021-08-09 15:27:13 +00:00
import { stringifyQs } from "@saleor/utils/urls";
2019-08-09 10:26:22 +00:00
import urlJoin from "url-join";
2019-06-19 14:40:52 +00:00
2019-09-12 12:43:37 +00:00
import { TranslationsEntitiesListFilterTab } from "./components/TranslationsEntitiesListPage";
2019-06-19 14:40:52 +00:00
export enum TranslatableEntities {
categories = "categories",
products = "products",
productVariants = "variants",
2019-06-19 14:40:52 +00:00
collections = "collections",
sales = "sales",
vouchers = "vouchers",
pages = "pages",
attributes = "attributes",
shippingMethods = "shippingMethods",
2019-06-19 14:40:52 +00:00
}
const translationsSection = "/translations/";
export const languageListPath = translationsSection;
export const languageListUrl = translationsSection;
export const languageEntitiesPath = (code: string) =>
urlJoin(translationsSection, code);
2019-09-12 12:43:37 +00:00
export type LanguageEntitiesUrlQueryParams = Pagination &
Partial<{
query: string;
tab: TranslationsEntitiesListFilterTab;
}>;
export const languageEntitiesUrl = (
code: string,
params: LanguageEntitiesUrlQueryParams,
2019-09-12 12:43:37 +00:00
) => languageEntitiesPath(code) + "?" + stringifyQs(params);
2019-06-19 14:40:52 +00:00
export const languageEntityPath = (
code: string,
entity: TranslatableEntities,
id: string,
...args: string[]
) => urlJoin(languageEntitiesPath(code), entity.toString(), id, ...args);
2019-06-19 14:40:52 +00:00
export const languageEntityUrl = (
code: string,
entity: TranslatableEntities,
id: string,
...args: string[]
) => languageEntityPath(code, entity, encodeURIComponent(id), ...args);
export const productVariantUrl = (
code: string,
productId: string,
variantId: string,
) =>
languageEntityUrl(
code,
TranslatableEntities.products,
productId,
TranslatableEntities.productVariants,
variantId,
);