diff options
| author | Adam <[email protected]> | 2026-02-18 13:23:20 -0600 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-02-18 13:23:20 -0600 |
| commit | 42aa28d512d4ea77bef6159530b8bac9c7c872a0 (patch) | |
| tree | 5f009761db79701af778fa0270f837def3f09ff5 /packages/app/src/pages/session | |
| parent | c6bd32000302c0cf607c1e91c536537e43848237 (diff) | |
| download | opencode-42aa28d512d4ea77bef6159530b8bac9c7c872a0.tar.gz opencode-42aa28d512d4ea77bef6159530b8bac9c7c872a0.zip | |
chore: cleanup (#14181)
Diffstat (limited to 'packages/app/src/pages/session')
| -rw-r--r-- | packages/app/src/pages/session/file-tabs.tsx | 30 | ||||
| -rw-r--r-- | packages/app/src/pages/session/session-prompt-dock.tsx | 39 |
2 files changed, 39 insertions, 30 deletions
diff --git a/packages/app/src/pages/session/file-tabs.tsx b/packages/app/src/pages/session/file-tabs.tsx index 9e3a54311..ebc1f5922 100644 --- a/packages/app/src/pages/session/file-tabs.tsx +++ b/packages/app/src/pages/session/file-tabs.tsx @@ -168,6 +168,13 @@ export function FileTabContent(props: { tab: string }) { draftTop: undefined as number | undefined, }) + const setCommenting = (range: SelectedLineRange | null) => { + setNote("commenting", range) + scheduleComments() + if (!range) return + setNote("draft", "") + } + const getRoot = () => { const el = wrap if (!el) return @@ -261,13 +268,6 @@ export function FileTabContent(props: { tab: string }) { }) createEffect(() => { - const range = note.commenting - scheduleComments() - if (!range) return - setNote("draft", "") - }) - - createEffect(() => { const focus = comments.focus() const p = path() if (!focus || !p) return @@ -278,7 +278,7 @@ export function FileTabContent(props: { tab: string }) { if (!target) return setNote("openedComment", target.id) - setNote("commenting", null) + setCommenting(null) file.setSelectedLines(p, target.selection) requestAnimationFrame(() => comments.clearFocus()) }) @@ -438,16 +438,16 @@ export function FileTabContent(props: { tab: string }) { const p = path() if (!p) return file.setSelectedLines(p, range) - if (!range) setNote("commenting", null) + if (!range) setCommenting(null) }} onLineSelectionEnd={(range: SelectedLineRange | null) => { if (!range) { - setNote("commenting", null) + setCommenting(null) return } setNote("openedComment", null) - setNote("commenting", range) + setCommenting(range) }} overflow="scroll" class="select-text" @@ -468,7 +468,7 @@ export function FileTabContent(props: { tab: string }) { onClick={() => { const p = path() if (!p) return - setNote("commenting", null) + setCommenting(null) setNote("openedComment", (current) => (current === comment.id ? null : comment.id)) file.setSelectedLines(p, comment.selection) }} @@ -483,12 +483,12 @@ export function FileTabContent(props: { tab: string }) { value={note.draft} selection={formatCommentLabel(range())} onInput={(value) => setNote("draft", value)} - onCancel={() => setNote("commenting", null)} + onCancel={() => setCommenting(null)} onSubmit={(value) => { const p = path() if (!p) return addCommentToContext({ file: p, selection: range(), comment: value, origin: "file" }) - setNote("commenting", null) + setCommenting(null) }} onPopoverFocusOut={(e: FocusEvent) => { const current = e.currentTarget as HTMLDivElement @@ -497,7 +497,7 @@ export function FileTabContent(props: { tab: string }) { setTimeout(() => { if (!document.activeElement || !current.contains(document.activeElement)) { - setNote("commenting", null) + setCommenting(null) } }, 0) }} diff --git a/packages/app/src/pages/session/session-prompt-dock.tsx b/packages/app/src/pages/session/session-prompt-dock.tsx index 3f0b7a6e8..abe12bcb0 100644 --- a/packages/app/src/pages/session/session-prompt-dock.tsx +++ b/packages/app/src/pages/session/session-prompt-dock.tsx @@ -70,29 +70,28 @@ export function SessionPromptDock(props: { setSessionHandoff(sessionKey(), { prompt: previewPrompt() }) }) - const [responding, setResponding] = createSignal(false) - - createEffect( - on( - () => permissionRequest()?.id, - () => setResponding(false), - { defer: true }, - ), - ) + const [responding, setResponding] = createSignal<string | undefined>() + const permissionResponding = () => { + const perm = permissionRequest() + if (!perm) return false + return responding() === perm.id + } const decide = (response: "once" | "always" | "reject") => { const perm = permissionRequest() if (!perm) return - if (responding()) return + if (responding() === perm.id) return - setResponding(true) + setResponding(perm.id) sdk.client.permission .respond({ sessionID: perm.sessionID, permissionID: perm.id, response }) .catch((err: unknown) => { const message = err instanceof Error ? err.message : String(err) showToast({ title: language.t("common.requestFailed"), description: message }) }) - .finally(() => setResponding(false)) + .finally(() => { + setResponding((id) => (id === perm.id ? undefined : id)) + }) } const done = createMemo( @@ -218,18 +217,28 @@ export function SessionPromptDock(props: { <> <div /> <div data-slot="permission-footer-actions"> - <Button variant="ghost" size="normal" onClick={() => decide("reject")} disabled={responding()}> + <Button + variant="ghost" + size="normal" + onClick={() => decide("reject")} + disabled={permissionResponding()} + > {language.t("ui.permission.deny")} </Button> <Button variant="secondary" size="normal" onClick={() => decide("always")} - disabled={responding()} + disabled={permissionResponding()} > {language.t("ui.permission.allowAlways")} </Button> - <Button variant="primary" size="normal" onClick={() => decide("once")} disabled={responding()}> + <Button + variant="primary" + size="normal" + onClick={() => decide("once")} + disabled={permissionResponding()} + > {language.t("ui.permission.allowOnce")} </Button> </div> |
