fix(ui): render selected session diff payload
Pass the selected diff object through Solid's Show so MonacoDiffViewer receives before/after content.
This commit is contained in:
@@ -68,16 +68,6 @@ const ChangesTab: Component<ChangesTabProps> = (props) => {
|
|||||||
|
|
||||||
const scopeKey = `${props.instanceId}:${hasSession ? sessionId : "no-session"}`
|
const scopeKey = `${props.instanceId}:${hasSession ? sessionId : "no-session"}`
|
||||||
|
|
||||||
const isBinaryDiff = (item: any) => {
|
|
||||||
const before = typeof item?.before === "string" ? item.before : ""
|
|
||||||
const after = typeof item?.after === "string" ? item.after : ""
|
|
||||||
if (before.length === 0 && after.length === 0) {
|
|
||||||
// OpenCode stores empty before/after for binaries.
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
const emptyViewerMessage = () => {
|
const emptyViewerMessage = () => {
|
||||||
if (!hasSession) return props.t("instanceShell.sessionChanges.noSessionSelected")
|
if (!hasSession) return props.t("instanceShell.sessionChanges.noSessionSelected")
|
||||||
if (diffs === undefined) return props.t("instanceShell.sessionChanges.loading")
|
if (diffs === undefined) return props.t("instanceShell.sessionChanges.loading")
|
||||||
@@ -97,7 +87,7 @@ const ChangesTab: Component<ChangesTabProps> = (props) => {
|
|||||||
</div>
|
</div>
|
||||||
<div class="file-viewer-content file-viewer-content--monaco">
|
<div class="file-viewer-content file-viewer-content--monaco">
|
||||||
<Show
|
<Show
|
||||||
when={selectedFileData && hasSession && Array.isArray(diffs) && diffs.length > 0}
|
when={selectedFileData && hasSession && Array.isArray(diffs) && diffs.length > 0 ? selectedFileData : null}
|
||||||
fallback={
|
fallback={
|
||||||
<div class="file-viewer-empty">
|
<div class="file-viewer-empty">
|
||||||
<span class="file-viewer-empty-text">{emptyViewerMessage()}</span>
|
<span class="file-viewer-empty-text">{emptyViewerMessage()}</span>
|
||||||
@@ -105,23 +95,14 @@ const ChangesTab: Component<ChangesTabProps> = (props) => {
|
|||||||
}
|
}
|
||||||
>
|
>
|
||||||
{(file) => (
|
{(file) => (
|
||||||
<Show
|
<MonacoDiffViewer
|
||||||
when={!isBinaryDiff(file())}
|
scopeKey={scopeKey}
|
||||||
fallback={
|
path={String(file().file || "")}
|
||||||
<div class="file-viewer-empty">
|
before={String((file() as any).before || "")}
|
||||||
<span class="file-viewer-empty-text">Binary file cannot be displayed</span>
|
after={String((file() as any).after || "")}
|
||||||
</div>
|
viewMode={props.diffViewMode()}
|
||||||
}
|
contextMode={props.diffContextMode()}
|
||||||
>
|
/>
|
||||||
<MonacoDiffViewer
|
|
||||||
scopeKey={scopeKey}
|
|
||||||
path={String(file().file || "")}
|
|
||||||
before={String((file() as any).before || "")}
|
|
||||||
after={String((file() as any).after || "")}
|
|
||||||
viewMode={props.diffViewMode()}
|
|
||||||
contextMode={props.diffContextMode()}
|
|
||||||
/>
|
|
||||||
</Show>
|
|
||||||
)}
|
)}
|
||||||
</Show>
|
</Show>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user