fixed new query data getting spliced, fixed state change logic

This commit is contained in:
Nouman Tahir 2023-09-27 20:56:44 +05:00
parent 06c029141a
commit fb4de19400
3 changed files with 9 additions and 7 deletions

View File

@ -1,5 +1,4 @@
import React, { useEffect } from 'react'; import React, { useEffect } from 'react';
import { Alert } from 'react-native'
import { useDispatch, useSelector } from 'react-redux'; import { useDispatch, useSelector } from 'react-redux';
// Actions // Actions
@ -18,7 +17,6 @@ const SideMenuContainer = ({ navigation }) => {
const drawerStatus = useDrawerStatus(); const drawerStatus = useDrawerStatus();
const isLoggedIn = useSelector((state) => state.application.isLoggedIn); const isLoggedIn = useSelector((state) => state.application.isLoggedIn);
const currentAccount = useSelector((state) => state.account.currentAccount); const currentAccount = useSelector((state) => state.account.currentAccount);
const isVisibleAccountsBottomSheet = useSelector( const isVisibleAccountsBottomSheet = useSelector(

View File

@ -222,6 +222,7 @@ export const useWavesQuery = (host: string) => {
const _data = unionBy(...wavesQueries.map((query) => query.data), 'url'); const _data = unionBy(...wavesQueries.map((query) => query.data), 'url');
const _filteredData = useMemo(() => const _filteredData = useMemo(() =>
@ -236,6 +237,7 @@ export const useWavesQuery = (host: string) => {
const _prevLatestWave = _filteredData[0] const _prevLatestWave = _filteredData[0]
await _fetchPermlinks('', true); await _fetchPermlinks('', true);
const queryResponse = await wavesQueries[0].refetch(); const queryResponse = await wavesQueries[0].refetch();
const _newData:any[] = queryResponse.data || []; const _newData:any[] = queryResponse.data || [];
@ -247,12 +249,13 @@ export const useWavesQuery = (host: string) => {
let _newWaves:any[] = [] let _newWaves:any[] = []
if (_lastIndex && _lastIndex !== 0) { if (_lastIndex && _lastIndex !== 0) {
if (_lastIndex < 0) { if (_lastIndex < 0) {
_newWaves = _newData?.splice(0, 5) || []; _newWaves = _newData?.slice(0, 5) || [];
} else { } else {
_newWaves = _newData?.splice(0, _lastIndex) || []; _newWaves = _newData?.slice(0, _lastIndex) || [];
} }
} }
return _newWaves return _newWaves
} }

View File

@ -8,6 +8,7 @@ import WavesHeader from '../children/wavesHeader';
import { PostTypes } from '../../../constants/postTypes'; import { PostTypes } from '../../../constants/postTypes';
import ScrollTopPopup from '../../../components/tabbedPosts/view/scrollTopPopup'; import ScrollTopPopup from '../../../components/tabbedPosts/view/scrollTopPopup';
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import reactotron from 'reactotron-react-native';
const SCROLL_POPUP_THRESHOLD = 5000; const SCROLL_POPUP_THRESHOLD = 5000;
@ -39,14 +40,13 @@ const WavesScreen = () => {
//actions //actions
const _handleAppStateChange = async (nextAppState) => { const _handleAppStateChange = async (nextAppState) => {
if ( if (
appState.current.match(/inactive|background/) && appState.current.match(/inactive|background/) &&
nextAppState === 'active' && nextAppState === 'active'
wavesQuery.data.length > 0
) { ) {
const latestWaves = await wavesQuery.latestWavesFetch() const latestWaves = await wavesQuery.latestWavesFetch()
if (latestWaves.length > 0) { if (latestWaves.length > 0) {
Alert.alert("latest waves: " + latestWaves.length);
setPopupAvatars(latestWaves.map((item) => item.avatar)) setPopupAvatars(latestWaves.map((item) => item.avatar))
setEnableScrollTop(true) setEnableScrollTop(true)
} }
@ -68,6 +68,7 @@ const WavesScreen = () => {
if (postsListRef.current) { if (postsListRef.current) {
postsListRef.current.scrollToOffset({ offset: 0 }); postsListRef.current.scrollToOffset({ offset: 0 });
setEnableScrollTop(false); setEnableScrollTop(false);
setPopupAvatars([])
scrollPopupDebouce.cancel(); scrollPopupDebouce.cancel();
blockPopupRef.current = true; blockPopupRef.current = true;
setTimeout(() => { setTimeout(() => {