diff --git a/packages/patterns/chatbot-list-view.tsx b/packages/patterns/chatbot-list-view.tsx index cf4d24aff..a2f59e6d9 100644 --- a/packages/patterns/chatbot-list-view.tsx +++ b/packages/patterns/chatbot-list-view.tsx @@ -107,10 +107,7 @@ const createChatRecipe = handler< messages: [], expandChat: false, content: "", - allCharms: [ - ...allCharms.get(), - ...charmsList.get().map((i) => i.charm), - ] as unknown as OpaqueRef>, // TODO(bf): types... + allCharms, }); // store the charm ref in a cell (pass isInitialized to prevent recursive calls) return storeCharm({ charm, selectedCharm, charmsList, isInitialized }); @@ -158,12 +155,25 @@ const handleCharmLinkClicked = handler( }, ); +const combineLists = lift( + ( + { allCharms, charmsList }: { allCharms: any[]; charmsList: CharmEntry[] }, + ) => { + return [...charmsList.map((c) => c.charm), ...allCharms]; + }, +); + // create the named cell inside the recipe body, so we do it just once export default recipe( "Launcher", ({ selectedCharm, charmsList, allCharms }) => { logCharmsList({ charmsList }); + const combined = combineLists({ + allCharms: allCharms as unknown as any[], + charmsList, + }); + return { [NAME]: "Launcher", [UI]: ( @@ -173,7 +183,7 @@ export default recipe( onClick={createChatRecipe({ selectedCharm, charmsList, - allCharms: allCharms as unknown as any, + allCharms: combined as unknown as any, })} > Create New Chat @@ -209,36 +219,44 @@ export default recipe( diff --git a/packages/patterns/default-app.tsx b/packages/patterns/default-app.tsx index 49d460c3e..1ea12aa0f 100644 --- a/packages/patterns/default-app.tsx +++ b/packages/patterns/default-app.tsx @@ -7,6 +7,7 @@ import { handler, NAME, navigateTo, + Opaque, OpaqueRef, recipe, str, @@ -22,6 +23,7 @@ import { type MentionableCharm, } from "./chatbot-note.tsx"; import { default as Note } from "./note.tsx"; +import ChatList from "./chatbot-list-view.tsx"; export type Charm = { [NAME]?: string; @@ -65,6 +67,17 @@ const removeCharm = handler< } }); +const spawnChatList = handler< + Record, + { allCharms: Cell } +>((_, state) => { + return navigateTo(ChatList({ + selectedCharm: { charm: undefined }, + charmsList: [], + allCharms: state.allCharms, + })); +}); + const spawnChatbot = handler< Record, Record @@ -136,6 +149,15 @@ export default recipe( {/* Quick Launch Toolbar */}

Quicklaunch:

+ , + })} + > + 📂 Chat List +