From 63a809592e453733f3065654bf5460eedc769381 Mon Sep 17 00:00:00 2001 From: Mitchell McCaffrey Date: Mon, 14 Jun 2021 17:51:07 +1000 Subject: [PATCH] Fix importing with not all groups exported --- src/modals/SelectDataModal.js | 112 ++++++++++++++++++---------------- 1 file changed, 61 insertions(+), 51 deletions(-) diff --git a/src/modals/SelectDataModal.js b/src/modals/SelectDataModal.js index bfdd306..2ac30c9 100644 --- a/src/modals/SelectDataModal.js +++ b/src/modals/SelectDataModal.js @@ -237,65 +237,75 @@ function SelectDataModal({ function renderMapGroup(group) { if (group.type === "item") { const map = maps[group.id]; - return ( - - ); + if (map) { + return ( + + ); + } } else { - return renderGroupContainer( - group, - group.items.some((item) => maps[item.id].checked), - renderMapGroup, - (e, group) => - handleMapsChanged( - e, - group.items.map((group) => maps[group.id]) - ) - ); + if (group.items.every((item) => item.id in maps)) { + return renderGroupContainer( + group, + group.items.some((item) => maps[item.id].checked), + renderMapGroup, + (e, group) => + handleMapsChanged( + e, + group.items.map((group) => maps[group.id]) + ) + ); + } } } function renderTokenGroup(group) { if (group.type === "item") { const token = tokens[group.id]; - return ( - - - {token.id in tokenUsedCount && token.type !== "default" && ( - - Token used in {tokenUsedCount[token.id]} selected map - {tokenUsedCount[token.id] > 1 && "s"} - - )} - - ); + if (token) { + return ( + + + {token.id in tokenUsedCount && token.type !== "default" && ( + + Token used in {tokenUsedCount[token.id]} selected map + {tokenUsedCount[token.id] > 1 && "s"} + + )} + + ); + } } else { - const checked = - group.items.some( - (item) => !(item.id in tokenUsedCount) && tokens[item.id].checked - ) || group.items.every((item) => item.id in tokenUsedCount); - return renderGroupContainer( - group, - checked, - renderTokenGroup, - (e, group) => - handleTokensChanged( - e, - group.items.map((group) => tokens[group.id]) - ) - ); + if (group.items.every((item) => item.id in tokens)) { + const checked = + group.items.some( + (item) => !(item.id in tokenUsedCount) && tokens[item.id].checked + ) || group.items.every((item) => item.id in tokenUsedCount); + return renderGroupContainer( + group, + checked, + renderTokenGroup, + (e, group) => + handleTokensChanged( + e, + group.items.map((group) => tokens[group.id]) + ) + ); + } } }