commit new "Coup de Coeur" and "Nouveau" card displayed on the Swipeable card link with our new API 🎉🎉

Tests
Lucas Delanier 2 years ago
parent 3892598991
commit 16fd168c8b

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

@ -19,7 +19,7 @@ export function HeaderMovie(props: headerMovieProps) {
borderRadius: 100 / 2, borderRadius: 100 / 2,
marginTop: 4, marginTop: 4,
backgroundColor: "lightgray", backgroundColor: "lightgray",
marginHorizontal: 8 marginHorizontal: 8,
}, },
}); });

@ -0,0 +1,27 @@
import {Image, View} from "react-native";
import * as React from "react";
export function SuggestedCard() {
return (
<View>
<Image style={{height: 28, width: 152, marginVertical: 5}}
source={require('../assets/images/suggested_card.png')}
/>
</View>
);
}
export function NewCard() {
return (
<View>
<Image style={{height: 28, width: 99, marginVertical: 5}}
source={require('../assets/images/new_card.png')}
/>
</View>
);
}

@ -13,6 +13,8 @@ class Movie {
public backdrop_path: string public backdrop_path: string
public full_date;
constructor(id: number, original_title: string, poster_path: string, runtime: number, vote_average: number, release_date: string, genres: string[], overview: string, backdrop_path: string) { constructor(id: number, original_title: string, poster_path: string, runtime: number, vote_average: number, release_date: string, genres: string[], overview: string, backdrop_path: string) {
this.id = id; this.id = id;
@ -21,6 +23,7 @@ class Movie {
this.poster_path_min = 'https://image.tmdb.org/t/p/w185' + poster_path; this.poster_path_min = 'https://image.tmdb.org/t/p/w185' + poster_path;
this.runtime = runtime; this.runtime = runtime;
this.release_date = release_date.substring(0, 4); this.release_date = release_date.substring(0, 4);
this.full_date = release_date;
this.genres = genres; this.genres = genres;
this.overview = overview; this.overview = overview;
this.vote_average = vote_average; this.vote_average = vote_average;

@ -17,7 +17,6 @@ class Review {
} else { } else {
this.profile_path = 'https://image.tmdb.org/t/p/w185' + profile_path; this.profile_path = 'https://image.tmdb.org/t/p/w185' + profile_path;
} }
console.log("profil_path", this.profile_path)
this.date = date.substring(0, 10); this.date = date.substring(0, 10);
this.pseudo = pseudo; this.pseudo = pseudo;

@ -11,6 +11,9 @@ import CardsSwipe from 'react-native-cards-swipe';
import AnimatedLottieView from "lottie-react-native"; import AnimatedLottieView from "lottie-react-native";
import {Timer, Timer2} from "../components/TimerComponent"; import {Timer, Timer2} from "../components/TimerComponent";
import {HeaderMovie} from "../components/HeaderMovieComponent"; import {HeaderMovie} from "../components/HeaderMovieComponent";
import config from "../constants/config.js";
import * as https from "https";
import {NewCard, SuggestedCard} from "../components/cards";
export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) { export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) {
// @ts-ignore // @ts-ignore
@ -21,6 +24,7 @@ export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) {
const [minutes, setMinutes] = useState(0); const [minutes, setMinutes] = useState(0);
const [seconds, setSeconds] = useState(0); const [seconds, setSeconds] = useState(0);
const [displayIndex, setdisplayIndex] = useState(0); const [displayIndex, setdisplayIndex] = useState(0);
const [suggestedMovies, setSuggestedMovies] = useState<number[]>([]);
var swiper: any = null; var swiper: any = null;
@ -151,12 +155,27 @@ export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) {
setSeconds(s); setSeconds(s);
}); });
setTimeout(() => interval, 10000); getSuggested();
}, []); }, []);
const getSuggested = async () => {
const suggestedResponse = (await fetch("https://codefirst.iut.uca.fr/containers/lucasdelanier-containermoviefinder/api/Suggested"));
const suggestedJson = await suggestedResponse.json();
//console.log("trailer", trailerJson)
// @ts-ignore
const suggestedMovies = suggestedJson.map((element) => {
return element;
})
console.log("suggested", suggestedMovies)
setSuggestedMovies(suggestedMovies);
}
function addWatchLater(props: Movie) { function addWatchLater(props: Movie) {
dispatch(addMovieToWatchLater(props)); dispatch(addMovieToWatchLater(props));
dispatch(removeMovieTrending(props)); dispatch(removeMovieTrending(props));
console.log("movie: ", props.id, props.full_date, new Date(props.full_date).getTime()), new Date(trendingMovies[displayIndex].full_date).getTime();
if (displayIndex == trendingMovies.length - 1) { if (displayIndex == trendingMovies.length - 1) {
setdisplayIndex(0); setdisplayIndex(0);
swiper.swipeLeft(); swiper.swipeLeft();
@ -204,6 +223,7 @@ export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) {
></ImageBackground> ></ImageBackground>
<HeaderMovie movie={trendingMovies[displayIndex]}></HeaderMovie> <HeaderMovie movie={trendingMovies[displayIndex]}></HeaderMovie>
<CardsSwipe <CardsSwipe
ref={(rf) => { ref={(rf) => {
swiper = rf swiper = rf
@ -229,12 +249,21 @@ export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) {
renderCard={(card) => renderCard={(card) =>
( (
<Image <>
style={styles.filmCard} <View style={{position: "absolute", zIndex: 20, top: 80, right: 20, alignItems: "flex-end"}}>
source={{ {suggestedMovies.includes(trendingMovies[displayIndex].id) && (<SuggestedCard></SuggestedCard>)}
uri: card?.poster_path, {(new Date().setDate(new Date().getDate() - 14) < new Date(trendingMovies[displayIndex].full_date).getTime()) && (<NewCard></NewCard>)}
}} </View>
/>)
<Image
style={styles.filmCard}
source={{
uri: card?.poster_path,
}}
/>
</>
)
} }
/> />

@ -365,7 +365,6 @@ export default function InfoScreen({navigation, route}: RootStackScreenProps<'In
} }
const getReview = async () => { const getReview = async () => {
const ReviewResponse = (await fetch(config.base_url + "movie/" + item.id + "/reviews?api_key=" + config.api_key + "&language=us-EN&page=1")); const ReviewResponse = (await fetch(config.base_url + "movie/" + item.id + "/reviews?api_key=" + config.api_key + "&language=us-EN&page=1"));
const ReviewJson = await ReviewResponse.json(); const ReviewJson = await ReviewResponse.json();
// @ts-ignore // @ts-ignore
let ReviewList = ReviewJson.results.slice(0, 5).map((elt) => { let ReviewList = ReviewJson.results.slice(0, 5).map((elt) => {

Loading…
Cancel
Save