diff options
| author | Adam <[email protected]> | 2026-03-12 07:26:43 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-03-12 12:26:43 +0000 |
| commit | d4107d51f163b74c96895b50d653828c698d937e (patch) | |
| tree | 070ae9ad38ebd230d75517d485fc0c86f2263c6b /packages/app/src/pages/session | |
| parent | d8fbe0af0151c662008d8a2dbbb7c76ff5db88d4 (diff) | |
| download | opencode-d4107d51f163b74c96895b50d653828c698d937e.tar.gz opencode-d4107d51f163b74c96895b50d653828c698d937e.zip | |
chore: cleanup (#17115)
Diffstat (limited to 'packages/app/src/pages/session')
11 files changed, 23 insertions, 176 deletions
diff --git a/packages/app/src/pages/session/composer/index.ts b/packages/app/src/pages/session/composer/index.ts index e244a1536..b0069de53 100644 --- a/packages/app/src/pages/session/composer/index.ts +++ b/packages/app/src/pages/session/composer/index.ts @@ -1,3 +1,2 @@ export { SessionComposerRegion } from "./session-composer-region" -export { createSessionComposerBlocked, createSessionComposerState } from "./session-composer-state" -export type { SessionComposerState } from "./session-composer-state" +export { createSessionComposerState } from "./session-composer-state" diff --git a/packages/app/src/pages/session/composer/session-composer-helpers.ts b/packages/app/src/pages/session/composer/session-composer-helpers.ts deleted file mode 100644 index 90c238af4..000000000 --- a/packages/app/src/pages/session/composer/session-composer-helpers.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const todoState = (input: { - count: number - done: boolean - live: boolean -}): "hide" | "clear" | "open" | "close" => { - if (input.count === 0) return "hide" - if (!input.live) return "clear" - if (!input.done) return "open" - return "close" -} diff --git a/packages/app/src/pages/session/composer/session-composer-state.test.ts b/packages/app/src/pages/session/composer/session-composer-state.test.ts index f7c11715c..c27454f7e 100644 --- a/packages/app/src/pages/session/composer/session-composer-state.test.ts +++ b/packages/app/src/pages/session/composer/session-composer-state.test.ts @@ -1,6 +1,6 @@ import { describe, expect, test } from "bun:test" import type { PermissionRequest, QuestionRequest, Session } from "@opencode-ai/sdk/v2/client" -import { todoState } from "./session-composer-helpers" +import { todoState } from "./session-composer-state" import { sessionPermissionRequest, sessionQuestionRequest } from "./session-request-tree" const session = (input: { id: string; parentID?: string }) => diff --git a/packages/app/src/pages/session/composer/session-composer-state.ts b/packages/app/src/pages/session/composer/session-composer-state.ts index a007e4c84..525766dcf 100644 --- a/packages/app/src/pages/session/composer/session-composer-state.ts +++ b/packages/app/src/pages/session/composer/session-composer-state.ts @@ -8,30 +8,21 @@ import { useLanguage } from "@/context/language" import { usePermission } from "@/context/permission" import { useSDK } from "@/context/sdk" import { useSync } from "@/context/sync" -import { todoState } from "./session-composer-helpers" import { sessionPermissionRequest, sessionQuestionRequest } from "./session-request-tree" -const idle = { type: "idle" as const } - -export function createSessionComposerBlocked() { - const params = useParams() - const permission = usePermission() - const sdk = useSDK() - const sync = useSync() - const permissionRequest = createMemo(() => - sessionPermissionRequest(sync.data.session, sync.data.permission, params.id, (item) => { - return !permission.autoResponds(item, sdk.directory) - }), - ) - const questionRequest = createMemo(() => sessionQuestionRequest(sync.data.session, sync.data.question, params.id)) - - return createMemo(() => { - const id = params.id - if (!id) return false - return !!permissionRequest() || !!questionRequest() - }) +export const todoState = (input: { + count: number + done: boolean + live: boolean +}): "hide" | "clear" | "open" | "close" => { + if (input.count === 0) return "hide" + if (!input.live) return "clear" + if (!input.done) return "open" + return "close" } +const idle = { type: "idle" as const } + export function createSessionComposerState(options?: { closeMs?: number | (() => number) }) { const params = useParams() const sdk = useSDK() diff --git a/packages/app/src/pages/session/helpers.ts b/packages/app/src/pages/session/helpers.ts index be9656900..2da5ce6b8 100644 --- a/packages/app/src/pages/session/helpers.ts +++ b/packages/app/src/pages/session/helpers.ts @@ -1,4 +1,4 @@ -import { batch, createEffect, on, onCleanup, onMount, type Accessor } from "solid-js" +import { batch, onCleanup, onMount } from "solid-js" import { createStore } from "solid-js/store" export const focusTerminalById = (id: string) => { @@ -117,57 +117,3 @@ export const createSizing = () => { } export type Sizing = ReturnType<typeof createSizing> - -export const createPresence = (open: Accessor<boolean>, wait = 200) => { - const [state, setState] = createStore({ - show: open(), - open: open(), - }) - let frame: number | undefined - let t: number | undefined - - const clear = () => { - if (frame !== undefined) { - cancelAnimationFrame(frame) - frame = undefined - } - if (t !== undefined) { - clearTimeout(t) - t = undefined - } - } - - createEffect( - on(open, (next) => { - clear() - - if (next) { - if (state.show) { - setState("open", true) - return - } - - setState({ show: true, open: false }) - frame = requestAnimationFrame(() => { - frame = undefined - setState("open", true) - }) - return - } - - if (!state.show) return - setState("open", false) - t = window.setTimeout(() => { - t = undefined - setState("show", false) - }, wait) - }), - ) - - onCleanup(clear) - - return { - show: () => state.show, - open: () => state.open, - } -} diff --git a/packages/app/src/pages/session/session-command-helpers.ts b/packages/app/src/pages/session/session-command-helpers.ts deleted file mode 100644 index b71a7b768..000000000 --- a/packages/app/src/pages/session/session-command-helpers.ts +++ /dev/null @@ -1,10 +0,0 @@ -export const canAddSelectionContext = (input: { - active?: string - pathFromTab: (tab: string) => string | undefined - selectedLines: (path: string) => unknown -}) => { - if (!input.active) return false - const path = input.pathFromTab(input.active) - if (!path) return false - return input.selectedLines(path) != null -} diff --git a/packages/app/src/pages/session/session-prompt-dock.test.ts b/packages/app/src/pages/session/session-prompt-dock.test.ts deleted file mode 100644 index b3a9945d6..000000000 --- a/packages/app/src/pages/session/session-prompt-dock.test.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { describe, expect, test } from "bun:test" -import { questionSubtitle } from "./session-prompt-helpers" - -describe("questionSubtitle", () => { - const t = (key: string) => { - if (key === "ui.common.question.one") return "question" - if (key === "ui.common.question.other") return "questions" - return key - } - - test("returns empty for zero", () => { - expect(questionSubtitle(0, t)).toBe("") - }) - - test("uses singular label", () => { - expect(questionSubtitle(1, t)).toBe("1 question") - }) - - test("uses plural label", () => { - expect(questionSubtitle(3, t)).toBe("3 questions") - }) -}) diff --git a/packages/app/src/pages/session/session-prompt-helpers.ts b/packages/app/src/pages/session/session-prompt-helpers.ts deleted file mode 100644 index ac3234c93..000000000 --- a/packages/app/src/pages/session/session-prompt-helpers.ts +++ /dev/null @@ -1,4 +0,0 @@ -export const questionSubtitle = (count: number, t: (key: string) => string) => { - if (count === 0) return "" - return `${count} ${t(count > 1 ? "ui.common.question.other" : "ui.common.question.one")}` -} diff --git a/packages/app/src/pages/session/use-session-commands.test.ts b/packages/app/src/pages/session/use-session-commands.test.ts deleted file mode 100644 index ada1871e1..000000000 --- a/packages/app/src/pages/session/use-session-commands.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { describe, expect, test } from "bun:test" -import { canAddSelectionContext } from "./session-command-helpers" - -describe("canAddSelectionContext", () => { - test("returns false without active tab", () => { - expect( - canAddSelectionContext({ - active: undefined, - pathFromTab: () => "src/a.ts", - selectedLines: () => ({ start: 1, end: 1 }), - }), - ).toBe(false) - }) - - test("returns false when active tab is not a file", () => { - expect( - canAddSelectionContext({ - active: "context", - pathFromTab: () => undefined, - selectedLines: () => ({ start: 1, end: 1 }), - }), - ).toBe(false) - }) - - test("returns false without selected lines", () => { - expect( - canAddSelectionContext({ - active: "file://src/a.ts", - pathFromTab: () => "src/a.ts", - selectedLines: () => null, - }), - ).toBe(false) - }) - - test("returns true when file and selection exist", () => { - expect( - canAddSelectionContext({ - active: "file://src/a.ts", - pathFromTab: () => "src/a.ts", - selectedLines: () => ({ start: 1, end: 2 }), - }), - ).toBe(true) - }) -}) diff --git a/packages/app/src/pages/session/use-session-commands.tsx b/packages/app/src/pages/session/use-session-commands.tsx index b8ddeda82..ea3b5ec57 100644 --- a/packages/app/src/pages/session/use-session-commands.tsx +++ b/packages/app/src/pages/session/use-session-commands.tsx @@ -19,7 +19,6 @@ import { showToast } from "@opencode-ai/ui/toast" import { findLast } from "@opencode-ai/util/array" import { extractPromptFromParts } from "@/utils/prompt" import { UserMessage } from "@opencode-ai/sdk/v2" -import { canAddSelectionContext } from "@/pages/session/session-command-helpers" export type SessionCommandContext = { navigateMessageByOffset: (offset: number) => void @@ -84,6 +83,14 @@ export const useSessionCommands = (actions: SessionCommandContext) => { prompt.context.add({ type: "file", path, selection, preview }) } + const canAddSelectionContext = () => { + const active = tabs().active() + if (!active) return false + const path = file.pathFromTab(active) + if (!path) return false + return file.selectedLines(path) != null + } + const navigateMessageByOffset = actions.navigateMessageByOffset const setActiveMessage = actions.setActiveMessage const focusInput = actions.focusInput @@ -136,11 +143,7 @@ export const useSessionCommands = (actions: SessionCommandContext) => { title: language.t("command.context.addSelection"), description: language.t("command.context.addSelection.description"), keybind: "mod+shift+l", - disabled: !canAddSelectionContext({ - active: tabs().active(), - pathFromTab: file.pathFromTab, - selectedLines: file.selectedLines, - }), + disabled: !canAddSelectionContext(), onSelect: () => { const active = tabs().active() if (!active) return diff --git a/packages/app/src/pages/session/use-session-hash-scroll.ts b/packages/app/src/pages/session/use-session-hash-scroll.ts index 1ea6a302b..5fadb1f22 100644 --- a/packages/app/src/pages/session/use-session-hash-scroll.ts +++ b/packages/app/src/pages/session/use-session-hash-scroll.ts @@ -3,8 +3,6 @@ import { useLocation, useNavigate } from "@solidjs/router" import { createEffect, createMemo, onCleanup, onMount } from "solid-js" import { messageIdFromHash } from "./message-id-from-hash" -export { messageIdFromHash } from "./message-id-from-hash" - export const useSessionHashScroll = (input: { sessionKey: () => string sessionID: () => string | undefined |
