UNPKG

apim-developer-portal2

Version:

API management developer portal

50 lines (39 loc) 1.87 kB
import { Contract } from "@paperbits/common"; import { IModelBinder } from "@paperbits/common/editing"; import { ListOfApisModel } from "./listOfApisModel"; import { ListOfApisContract } from "./listOfApisContract"; import { IPermalinkResolver } from "@paperbits/common/permalinks"; export class ListOfApisModelBinder implements IModelBinder<ListOfApisModel> { constructor(private readonly permalinkResolver: IPermalinkResolver) { } public canHandleModel(model: Object): boolean { return model instanceof ListOfApisModel; } public async contractToModel(contract: ListOfApisContract): Promise<ListOfApisModel> { const model = new ListOfApisModel(); model.layout = contract.itemStyleView; model.allowSelection = contract.allowSelection; model.defaultGroupByTagToEnabled = contract.defaultGroupByTagToEnabled === true; if (contract.detailsPageHyperlink) { model.detailsPageHyperlink = await this.permalinkResolver.getHyperlinkFromContract(contract.detailsPageHyperlink); } return model; } public canHandleContract(contract: Contract): boolean { return contract.type === "listOfApis"; } public modelToContract(model: ListOfApisModel): Contract { const contract: ListOfApisContract = { type: "listOfApis", itemStyleView: model.layout, allowSelection: model.allowSelection, defaultGroupByTagToEnabled: model.defaultGroupByTagToEnabled, detailsPageHyperlink: model.detailsPageHyperlink ? { target: model.detailsPageHyperlink.target, targetKey: model.detailsPageHyperlink.targetKey } : null }; return contract; } }