chore: cleanup
This commit is contained in:
@@ -1,14 +1,10 @@
|
|||||||
import { For, onCleanup, Show, Match, Switch, createMemo, createEffect, on } from "solid-js"
|
import { onCleanup, Show, Match, Switch, createMemo, createEffect, on } from "solid-js"
|
||||||
import { createMediaQuery } from "@solid-primitives/media"
|
import { createMediaQuery } from "@solid-primitives/media"
|
||||||
import { createResizeObserver } from "@solid-primitives/resize-observer"
|
import { createResizeObserver } from "@solid-primitives/resize-observer"
|
||||||
import { useLocal } from "@/context/local"
|
import { useLocal } from "@/context/local"
|
||||||
import { selectionFromLines, useFile, type FileSelection, type SelectedLineRange } from "@/context/file"
|
import { selectionFromLines, useFile, type FileSelection, type SelectedLineRange } from "@/context/file"
|
||||||
import { createStore, produce } from "solid-js/store"
|
import { createStore } from "solid-js/store"
|
||||||
import { IconButton } from "@opencode-ai/ui/icon-button"
|
|
||||||
import { Button } from "@opencode-ai/ui/button"
|
|
||||||
import { Tooltip, TooltipKeybind } from "@opencode-ai/ui/tooltip"
|
|
||||||
import { ResizeHandle } from "@opencode-ai/ui/resize-handle"
|
import { ResizeHandle } from "@opencode-ai/ui/resize-handle"
|
||||||
import { Tabs } from "@opencode-ai/ui/tabs"
|
|
||||||
import { Select } from "@opencode-ai/ui/select"
|
import { Select } from "@opencode-ai/ui/select"
|
||||||
import { createAutoScroll } from "@opencode-ai/ui/hooks"
|
import { createAutoScroll } from "@opencode-ai/ui/hooks"
|
||||||
import { Mark } from "@opencode-ai/ui/logo"
|
import { Mark } from "@opencode-ai/ui/logo"
|
||||||
@@ -17,10 +13,7 @@ import { useSync } from "@/context/sync"
|
|||||||
import { useTerminal } from "@/context/terminal"
|
import { useTerminal } from "@/context/terminal"
|
||||||
import { useLayout } from "@/context/layout"
|
import { useLayout } from "@/context/layout"
|
||||||
import { checksum, base64Encode } from "@opencode-ai/util/encode"
|
import { checksum, base64Encode } from "@opencode-ai/util/encode"
|
||||||
import { findLast } from "@opencode-ai/util/array"
|
|
||||||
import { useDialog } from "@opencode-ai/ui/context/dialog"
|
import { useDialog } from "@opencode-ai/ui/context/dialog"
|
||||||
import { DialogSelectFile } from "@/components/dialog-select-file"
|
|
||||||
import FileTree from "@/components/file-tree"
|
|
||||||
import { useCommand } from "@/context/command"
|
import { useCommand } from "@/context/command"
|
||||||
import { useLanguage } from "@/context/language"
|
import { useLanguage } from "@/context/language"
|
||||||
import { useNavigate, useParams } from "@solidjs/router"
|
import { useNavigate, useParams } from "@solidjs/router"
|
||||||
@@ -29,19 +22,12 @@ import { useSDK } from "@/context/sdk"
|
|||||||
import { usePrompt } from "@/context/prompt"
|
import { usePrompt } from "@/context/prompt"
|
||||||
import { useComments } from "@/context/comments"
|
import { useComments } from "@/context/comments"
|
||||||
import { usePermission } from "@/context/permission"
|
import { usePermission } from "@/context/permission"
|
||||||
import { showToast } from "@opencode-ai/ui/toast"
|
|
||||||
import { SessionHeader, NewSessionView } from "@/components/session"
|
import { SessionHeader, NewSessionView } from "@/components/session"
|
||||||
import { navMark, navParams } from "@/utils/perf"
|
import { navMark, navParams } from "@/utils/perf"
|
||||||
import { same } from "@/utils/same"
|
import { same } from "@/utils/same"
|
||||||
import { createOpenReviewFile } from "@/pages/session/helpers"
|
import { createOpenReviewFile } from "@/pages/session/helpers"
|
||||||
import { createScrollSpy } from "@/pages/session/scroll-spy"
|
import { createScrollSpy } from "@/pages/session/scroll-spy"
|
||||||
import { createFileTabListSync } from "@/pages/session/file-tab-scroll"
|
import { SessionReviewTab, type DiffStyle, type SessionReviewTabProps } from "@/pages/session/review-tab"
|
||||||
import {
|
|
||||||
SessionReviewTab,
|
|
||||||
StickyAddButton,
|
|
||||||
type DiffStyle,
|
|
||||||
type SessionReviewTabProps,
|
|
||||||
} from "@/pages/session/review-tab"
|
|
||||||
import { TerminalPanel } from "@/pages/session/terminal-panel"
|
import { TerminalPanel } from "@/pages/session/terminal-panel"
|
||||||
import { MessageTimeline } from "@/pages/session/message-timeline"
|
import { MessageTimeline } from "@/pages/session/message-timeline"
|
||||||
import { useSessionCommands } from "@/pages/session/use-session-commands"
|
import { useSessionCommands } from "@/pages/session/use-session-commands"
|
||||||
@@ -195,16 +181,6 @@ export default function Page() {
|
|||||||
if (!view().reviewPanel.opened()) view().reviewPanel.open()
|
if (!view().reviewPanel.opened()) view().reviewPanel.open()
|
||||||
}
|
}
|
||||||
|
|
||||||
const openTab = (value: string) => {
|
|
||||||
const next = normalizeTab(value)
|
|
||||||
tabs().open(next)
|
|
||||||
|
|
||||||
const path = file.pathFromTab(next)
|
|
||||||
if (!path) return
|
|
||||||
file.load(path)
|
|
||||||
openReviewPanel()
|
|
||||||
}
|
|
||||||
|
|
||||||
createEffect(() => {
|
createEffect(() => {
|
||||||
const active = tabs().active()
|
const active = tabs().active()
|
||||||
if (!active) return
|
if (!active) return
|
||||||
@@ -343,33 +319,6 @@ export default function Page() {
|
|||||||
scrollToMessage(msgs[targetIndex], "auto")
|
scrollToMessage(msgs[targetIndex], "auto")
|
||||||
}
|
}
|
||||||
|
|
||||||
const kinds = createMemo(() => {
|
|
||||||
const merge = (a: "add" | "del" | "mix" | undefined, b: "add" | "del" | "mix") => {
|
|
||||||
if (!a) return b
|
|
||||||
if (a === b) return a
|
|
||||||
return "mix" as const
|
|
||||||
}
|
|
||||||
|
|
||||||
const normalize = (p: string) => p.replaceAll("\\\\", "/").replace(/\/+$/, "")
|
|
||||||
|
|
||||||
const out = new Map<string, "add" | "del" | "mix">()
|
|
||||||
for (const diff of diffs()) {
|
|
||||||
const file = normalize(diff.file)
|
|
||||||
const kind = diff.status === "added" ? "add" : diff.status === "deleted" ? "del" : "mix"
|
|
||||||
|
|
||||||
out.set(file, kind)
|
|
||||||
|
|
||||||
const parts = file.split("/")
|
|
||||||
for (const [idx] of parts.slice(0, -1).entries()) {
|
|
||||||
const dir = parts.slice(0, idx + 1).join("/")
|
|
||||||
if (!dir) continue
|
|
||||||
out.set(dir, merge(out.get(dir), kind))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return out
|
|
||||||
})
|
|
||||||
const emptyDiffFiles: string[] = []
|
|
||||||
const diffFiles = createMemo(() => diffs().map((d) => d.file), emptyDiffFiles, { equals: same })
|
|
||||||
const diffsReady = createMemo(() => {
|
const diffsReady = createMemo(() => {
|
||||||
const id = params.id
|
const id = params.id
|
||||||
if (!id) return true
|
if (!id) return true
|
||||||
@@ -709,11 +658,6 @@ export default function Page() {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
const setFileTreeTabValue = (value: string) => {
|
|
||||||
if (value !== "changes" && value !== "all") return
|
|
||||||
setFileTreeTab(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
const reviewDiffId = (path: string) => {
|
const reviewDiffId = (path: string) => {
|
||||||
const sum = checksum(path)
|
const sum = checksum(path)
|
||||||
if (!sum) return
|
if (!sum) return
|
||||||
@@ -809,12 +753,6 @@ export default function Page() {
|
|||||||
return "empty"
|
return "empty"
|
||||||
})
|
})
|
||||||
|
|
||||||
const activeFileTab = createMemo(() => {
|
|
||||||
const active = activeTab()
|
|
||||||
if (!openedTabs().includes(active)) return
|
|
||||||
return active
|
|
||||||
})
|
|
||||||
|
|
||||||
createEffect(() => {
|
createEffect(() => {
|
||||||
if (!layout.ready()) return
|
if (!layout.ready()) return
|
||||||
if (tabs().active()) return
|
if (tabs().active()) return
|
||||||
|
|||||||
Reference in New Issue
Block a user