Search: loading state
This commit is contained in:
@@ -306,6 +306,7 @@ export default function App() {
|
|||||||
}, [selectedChat, selectedChatSummary, selectedItem, selectedSearch, selectedSearchSummary]);
|
}, [selectedChat, selectedChatSummary, selectedItem, selectedSearch, selectedSearchSummary]);
|
||||||
|
|
||||||
const isSearchMode = selectedItem?.kind === "search";
|
const isSearchMode = selectedItem?.kind === "search";
|
||||||
|
const isSearchRunning = isSending && selectedItem?.kind === "search";
|
||||||
|
|
||||||
const handleCreateChat = async () => {
|
const handleCreateChat = async () => {
|
||||||
setError(null);
|
setError(null);
|
||||||
@@ -444,13 +445,27 @@ export default function App() {
|
|||||||
throw new Error("Unable to initialize search");
|
throw new Error("Unable to initialize search");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const nowIso = new Date().toISOString();
|
||||||
setSelectedSearch((current) => {
|
setSelectedSearch((current) => {
|
||||||
if (!current || current.id !== searchId) return current;
|
if (!current || current.id !== searchId) {
|
||||||
|
return {
|
||||||
|
id: searchId,
|
||||||
|
title: query.slice(0, 80),
|
||||||
|
query,
|
||||||
|
createdAt: nowIso,
|
||||||
|
updatedAt: nowIso,
|
||||||
|
requestId: null,
|
||||||
|
latencyMs: null,
|
||||||
|
error: null,
|
||||||
|
results: [],
|
||||||
|
};
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
...current,
|
...current,
|
||||||
title: query.slice(0, 80),
|
title: query.slice(0, 80),
|
||||||
query,
|
query,
|
||||||
error: null,
|
error: null,
|
||||||
|
latencyMs: null,
|
||||||
results: [],
|
results: [],
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
@@ -725,8 +740,8 @@ export default function App() {
|
|||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{isLoadingSelection && !selectedSearch?.results.length ? (
|
{(isLoadingSelection || isSearchRunning) && !selectedSearch?.results.length ? (
|
||||||
<p className="text-sm text-muted-foreground">Loading search...</p>
|
<p className="text-sm text-muted-foreground">{isSearchRunning ? "Searching Exa..." : "Loading search..."}</p>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{!isLoadingSelection && !selectedSearch?.query ? (
|
{!isLoadingSelection && !selectedSearch?.query ? (
|
||||||
@@ -737,7 +752,7 @@ export default function App() {
|
|||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
{!isLoadingSelection && !!selectedSearch?.query && selectedSearch.results.length === 0 ? (
|
{!isLoadingSelection && !isSearchRunning && !!selectedSearch?.query && selectedSearch.results.length === 0 ? (
|
||||||
<p className="text-sm text-muted-foreground">No results found.</p>
|
<p className="text-sm text-muted-foreground">No results found.</p>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user