import useDefaultStyles from 'components/Colors'; import React, { useCallback, useMemo } from 'react'; import { Pressable, Text, View } from 'react-native'; import { FlatList } from 'react-native-gesture-handler'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useTypedSelector } from 'store'; import formatBytes from 'utility/formatBytes'; import TrashIcon from 'assets/trash.svg'; import { THEME_COLOR } from 'CONSTANTS'; import { useDispatch } from 'react-redux'; import { EntityId } from '@reduxjs/toolkit'; import { removeDownloadedTrack } from 'store/downloads/actions'; import Button from 'components/Button'; import { t } from 'i18n-js'; function Downloads() { const defaultStyles = useDefaultStyles(); const dispatch = useDispatch(); const { entities, ids } = useTypedSelector((state) => state.downloads); const tracks = useTypedSelector((state) => state.music.tracks.entities); // Calculate the total download size const totalDownloadSize = useMemo(() => ( ids?.reduce((sum, id) => sum + (entities[id]?.size || 0), 0) ), [ids, entities]); const handleDelete = useCallback((id: EntityId) => { dispatch(removeDownloadedTrack(id)); }, [dispatch]); const handleDeleteAllTracks = useCallback(() => { ids.forEach((id) => dispatch(removeDownloadedTrack(id))); }, [dispatch, ids]); if (!ids.length) { return ( {t('no-downloads')} ); } return ( {t('total-download-size')}: {formatBytes(totalDownloadSize)} } ListFooterComponent={