diff --git a/apps/roam/src/components/GitHubSync.tsx b/apps/roam/src/components/GitHubSync.tsx index 36830e84f..4a2ba2779 100644 --- a/apps/roam/src/components/GitHubSync.tsx +++ b/apps/roam/src/components/GitHubSync.tsx @@ -49,6 +49,7 @@ import { import CustomPanel from "roamjs-components/components/ConfigPanels/CustomPanel"; import getShallowTreeByParentUid from "roamjs-components/queries/getShallowTreeByParentUid"; import isFlagEnabled from "~/utils/isFlagEnabled"; +import getPageTitleByBlockUid from "roamjs-components/queries/getPageTitleByBlockUid"; const CommentUidCache = new Set(); const CommentContainerUidCache = new Set(); @@ -130,7 +131,7 @@ export const insertNewCommentsFromGitHub = async ({ }: { pageUid: string; extensionAPI: OnloadArgs["extensionAPI"]; - matchingNode?: DiscourseNode; + matchingNode: DiscourseNode; }) => { const getCommentsOnPage = (pageUid: string) => { const query = `[:find @@ -314,6 +315,7 @@ export const renderGitHubSyncPage = async ({ , containerDiv, ); @@ -466,9 +468,11 @@ const CommentsComponent = ({ blockUid }: { blockUid: string }) => { const CommentsContainerComponent = ({ commentsContainerUid, extensionAPI, + matchingNode, }: { commentsContainerUid: string; extensionAPI: OnloadArgs["extensionAPI"]; + matchingNode: DiscourseNode; }) => { const [loadingComments, setLoadingComments] = useState(false); return ( @@ -523,7 +527,11 @@ const CommentsContainerComponent = ({ onClick={async () => { setLoadingComments(true); const pageUid = getPageUidByBlockUid(commentsContainerUid); - await insertNewCommentsFromGitHub({ pageUid, extensionAPI }); + await insertNewCommentsFromGitHub({ + pageUid, + extensionAPI, + matchingNode, + }); setLoadingComments(false); }} /> @@ -907,6 +915,12 @@ const initializeGitHubSync = async (onloadArgs: OnloadArgs) => { const { blockUid } = getUids(b); if (CommentContainerUidCache.has(blockUid)) { if (b.hasAttribute("github-sync-comment-container")) return; + + // TODO: move this to renderGitHubSyncPage so we can pass in the matching node + const title = getPageTitleByBlockUid(blockUid); + const matchingNode = isGitHubSyncPage(title); + if (!matchingNode) return; + b.setAttribute("github-sync-comment-container", "true"); const containerDiv = document.createElement("div"); containerDiv.className = "inline-block ml-2"; @@ -916,6 +930,7 @@ const initializeGitHubSync = async (onloadArgs: OnloadArgs) => { , containerDiv, ); diff --git a/apps/roam/src/components/settings/GeneralSettings.tsx b/apps/roam/src/components/settings/GeneralSettings.tsx index 8ee59c528..709236ac4 100644 --- a/apps/roam/src/components/settings/GeneralSettings.tsx +++ b/apps/roam/src/components/settings/GeneralSettings.tsx @@ -40,7 +40,13 @@ const DiscourseGraphHome = ({ onloadArgs }: { onloadArgs: OnloadArgs }) => { uid={settings.githubSync.uid} value={settings.githubSync.value} options={{ - onChange: (checked) => toggleGitHubSync(checked, onloadArgs), + onChange: async (checked) => { + await toggleGitHubSync(checked, onloadArgs); + setTimeout(() => { + // Wait for the GitHub Sync flag block to be updated + refreshConfigTree(); + }, 250); + }, }} /> diff --git a/apps/roam/src/components/settings/NodeConfig.tsx b/apps/roam/src/components/settings/NodeConfig.tsx index 1546ebcfd..38dc7d9ab 100644 --- a/apps/roam/src/components/settings/NodeConfig.tsx +++ b/apps/roam/src/components/settings/NodeConfig.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useMemo } from "react"; import { DiscourseNode } from "~/utils/getDiscourseNodes"; import FlagPanel from "roamjs-components/components/ConfigPanels/FlagPanel"; import SelectPanel from "roamjs-components/components/ConfigPanels/SelectPanel"; @@ -14,6 +14,7 @@ import { Checkbox, Icon, Tooltip, + Button, } from "@blueprintjs/core"; import DiscourseNodeSpecification from "./DiscourseNodeSpecification"; import DiscourseNodeAttributes from "./DiscourseNodeAttributes"; @@ -21,13 +22,16 @@ import DiscourseNodeCanvasSettings from "./DiscourseNodeCanvasSettings"; import DiscourseNodeIndex from "./DiscourseNodeIndex"; import { OnloadArgs } from "roamjs-components/types"; import CommentsQuery from "~/components/GitHubSyncCommentsQuery"; +import { getFormattedConfigTree } from "~/utils/discourseConfigRef"; const NodeConfig = ({ node, onloadArgs, + setMainTab, }: { node: DiscourseNode; onloadArgs: OnloadArgs; + setMainTab: (tabId: TabId) => void; }) => { const getUid = (key: string) => getSubTree({ @@ -69,6 +73,8 @@ const NodeConfig = ({ node.githubSync?.enabled || false, ); + const globalSettings = useMemo(() => getFormattedConfigTree(), []); + const globalGithubSyncEnabled = globalSettings.githubSync.value; return ( <> Configure where comments appear in the page - { - const target = e.target as HTMLInputElement; - setIsGithubSyncEnabled(target.checked); - if (target.checked) { - setInputSetting({ - blockUid: githubSyncUid, - key: "Enabled", - value: "true", - }); - } else { - setInputSetting({ - blockUid: githubSyncUid, - key: "Enabled", - value: "false", - }); - } - }} - > - GitHub Sync Enabled - - +

GitHub Sync is not enabled globally.

+