@@ -11,7 +11,7 @@ import {
1111} from '@devhub/core'
1212import _ from 'lodash'
1313import React , { useCallback , useMemo , useRef } from 'react'
14- import { View } from 'react-native'
14+ import { Dimensions , View } from 'react-native'
1515
1616import {
1717 getCardPropsForItem ,
@@ -32,6 +32,7 @@ import {
3232 cardsWatchingOwnerFilterBarTotalHeight ,
3333} from '../components/cards/CardsWatchingOwnerFilterBar'
3434import { EmptyCards } from '../components/cards/EmptyCards'
35+ import { columnHeaderHeight } from '../components/columns/ColumnHeader'
3536import { ColumnLoadingIndicator } from '../components/columns/ColumnLoadingIndicator'
3637import { ButtonLink } from '../components/common/ButtonLink'
3738import { QuickFeedbackRow } from '../components/common/QuickFeedbackRow'
@@ -275,12 +276,28 @@ export function useCardsProps<ItemT extends EnhancedItem>({
275276 refresh,
276277 topSpacing : ( ! data . length && header && header . size ) || 0 ,
277278 }
278- const sticky = ! ! ( ! fetchNextPage && cardsFooterProps . clearedAt )
279- // && // TODO
280- // itemLayouts[itemLayouts.length - 1] &&
281- // itemLayouts[itemLayouts.length - 1]!.offset +
282- // itemLayouts[itemLayouts.length - 1]!.length <
283- // windowHeight - ((header && header.size) || 0) - columnHeaderHeight
279+
280+ let _tempTotalOffset = 0
281+ const sticky = ! ! (
282+ ! fetchNextPage &&
283+ cardsFooterProps . clearedAt &&
284+ itemNodeIdOrIds &&
285+ ! itemNodeIdOrIds . some ( ( nodeIdOrId , index ) => {
286+ const itemSize = getItemSize ( nodeIdOrId , index )
287+ if ( ! itemSize ) return
288+
289+ _tempTotalOffset += itemSize
290+
291+ if (
292+ _tempTotalOffset >
293+ Dimensions . get ( 'window' ) . height -
294+ ( ( header && header . size ) || 0 ) -
295+ columnHeaderHeight
296+ ) {
297+ return true
298+ }
299+ } )
300+ )
284301
285302 const footer = useMemo < OneListProps < DataItemT > [ 'footer' ] > ( ( ) => {
286303 if ( isOverMaxColumnLimit || isOverPlanColumnLimit ) return undefined
0 commit comments