diff --git a/apps/roam/src/components/canvas/DiscourseNodeUtil.tsx b/apps/roam/src/components/canvas/DiscourseNodeUtil.tsx index 570ff8eac..da1752d9e 100644 --- a/apps/roam/src/components/canvas/DiscourseNodeUtil.tsx +++ b/apps/roam/src/components/canvas/DiscourseNodeUtil.tsx @@ -38,6 +38,8 @@ import calcCanvasNodeSizeAndImg from "~/utils/calcCanvasNodeSizeAndImg"; import { createTextJsxFromSpans } from "./DiscourseRelationShape/helpers"; import { loadImage } from "~/utils/loadImage"; import { getRelationColor } from "./DiscourseRelationShape/DiscourseRelationUtil"; +import { AUTO_CANVAS_RELATIONS_KEY } from "~/data/userSettings"; +import { getSetting } from "~/utils/extensionSettings"; // TODO REPLACE WITH TLDRAW DEFAULTS // https://github.com/tldraw/tldraw/pull/1580/files @@ -544,13 +546,19 @@ export class BaseDiscourseNodeUtil extends ShapeUtil { this.updateProps(shape.id, shape.type, { title: text, uid }); // Update Shape Relations - const relationIds = getRelationIds(); - this.deleteRelationsInCanvas({ shape, relationIds }); - await this.createExistingRelations({ - shape, - relationIds, - finalUid: uid, - }); + const autoCanvasRelations = getSetting( + AUTO_CANVAS_RELATIONS_KEY, + false, + ); + if (autoCanvasRelations) { + const relationIds = getRelationIds(); + this.deleteRelationsInCanvas({ shape, relationIds }); + await this.createExistingRelations({ + shape, + relationIds, + finalUid: uid, + }); + } editor.setEditingShape(null); }} diff --git a/apps/roam/src/components/canvas/Tldraw.tsx b/apps/roam/src/components/canvas/Tldraw.tsx index 541901d11..b89769882 100644 --- a/apps/roam/src/components/canvas/Tldraw.tsx +++ b/apps/roam/src/components/canvas/Tldraw.tsx @@ -82,6 +82,8 @@ import { createMigrations } from "./DiscourseRelationShape/discourseRelationMigr import ToastListener, { dispatchToastEvent } from "./ToastListener"; import sendErrorEmail from "~/utils/sendErrorEmail"; import { TLDRAW_DATA_ATTRIBUTE } from "./tldrawStyles"; +import { AUTO_CANVAS_RELATIONS_KEY } from "~/data/userSettings"; +import { getSetting } from "~/utils/extensionSettings"; declare global { interface Window { @@ -829,9 +831,15 @@ const InsideEditorAndUiContext = ({ editor.sideEffects.registerAfterCreateHandler("shape", (shape) => { const util = editor.getShapeUtil(shape); if (util instanceof BaseDiscourseNodeUtil) { - void util.createExistingRelations({ - shape: shape as DiscourseNodeShape, - }); + const autoCanvasRelations = getSetting( + AUTO_CANVAS_RELATIONS_KEY, + false, + ); + if (autoCanvasRelations) { + void util.createExistingRelations({ + shape: shape as DiscourseNodeShape, + }); + } } }); diff --git a/apps/roam/src/components/settings/HomePersonalSettings.tsx b/apps/roam/src/components/settings/HomePersonalSettings.tsx index b0ba42c27..467b91244 100644 --- a/apps/roam/src/components/settings/HomePersonalSettings.tsx +++ b/apps/roam/src/components/settings/HomePersonalSettings.tsx @@ -13,6 +13,7 @@ import { hideDiscourseFloatingMenu, } from "~/components/DiscourseFloatingMenu"; import { NodeSearchMenuTriggerSetting } from "../DiscourseNodeSearchMenu"; +import { AUTO_CANVAS_RELATIONS_KEY } from "~/data/userSettings"; const HomePersonalSettings = ({ onloadArgs }: { onloadArgs: OnloadArgs }) => { const extensionAPI = onloadArgs.extensionAPI; @@ -143,6 +144,28 @@ const HomePersonalSettings = ({ onloadArgs }: { onloadArgs: OnloadArgs }) => { } /> + { + const target = e.target as HTMLInputElement; + void extensionAPI.settings.set( + AUTO_CANVAS_RELATIONS_KEY, + target.checked, + ); + }} + labelElement={ + <> + Auto Canvas Relations + + + } + /> ); }; diff --git a/apps/roam/src/data/userSettings.ts b/apps/roam/src/data/userSettings.ts index a66cbf938..1fab6bd06 100644 --- a/apps/roam/src/data/userSettings.ts +++ b/apps/roam/src/data/userSettings.ts @@ -3,3 +3,4 @@ export const DEFAULT_CANVAS_PAGE_FORMAT_KEY = "default-canvas-page-format"; export const HIDE_METADATA_KEY = "hide-metadata"; export const DEFAULT_FILTERS_KEY = "default-filters"; export const QUERY_BUILDER_SETTINGS_KEY = "query-builder-settings"; +export const AUTO_CANVAS_RELATIONS_KEY = "auto-canvas-relations";