From 3de06b80057135d96f4e3ea6c5652d0c2d8aa8bd Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Sun, 3 Apr 2022 17:07:55 -0700 Subject: [PATCH] fix: Missing separtor between notices and integrations in block menu fix: Memory leak in block menu closes #3330 --- app/editor/components/CommandMenu.tsx | 10 ++++++---- shared/editor/lib/filterExcessSeparators.ts | 11 +++++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/editor/components/CommandMenu.tsx b/app/editor/components/CommandMenu.tsx index 70fe62a4c..a4142da72 100644 --- a/app/editor/components/CommandMenu.tsx +++ b/app/editor/components/CommandMenu.tsx @@ -431,10 +431,12 @@ class CommandMenu extends React.Component, State> { } if (embedItems.length) { - items.push({ - name: "separator", - }); - items = items.concat(embedItems); + items = items.concat( + { + name: "separator", + }, + embedItems + ); } const filtered = items.filter((item) => { diff --git a/shared/editor/lib/filterExcessSeparators.ts b/shared/editor/lib/filterExcessSeparators.ts index 48f6bcf58..4288fb771 100644 --- a/shared/editor/lib/filterExcessSeparators.ts +++ b/shared/editor/lib/filterExcessSeparators.ts @@ -12,14 +12,21 @@ export default function filterExcessSeparators( return acc; } - // trim double separators looking ahead / behind + // trim double separators looking behind const prev = items[index - 1]; if (prev && prev.name === "separator" && item.name === "separator") { return acc; } + // trim double separators looking ahead only if we're in the second to last + // position and the last position is also a separator (special case) const next = items[index + 1]; - if (next && next.name === "separator" && item.name === "separator") { + if ( + next && + next.name === "separator" && + item.name === "separator" && + index === items.length - 2 + ) { return acc; }