import { useFocusEffect } from '@react-navigation/native'; import { StackNavigationProp } from '@react-navigation/stack'; import * as TaskManager from 'expo-task-manager'; import React from 'react'; import { ScrollView, StyleSheet, Text, View } from 'react-native'; import Button from '../components/Button'; import HeadingText from '../components/HeadingText'; import MonoText from '../components/MonoText'; export default function TaskManagerScreen(props: { navigation: StackNavigationProp<{ BackgroundLocation: undefined; Geofencing: undefined; BackgroundFetch: undefined; }>; }) { const [tasks, setTasks] = React.useState([]); const updateRegisteredTasks = async () => { const tasks = await TaskManager.getRegisteredTasksAsync(); setTasks(tasks); }; const onFocus = React.useCallback(() => { let isActive = true; TaskManager.getRegisteredTasksAsync().then((tasks) => { if (isActive) setTasks(tasks); }); return () => (isActive = false); }, [setTasks]); useFocusEffect(onFocus); const unregisterTask = async (taskName: string) => { await TaskManager.unregisterTaskAsync(taskName); await updateRegisteredTasks(); }; const unregisterAllTasks = async () => { await TaskManager.unregisterAllTasksAsync(); await updateRegisteredTasks(); }; const renderButtons = () => { const buttons = tasks.map(({ taskName }) => { return (