fix(app,ui): session review reactivity and VCS query cache (#30660)
This commit is contained in:
parent
55bafa29d4
commit
c35267776a
@ -467,8 +467,6 @@ export default function Page() {
|
||||
return {
|
||||
queryKey: [...vcsKey(), mode] as const,
|
||||
enabled,
|
||||
staleTime: Number.POSITIVE_INFINITY,
|
||||
gcTime: 60 * 1000,
|
||||
queryFn: mode
|
||||
? () =>
|
||||
sdk.client.vcs
|
||||
|
||||
@ -182,10 +182,10 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
const opened = () => store.opened
|
||||
|
||||
const open = () => props.open ?? store.open
|
||||
const items = createMemo<Item[]>(() =>
|
||||
list(props.diffs).map((diff) => ({ ...normalize(diff), preloaded: diff.preloaded })),
|
||||
const itemsMap = createMemo(() =>
|
||||
Object.fromEntries(list(props.diffs).map((diff) => [diff.file, { ...normalize(diff), preloaded: diff.preloaded }])),
|
||||
)
|
||||
const files = createMemo(() => items().map((diff) => diff.file))
|
||||
const files = createMemo(() => props.diffs.map((diff) => diff.file!))
|
||||
const grouped = createMemo(() => {
|
||||
const next = new Map<string, SessionReviewComment[]>()
|
||||
for (const comment of props.comments ?? []) {
|
||||
@ -388,12 +388,13 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
<Show when={hasDiffs()} fallback={props.empty}>
|
||||
<div class="pb-6">
|
||||
<Accordion multiple value={open()} onChange={handleChange}>
|
||||
<For each={items()}>
|
||||
{(diff) => {
|
||||
const file = diff.file
|
||||
<For each={files()}>
|
||||
{(file) => {
|
||||
console.log({ file })
|
||||
const diff = () => itemsMap()[file]
|
||||
|
||||
// binary files have empty diffs that we can't render
|
||||
const diffCanRender = () => diff.additions !== 0 || diff.deletions !== 0
|
||||
const diffCanRender = () => diff().additions !== 0 || diff().deletions !== 0
|
||||
|
||||
const expanded = createMemo(() => open().includes(file))
|
||||
const mounted = createMemo(() => expanded() && (!!store.visible[file] || pinned(file)))
|
||||
@ -402,9 +403,9 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
const comments = createMemo(() => grouped().get(file) ?? [])
|
||||
const commentedLines = createMemo(() => comments().map((c) => c.selection))
|
||||
|
||||
const beforeText = () => text(diff, "deletions")
|
||||
const afterText = () => text(diff, "additions")
|
||||
const changedLines = () => diff.additions + diff.deletions
|
||||
const beforeText = () => text(diff(), "deletions")
|
||||
const afterText = () => text(diff(), "additions")
|
||||
const changedLines = () => diff().additions + diff().deletions
|
||||
const mediaKind = createMemo(() => mediaKindFromPath(file))
|
||||
|
||||
const tooLarge = createMemo(() => {
|
||||
@ -415,9 +416,9 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
})
|
||||
|
||||
const isAdded = () =>
|
||||
diff.status === "added" || (beforeText().length === 0 && afterText().length > 0)
|
||||
diff().status === "added" || (beforeText().length === 0 && afterText().length > 0)
|
||||
const isDeleted = () =>
|
||||
diff.status === "deleted" || (afterText().length === 0 && beforeText().length > 0)
|
||||
diff().status === "deleted" || (afterText().length === 0 && beforeText().length > 0)
|
||||
|
||||
const selectedLines = createMemo(() => {
|
||||
const current = selection()
|
||||
@ -455,7 +456,7 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
file,
|
||||
selection,
|
||||
comment,
|
||||
preview: selectionPreview(diff, selection),
|
||||
preview: selectionPreview(diff(), selection),
|
||||
})
|
||||
},
|
||||
onUpdate: ({ id, comment, selection }) => {
|
||||
@ -464,7 +465,7 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
file,
|
||||
selection,
|
||||
comment,
|
||||
preview: selectionPreview(diff, selection),
|
||||
preview: selectionPreview(diff(), selection),
|
||||
})
|
||||
},
|
||||
onDelete: (comment) => {
|
||||
@ -543,7 +544,7 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
<span data-slot="session-review-change" data-type="added">
|
||||
{i18n.t("ui.sessionReview.change.added")}
|
||||
</span>
|
||||
<DiffChanges changes={diff} />
|
||||
<DiffChanges changes={diff()} />
|
||||
</div>
|
||||
</Match>
|
||||
<Match when={isDeleted()}>
|
||||
@ -557,7 +558,7 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
</span>
|
||||
</Match>
|
||||
<Match when={true}>
|
||||
<DiffChanges changes={diff} />
|
||||
<DiffChanges changes={diff()} />
|
||||
</Match>
|
||||
</Switch>
|
||||
<Show when={diffCanRender()}>
|
||||
@ -613,8 +614,8 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
<Dynamic
|
||||
component={fileComponent}
|
||||
mode="diff"
|
||||
fileDiff={diff.fileDiff}
|
||||
preloadedDiff={diff.preloaded}
|
||||
fileDiff={diff().fileDiff}
|
||||
preloadedDiff={diff().preloaded}
|
||||
diffStyle={diffStyle()}
|
||||
onRendered={() => {
|
||||
props.onDiffRendered?.()
|
||||
@ -632,8 +633,8 @@ export const SessionReview = (props: SessionReviewProps) => {
|
||||
media={{
|
||||
mode: "auto",
|
||||
path: file,
|
||||
deleted: diff.status === "deleted",
|
||||
readFile: diff.status === "deleted" ? undefined : props.readFile,
|
||||
deleted: diff().status === "deleted",
|
||||
readFile: diff().status === "deleted" ? undefined : props.readFile,
|
||||
}}
|
||||
/>
|
||||
</Match>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user