Skip to content

Commit

Permalink
fixed some bugs in player screen
Browse files Browse the repository at this point in the history
  • Loading branch information
YounesKHENIFER committed Jan 28, 2022
1 parent 6bb9d22 commit a4091c8
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 15 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
- there is more than 200 Reciter
- you can listen to each Reciter
- i hope you like it and give us a ⭐ :)
- link for donwload (android apk) : https://bit.ly/Quran-Player
- link for donwload (android apk) : https://bit.ly/Quraan-Player

![enter image description here](https://scontent.fczl2-1.fna.fbcdn.net/v/t1.15752-9/s2048x2048/271715896_619635292479911_6067694429494317834_n.png?_nc_cat=102&ccb=1-5&_nc_sid=ae9488&_nc_eui2=AeFLMYhYVgfQXHErGsVfIjAwLKHTtEaUTf0sodO0RpRN_ZQereIIB7tWkK0YjpqRb5N51DrI8jTb3sCbpqpkRZ3p&_nc_ohc=3tJ2C588JqcAX944WI8&tn=X1Syd4-SG-IuDTBx&_nc_ht=scontent.fczl2-1.fna&oh=03_AVJFZu3eMVz1EEICbpBdrLFIlcKKsJ3meL4-6V0X3tzY1g&oe=6219595C)
8 changes: 7 additions & 1 deletion src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,13 @@ export default function App() {
component={HomeScreen}
/>
<Stack.Screen name="Reciter" component={ReciterScreen} />
<Stack.Screen name="Player" component={PlayerScreen} />
<Stack.Screen
name="Player"
options={{
title: '',
}}
component={PlayerScreen}
/>
<Stack.Screen
options={{
title: 'قائمة المفضلة',
Expand Down
4 changes: 2 additions & 2 deletions src/components/Item.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import {StyleSheet, Text, View, TouchableNativeFeedback} from 'react-native';
import React from 'react';
import Ionicons from 'react-native-vector-icons/Ionicons';

const Item = ({onPress, title, subTitle}) => {
function Item({onPress, title, subTitle}) {
return (
<View style={styles.reciterOuterBox}>
<TouchableNativeFeedback
Expand All @@ -21,7 +21,7 @@ const Item = ({onPress, title, subTitle}) => {
</TouchableNativeFeedback>
</View>
);
};
}

export default Item;

Expand Down
2 changes: 1 addition & 1 deletion src/screens/InfosScreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ const InfosScreen = () => {
<TouchableOpacity
style={styles.github}
onPress={async () =>
Linking.openURL('https://bit.ly/QuraanPlayer')
Linking.openURL('https://bit.ly/QuraanPlayerRepo')
}>
<Ionicons name="logo-github" color="#fff" size={30} />
<Text style={styles.txtG}>GITHUB</Text>
Expand Down
32 changes: 22 additions & 10 deletions src/screens/PlayerScreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
View,
} from 'react-native';
import Slider from '@react-native-community/slider';
import React, {useCallback, useLayoutEffect, useState} from 'react';
import React, {useCallback, useLayoutEffect, useRef, useState} from 'react';
import Ionicons from 'react-native-vector-icons/Ionicons';
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
import TrackPlayer, {
Expand Down Expand Up @@ -64,11 +64,12 @@ async function togglePlay(playBackState) {
}
}
export default function PlayerScreen({navigation, route}) {
const firstrender = useRef(true);
const progress = useProgress();
const playBackState = usePlaybackState();
let {reciterName, suraId, suras, rewaya, suraName} = route.params;
let {reciterName, suraId, suras, suraName} = route.params;
const [currentSuraTrack, setCurrentSuraTrack] = useState(null);
const [repeatMode, setRepeatMode] = useState('repeat');
const [repeatMode, setRepeatMode] = useState('off');
const [isFavorite, setIsFavorite] = useState(false);
const [suraTitle, setSuraTitle] = useState(suraName);

Expand Down Expand Up @@ -99,7 +100,6 @@ export default function PlayerScreen({navigation, route}) {

useLayoutEffect(() => {
const firstIndex = suras.findIndex(sura => sura.id === suraId);

setupPlayer(suras, firstIndex);
}, []);

Expand All @@ -108,22 +108,23 @@ export default function PlayerScreen({navigation, route}) {
title: currentSuraTrack?.reciterName ?? reciterName,
});
if (currentSuraTrack) {
if (firstrender.current) {
firstrender.current = false;
} else {
setSuraTitle(currentSuraTrack.title);
}
getFavorites();
}
}, [currentSuraTrack]);

// next && back handler
const skip = useCallback(async to => {
let currentTrack = await TrackPlayer.getCurrentTrack();

if (to === 'prev' && currentTrack > 0) {
await TrackPlayer.skipToPrevious();
} else if (to === 'next' && currentTrack < suras.length - 1) {
await TrackPlayer.skipToNext();
}
currentTrack = await TrackPlayer.getCurrentTrack();
// changing sura name in ui
setSuraTitle(suras[currentTrack].title);
}, []);

// change icon based on repeat mode
Expand Down Expand Up @@ -188,11 +189,14 @@ export default function PlayerScreen({navigation, route}) {

// track player listner to get sura name
useTrackPlayerEvents([Event.PlaybackTrackChanged], async event => {
if (event.type === Event.PlaybackTrackChanged && event.nextTrack !== null) {
if (
event.type === Event.PlaybackTrackChanged &&
event.nextTrack !== null &&
event.nextTrack !== undefined
) {
const track = await TrackPlayer.getTrack(event.nextTrack);
const {title, id, url, rewaya, reciterName} = track;

// setSuraTitle(title);
setCurrentSuraTrack({
title,
id,
Expand All @@ -203,6 +207,14 @@ export default function PlayerScreen({navigation, route}) {
}
});

// queue endded event
useTrackPlayerEvents([Event.PlaybackQueueEnded], async () => {
if (repeatMode === 'off') {
await TrackPlayer.destroy();
navigation.pop();
}
});

// listerner to skip to next track
useTrackPlayerEvents([Event.RemoteNext], async event => {
if (event.type === Event.RemoteNext) {
Expand Down
1 change: 1 addition & 0 deletions src/screens/ReciterScreen.js
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ const ReciterScreen = ({navigation, route}) => {
<Search search={search} />
{suras.length ? (
<FlatList
// initialNumToRender={suras.length}
contentContainerStyle={{paddingHorizontal: 15}}
keyExtractor={item => `${item.id}`}
data={suras}
Expand Down

0 comments on commit a4091c8

Please sign in to comment.