UNPKG

contentful-management

Version:
50 lines (48 loc) 1.41 kB
import copy from 'fast-copy'; import { freezeSys, toPlainObject } from 'contentful-sdk-core'; import enhanceWithMethods from '../enhance-with-methods'; import { wrapCollection } from '../common-utils'; /** * @private */ function createExtensionApi(makeRequest) { const getParams = data => ({ spaceId: data.sys.space.sys.id, environmentId: data.sys.environment.sys.id, extensionId: data.sys.id }); return { update: function update() { const data = this.toPlainObject(); return makeRequest({ entityType: 'Extension', action: 'update', params: getParams(data), payload: data }).then(response => wrapExtension(makeRequest, response)); }, delete: function del() { const data = this.toPlainObject(); return makeRequest({ entityType: 'Extension', action: 'delete', params: getParams(data) }); } }; } /** * @private * @param makeRequest - function to make requests via an adapter * @param data - Raw UI Extension data * @return Wrapped UI Extension data */ export function wrapExtension(makeRequest, data) { const extension = toPlainObject(copy(data)); const extensionWithMethods = enhanceWithMethods(extension, createExtensionApi(makeRequest)); return freezeSys(extensionWithMethods); } /** * @private */ export const wrapExtensionCollection = wrapCollection(wrapExtension);