diff --git a/extensions/void/src/sidebar/Sidebar.tsx b/extensions/void/src/sidebar/Sidebar.tsx index 684dbe71..c24510be 100644 --- a/extensions/void/src/sidebar/Sidebar.tsx +++ b/extensions/void/src/sidebar/Sidebar.tsx @@ -39,13 +39,13 @@ const Sidebar = () => { return <> -
+
-
+
setTab('chat')} />
-
+
diff --git a/extensions/void/src/sidebar/SidebarThreadSelector.tsx b/extensions/void/src/sidebar/SidebarThreadSelector.tsx index 59faa41f..323d66e5 100644 --- a/extensions/void/src/sidebar/SidebarThreadSelector.tsx +++ b/extensions/void/src/sidebar/SidebarThreadSelector.tsx @@ -1,10 +1,26 @@ import React from "react"; import { ThreadsProvider, useThreads } from "./contextForThreads"; + +const truncate = (s: string) => { + let len = s.length + const TRUNC_AFTER = 16 + if (len >= TRUNC_AFTER) + s = s.substring(0, TRUNC_AFTER) + '...' + return s +} + + export const SidebarThreadSelector = ({ onClose }: { onClose: () => void }) => { const { allThreads, currentThread, switchToThread } = useThreads() + + // sorted by most recent to least recent + const sortedThreadIds = Object.keys(allThreads ?? {}).sort((threadId1, threadId2) => allThreads![threadId1].createdAt > allThreads![threadId2].createdAt ? -1 : 1) + return ( -
+
+ + {/* X button at top right */}
- {/* iterate through all past threads */} - {Object.keys(allThreads ?? {}).map((threadId) => { - const pastThread = (allThreads ?? {})[threadId]; - return ( - - ) - })} + + {/* a list of all the past threads */} +
+ {sortedThreadIds.map((threadId) => { + if (!allThreads) + return <>Error: Threads not found. + const pastThread = allThreads[threadId] + + let btnStringArr = [] + + let msg1 = truncate(allThreads[threadId].messages[0]?.displayContent ?? '(empty)') + btnStringArr.push(msg1) + + let msg2 = truncate(allThreads[threadId].messages[1]?.displayContent ?? '') + if (msg2) + btnStringArr.push(msg2) + + btnStringArr.push(allThreads[threadId].messages.length) + + const btnString = btnStringArr.join(' / ') + + return ( + + ) + })} +
+
) } \ No newline at end of file