@@ -94,15 +94,15 @@ export function useResourcePanelController() {
9494 isResourceCollapsedRef . current = collapsed
9595 setIsResourceCollapsedState ( collapsed )
9696 } , [ ] )
97- const resourceCollapseOwnedByUserRef = useRef ( false )
97+ const [ resourceCollapseOwnedByUser , setResourceCollapseOwnedByUser ] = useState ( false )
9898 const resourceSelectionOwnedByUserRef = useRef ( false )
9999
100100 function handleResourceEvent ( resourceId : string , options ?: ResourceEventOptions ) {
101101 const activeResourceId = effectiveActiveResourceIdRef . current
102102 const presentation = resolveResourceEventPresentation ( {
103103 activeResourceId,
104104 activationRequested : shouldActivateResourceEvent ( activeResourceId , resourceId , options ) ,
105- panelCollapseOwnedByUser : resourceCollapseOwnedByUserRef . current ,
105+ panelCollapseOwnedByUser : resourceCollapseOwnedByUser ,
106106 panelCollapsed : isResourceCollapsedRef . current ,
107107 resourceId,
108108 selectionOwnedByUser : resourceSelectionOwnedByUserRef . current ,
@@ -156,7 +156,8 @@ export function useResourcePanelController() {
156156 resourceActivityIds,
157157 setResourceActivityIds,
158158 isResourceCollapsedRef,
159- resourceCollapseOwnedByUserRef,
159+ resourceCollapseOwnedByUser,
160+ setResourceCollapseOwnedByUser,
160161 resourceSelectionOwnedByUserRef,
161162 effectiveActiveResourceIdRef,
162163 onResourceEvent : handleResourceEvent ,
@@ -196,7 +197,8 @@ export function useChatResourcePanel(
196197 setSkipResourceTransition,
197198 setResourceActivityIds,
198199 isResourceCollapsedRef,
199- resourceCollapseOwnedByUserRef,
200+ resourceCollapseOwnedByUser,
201+ setResourceCollapseOwnedByUser,
200202 resourceSelectionOwnedByUserRef,
201203 effectiveActiveResourceIdRef,
202204 onResourceEvent : handleResourceEvent ,
@@ -207,10 +209,10 @@ export function useChatResourcePanel(
207209 const resourceAttentionChatIdRef = useRef ( resolvedChatId )
208210
209211 const collapseResource = useCallback ( ( ) => {
210- resourceCollapseOwnedByUserRef . current = true
212+ setResourceCollapseOwnedByUser ( true )
211213 resourceSelectionOwnedByUserRef . current = true
212214 setResourceCollapsed ( true )
213- } , [ setResourceCollapsed ] )
215+ } , [ setResourceCollapsed , setResourceCollapseOwnedByUser ] )
214216
215217 const clearResourceActivity = useCallback ( ( resourceId : string ) => {
216218 setResourceActivityIds ( ( current ) => {
@@ -222,7 +224,7 @@ export function useChatResourcePanel(
222224 } , [ ] )
223225
224226 const expandResource = ( ) => {
225- resourceCollapseOwnedByUserRef . current = false
227+ setResourceCollapseOwnedByUser ( false )
226228 resourceSelectionOwnedByUserRef . current = true
227229 const activeResourceId = effectiveActiveResourceIdRef . current
228230 if ( activeResourceId ) clearResourceActivity ( activeResourceId )
@@ -254,13 +256,13 @@ export function useChatResourcePanel(
254256
255257 const addResourceFromUser = useCallback (
256258 ( resource : MothershipResource ) => {
257- resourceCollapseOwnedByUserRef . current = false
259+ setResourceCollapseOwnedByUser ( false )
258260 resourceSelectionOwnedByUserRef . current = true
259261 addResource ( resource )
260262 selectResourceFromUser ( getChatResourceSelectionId ( resource ) )
261263 setResourceCollapsed ( false )
262264 } ,
263- [ addResource , selectResourceFromUser , setResourceCollapsed ]
265+ [ addResource , selectResourceFromUser , setResourceCollapsed , setResourceCollapseOwnedByUser ]
264266 )
265267
266268 const handleResourceResizePointerDown = useCallback (
@@ -295,25 +297,25 @@ export function useChatResourcePanel(
295297 setResourceCollapsed ( true )
296298 }
297299 if ( ! resolvedChatId || ( previousChatId && previousChatId !== resolvedChatId ) ) {
298- resourceCollapseOwnedByUserRef . current = false
300+ setResourceCollapseOwnedByUser ( false )
299301 resourceSelectionOwnedByUserRef . current = false
300302 setResourceActivityIds ( new Set ( ) )
301303 }
302- } , [ resolvedChatId , setResourceCollapsed ] )
304+ } , [ resolvedChatId , setResourceCollapsed , setResourceCollapseOwnedByUser ] )
303305
304306 useEffect ( ( ) => {
305307 if (
306308 isCompactLayout !== false ||
307309 ! ( resources . length > 0 && isResourceCollapsedRef . current ) ||
308- resourceCollapseOwnedByUserRef . current
310+ resourceCollapseOwnedByUser
309311 ) {
310312 return
311313 }
312314 setResourceCollapsed ( false )
313315 setSkipResourceTransition ( true )
314316 const id = requestAnimationFrame ( ( ) => setSkipResourceTransition ( false ) )
315317 return ( ) => cancelAnimationFrame ( id )
316- } , [ isCompactLayout , resources , setResourceCollapsed ] )
318+ } , [ isCompactLayout , resources , resourceCollapseOwnedByUser , setResourceCollapsed ] )
317319
318320 useEffect ( ( ) => {
319321 if ( resources . length === 0 && ! isResourceCollapsedRef . current ) {
@@ -333,6 +335,7 @@ export function useChatResourcePanel(
333335 ...controller ,
334336 initialScrollBlocked :
335337 resources . length > 0 &&
338+ ! resourceCollapseOwnedByUser &&
336339 ( isCompactLayout === null || ( isCompactLayout === false && isResourceCollapsed ) ) ,
337340 desktopTabResourceOptions,
338341 mothershipRef,
0 commit comments