) {
}
export function unwrapFromParagraph($: CheerioAPI, $node: Cheerio) {
- // find the nearest or ancestor
- let $wrapper = $node.closest('p, a');
+ // Keep track of processed wrappers to avoid infinite loops
+ const processedWrappers = new Set();
+ let $wrapper = $node.closest('p, a');
while ($wrapper.length) {
- // if the wrapper has only our node inside, replace it entirely
- if ($wrapper.contents().length === 1) {
+ const wrapperElement = $wrapper.get(0);
+
+ // If we've already processed this wrapper, break to avoid infinite loop
+ if (processedWrappers.has(wrapperElement)) {
+ break;
+ }
+
+ processedWrappers.add(wrapperElement);
+
+ // Check if the wrapper contains only whitespace and our target node
+ const hasOnlyTargetNode =
+ $wrapper.contents().filter((_, el) => {
+ const $el = $(el);
+ // Skip whitespace-only text nodes. NodeType 3 = text node
+ if (el.nodeType === 3 && !$el.text().trim()) {
+ return false;
+ }
+ // Return true if this is not our target node
+ return !$el.is($node) && !$node.is($el);
+ }).length === 0;
+
+ if (hasOnlyTargetNode) {
+ // Replace the wrapper entirely with our node
$wrapper.replaceWith($node);
} else {
- // otherwise just move the node to before the wrapper
+ // Move the node to before the wrapper, preserving other content
$wrapper.before($node);
}
+
// look again for any new wrapper around $node
$wrapper = $node.closest('p, a');
}
From 4de25a8b94d7903314c879810eb5e622d434697c Mon Sep 17 00:00:00 2001
From: Philipinho <16838612+Philipinho@users.noreply.github.com>
Date: Thu, 18 Sep 2025 15:52:53 +0100
Subject: [PATCH 5/6] invalidate queries on space deletion
---
.../src/features/space/queries/space-query.ts | 27 +++++++++++++++++--
1 file changed, 25 insertions(+), 2 deletions(-)
diff --git a/apps/client/src/features/space/queries/space-query.ts b/apps/client/src/features/space/queries/space-query.ts
index b51e195e..e15320d6 100644
--- a/apps/client/src/features/space/queries/space-query.ts
+++ b/apps/client/src/features/space/queries/space-query.ts
@@ -152,13 +152,36 @@ export function useDeleteSpaceMutation() {
});
}
- const spaces = queryClient.getQueryData(["spaces"]) as any;
+ // Remove space-specific queries
+ if (variables.id) {
+ queryClient.removeQueries({
+ queryKey: ["space", variables.id],
+ exact: true,
+ });
+
+ // Invalidate recent changes
+ queryClient.invalidateQueries({
+ queryKey: ["recent-changes"],
+ });
+
+ queryClient.invalidateQueries({
+ queryKey: ["recent-changes", variables.id],
+ });
+ }
+
+ // Update spaces list cache
+ /* const spaces = queryClient.getQueryData(["spaces"]) as any;
if (spaces) {
spaces.items = spaces.items?.filter(
(space: ISpace) => space.id !== variables.id,
);
queryClient.setQueryData(["spaces"], spaces);
- }
+ }*/
+
+ // Invalidate all spaces queries to refresh lists
+ queryClient.invalidateQueries({
+ predicate: (item) => ["spaces"].includes(item.queryKey[0] as string),
+ });
},
onError: (error) => {
const errorMessage = error["response"]?.data?.message;
From 3c4cab0d2a8508fdeadb1e980db2af7a4a305675 Mon Sep 17 00:00:00 2001
From: Philipinho <16838612+Philipinho@users.noreply.github.com>
Date: Thu, 18 Sep 2025 18:00:28 +0100
Subject: [PATCH 6/6] v0.23.2
---
apps/client/package.json | 2 +-
apps/server/package.json | 2 +-
package.json | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/apps/client/package.json b/apps/client/package.json
index 031646e8..0cff05cc 100644
--- a/apps/client/package.json
+++ b/apps/client/package.json
@@ -1,7 +1,7 @@
{
"name": "client",
"private": true,
- "version": "0.23.1",
+ "version": "0.23.2",
"scripts": {
"dev": "vite",
"build": "tsc && vite build",
diff --git a/apps/server/package.json b/apps/server/package.json
index fb2afe8f..71865a07 100644
--- a/apps/server/package.json
+++ b/apps/server/package.json
@@ -1,6 +1,6 @@
{
"name": "server",
- "version": "0.23.1",
+ "version": "0.23.2",
"description": "",
"author": "",
"private": true,
diff --git a/package.json b/package.json
index 645cf1e1..9177f81e 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "docmost",
"homepage": "https://docmost.com",
- "version": "0.23.1",
+ "version": "0.23.2",
"private": true,
"scripts": {
"build": "nx run-many -t build",