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,
marginTop: 4,
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 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) {
this.id = id;
@ -21,6 +23,7 @@ class Movie {
this.poster_path_min = 'https://image.tmdb.org/t/p/w185' + poster_path;
this.runtime = runtime;
this.release_date = release_date.substring(0, 4);
this.full_date = release_date;
this.genres = genres;
this.overview = overview;
this.vote_average = vote_average;

@ -17,7 +17,6 @@ class Review {
} else {
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.pseudo = pseudo;

@ -11,6 +11,9 @@ import CardsSwipe from 'react-native-cards-swipe';
import AnimatedLottieView from "lottie-react-native";
import {Timer, Timer2} from "../components/TimerComponent";
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'>) {
// @ts-ignore
@ -21,6 +24,7 @@ export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) {
const [minutes, setMinutes] = useState(0);
const [seconds, setSeconds] = useState(0);
const [displayIndex, setdisplayIndex] = useState(0);
const [suggestedMovies, setSuggestedMovies] = useState<number[]>([]);
var swiper: any = null;
@ -151,12 +155,27 @@ export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) {
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) {
dispatch(addMovieToWatchLater(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) {
setdisplayIndex(0);
swiper.swipeLeft();
@ -204,6 +223,7 @@ export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) {
></ImageBackground>
<HeaderMovie movie={trendingMovies[displayIndex]}></HeaderMovie>
<CardsSwipe
ref={(rf) => {
swiper = rf
@ -229,12 +249,21 @@ export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) {
renderCard={(card) =>
(
<>
<View style={{position: "absolute", zIndex: 20, top: 80, right: 20, alignItems: "flex-end"}}>
{suggestedMovies.includes(trendingMovies[displayIndex].id) && (<SuggestedCard></SuggestedCard>)}
{(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 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();
// @ts-ignore
let ReviewList = ReviewJson.results.slice(0, 5).map((elt) => {

Loading…
Cancel
Save