From e5512c2c86f133bbd5daf4934194b15ffdd70caa Mon Sep 17 00:00:00 2001 From: Thomas Noelcke Date: Wed, 21 Nov 2018 15:44:53 -0800 Subject: [PATCH] feat(accessibility): add logic to item bank container to persist options --- src/ItemBank/ItemBankContainer.tsx | 31 ++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/ItemBank/ItemBankContainer.tsx b/src/ItemBank/ItemBankContainer.tsx index 64d9a971..aede01c0 100644 --- a/src/ItemBank/ItemBankContainer.tsx +++ b/src/ItemBank/ItemBankContainer.tsx @@ -20,7 +20,9 @@ import { ItemExistsRequestModel, ItemExistsResponseModel, toExistenceRequestModel, - existenceResponseModelToRevisionModel + existenceResponseModelToRevisionModel, + mergeAccessibilityGroups, + resetAccessibilityGroups } from "@src/index"; import { itemsAreEqual } from "@src/ItemBank/ItemBankModels"; @@ -264,7 +266,8 @@ export class ItemBankContainer extends React.Component< * @memberof ItemBankContainer */ handleChangeViewItem = () => { - const { currentItem, items } = this.state; + const { currentItem, items, accResourceGroups } = this.state; + const currentAccGroups = getResourceContent(accResourceGroups); let index = 0; if (currentItem && currentItem.valid) { this.fetchAboutItemRevisionModel(currentItem) @@ -272,8 +275,19 @@ export class ItemBankContainer extends React.Component< return this.fetchAccResourceGroups(aboutItem); }) .then(accGroups => { - this.handleUpdateIsaap(accGroups); - this.updateNavigationItems(); + let newGroups: AccResourceGroupModel[]; + if (currentAccGroups) { + newGroups = mergeAccessibilityGroups(accGroups, currentAccGroups); + } else { + newGroups = accGroups; + } + this.setState( + { accResourceGroups: { kind: "success", content: newGroups } }, + () => { + this.handleUpdateIsaap(newGroups); + this.updateNavigationItems(); + } + ); }) .catch(e => { this.onError(e, () => { @@ -346,8 +360,13 @@ export class ItemBankContainer extends React.Component< const aboutItem = getResourceContent(aboutItemRevisionModel); const accResources = getResourceContent(accResourceGroups); if (aboutItem && accResources) { - this.setState({ currentItem: { ...currentItem, isaap: undefined } }, () => - this.handleUpdateIsaap(accResources) + const resetResources = resetAccessibilityGroups(accResources); + this.setState( + { + currentItem: { ...currentItem, isaap: undefined }, + accResourceGroups: { kind: "success", content: resetResources } + }, + () => this.handleUpdateIsaap(resetResources) ); } };