import { AttachComponentDataManager, DataManagerInput, DetachComponentDataManager, } from '@atlassian/forge-graphql-types'; import generateMutationGql from '../generateMutationGql'; import { GqlSegment } from './types'; import isEmpty from '../isEmpty'; const shouldAddDataManager = ( oldDataManager: DataManagerInput, newDataManager: DataManagerInput, ) => newDataManager && !isEmpty(newDataManager) && !oldDataManager; const shouldDetachDataManager = ( oldDataManager: DataManagerInput, newDataManager: DataManagerInput, ) => isEmpty(newDataManager) && oldDataManager; export default function updateDataManagerSegment( componentId: string, oldDataManager: DataManagerInput, newDataManager: DataManagerInput, ): GqlSegment { let mutation = ''; let parameters = [] as Array; let inputId; const variables = {} as any; if (shouldAddDataManager(oldDataManager, newDataManager)) { ({ mutationGql: mutation, params: parameters, inputId, } = generateMutationGql( AttachComponentDataManager, 'attachComponentDataManager', )); variables[inputId] = { componentId, externalSourceURL: newDataManager.externalSourceURL, }; } else if (shouldDetachDataManager(oldDataManager, newDataManager)) { ({ mutationGql: mutation, params: parameters, inputId, } = generateMutationGql( DetachComponentDataManager, 'detachComponentDataManager', )); variables[inputId] = { componentId, }; } return { mutation, variables, parameters, }; }