1- import { Dispatch , FC , SetStateAction , useState } from 'react'
1+ import { Dispatch , FC , SetStateAction , useEffect , useState } from 'react'
22
33import { InfinitePageHandler , Sort , Table , TableColumn , tableGetDefaultSort } from '../../../../../lib'
44import { GameBadge , MemberBadgeAward } from '../../../game-lib'
5+ import { useGetGameBadgeAssigneesPage } from '../../../game-lib/hooks/use-get-game-badge-assignees-page.hook'
56
67import { awardedMembersColumns } from './awarded-members-table/awarded-members-table.config'
78import styles from './AwardedMembersTab.module.scss'
89
910export interface AwardedMembersTabProps {
1011 badge : GameBadge
12+ forceRefresh ?: boolean
1113}
1214
1315const AwardedMembersTab : FC < AwardedMembersTabProps > = ( props : AwardedMembersTabProps ) => {
@@ -19,20 +21,31 @@ const AwardedMembersTab: FC<AwardedMembersTabProps> = (props: AwardedMembersTabP
1921 ]
2022 = useState < ReadonlyArray < TableColumn < MemberBadgeAward > > > ( [ ...awardedMembersColumns ] )
2123
24+ const pageHandler : InfinitePageHandler < MemberBadgeAward > = useGetGameBadgeAssigneesPage ( props . badge , sort )
25+
26+ useEffect ( ( ) => {
27+ if ( props . forceRefresh && pageHandler ) {
28+ pageHandler . mutate ( )
29+ }
30+ } , [
31+ props . forceRefresh ,
32+ pageHandler ,
33+ ] )
34+
2235 function onSortClick ( newSort : Sort ) : void {
2336 setSort ( { ...newSort } )
2437 }
2538
2639 return (
2740 < div className = { styles . tabWrap } >
2841 {
29- props . badge . member_badges ?. length ? (
42+ pageHandler . data ?. length ? (
3043 < Table
3144 columns = { columns }
32- data = { props . badge . member_badges }
33- // onLoadMoreClick={pageHandler.getAndSetNext}
34- // moreToLoad={pageHandler.hasMore}
35- // onToggleSort={onSortClick}
45+ data = { pageHandler . data }
46+ onLoadMoreClick = { pageHandler . getAndSetNext }
47+ moreToLoad = { pageHandler . hasMore }
48+ onToggleSort = { onSortClick }
3649 />
3750 ) : undefined
3851 }
0 commit comments