fix proxiwash change not auto refreshing list
This commit is contained in:
parent
44d35090ac
commit
fe96d9f8a1
3 changed files with 15 additions and 9 deletions
|
@ -41,7 +41,7 @@ export type RequestProps = {
|
||||||
|
|
||||||
type Props<T> = RequestScreenProps<T>;
|
type Props<T> = RequestScreenProps<T>;
|
||||||
|
|
||||||
const MIN_REFRESH_TIME = 5 * 1000;
|
const MIN_REFRESH_TIME = 3 * 1000;
|
||||||
|
|
||||||
export default function RequestScreen<T>(props: Props<T>) {
|
export default function RequestScreen<T>(props: Props<T>) {
|
||||||
const navigation = useNavigation<StackNavigationProp<any>>();
|
const navigation = useNavigation<StackNavigationProp<any>>();
|
||||||
|
@ -94,8 +94,7 @@ export default function RequestScreen<T>(props: Props<T>) {
|
||||||
clearInterval(refreshInterval.current);
|
clearInterval(refreshInterval.current);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
}, [props.cache, props.refreshOnFocus, props.autoRefreshTime, refreshData])
|
||||||
}, [props.cache, props.refreshOnFocus])
|
|
||||||
);
|
);
|
||||||
|
|
||||||
const isErrorCritical = (e: API_REQUEST_CODES | undefined) => {
|
const isErrorCritical = (e: API_REQUEST_CODES | undefined) => {
|
||||||
|
|
|
@ -44,12 +44,7 @@ type Props<ItemT, RawData> = Omit<
|
||||||
> &
|
> &
|
||||||
Omit<
|
Omit<
|
||||||
RequestScreenProps<RawData>,
|
RequestScreenProps<RawData>,
|
||||||
| 'render'
|
'render' | 'showLoading' | 'showError' | 'onMajorError'
|
||||||
| 'showLoading'
|
|
||||||
| 'showError'
|
|
||||||
| 'refresh'
|
|
||||||
| 'onFinish'
|
|
||||||
| 'onMajorError'
|
|
||||||
> &
|
> &
|
||||||
Omit<
|
Omit<
|
||||||
SectionListProps<ItemT>,
|
SectionListProps<ItemT>,
|
||||||
|
@ -171,6 +166,8 @@ function WebSectionList<ItemT, RawData>(props: Props<ItemT, RawData>) {
|
||||||
refreshOnFocus={props.refreshOnFocus}
|
refreshOnFocus={props.refreshOnFocus}
|
||||||
cache={props.cache}
|
cache={props.cache}
|
||||||
onCacheUpdate={props.onCacheUpdate}
|
onCacheUpdate={props.onCacheUpdate}
|
||||||
|
refresh={props.refresh}
|
||||||
|
onFinish={props.onFinish}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,7 @@ import {
|
||||||
ProxiwashPreferenceKeys,
|
ProxiwashPreferenceKeys,
|
||||||
} from '../../utils/asyncStorage';
|
} from '../../utils/asyncStorage';
|
||||||
import { useProxiwashPreferences } from '../../context/preferencesContext';
|
import { useProxiwashPreferences } from '../../context/preferencesContext';
|
||||||
|
import { useSubsequentEffect } from '../../utils/customHooks';
|
||||||
|
|
||||||
const REFRESH_TIME = 1000 * 10; // Refresh every 10 seconds
|
const REFRESH_TIME = 1000 * 10; // Refresh every 10 seconds
|
||||||
const LIST_ITEM_HEIGHT = 64;
|
const LIST_ITEM_HEIGHT = 64;
|
||||||
|
@ -106,6 +107,7 @@ function ProxiwashScreen() {
|
||||||
ProxiwashPreferenceKeys.proxiwashNotifications,
|
ProxiwashPreferenceKeys.proxiwashNotifications,
|
||||||
preferences
|
preferences
|
||||||
);
|
);
|
||||||
|
const [refresh, setRefresh] = useState(false);
|
||||||
|
|
||||||
const getMachinesWatched = () => {
|
const getMachinesWatched = () => {
|
||||||
const data = getPreferenceObject(
|
const data = getPreferenceObject(
|
||||||
|
@ -130,6 +132,11 @@ function ProxiwashScreen() {
|
||||||
const machinesWatched: Array<ProxiwashMachineType> = getMachinesWatched();
|
const machinesWatched: Array<ProxiwashMachineType> = getMachinesWatched();
|
||||||
const selectedWash: 'washinsa' | 'tripodeB' = getSelectedWash();
|
const selectedWash: 'washinsa' | 'tripodeB' = getSelectedWash();
|
||||||
|
|
||||||
|
useSubsequentEffect(() => {
|
||||||
|
// Refresh the list when the selected wash changes
|
||||||
|
setRefresh(true);
|
||||||
|
}, [selectedWash]);
|
||||||
|
|
||||||
const modalStateStrings: { [key in MachineStates]: string } = {
|
const modalStateStrings: { [key in MachineStates]: string } = {
|
||||||
[MachineStates.AVAILABLE]: i18n.t('screens.proxiwash.modal.ready'),
|
[MachineStates.AVAILABLE]: i18n.t('screens.proxiwash.modal.ready'),
|
||||||
[MachineStates.RUNNING]: i18n.t('screens.proxiwash.modal.running'),
|
[MachineStates.RUNNING]: i18n.t('screens.proxiwash.modal.running'),
|
||||||
|
@ -446,6 +453,7 @@ function ProxiwashScreen() {
|
||||||
default:
|
default:
|
||||||
data = ProxiwashConstants.washinsa;
|
data = ProxiwashConstants.washinsa;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<View style={GENERAL_STYLES.flex}>
|
<View style={GENERAL_STYLES.flex}>
|
||||||
<View style={styles.container}>
|
<View style={styles.container}>
|
||||||
|
@ -458,6 +466,8 @@ function ProxiwashScreen() {
|
||||||
refreshOnFocus={true}
|
refreshOnFocus={true}
|
||||||
extraData={machinesWatched.length}
|
extraData={machinesWatched.length}
|
||||||
renderListHeaderComponent={renderListHeaderComponent}
|
renderListHeaderComponent={renderListHeaderComponent}
|
||||||
|
refresh={refresh}
|
||||||
|
onFinish={() => setRefresh(false)}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
<MascotPopup
|
<MascotPopup
|
||||||
|
|
Loading…
Reference in a new issue