Separate compliance and retention post requests on save

This commit is contained in:
cptran777 2018-09-11 10:06:53 -07:00
parent 1434453682
commit a3624a1671
4 changed files with 36 additions and 7 deletions

View File

@ -239,6 +239,11 @@ export default class DatasetCompliance extends Component {
onReset: <T>() => Promise<T>;
onSave: <T>() => Promise<T>;
/**
* Passthrough from parent to export policy component to save the retention policy
*/
onSaveRetentionPolicy: <T>() => Promise<T>;
/**
* Passthrough from parent to export policy component to save the export policy
*/
@ -1499,10 +1504,11 @@ export default class DatasetCompliance extends Component {
try {
const isSaving = true;
const onSave = get(this, 'onSave');
const onSaveRetentionPolicy = get(this, 'onSaveRetentionPolicy');
setSaveFlag(isSaving);
await this.beforeSaveCompliance(editTarget);
await onSave();
await (editTarget === ComplianceEdit.PurgePolicy ? onSaveRetentionPolicy() : onSave());
return;
} finally {
setSaveFlag();

View File

@ -40,6 +40,9 @@ import { notificationDialogActionFactory } from 'wherehows-web/utils/notificatio
import Configurator from 'wherehows-web/services/configurator';
import { typeOf } from '@ember/utils';
import { service } from '@ember-decorators/service';
import { saveDatasetRetentionByUrn } from 'wherehows-web/utils/api/datasets/retention';
import { extractRetentionFromComplianceInfo } from 'wherehows-web/utils/datasets/retention';
import { IDatasetRetention } from 'wherehows-web/typings/api/datasets/retention';
/**
* Type alias for the response when container data items are batched
@ -340,6 +343,30 @@ export default class DatasetComplianceContainer extends Component {
}
}
/**
* Persists the updates to the retention policy on the remote host
* @return {Promise<void>}
*/
@action
async saveRetentionPolicy(this: DatasetComplianceContainer): Promise<void> {
const complianceInfo = get(this, 'complianceInfo');
if (complianceInfo) {
const { complianceEntities } = complianceInfo;
await this.notifyOnSave<IDatasetRetention>(
saveDatasetRetentionByUrn(
get(this, 'urn'),
extractRetentionFromComplianceInfo({
...complianceInfo,
complianceEntities: removeReadonlyAttr(editableTags(complianceEntities))
})
)
);
this.resetPrivacyCompliancePolicy.call(this);
}
}
/**
* Persists the updates to the export policy on the remote host
* @return {Promise<void}

View File

@ -35,6 +35,7 @@
notifyOnComplianceSuggestionFeedback=(action "onSuggestionsComplianceFeedback")
notifyOnChangeSetRequiresReview=(action "onCompliancePolicyChangeSetDrift")
onSave=(action "savePrivacyCompliancePolicy")
onSaveRetentionPolicy=(action "saveRetentionPolicy")
onSaveExportPolicy=(action "saveExportPolicy")
onReset=(action "resetPrivacyCompliancePolicy")
onComplianceJsonUpdate=(action "onComplianceJsonUpdate")

View File

@ -11,11 +11,7 @@ import {
IDatasetExportPolicy
} from 'wherehows-web/typings/api/datasets/compliance';
import { getJSON, postJSON } from 'wherehows-web/utils/api/fetcher';
import { saveDatasetRetentionByUrn } from 'wherehows-web/utils/api/datasets/retention';
import {
extractRetentionFromComplianceInfo,
nullifyRetentionFieldsOnComplianceInfo
} from 'wherehows-web/utils/datasets/retention';
import { nullifyRetentionFieldsOnComplianceInfo } from 'wherehows-web/utils/datasets/retention';
/**
* Constructs the dataset compliance url
@ -106,7 +102,6 @@ const saveDatasetComplianceByUrn = async (urn: string, complianceInfo: IComplian
url: datasetComplianceUrlByUrn(urn),
data: nullifyRetentionFieldsOnComplianceInfo(complianceInfo)
});
await saveDatasetRetentionByUrn(urn, extractRetentionFromComplianceInfo(complianceInfo));
};
/**