import Api from "./Api"; import { ContainerWidgetProps } from "../widgets/ContainerWidget"; import { ApiResponse } from "./ApiResponses"; import { WidgetProps } from "../widgets/BaseWidget"; import { RenderMode } from "../constants/WidgetConstants"; import { PageAction } from "../constants/ActionConstants"; export interface FetchPageRequest { pageId: string; renderMode: RenderMode; } export interface FetchPublishedPageRequest { pageId: string; layoutId: string; } export interface SavePageRequest { dsl: ContainerWidgetProps; layoutId: string; pageId: string; } export interface PageLayout { id: string; dsl: Partial>; actions: PageAction[]; } export type FetchPageResponse = ApiResponse & { data: { id: string; name: string; applicationId: string; layouts: Array; }; }; export type FetchPublishedPageResponse = ApiResponse & { data: { id: string; dsl: Partial>; }; }; export interface SavePageResponse extends ApiResponse { pageId: string; } class PageApi extends Api { static url = "v1/pages"; static getLayoutUpdateURL = (pageId: string, layoutId: string) => { return `v1/layouts/${layoutId}/pages/${pageId}`; }; static getPublishedPageURL = (pageId: string, layoutId: string) => { return `v1/layouts/${layoutId}/pages/${pageId}/view`; }; static fetchPage(pageRequest: FetchPageRequest): Promise { return Api.get(PageApi.url + "/" + pageRequest.pageId); } static savePage(savePageRequest: SavePageRequest): Promise { const body = { dsl: savePageRequest.dsl }; return Api.put( PageApi.getLayoutUpdateURL( savePageRequest.pageId, savePageRequest.layoutId, ), undefined, body, ); } static fetchPublishedPage( pageRequest: FetchPublishedPageRequest, ): Promise { return Api.get( PageApi.getPublishedPageURL(pageRequest.pageId, pageRequest.layoutId), ); } } export default PageApi;