MCPcopy Index your code
hub / github.com/CodebuffAI/codebuff / setAllBlocksCollapsedState

Function setAllBlocksCollapsedState

cli/src/utils/collapse-helpers.ts:214–256  ·  view source on GitHub ↗
(
  messages: ChatMessage[],
  collapsed: boolean,
)

Source from the content-addressed store, hash-verified

212 * @returns Updated messages array with all collapsible blocks set to the specified state
213 */
214export function setAllBlocksCollapsedState(
215 messages: ChatMessage[],
216 collapsed: boolean,
217): ChatMessage[] {
218 return messages.map((message) => {
219 let updatedMessage = message
220 let messageChanged = false
221
222 // Handle agent variant messages (message-level isCollapsed)
223 if (message.variant === 'agent') {
224 // Treat undefined as collapsed (true) to match hasAnyExpandedBlocks semantics
225 const currentCollapsed = message.metadata?.isCollapsed ?? true
226 if (currentCollapsed !== collapsed) {
227 messageChanged = true
228 updatedMessage = {
229 ...updatedMessage,
230 metadata: {
231 ...updatedMessage.metadata,
232 isCollapsed: collapsed,
233 userOpened: !collapsed ? true : updatedMessage.metadata?.userOpened,
234 },
235 }
236 }
237 }
238
239 // Handle blocks within messages (applies to all message variants)
240 if (message.blocks) {
241 const { blocks: updatedBlocks, changed } = updateBlocksRecursively(
242 message.blocks,
243 collapsed,
244 )
245 if (changed) {
246 messageChanged = true
247 updatedMessage = {
248 ...updatedMessage,
249 blocks: updatedBlocks,
250 }
251 }
252 }
253
254 return messageChanged ? updatedMessage : message
255 })
256}

Callers 2

useChatMessagesFunction · 0.90

Calls 1

updateBlocksRecursivelyFunction · 0.70

Tested by

no test coverage detected