fix(ui): refresh agent files after external edits
parent
f60eae83fa
commit
ddccfd3ec1
|
|
@ -421,7 +421,17 @@ export function renderApp(state: AppViewState) {
|
||||||
void state.loadCron();
|
void state.loadCron();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoadFiles: (agentId) => loadAgentFiles(state, agentId),
|
onLoadFiles: (agentId) => {
|
||||||
|
void (async () => {
|
||||||
|
await loadAgentFiles(state, agentId);
|
||||||
|
if (state.agentFileActive) {
|
||||||
|
await loadAgentFileContent(state, agentId, state.agentFileActive, {
|
||||||
|
force: true,
|
||||||
|
preserveDraft: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
},
|
||||||
onSelectFile: (name) => {
|
onSelectFile: (name) => {
|
||||||
state.agentFileActive = name;
|
state.agentFileActive = name;
|
||||||
if (!resolvedAgentId) {
|
if (!resolvedAgentId) {
|
||||||
|
|
|
||||||
|
|
@ -55,11 +55,16 @@ export async function loadAgentFiles(state: AgentFilesState, agentId: string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function loadAgentFileContent(state: AgentFilesState, agentId: string, name: string) {
|
export async function loadAgentFileContent(
|
||||||
|
state: AgentFilesState,
|
||||||
|
agentId: string,
|
||||||
|
name: string,
|
||||||
|
opts?: { force?: boolean; preserveDraft?: boolean },
|
||||||
|
) {
|
||||||
if (!state.client || !state.connected || state.agentFilesLoading) {
|
if (!state.client || !state.connected || state.agentFilesLoading) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (Object.hasOwn(state.agentFileContents, name)) {
|
if (!opts?.force && Object.hasOwn(state.agentFileContents, name)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.agentFilesLoading = true;
|
state.agentFilesLoading = true;
|
||||||
|
|
@ -71,9 +76,16 @@ export async function loadAgentFileContent(state: AgentFilesState, agentId: stri
|
||||||
});
|
});
|
||||||
if (res?.file) {
|
if (res?.file) {
|
||||||
const content = res.file.content ?? "";
|
const content = res.file.content ?? "";
|
||||||
|
const previousBase = state.agentFileContents[name] ?? "";
|
||||||
|
const currentDraft = state.agentFileDrafts[name];
|
||||||
|
const preserveDraft = opts?.preserveDraft ?? true;
|
||||||
state.agentFilesList = mergeFileEntry(state.agentFilesList, res.file);
|
state.agentFilesList = mergeFileEntry(state.agentFilesList, res.file);
|
||||||
state.agentFileContents = { ...state.agentFileContents, [name]: content };
|
state.agentFileContents = { ...state.agentFileContents, [name]: content };
|
||||||
if (!Object.hasOwn(state.agentFileDrafts, name)) {
|
if (
|
||||||
|
!preserveDraft ||
|
||||||
|
!Object.hasOwn(state.agentFileDrafts, name) ||
|
||||||
|
currentDraft === previousBase
|
||||||
|
) {
|
||||||
state.agentFileDrafts = { ...state.agentFileDrafts, [name]: content };
|
state.agentFileDrafts = { ...state.agentFileDrafts, [name]: content };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue