diff --git a/src/components/OnlineList/index.js b/src/components/OnlineList/index.js index d0389be..7854523 100644 --- a/src/components/OnlineList/index.js +++ b/src/components/OnlineList/index.js @@ -1,5 +1,5 @@ import React, { useState, useCallback, memo, useMemo, useRef, useEffect } from 'react' -import { StyleSheet, FlatList, View } from 'react-native' +import { StyleSheet, FlatList, View, RefreshControl } from 'react-native' import { useGetter, useDispatch } from '@/store' import Menu from '@/components/common/Menu' import MusicAddModal from '@/components/MusicAddModal' @@ -45,6 +45,7 @@ export default memo(({ const selectModeRef = useRef('single') const prevSelectIndexRef = useRef(-1) const addMultiMusicToList = useDispatch('list', 'listAddMultiple') + const theme = useGetter('common', 'theme') useEffect(() => { defaultListRef.current = defaultList @@ -230,6 +231,14 @@ export default memo(({ handleLongPress={handleLongPress} /> ), [handleLongPress, handlePress, selectedList, showMenu]) + const refreshControl = useMemo(() => ( + + ), [isListRefreshing, onRefresh, theme]) + return ( {isLoading ? : isEnd ? : null}} /> { exitMultipleModeBtn } diff --git a/src/components/common/Input.js b/src/components/common/Input.js index a3d527a..9a44c98 100644 --- a/src/components/common/Input.js +++ b/src/components/common/Input.js @@ -57,7 +57,14 @@ const Input = ({ onChangeText, onClearText, clearBtn, ...props }, ref) => { return ( - + {/* */} {clearBtn diff --git a/src/screens/Home/SongList/List.js b/src/screens/Home/SongList/List.js index f12ead9..b4af852 100644 --- a/src/screens/Home/SongList/List.js +++ b/src/screens/Home/SongList/List.js @@ -1,5 +1,5 @@ import React, { useRef, useState, useEffect, useMemo, useCallback } from 'react' -import { Text, StyleSheet, FlatList, View } from 'react-native' +import { Text, StyleSheet, FlatList, View, RefreshControl } from 'react-native' import ListItem from './ListItem' import LoadingMask from '@/components/common/LoadingMask' @@ -81,6 +81,14 @@ export default ({ width }) => { ), [handleListPress, itemWidth]) + const refreshControl = useMemo(() => ( + + ), [isListRefreshing, handleListRefresh, theme]) + const ListComponent = useMemo(() => { renderItem={renderItem} keyExtractor={item => String(item.id)} key={rowNum} - onRefresh={handleListRefresh} - refreshing={isListRefreshing} onEndReached={handleListLoadMore} + refreshControl={refreshControl} // onEndReachedThreshold={0.5} ListFooterComponent={ listInfo.isEnd @@ -99,7 +106,7 @@ export default ({ width }) => { : {t('loading')} } removeClippedSubviews={true} - />, [rowNum, list, renderItem, handleListRefresh, isListRefreshing, handleListLoadMore, listInfo, theme, t]) + />, [rowNum, list, renderItem, handleListLoadMore, refreshControl, listInfo.isEnd, theme, t]) const visibleLoadingMask = useMemo(() => page == 1 && listInfo.isLoading, [listInfo.isLoading, page])