2020-08-28 16:28:49 +02:00
|
|
|
import React, { useCallback } from 'react';
|
|
|
|
|
import Modal from 'components/Modal';
|
|
|
|
|
import { useNavigation, StackActions, useRoute, RouteProp } from '@react-navigation/native';
|
|
|
|
|
import { ModalStackParams } from 'screens/types';
|
|
|
|
|
import { useTypedSelector } from 'store';
|
|
|
|
|
import { SubHeader } from 'components/Typography';
|
|
|
|
|
import styled from 'styled-components/native';
|
|
|
|
|
import usePlayTrack from 'utility/usePlayTrack';
|
2020-11-02 22:50:00 +01:00
|
|
|
import { t } from '@localisation';
|
2021-02-11 23:43:21 +01:00
|
|
|
import Button from 'components/Button';
|
|
|
|
|
import PlayIcon from 'assets/play.svg';
|
|
|
|
|
import QueueAppendIcon from 'assets/queue-append.svg';
|
|
|
|
|
import Text from 'components/Text';
|
2020-08-28 16:28:49 +02:00
|
|
|
|
|
|
|
|
type Route = RouteProp<ModalStackParams, 'TrackPopupMenu'>;
|
|
|
|
|
|
|
|
|
|
const Container = styled.View`
|
|
|
|
|
padding: 20px;
|
|
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
const Buttons = styled.View`
|
|
|
|
|
margin-top: 20px;
|
2021-02-11 23:43:21 +01:00
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
const ButtonSpacing = styled.View`
|
|
|
|
|
width: 8px;
|
2022-01-01 14:09:52 +01:00
|
|
|
height: 4px;
|
2020-08-28 16:28:49 +02:00
|
|
|
`;
|
|
|
|
|
|
|
|
|
|
function TrackPopupMenu() {
|
|
|
|
|
// Retrieve helpers
|
|
|
|
|
const { params: { trackId } } = useRoute<Route>();
|
|
|
|
|
const navigation = useNavigation();
|
|
|
|
|
const track = useTypedSelector((state) => state.music.tracks.entities[trackId]);
|
|
|
|
|
const playTrack = usePlayTrack();
|
|
|
|
|
|
|
|
|
|
// Set callback to close the modal
|
|
|
|
|
const closeModal = useCallback(() => {
|
|
|
|
|
navigation.dispatch(StackActions.popToTop());
|
|
|
|
|
}, [navigation]);
|
|
|
|
|
|
|
|
|
|
const handlePlayNext = useCallback(() => {
|
|
|
|
|
playTrack(trackId, false, false);
|
|
|
|
|
closeModal();
|
|
|
|
|
}, [playTrack, closeModal, trackId]);
|
|
|
|
|
const handleAddToQueue = useCallback(() => {
|
|
|
|
|
playTrack(trackId, false, true);
|
|
|
|
|
closeModal();
|
|
|
|
|
}, [playTrack, closeModal, trackId]);
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Modal fullSize={false}>
|
|
|
|
|
<Container>
|
|
|
|
|
<SubHeader>{track?.Name}</SubHeader>
|
|
|
|
|
<Text>{track?.Album} - {track?.AlbumArtist}</Text>
|
|
|
|
|
<Buttons>
|
2021-02-11 23:43:21 +01:00
|
|
|
<Button title={t('play-next')} icon={PlayIcon} onPress={handlePlayNext} />
|
|
|
|
|
<ButtonSpacing />
|
|
|
|
|
<Button title={t('add-to-queue')} icon={QueueAppendIcon} onPress={handleAddToQueue} />
|
2020-08-28 16:28:49 +02:00
|
|
|
</Buttons>
|
|
|
|
|
</Container>
|
|
|
|
|
</Modal>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export default TrackPopupMenu;
|