@@ -126,6 +126,13 @@ export default function Players() {
126126 const [ stashInput , setStashInput ] = useState ( '' )
127127
128128 const abortSyncRef = useRef ( false )
129+ const syncTimeoutRef = useRef < ReturnType < typeof setTimeout > | null > ( null )
130+
131+ // Abort the background page-sync recursion and clear its pending timer on unmount
132+ useEffect ( ( ) => ( ) => {
133+ abortSyncRef . current = true
134+ if ( syncTimeoutRef . current ) clearTimeout ( syncTimeoutRef . current )
135+ } , [ ] )
129136
130137 const getPlayerKey = useCallback ( ( p : any ) => {
131138 if ( ! p ) return t ( 'common.unknown' )
@@ -226,7 +233,8 @@ export default function Players() {
226233 if ( pageToFetch === 1 ) {
227234 setPlayers ( data )
228235 if ( searchQuery === '' && pagesCount > 1 ) {
229- setTimeout ( ( ) => syncRemainingPages ( 2 , pagesCount , '' ) , 1000 )
236+ if ( syncTimeoutRef . current ) clearTimeout ( syncTimeoutRef . current )
237+ syncTimeoutRef . current = setTimeout ( ( ) => syncRemainingPages ( 2 , pagesCount , '' ) , 1000 )
230238 }
231239 if ( searchQuery === '' ) {
232240 setLastPlayersFetch ( Date . now ( ) )
@@ -882,7 +890,7 @@ export default function Players() {
882890 else if ( mName === 'black_money' ) color = "text-red-500" ;
883891
884892 const isCurrency = [ 'cash' , 'bank' , 'black_money' ] . includes ( mName ) ;
885- const labelKey = `option_${ mName } ` ;
893+ const labelKey = `option_${ mName } ` ;
886894 const translated = t ( labelKey ) ;
887895 const label = translated !== labelKey ? translated : mName ;
888896
@@ -1121,7 +1129,7 @@ export default function Players() {
11211129 availableTypes = {
11221130 Array . isArray ( selectedPlayer . money )
11231131 ? selectedPlayer . money . map ( ( m : any ) => {
1124- const labelRaw = t ( `option_${ m . name } ` ) !== `option_${ m . name } ` ? t ( `option_${ m . name } ` ) : m . name ;
1132+ const labelRaw = t ( `option_${ m . name } ` ) !== `option_${ m . name } ` ? t ( `option_${ m . name } ` ) : m . name ;
11251133 return {
11261134 label : labelRaw . charAt ( 0 ) . toUpperCase ( ) + labelRaw . slice ( 1 ) ,
11271135 value : m . name
@@ -1205,7 +1213,7 @@ export default function Players() {
12051213 onChange = { ( e ) => setStashInput ( ( e . target as HTMLInputElement ) . value ) }
12061214 placeholder = "ex: police_stash_1"
12071215 className = "bg-background border-border h-10"
1208- onKeyDown = { ( e ) => { if ( e . key === 'Enter' && stashInput . trim ( ) ) { sendAction ( { event : 'mri_Qadmin:client:openStash' , type : 'client' } , { Stash : { value : stashInput . trim ( ) } } ) ; setShowOpenStashModal ( false ) ; setStashInput ( '' ) } } }
1216+ onKeyDown = { ( e ) => { if ( e . key === 'Enter' && stashInput . trim ( ) ) { sendAction ( { event : 'mri_Qadmin:client:openStash' , type : 'client' , perms : 'qadmin.action.open_stash' } , { Stash : { value : stashInput . trim ( ) } } ) ; setShowOpenStashModal ( false ) ; setStashInput ( '' ) } } }
12091217 />
12101218 </ div >
12111219 </ MriActionModal >
0 commit comments