UNPKG

apim-developer-portal1

Version:

API management developer portal

48 lines (37 loc) 1.78 kB
import { Contract } from "@paperbits/common"; import { IModelBinder } from "@paperbits/common/editing"; import { IPermalinkResolver } from "@paperbits/common/permalinks"; import { OperationListModel } from "./operationListModel"; import { OperationListContract } from "./operationListContract"; export class OperationListModelBinder implements IModelBinder<OperationListModel> { constructor(private readonly permalinkResolver: IPermalinkResolver) { } public canHandleContract(contract: Contract): boolean { return contract.type === "operationList"; } public canHandleModel(model: Object): boolean { return model instanceof OperationListModel; } public async contractToModel(contract: OperationListContract): Promise<OperationListModel> { const model = new OperationListModel(); model.allowSelection = contract.allowSelection; model.defaultGroupByTagToEnabled = contract.defaultGroupByTagToEnabled === true; if (contract.detailsPageHyperlink) { model.detailsPageHyperlink = await this.permalinkResolver.getHyperlinkFromContract(contract.detailsPageHyperlink); } return model; } public modelToContract(model: OperationListModel): OperationListContract { const contract: OperationListContract = { type: "operationList", allowSelection: model.allowSelection, defaultGroupByTagToEnabled: model.defaultGroupByTagToEnabled, detailsPageHyperlink: model.detailsPageHyperlink ? { target: model.detailsPageHyperlink.target, targetKey: model.detailsPageHyperlink.targetKey } : null }; return contract; } }