Merge pull request #1728 from yanCode/fix/steps

fix:  bug #1727
This commit is contained in:
Yifei Zhang 2023-05-24 20:04:30 +08:00 committed by GitHub
commit 8874c687d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 61 additions and 68 deletions

View File

@ -152,71 +152,64 @@ export function MessageExporter() {
index={currentStepIndex}
onStepChange={setCurrentStepIndex}
/>
<div className={styles["message-exporter-body"]}>
{currentStep.value === "select" && (
<>
<List>
<ListItem
title={Locale.Export.Format.Title}
subTitle={Locale.Export.Format.SubTitle}
>
<Select
value={exportConfig.format}
onChange={(e) =>
updateExportConfig(
(config) =>
(config.format = e.currentTarget.value as ExportFormat),
)
}
>
{formats.map((f) => (
<option key={f} value={f}>
{f}
</option>
))}
</Select>
</ListItem>
<ListItem
title={Locale.Export.IncludeContext.Title}
subTitle={Locale.Export.IncludeContext.SubTitle}
>
<input
type="checkbox"
checked={exportConfig.includeContext}
onChange={(e) => {
updateExportConfig(
(config) =>
(config.includeContext = e.currentTarget.checked),
);
}}
></input>
</ListItem>
</List>
<MessageSelector
selection={selection}
updateSelection={updateSelection}
defaultSelectAll
/>
</>
)}
{currentStep.value === "preview" && (
<>
{exportConfig.format === "text" ? (
<MarkdownPreviewer
messages={selectedMessages}
topic={session.topic}
/>
) : (
<ImagePreviewer
messages={selectedMessages}
topic={session.topic}
/>
)}
</>
)}
<div
className={styles["message-exporter-body"]}
style={currentStep.value !== "select" ? { display: "none" } : {}}
>
<List>
<ListItem
title={Locale.Export.Format.Title}
subTitle={Locale.Export.Format.SubTitle}
>
<Select
value={exportConfig.format}
onChange={(e) =>
updateExportConfig(
(config) =>
(config.format = e.currentTarget.value as ExportFormat),
)
}
>
{formats.map((f) => (
<option key={f} value={f}>
{f}
</option>
))}
</Select>
</ListItem>
<ListItem
title={Locale.Export.IncludeContext.Title}
subTitle={Locale.Export.IncludeContext.SubTitle}
>
<input
type="checkbox"
checked={exportConfig.includeContext}
onChange={(e) => {
updateExportConfig(
(config) => (config.includeContext = e.currentTarget.checked),
);
}}
></input>
</ListItem>
</List>
<MessageSelector
selection={selection}
updateSelection={updateSelection}
defaultSelectAll
/>
</div>
{currentStep.value === "preview" && (
<div className={styles["message-exporter-body"]}>
{exportConfig.format === "text" ? (
<MarkdownPreviewer
messages={selectedMessages}
topic={session.topic}
/>
) : (
<ImagePreviewer messages={selectedMessages} topic={session.topic} />
)}
</div>
)}
</>
);
}

View File

@ -75,7 +75,7 @@ export function MessageSelector(props: {
const isValid = (m: ChatMessage) => m.content && !m.isError && !m.streaming;
const messages = session.messages.filter(
(m, i) =>
m.id && // messsage must has id
m.id && // message must have id
isValid(m) &&
(i >= session.messages.length - 1 || isValid(session.messages[i + 1])),
);
@ -88,13 +88,13 @@ export function MessageSelector(props: {
return searchInput.length === 0 || searchIds.has(id);
};
const doSearch = (text: string) => {
const searchResuts = new Set<number>();
const searchResults = new Set<number>();
if (text.length > 0) {
messages.forEach((m) =>
m.content.includes(text) ? searchResuts.add(m.id!) : null,
m.content.includes(text) ? searchResults.add(m.id!) : null,
);
}
setSearchIds(searchResuts);
setSearchIds(searchResults);
};
// for range selection