Delete testPage and correct code smells 🐛
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
a036aa368d
commit
cbadaf9639
@ -1,494 +0,0 @@
|
||||
|
||||
import * as React from 'react';
|
||||
import { TouchableOpacity, ScrollView, View, Text, StyleSheet, Image, SafeAreaView, FlatList, Animated } from 'react-native';
|
||||
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
||||
import { LinearGradient } from 'expo-linear-gradient';
|
||||
import { useEffect, useState } from "react";
|
||||
import Ionicons from "@expo/vector-icons/Ionicons";
|
||||
import { SharedElement } from "react-navigation-shared-element";
|
||||
import { NavigationProp, RouteProp, useNavigation } from "@react-navigation/native";
|
||||
import { Dimensions, useWindowDimensions, Button } from "react-native";
|
||||
import { interpolate, SensorType, useAnimatedSensor, useAnimatedStyle, useDerivedValue, useSharedValue, Value, withSpring, withTiming } from "react-native-reanimated";
|
||||
import { BlurView } from 'expo-blur';
|
||||
import qs from "qs";
|
||||
import axios from "axios";
|
||||
import { Buffer } from 'buffer';
|
||||
import { Audio } from 'expo-av';
|
||||
import { State, TapGestureHandler } from "react-native-gesture-handler";
|
||||
import { RequestHandler } from "../services/spotify/spotifyRequestHandler/utils";
|
||||
import { FetchRequest } from "expo-auth-session/build/Fetch";
|
||||
import SpotifyService from "../services/spotify/spotify.service";
|
||||
import Music from '../Model/Music';
|
||||
import { HorizontalFlatList } from '../components/HorizontalFlatList';
|
||||
import { LittleCard } from '../components/littleCard';
|
||||
const halfPi = Math.PI / 2;
|
||||
// InfoScreen.sharedElement = (navigation : ReturnType<typeof useNavigation>)=>{
|
||||
// const music = navigation.getParam('music');
|
||||
// return [music.id];
|
||||
// }
|
||||
// @ts-ignore
|
||||
export default function InfoScreen({ route, navigation }) {
|
||||
|
||||
const item: Music = route.params.music;
|
||||
|
||||
const insets = useSafeAreaInsets();
|
||||
|
||||
const [similarMusics, setSimilarMusics] = useState<Music[]>([]);
|
||||
|
||||
// parralax
|
||||
|
||||
// parralax
|
||||
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
background1: {
|
||||
height: '100%',
|
||||
width: '100%',
|
||||
paddingTop: insets.top,
|
||||
},
|
||||
body: {
|
||||
backgroundColor: "#0E0E0E"
|
||||
},
|
||||
backgroundSection: {
|
||||
height: "100%",
|
||||
width: "100%",
|
||||
position: "absolute"
|
||||
},
|
||||
back_drop: {
|
||||
height: "45%",
|
||||
width: '100%',
|
||||
position: "absolute",
|
||||
},
|
||||
gradientFade: {
|
||||
height: "30%",
|
||||
top: "25%"
|
||||
},
|
||||
backButton: {
|
||||
position: "absolute",
|
||||
top: 10,
|
||||
left: 5
|
||||
},
|
||||
list: {
|
||||
height: "100%"
|
||||
},
|
||||
section1: {
|
||||
paddingHorizontal: 35
|
||||
},
|
||||
title: {
|
||||
color: "white",
|
||||
fontSize: 43,
|
||||
fontWeight: "bold",
|
||||
paddingBottom: 10,
|
||||
paddingTop: "45%"
|
||||
},
|
||||
characteristics: {
|
||||
flexDirection: "row",
|
||||
width: "100%",
|
||||
justifyContent: "flex-start"
|
||||
},
|
||||
stars: {
|
||||
flexDirection: "row",
|
||||
width: "100%",
|
||||
justifyContent: "flex-start",
|
||||
alignItems: "center",
|
||||
paddingBottom: 30
|
||||
},
|
||||
starsLabel: {
|
||||
color: "#FFC42D",
|
||||
fontWeight: "bold",
|
||||
paddingLeft: 10,
|
||||
fontSize: 16
|
||||
},
|
||||
player: {
|
||||
borderRadius: 10,
|
||||
overflow: "hidden"
|
||||
},
|
||||
resume: {
|
||||
color: "#B3B3B3",
|
||||
paddingTop: 30,
|
||||
fontSize: 17
|
||||
},
|
||||
creditSection: {
|
||||
paddingTop: 30
|
||||
},
|
||||
creditTitle: {
|
||||
color: "#2998FD",
|
||||
paddingBottom: 20,
|
||||
paddingLeft: 35,
|
||||
fontSize: 17,
|
||||
fontWeight: "600"
|
||||
},
|
||||
similarSection: {
|
||||
paddingTop: 30
|
||||
},
|
||||
similarTitle: {
|
||||
color: "#2998FD",
|
||||
paddingLeft: 35,
|
||||
fontSize: 17,
|
||||
fontWeight: "600",
|
||||
paddingBottom: 20
|
||||
},
|
||||
similarContainer: {
|
||||
width: 90,
|
||||
marginHorizontal: 7
|
||||
},
|
||||
similarPoster: {
|
||||
height: 130,
|
||||
width: 90,
|
||||
borderRadius: 8
|
||||
},
|
||||
similarTitleFilm: {
|
||||
color: "#DADADA",
|
||||
paddingTop: 5,
|
||||
fontWeight: "300"
|
||||
},
|
||||
reviewSection: {
|
||||
paddingTop: 30
|
||||
},
|
||||
reviewTitle: {
|
||||
color: "#2998FD",
|
||||
paddingLeft: 35,
|
||||
fontSize: 17,
|
||||
fontWeight: "600",
|
||||
paddingBottom: 10
|
||||
},
|
||||
reviewContainer: {
|
||||
marginHorizontal: 7,
|
||||
width: 300,
|
||||
padding: 20,
|
||||
backgroundColor: "#09090F",
|
||||
marginVertical: 10,
|
||||
borderRadius: 14,
|
||||
borderWidth: 0.8,
|
||||
borderColor: "rgba(223,223,223,0.14)"
|
||||
},
|
||||
reviewInfo: {
|
||||
flexDirection: "row",
|
||||
paddingBottom: 20
|
||||
},
|
||||
imageProfile: {
|
||||
height: 50,
|
||||
width: 50,
|
||||
borderRadius: 100
|
||||
},
|
||||
infoContainer: {
|
||||
paddingLeft: 10,
|
||||
flexDirection: "row",
|
||||
justifyContent: "space-between",
|
||||
width: "80%",
|
||||
alignItems: "center"
|
||||
},
|
||||
pseudo: {
|
||||
color: "white",
|
||||
paddingTop: 5,
|
||||
fontWeight: "700",
|
||||
fontSize: 16
|
||||
},
|
||||
date: {
|
||||
color: "grey",
|
||||
paddingTop: 5,
|
||||
fontWeight: "500",
|
||||
fontSize: 14
|
||||
},
|
||||
message: {
|
||||
color: "#B3B3B3",
|
||||
paddingTop: 5,
|
||||
fontWeight: "400"
|
||||
},
|
||||
creditContainer: {
|
||||
width: 90,
|
||||
marginHorizontal: 7,
|
||||
alignItems: "center"
|
||||
},
|
||||
bubble: {
|
||||
justifyContent: "center"
|
||||
},
|
||||
photo: {
|
||||
height: 90,
|
||||
width: 90,
|
||||
borderRadius: 200,
|
||||
borderWidth: 3,
|
||||
borderColor: "rgba(255,255,255,0.8)"
|
||||
},
|
||||
popularityDot: {
|
||||
backgroundColor: "white",
|
||||
borderRadius: 20,
|
||||
padding: 2,
|
||||
paddingHorizontal: 5,
|
||||
justifyContent: "center",
|
||||
alignItems: "center",
|
||||
position: "absolute",
|
||||
bottom: 0,
|
||||
right: 0,
|
||||
flexDirection: "row"
|
||||
},
|
||||
popularityLabel: {
|
||||
color: "black",
|
||||
fontWeight: "500",
|
||||
paddingRight: 4
|
||||
},
|
||||
creditName: {
|
||||
color: "#DADADA",
|
||||
paddingTop: 5,
|
||||
fontWeight: "300"
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
const getSimilarMusics = async () => {
|
||||
|
||||
|
||||
const tmpMusic: Music[] = [
|
||||
// new Music("La pharmacie", "Jul",require("../assets/images/jul.png")),
|
||||
// new Music("Deux frères", "PNL", require("../assets/images/pnl.png")),
|
||||
new Music("6npyDB4mn8MO1A1h666FTk", "Bambina", "PNL", "https://upload.wikimedia.org/wikipedia/en/a/a0/PNL_-_Dans_la_l%C3%A9gende.png", "https://p.scdn.co/mp3-preview/d38052978a79adced2187cd8b6497bb10bedc452?cid=774b29d4f13844c495f206cafdad9c86"),
|
||||
// new Music("0qwxx9ouUc5kGmMWHglDpq","Stratos", "Kekra", "https://images.genius.com/ddc9cadedd1d4cef0860aaa85af9cd46.705x705x1.png",""),
|
||||
new Music("03o8WSqd2K5rkGvn9IsLy2", "Autobahn", "Sch", "https://images.genius.com/83b6c98680d38bde1571f6b4093244b5.1000x1000x1.jpg", "https://p.scdn.co/mp3-preview/c55f95de81b8c3d0df04148da1b03bd38db56e8f?cid=774b29d4f13844c495f206cafdad9c86"),
|
||||
new Music("6DPrYPPGYK218iVIZDix3i", "Freeze Raël", "Freeze Corleone", "https://intrld.com/wp-content/uploads/2020/08/freeze-corleone-la-menace-fanto%CC%82me.png", "https://p.scdn.co/mp3-preview/a9f9cb19ac1fe6db0d06b67decf8edbb25895a33?cid=774b29d4f13844c495f206cafdad9c86"),
|
||||
// new Music("Blanka", "PNL", require("../assets/images/pnl.png")),
|
||||
new Music("5GFHFEASZeJF0gyWuDDjGE", "Kratos", "PNL", "https://upload.wikimedia.org/wikipedia/en/a/a0/PNL_-_Dans_la_l%C3%A9gende.png", "https://p.scdn.co/mp3-preview/9e854f4905c1228482e390169eb76d8520076b8f?cid=774b29d4f13844c495f206cafdad9c86"),
|
||||
];
|
||||
setSimilarMusics(tmpMusic);
|
||||
}
|
||||
|
||||
|
||||
useEffect(() => {
|
||||
getSimilarMusics();
|
||||
}, []);
|
||||
|
||||
////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
const { width, height } = useWindowDimensions();
|
||||
|
||||
const [currentspot, setCurrentspot] = useState(item);
|
||||
const [sound, setSound] = useState(null);
|
||||
|
||||
const [isPlaying, setIsPlaying] = useState(false);
|
||||
const loader = useSharedValue(0);
|
||||
useEffect(() => {
|
||||
loader.value = isPlaying ? 1 : 0
|
||||
}, [isPlaying, loader]);
|
||||
|
||||
const transition = useDerivedValue(() => {
|
||||
return withTiming(loader.value, { duration: 1000 })
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
// const styleAniamatedButton = useAnimatedStyle(() => {
|
||||
// const verticalAxis =interpolate(
|
||||
// transition.value,
|
||||
// [0,1],
|
||||
// [circumference, 0]
|
||||
// )
|
||||
|
||||
// return {
|
||||
// top : withSpring( verticalAxis),
|
||||
// left : withSpring(horizontalAxis),
|
||||
// };
|
||||
|
||||
// })
|
||||
|
||||
|
||||
const trackPreviewUrl = 'https://p.scdn.co/mp3-preview/08ef3b9d6dbd6bab233f5e9ca564091902767f71?cid=774b29d4f13844c495f206cafdad9c86';
|
||||
const playTrackPreview = async () => {
|
||||
console.log("===============================================================================================================");
|
||||
|
||||
console.log('get in Sound');
|
||||
|
||||
const { sound } = await Audio.Sound.createAsync({ uri: item.trackPreviewUrl });
|
||||
//@ts-ignore
|
||||
setSound(sound);
|
||||
console.log('Playing Sound');
|
||||
await sound.playAsync();
|
||||
setIsPlaying(true);
|
||||
|
||||
|
||||
// const soundObject = new Audio.Sound();
|
||||
// try {
|
||||
// await soundObject.loadAsync({ uri: trackPreviewUrl });
|
||||
// await soundObject.playAsync();
|
||||
// setIsPlaying(true);
|
||||
// } catch (error) {
|
||||
// console.log('Error loading sound:', error);
|
||||
// }
|
||||
};
|
||||
|
||||
const handlePlaySound = async () => {
|
||||
if (sound === null) {
|
||||
const { sound: newSound } = await Audio.Sound.createAsync(
|
||||
{ uri: item.trackPreviewUrl },
|
||||
{ shouldPlay: true }
|
||||
);
|
||||
setSound(newSound);
|
||||
|
||||
} else {
|
||||
//@ts-ignore
|
||||
await sound.playAsync();
|
||||
}
|
||||
};
|
||||
|
||||
const handleStopSound = async () => {
|
||||
if (sound !== null) {
|
||||
//@ts-ignore
|
||||
await sound.stopAsync();
|
||||
}
|
||||
else {
|
||||
setIsPlaying(true);
|
||||
}
|
||||
};
|
||||
useEffect(() => {
|
||||
return sound ? () => {
|
||||
console.log('Unloading Sound');
|
||||
//@ts-ignore
|
||||
sound.unloadAsync();
|
||||
}
|
||||
: undefined;
|
||||
}, [sound]);
|
||||
|
||||
|
||||
const sensor = useAnimatedSensor(SensorType.ROTATION);
|
||||
const styleAniamatedImage = useAnimatedStyle(() => {
|
||||
const { yaw, pitch, roll } = sensor.sensor.value;
|
||||
const verticalAxis = interpolate(
|
||||
pitch,
|
||||
[-halfPi * 2, halfPi * 2],
|
||||
[-45, 45]
|
||||
)
|
||||
const horizontalAxis = interpolate(
|
||||
roll,
|
||||
[-halfPi * 2, halfPi * 2],
|
||||
[-45, 45]
|
||||
)
|
||||
return {
|
||||
top: withSpring(verticalAxis),
|
||||
left: withSpring(horizontalAxis),
|
||||
};
|
||||
|
||||
})
|
||||
|
||||
const animationState = new Value(State.UNDETERMINED);
|
||||
const playMusic = async (id: string) => {
|
||||
try {
|
||||
const service = new SpotifyService("BQC4k_OPQXENwmm2S8qLm9whlJT9IjeKsuG6kJNyVCSd88b0L-zOY84VqwvQxFsc9G3GvtPyUMezwxi8BBBloitzbhWX5tmTKTaLsJosGTnb7xivwNhRv0-LnNYbZWB24ZGAg0xPmDLn0yYmYlo7M_SMK5cCZdYQcZNXAuMYaI18GVXKoICBaKfCn4GcqBiRRgXyCVQnNGU4");
|
||||
console.log("=====================================================)))))))))))))))" + id + "================================")
|
||||
await service.playMusic(id);
|
||||
} catch (error) { }
|
||||
}
|
||||
const tmpMusic2: Music[] = [
|
||||
// new Music("La pharmacie", "Jul",require("../assets/images/jul.png")),
|
||||
// new Music("Deux frères", "PNL", require("../assets/images/pnl.png")),
|
||||
new Music("6npyDB4mn8MO1A1h666FTk", "Bambina", "PNL", "https://upload.wikimedia.org/wikipedia/en/a/a0/PNL_-_Dans_la_l%C3%A9gende.png", "https://p.scdn.co/mp3-preview/d38052978a79adced2187cd8b6497bb10bedc452?cid=774b29d4f13844c495f206cafdad9c86"),
|
||||
// new Music("0qwxx9ouUc5kGmMWHglDpq","Stratos", "Kekra", "https://images.genius.com/ddc9cadedd1d4cef0860aaa85af9cd46.705x705x1.png",""),
|
||||
new Music("03o8WSqd2K5rkGvn9IsLy2", "Autobahn", "Sch", "https://images.genius.com/83b6c98680d38bde1571f6b4093244b5.1000x1000x1.jpg", "https://p.scdn.co/mp3-preview/c55f95de81b8c3d0df04148da1b03bd38db56e8f?cid=774b29d4f13844c495f206cafdad9c86"),
|
||||
new Music("6DPrYPPGYK218iVIZDix3i", "Freeze Raël", "Freeze Corleone", "https://intrld.com/wp-content/uploads/2020/08/freeze-corleone-la-menace-fanto%CC%82me.png", "https://p.scdn.co/mp3-preview/a9f9cb19ac1fe6db0d06b67decf8edbb25895a33?cid=774b29d4f13844c495f206cafdad9c86"),
|
||||
// new Music("Blanka", "PNL", require("../assets/images/pnl.png")),
|
||||
new Music("5GFHFEASZeJF0gyWuDDjGE", "Kratos", "PNL", "https://upload.wikimedia.org/wikipedia/en/a/a0/PNL_-_Dans_la_l%C3%A9gende.png", "https://p.scdn.co/mp3-preview/9e854f4905c1228482e390169eb76d8520076b8f?cid=774b29d4f13844c495f206cafdad9c86"),
|
||||
];
|
||||
return (
|
||||
<View style={styles.body}>
|
||||
<View style={styles.backgroundSection}>
|
||||
<Image
|
||||
style={styles.back_drop}
|
||||
source={{
|
||||
uri: item.image,
|
||||
}}
|
||||
></Image>
|
||||
|
||||
<LinearGradient
|
||||
// Background Linear Gradient
|
||||
colors={['rgba(0,0,0,0.8)', 'transparent']}
|
||||
/>
|
||||
<LinearGradient style={styles.gradientFade}
|
||||
// Button Linear Gradient
|
||||
colors={['rgba(14,14,14,0)', 'rgba(14,14,14,0.7)', 'rgba(14,14,14,1)', 'rgba(14,14,14,1)']}>
|
||||
</LinearGradient>
|
||||
</View>
|
||||
<View style={styles.background1}>
|
||||
<TouchableOpacity onPress={() => navigation.goBack()} style={{ zIndex: 100 }}>
|
||||
<Ionicons name="ios-arrow-back" size={30} color="white" style={styles.backButton} />
|
||||
</TouchableOpacity>
|
||||
|
||||
<ScrollView style={styles.list} showsVerticalScrollIndicator={false} scrollEventThrottle={4}
|
||||
>
|
||||
<View style={styles.section1}>
|
||||
<View style={{ flex: 1, justifyContent: 'flex-start', alignItems: 'center' }}>
|
||||
{/* <SharedElement id={spot.name} style={{ flex: 1 }}> */}
|
||||
<View>
|
||||
<SharedElement id={item.id}>
|
||||
|
||||
<Animated.Image
|
||||
source={{
|
||||
uri: currentspot.image,
|
||||
}}
|
||||
style={[
|
||||
{
|
||||
|
||||
width: 370,
|
||||
height: 370,
|
||||
borderRadius: 24,
|
||||
resizeMode: 'stretch',
|
||||
}, styleAniamatedImage
|
||||
|
||||
]}
|
||||
/>
|
||||
</SharedElement>
|
||||
<Button title="Play Track On Device"
|
||||
onPress={() => {
|
||||
playMusic(currentspot.id)
|
||||
// promptAsync();
|
||||
}}
|
||||
/>
|
||||
</View>
|
||||
{/* Button */}
|
||||
|
||||
|
||||
|
||||
{/* <TapGestureHandler {...gestureHandler}> */}
|
||||
<Animated.View>
|
||||
<TouchableOpacity style={{
|
||||
backgroundColor: '#1DB954',
|
||||
paddingVertical: 12,
|
||||
paddingHorizontal: 24,
|
||||
borderRadius: 24,
|
||||
}} onPressIn={handlePlaySound}
|
||||
onPressOut={handleStopSound}
|
||||
onLongPress={handlePlaySound}
|
||||
delayLongPress={1000}>
|
||||
|
||||
<Text style={{
|
||||
color: '#fff',
|
||||
fontSize: 16,
|
||||
fontWeight: 'bold',
|
||||
}}>
|
||||
{isPlaying ? 'Playing...' : 'Play'}
|
||||
</Text>
|
||||
</TouchableOpacity>
|
||||
</Animated.View>
|
||||
|
||||
|
||||
</View>
|
||||
|
||||
</View>
|
||||
|
||||
{similarMusics.length !== 0 && (
|
||||
// <HorizontalFlatList renderCell={littleCard} title={'Simillar Music'} data={similarMusics}>
|
||||
|
||||
// </HorizontalFlatList>
|
||||
|
||||
<HorizontalFlatList title={'Simillar Music'} data={tmpMusic2}>
|
||||
{(props) => (
|
||||
<LittleCard image={props.image} title={props.title} />
|
||||
)}
|
||||
</HorizontalFlatList>
|
||||
)}
|
||||
|
||||
|
||||
|
||||
</ScrollView>
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
}
|
Loading…
Reference in new issue