diff --git a/src/screens/modals/Player/components/Queue.tsx b/src/screens/modals/Player/components/Queue.tsx index 7efe3d5..52b03a9 100644 --- a/src/screens/modals/Player/components/Queue.tsx +++ b/src/screens/modals/Player/components/Queue.tsx @@ -1,10 +1,10 @@ import React, { useCallback, useEffect, useState } from 'react'; import useQueue from 'utility/useQueue'; -import { View, StyleSheet } from 'react-native'; +import { View, StyleSheet, ListRenderItemInfo } from 'react-native'; import styled, { css } from 'styled-components/native'; import useCurrentTrack from 'utility/useCurrentTrack'; import TouchableHandler from 'components/TouchableHandler'; -import TrackPlayer, { RepeatMode } from 'react-native-track-player'; +import TrackPlayer, { RepeatMode, Track } from 'react-native-track-player'; import { t } from '@localisation'; import useDefaultStyles from 'components/Colors'; import { Text } from 'components/Typography'; @@ -17,15 +17,16 @@ import ticksToDuration from 'utility/ticksToDuration'; const ICON_SIZE = 16; -const Container = styled.View` - margin-top: 56px; +const Container = styled.FlatList` + padding: 40px; `; const Header = styled.View` display: flex; flex-direction: row; align-items: center; - margin-bottom: 8px; + padding-bottom: 8px; + padding-top: 52px; `; const IconButton = styled.TouchableOpacity` @@ -56,7 +57,8 @@ const QueueItem = styled.View<{ active?: boolean, alreadyPlayed?: boolean, isDar `; const ClearQueue = styled.View` - margin: 20px 0; + padding: 20px 0; + padding-bottom: 80px; `; const styles = StyleSheet.create({ @@ -65,7 +67,11 @@ const styles = StyleSheet.create({ } }); -export default function Queue() { +interface Props { + header?: JSX.Element; +} + +export default function Queue({ header }: Props) { const defaultStyles = useDefaultStyles(); const queue = useQueue(); const [isRepeating, setIsRepeating] = useState(false); @@ -96,41 +102,47 @@ export default function Queue() { }, []); return ( - -
- {t('queue')} - - - - -
- {queue.map((track, i) => ( - + + {header} +
+ {t('queue')} + + + + +
+ + } + renderItem={({ item: track, index}: ListRenderItemInfo) => ( + {track.title} {track.artist}{track.album && ' — ' + track.album} @@ -138,20 +150,23 @@ export default function Queue() { {ticksToDuration(track.duration || 0)} - + - ))} - -