优化&修复

This commit is contained in:
lyswhut 2023-08-19 11:27:49 +08:00
parent 9397708f3b
commit 302115e1e4
5 changed files with 31 additions and 6 deletions

View File

@ -72,7 +72,7 @@ export default memo(({ item, index, showSource, onPress, onLongPress, onShowMenu
</View> </View>
{ {
isShowInterval ? ( isShowInterval ? (
<Text size={12} color={theme['c-300']} numberOfLines={1}>{item.interval}</Text> <Text size={12} color={theme['c-250']} numberOfLines={1}>{item.interval}</Text>
) : null ) : null
} }
</TouchableOpacity> </TouchableOpacity>
@ -84,6 +84,8 @@ export default memo(({ item, index, showSource, onPress, onLongPress, onShowMenu
}, (prevProps, nextProps) => { }, (prevProps, nextProps) => {
return !!(prevProps.item === nextProps.item && return !!(prevProps.item === nextProps.item &&
prevProps.index === nextProps.index && prevProps.index === nextProps.index &&
prevProps.isShowAlbumName === nextProps.isShowAlbumName &&
prevProps.isShowInterval === nextProps.isShowInterval &&
nextProps.selectedList.includes(nextProps.item) == prevProps.selectedList.includes(nextProps.item) nextProps.selectedList.includes(nextProps.item) == prevProps.selectedList.includes(nextProps.item)
) )
}) })

View File

@ -10,6 +10,10 @@ import { createStyle } from '@/utils/tools'
import PagerView, { type PageScrollStateChangedNativeEvent, type PagerViewOnPageSelectedEvent } from 'react-native-pager-view' import PagerView, { type PageScrollStateChangedNativeEvent, type PagerViewOnPageSelectedEvent } from 'react-native-pager-view'
import { setNavActiveId } from '@/core/common' import { setNavActiveId } from '@/core/common'
const hideKeys = [
'list.isShowAlbumName',
'list.isShowInterval',
] as Readonly<Array<keyof LX.AppSetting>>
const SearchPage = () => { const SearchPage = () => {
const [visible, setVisible] = useState(commonState.navActiveId == 'nav_search') const [visible, setVisible] = useState(commonState.navActiveId == 'nav_search')
@ -27,14 +31,19 @@ const SearchPage = () => {
const handleHide = () => { const handleHide = () => {
setVisible(false) setVisible(false)
} }
const handleConfigUpdated = (keys: Array<keyof LX.AppSetting>) => {
if (keys.some(k => hideKeys.includes(k))) handleHide()
}
global.state_event.on('navActiveIdUpdated', handleNavIdUpdate) global.state_event.on('navActiveIdUpdated', handleNavIdUpdate)
global.state_event.on('themeUpdated', handleHide) global.state_event.on('themeUpdated', handleHide)
global.state_event.on('languageChanged', handleHide) global.state_event.on('languageChanged', handleHide)
global.state_event.on('configUpdated', handleConfigUpdated)
return () => { return () => {
global.state_event.off('navActiveIdUpdated', handleNavIdUpdate) global.state_event.off('navActiveIdUpdated', handleNavIdUpdate)
global.state_event.off('themeUpdated', handleHide) global.state_event.off('themeUpdated', handleHide)
global.state_event.off('languageChanged', handleHide) global.state_event.off('languageChanged', handleHide)
global.state_event.off('configUpdated', handleConfigUpdated)
} }
}, []) }, [])
@ -86,14 +95,19 @@ const LeaderboardPage = () => {
const handleHide = () => { const handleHide = () => {
setVisible(false) setVisible(false)
} }
const handleConfigUpdated = (keys: Array<keyof LX.AppSetting>) => {
if (keys.some(k => hideKeys.includes(k))) handleHide()
}
global.state_event.on('navActiveIdUpdated', handleNavIdUpdate) global.state_event.on('navActiveIdUpdated', handleNavIdUpdate)
global.state_event.on('themeUpdated', handleHide) global.state_event.on('themeUpdated', handleHide)
global.state_event.on('languageChanged', handleHide) global.state_event.on('languageChanged', handleHide)
global.state_event.on('configUpdated', handleConfigUpdated)
return () => { return () => {
global.state_event.off('navActiveIdUpdated', handleNavIdUpdate) global.state_event.off('navActiveIdUpdated', handleNavIdUpdate)
global.state_event.off('themeUpdated', handleHide) global.state_event.off('themeUpdated', handleHide)
global.state_event.off('languageChanged', handleHide) global.state_event.off('languageChanged', handleHide)
global.state_event.on('configUpdated', handleConfigUpdated)
} }
}, []) }, [])
@ -115,14 +129,19 @@ const MylistPage = () => {
const handleHide = () => { const handleHide = () => {
setVisible(false) setVisible(false)
} }
const handleConfigUpdated = (keys: Array<keyof LX.AppSetting>) => {
if (keys.some(k => hideKeys.includes(k))) handleHide()
}
global.state_event.on('navActiveIdUpdated', handleNavIdUpdate) global.state_event.on('navActiveIdUpdated', handleNavIdUpdate)
global.state_event.on('themeUpdated', handleHide) global.state_event.on('themeUpdated', handleHide)
global.state_event.on('languageChanged', handleHide) global.state_event.on('languageChanged', handleHide)
global.state_event.on('configUpdated', handleConfigUpdated)
return () => { return () => {
global.state_event.off('navActiveIdUpdated', handleNavIdUpdate) global.state_event.off('navActiveIdUpdated', handleNavIdUpdate)
global.state_event.off('themeUpdated', handleHide) global.state_event.off('themeUpdated', handleHide)
global.state_event.off('languageChanged', handleHide) global.state_event.off('languageChanged', handleHide)
global.state_event.on('configUpdated', handleConfigUpdated)
} }
}, []) }, [])

View File

@ -64,7 +64,7 @@ export default memo(({ item, index, activeIndex, onPress, onShowMenu, onLongPres
</View> </View>
{ {
isShowInterval ? ( isShowInterval ? (
<Text size={12} color={active ? theme['c-primary-alpha-200'] : theme['c-300']} numberOfLines={1}>{item.interval}</Text> <Text size={12} color={active ? theme['c-primary-alpha-400'] : theme['c-250']} numberOfLines={1}>{item.interval}</Text>
) : null ) : null
} }
</TouchableOpacity> </TouchableOpacity>
@ -78,9 +78,9 @@ export default memo(({ item, index, activeIndex, onPress, onShowMenu, onLongPres
}, (prevProps, nextProps) => { }, (prevProps, nextProps) => {
return !!(prevProps.item === nextProps.item && return !!(prevProps.item === nextProps.item &&
prevProps.index === nextProps.index && prevProps.index === nextProps.index &&
prevProps.isShowAlbumName === nextProps.isShowAlbumName &&
prevProps.isShowInterval === nextProps.isShowInterval &&
prevProps.activeIndex != nextProps.index && prevProps.activeIndex != nextProps.index &&
prevProps.isShowAlbumName != nextProps.isShowAlbumName &&
prevProps.isShowInterval != nextProps.isShowInterval &&
nextProps.activeIndex != nextProps.index && nextProps.activeIndex != nextProps.index &&
nextProps.selectedList.includes(nextProps.item) == prevProps.selectedList.includes(nextProps.item) nextProps.selectedList.includes(nextProps.item) == prevProps.selectedList.includes(nextProps.item)
) )

View File

@ -12,7 +12,9 @@ export default memo(() => {
const t = useI18n() const t = useI18n()
const isShowAlbumName = useSettingValue('list.isShowAlbumName') const isShowAlbumName = useSettingValue('list.isShowAlbumName')
const setShowAlbumName = (isShowAlbumName: boolean) => { const setShowAlbumName = (isShowAlbumName: boolean) => {
updateSetting({ 'list.isShowAlbumName': isShowAlbumName }) requestAnimationFrame(() => {
updateSetting({ 'list.isShowAlbumName': isShowAlbumName })
})
} }
return ( return (

View File

@ -12,7 +12,9 @@ export default memo(() => {
const t = useI18n() const t = useI18n()
const isShowInterval = useSettingValue('list.isShowInterval') const isShowInterval = useSettingValue('list.isShowInterval')
const setShowInterval = (isShowInterval: boolean) => { const setShowInterval = (isShowInterval: boolean) => {
updateSetting({ 'list.isShowInterval': isShowInterval }) requestAnimationFrame(() => {
updateSetting({ 'list.isShowInterval': isShowInterval })
})
} }
return ( return (