saleor-dashboard/src/apps/urls.ts
Wojciech Mista c922dfb6fe
Application Marketplace available in dashboard (#2054)
* Add marketplace

* Update messages

* Extract styles

* Update test env

* Update config and rename uri

* Update template

* Trigger CI

* Possible fix

* Update deploy yml

* Add marketplace to staging

* Fix responsiveness

* Trigger CI

* Fix navigation tests (#2081)

* fix navigate through shop

* wait for progress bar not to exist

* simplify code

* add wait

* Fix navigate through shop (#2076)

* fix navigate through shop

* wait for progress bar not to exist

* simplify code

* Refine App about section (#2056)

* Trigger CI

* Trigger CI

* Trigger CI

* Trigger CI

* Fix app activation/deactivation

* Hide configuration url and policy if theres none

* Remove about and support links

* Remove unused code

* Update stories and tests

* Update messages

* Fix privacy policy

* Fix activation and "open app"

* Update tests

Co-authored-by: Karolina Rakoczy <rakoczy.karolina@gmail.com>
2022-06-08 08:44:28 +02:00

100 lines
3 KiB
TypeScript

import { stringifyQs } from "@saleor/utils/urls";
import urlJoin from "url-join";
import { ActiveTab, Dialog, Pagination, SingleAction } from "../types";
export const MANIFEST_ATTR = "manifestUrl";
export type AppListUrlDialog =
| "remove"
| "remove-app"
| "remove-custom-app"
| "app-activate"
| "app-deactivate";
export type AppDetailsUrlDialog = "app-activate" | "app-deactivate";
export type AppListUrlQueryParams = ActiveTab &
Dialog<AppListUrlDialog> &
SingleAction &
Pagination;
export type AppDetailsUrlQueryParams = Dialog<AppDetailsUrlDialog> &
SingleAction;
export type AppInstallUrlQueryParams = Partial<{ [MANIFEST_ATTR]: string }>;
export enum AppListUrlSortField {
name = "name",
active = "active"
}
export type CustomAppUrlDialog =
| "create-token"
| "remove-webhook"
| "remove-token"
| "app-activate"
| "app-deactivate";
export type CustomAppUrlQueryParams = Dialog<CustomAppUrlDialog> & SingleAction;
export const appsSection = "/apps/";
export const appsListPath = appsSection;
export const customAppListPath = "/apps/custom/";
export const appDetailsPath = (id: string) => urlJoin(appsSection, id);
export const appSettingsPath = (id: string) =>
urlJoin(appsSection, id, "settings");
export const appPath = (id: string) => urlJoin(appsSection, id, "app");
export const appDeepPath = (id: string, subPath: string) =>
urlJoin(appPath(id), subPath);
export const customAppPath = (id: string) => urlJoin(customAppListPath, id);
export const appInstallPath = urlJoin(appsSection, "install");
export const appInstallUrl = appInstallPath;
export const appDetailsUrl = (id: string, params?: AppDetailsUrlQueryParams) =>
appDetailsPath(encodeURIComponent(id)) + "?" + stringifyQs(params);
export const appUrl = (id: string, params?: AppDetailsUrlQueryParams) =>
appPath(encodeURIComponent(id)) + "?" + stringifyQs(params);
export const appDeepUrl = (
id: string,
subPath: string,
params?: AppDetailsUrlQueryParams
) => appDeepPath(encodeURIComponent(id), subPath) + "?" + stringifyQs(params);
export const getAppCompleteUrlFromDashboardUrl = (
dashboardUrl: string,
appUrl?: string,
appId?: string
) => {
if (!appUrl || !appId) {
return appUrl;
}
const deepSubPath = dashboardUrl.replace(
appPath(encodeURIComponent(appId)),
""
);
const appCompleteUrl = urlJoin(appUrl, deepSubPath);
return appCompleteUrl;
};
export const getDashboardUrFromAppCompleteUrl = (
appCompleteUrl: string,
appUrl?: string,
appId?: string
) => {
if (!appUrl || !appId) {
return appUrl;
}
const deepSubPath = appCompleteUrl.replace(appUrl, "");
const dashboardUrl = urlJoin(appPath(encodeURIComponent(appId)), deepSubPath);
return dashboardUrl;
};
export const customAppUrl = (id: string, params?: CustomAppUrlQueryParams) =>
customAppPath(encodeURIComponent(id)) + "?" + stringifyQs(params);
export const customAppAddPath = urlJoin(customAppListPath, "add");
export const customAppAddUrl = customAppAddPath;
export const appsListUrl = (params?: AppListUrlQueryParams) =>
appsListPath + "?" + stringifyQs(params);