import { ChannelsAction } from "@saleor/channels/urls"; import { stringifyQs } from "@saleor/utils/urls"; import urlJoin from "url-join"; import { ActiveTab, BulkAction, Dialog, Filters, Pagination, Sort, TabActionDialog } from "../types"; const collectionSectionUrl = "/collections/"; export const collectionListPath = collectionSectionUrl; export enum CollectionListUrlFiltersEnum { status = "status", query = "query", channel = "channel" } export type CollectionListUrlFilters = Filters; export type CollectionListUrlDialog = "remove" | TabActionDialog; export enum CollectionListUrlSortField { name = "name", available = "available", productCount = "products" } export type CollectionListUrlSort = Sort; export type CollectionListUrlQueryParams = ActiveTab & BulkAction & CollectionListUrlFilters & CollectionListUrlSort & Dialog & Pagination; export const collectionListUrl = (params?: CollectionListUrlQueryParams) => collectionSectionUrl + "?" + stringifyQs(params); export const collectionPath = (id: string) => urlJoin(collectionSectionUrl, id); export type CollectionUrlDialog = | "remove" | "removeImage" | "assign" | "unassign" | ChannelsAction; export type CollectionUrlQueryParams = BulkAction & Dialog; export type CollectionCreateUrlQueryParams = Dialog; export const collectionUrl = (id: string, params?: CollectionUrlQueryParams) => collectionPath(encodeURIComponent(id)) + "?" + stringifyQs(params); export const collectionAddPath = urlJoin(collectionSectionUrl, "add"); export const collectionAddUrl = (params?: CollectionCreateUrlQueryParams) => collectionAddPath + "?" + stringifyQs(params);