diff --git a/apps/desktop/src/main/lib/agent-setup/shell-wrappers.test.ts b/apps/desktop/src/main/lib/agent-setup/shell-wrappers.test.ts index 3baa8ab0d64..ef7be4dfb2c 100644 --- a/apps/desktop/src/main/lib/agent-setup/shell-wrappers.test.ts +++ b/apps/desktop/src/main/lib/agent-setup/shell-wrappers.test.ts @@ -839,7 +839,7 @@ export SUPERSET_WORKSPACE_PATH="/wrong/path" expect(args).toEqual([ "-l", "--init-command", - `set -l _superset_bin "${TEST_BIN_DIR}"; contains -- "$_superset_bin" $PATH; or set -gx PATH "$_superset_bin" $PATH; function _superset_shell_ready --on-event fish_prompt; printf '\\033]777;superset-shell-ready\\007'; functions -e _superset_shell_ready; end`, + `set -l _superset_bin "${TEST_BIN_DIR}"; contains -- "$_superset_bin" $PATH; or set -gx PATH "$_superset_bin" $PATH; function _superset_shell_ready --on-event fish_prompt; printf '\\033]777;superset-shell-ready\\007'; functions -e _superset_shell_ready; end; function _superset_prompt_marker --on-event fish_prompt; printf '\\033]777;superset-prompt\\007'; end`, ]); }); @@ -853,7 +853,7 @@ export SUPERSET_WORKSPACE_PATH="/wrong/path" expect(args).toEqual([ "-l", "--init-command", - `set -l _superset_bin "/tmp/with space/quote\\"buck\\$slash\\\\bin"; contains -- "$_superset_bin" $PATH; or set -gx PATH "$_superset_bin" $PATH; function _superset_shell_ready --on-event fish_prompt; printf '\\033]777;superset-shell-ready\\007'; functions -e _superset_shell_ready; end`, + `set -l _superset_bin "/tmp/with space/quote\\"buck\\$slash\\\\bin"; contains -- "$_superset_bin" $PATH; or set -gx PATH "$_superset_bin" $PATH; function _superset_shell_ready --on-event fish_prompt; printf '\\033]777;superset-shell-ready\\007'; functions -e _superset_shell_ready; end; function _superset_prompt_marker --on-event fish_prompt; printf '\\033]777;superset-prompt\\007'; end`, ]); }); }); diff --git a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ReviewPanel/ReviewPanel.tsx b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ReviewPanel/ReviewPanel.tsx index f55c819f954..bfae3b3cd4b 100644 --- a/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ReviewPanel/ReviewPanel.tsx +++ b/apps/desktop/src/renderer/screens/main/components/WorkspaceView/RightSidebar/ChangesView/components/ReviewPanel/ReviewPanel.tsx @@ -8,7 +8,7 @@ import { import { Skeleton } from "@superset/ui/skeleton"; import { toast } from "@superset/ui/sonner"; import { cn } from "@superset/ui/utils"; -import { useEffect, useRef, useState } from "react"; +import { useCallback, useEffect, useRef, useState } from "react"; import { LuArrowUpRight, LuCheck, @@ -24,6 +24,8 @@ import remarkGfm from "remark-gfm"; import { remarkAlert } from "remark-github-blockquote-alert"; import { electronTrpc } from "renderer/lib/electron-trpc"; import { PRIcon } from "renderer/screens/main/components/PRIcon"; +import { useWorkspaceId } from "renderer/screens/main/components/WorkspaceView/WorkspaceIdContext"; +import { useTabsStore } from "renderer/stores/tabs"; import { CheckSteps } from "./components/CheckSteps"; import { ALL_COMMENTS_COPY_ACTION_KEY, @@ -57,6 +59,19 @@ export function ReviewPanel({ isCommentsLoading = false, onOpenFile, }: ReviewPanelProps) { + const resolvedWorkspaceId = useWorkspaceId(); + const addBrowserTab = useTabsStore((s) => s.addBrowserTab); + const handleOpenUrl = useCallback( + (url: string, e: React.MouseEvent) => { + e.preventDefault(); + e.stopPropagation(); + if (resolvedWorkspaceId) { + addBrowserTab(resolvedWorkspaceId, url); + } + }, + [resolvedWorkspaceId, addBrowserTab], + ); + const [checksOpen, setChecksOpen] = useState(true); const [commentsOpen, setCommentsOpen] = useState(true); const [resolvedCommentsGroupOpen, setResolvedCommentsGroupOpen] = @@ -271,6 +286,20 @@ export function ReviewPanel({ + href ? ( + handleOpenUrl(href, e)} + > + {children} + + ) : ( + {children} + ), + }} > {stripHtmlComments(comment.body)} @@ -280,16 +309,14 @@ export function ReviewPanel({
{comment.url ? ( - e.stopPropagation()} + onClick={(e) => handleOpenUrl(comment.url as string, e)} > - + ) : null}