mirror of
https://github.com/docmost/docmost.git
synced 2026-05-11 08:54:06 +08:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3c4cab0d2a | |||
| 4de25a8b94 | |||
| cf5bbb10df | |||
| ac17521717 |
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "client",
|
||||
"private": true,
|
||||
"version": "0.23.1",
|
||||
"version": "0.23.2",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "tsc && vite build",
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "server",
|
||||
"version": "0.23.1",
|
||||
"version": "0.23.2",
|
||||
"description": "",
|
||||
"author": "",
|
||||
"private": true,
|
||||
|
||||
+1
-1
Submodule apps/server/src/ee updated: bcc077ae3b...3af21def15
@@ -222,17 +222,40 @@ export function notionFormatter($: CheerioAPI, $root: Cheerio<any>) {
|
||||
}
|
||||
|
||||
export function unwrapFromParagraph($: CheerioAPI, $node: Cheerio<any>) {
|
||||
// find the nearest <p> or <a> ancestor
|
||||
let $wrapper = $node.closest('p, a');
|
||||
// Keep track of processed wrappers to avoid infinite loops
|
||||
const processedWrappers = new Set<any>();
|
||||
|
||||
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');
|
||||
}
|
||||
|
||||
+1
-1
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user