From 16fd168c8b43266111b5b16b8ea2a33220b3b5b0 Mon Sep 17 00:00:00 2001 From: Lucas Delanier Date: Sun, 5 Mar 2023 04:54:31 +0100 Subject: [PATCH] commit new "Coup de Coeur" and "Nouveau" card displayed on the Swipeable card link with our new API :tada::tada: --- assets/images/new_card.png | Bin 0 -> 2508 bytes assets/images/suggested_card.png | Bin 0 -> 3841 bytes components/HeaderMovieComponent.tsx | 2 +- components/cards.tsx | 27 +++++++++++++++++ model/Movie.tsx | 3 ++ model/review.tsx | 1 - screens/HomeScreen.tsx | 43 +++++++++++++++++++++++----- screens/InfoScreen.tsx | 1 - 8 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 assets/images/new_card.png create mode 100644 assets/images/suggested_card.png create mode 100644 components/cards.tsx diff --git a/assets/images/new_card.png b/assets/images/new_card.png new file mode 100644 index 0000000000000000000000000000000000000000..151af64b05cd1c205aef6c17cdb1c5dfb02cecb3 GIT binary patch literal 2508 zcmV;-2{ZPIP)zgbi8A*l&yy8%<;Lt5+wsy14EXcd$y6%-29LW^3o&?hgoeN$22S}*mfU`kag zv=NGyY8AZ1T2N5i3M$&B;L?OlWsSl*|hmNPGtyIF_K_dJ@_0l|wQXR*ip0-LK@I1gV74oD~w4VeaAt+BU z3!cDJfD`Gd*GMeCkSsFJ-Tx+yI-YJ_>X5UP1R+_}yQ6CUQOPkaAwftWjx(?zMXvKQ z2|^N4vY%3Ea6Jh^5>c|BB0)$nq5wjo5d{zujVOSSXlkfLjBaZ5el+)Q-lqP`om2?* zGbZQ!eYdN}`w@gD=u1A`38-XVQ0HA=lbnbO3X@B|D{eZ5l;dzE~A^$R5PY-NYytR)jF1CQ2;Q0#bUZ~`d8{b z@)H%4hk3>ds(rD==VefV>Qm3WwzVy^8ik3Te)d4lu`4S#QFh;&9n;V4&uI_Z@!MM;QW)t)Z~6)cLG8f3o79-%8nYed^LpA3hW5es{KmKETgMU# z(0lk)-myd_&kT9<^&8d02`WrB>1dorr6Sf4h!51n9qX)_pmyR| zImWWs#Hs*S9$7?9u}Y&__zOv{AuMrDTzA{IzGD!eAkZh?pX)ChEcO51U z0ucx3I~U$@A-VpAA&)s(M}kPB<#B?TNxCt5?0QPgAqqwS5`8}ig9cfr}xOo&}%Tk5JFRN z8e&|TzOLG5K3kU4^A(|`F7UwGIsV~Y11V|C||!iOc*VD$LhP%&!Ej`r1zsU2Jk zKnRPmuZG3UvMB(#x^gqs9eXxsA`qiv*Ju>5*u#mk+w}J3-*bczlN%TCKxUmALWH)M zO3xGXuATn4S__}9?ZcSxm^=y?d)t`de(;P?#*vuZMy0GT#K7wD(kKQS>jP1+S)lv3 z`l(Rjv}8KOFfl_g2tRL6-f!=qrsVljn3UpsYj z9~Tw#Qama%K{e+fY>Pwb#o=+Qt>oEzIJZ7;3%^h@49XP>E#CsZV1#xzGOuUb`k>)n z4sFY~qK?oK3xDHREb=~cL%>VQVV*In(!*2n>w?x@@cg*n6{)Cig@8~*ErDuyZ5x7s z*wiMhm~<|zw)#1Qj$1vQoST!5XF#BavW~zPlDy4j>^|9j2Scy7tqj+`VBf=|w?9Bh zS~jimHpTJ1P`uA!UN7n%E}IhRO?DP!(!D_I2dS3>Iv#8q90!xJQ>- zJVKs;GH1i1vL1)83~La3^KH3MApAh^ygm2NqzBsx;VCo>;aek2Y~Ib+_N{F+X~tur zL0ejn?e)e4>nTt$9D^W_|6q}COmV#lgw^Z=atpKrNjp4_F4?whToZY-9P%9~oQY1h z^?L>8c5A*yQ)((s0WjcK)cOD{R8+9_fmbgcTD&!(*I}Pa(CR7b^;o5~2{pG~xDS%o zLKOg8BZ3s*Mg&g?1wo9?H@4}-I1IFzD;Sbpz6OCkM9r2EPkW1eeTIPZDxZc6I_}xC z?+0pmF?`;NNkx7!76hZKfK62xIP703Bw2&tgykIG#xkW?`R<7@rO@0(W7`^`;aeYq zK-gGlqH5dVrrX24f(?vKA&(=J zgKsg}k||t|u%kO-Sx@gOg#~P27M{Ohg=BAZ*W>>`h*;4=4%0Mdv9B+M?2JW!U^Hy) z)I{w&#vN~Z!K>KD(DOPQws~WN{YX*zjAvsUF*iJ1)gGdIXS??q1&BCHuFi?{RF|p{ zTZ}&3fz^9rFiDmCPOOgA!El6%-{khZe2>Qv%n#DCOJ+$3Bt%FJ=lLh;12-eWKWv~ zWwTPG4P5XZ082z#XSI;aqD8Th;DW(1Kh4afzCA8eQ}cSNdb)e2JG_r%*`DdCuC99Z z>eYL%YCJ(OII}b+eE+Z~#P5ahb_j-Hm^M%mm3hze<}0Pr7mE{pv*!Dr{?EY7(vE`P zF(dyR6AZ&J*3C$tiTwC$t|qF z7>3C$ouZBOc6p+=AjI;j{CQas43joW=D^|;mbtvsQUx~J-yuc@I>n)4rzrM#fiNkc zz-~P(i@67{#Kk+SVsV9qD=VPiJ|5ms^V)?UUWzLVuSC{?j2(TuQ;hU?iqV0N8kqx- zx!Vs*!LwY>!SgV+c*QT4Q`Z!OJ-+yK|HeRoT)FtaRdMz|FIbUffFo}g#F+ydYhF8b z?RhZKWSL2+bdT>W)G4hn7FWvR?DsD-|6I&#Qn$d4O5s1fZ-cWCt$*&FLZI+YTzw{P zFO>zuxPl4u+}I|uYil$YZ!pnHMUCHQzkeZ^?31b!AIb{?5mk99AV_~3-zQd3}<1x+AC zSQ5@XDAl~a_(c9MU%MoI5Ae548B0zmH~2E(pJ13Uj_>RuEiWh`$WF}!xE6tgEaE+C z$q7pg{xF_6vr8%p3`&Ta1&>{MDrdjO{;W$u1hO0~9d#g_7k+RPCMZ8d&IZ>ao%jrb z0k@V)&Ow1)a@lGweQy|w*97;}S&%chc|X*t*zJdwi+hgCD6MKgv{#gRHv^t^Xlu2- zR9ht(k<-fucqa7mtpt6W)k&_a?sfRGY!e^q@&_rK-@e~nBeyDo3AuBjDs%pN8E8k8 zZIc@tX8T1gHwjsOyjrOnyEa)y8ADsE_eP!52#%zpz)tL}H_0JLHsz(jtcc~M9<@{h zyHO*kaDSs{C(4DAv^D0rgPUuF83MEat0$q?LvX(|lrA-R5E(OeuUOI5nLIAOJXg8Q?8!0b^3TPa={4`c-NtE`&br){C zD}rVOSbZi=pvD~RD5sej|2KbKak>t&gE~ivu;V$gOnvX0C!xwFPWxp+iB0bAYMJr^ zi7PN_#=87tdKu0~0yDOLFhY27UqqbH!Bn&fLSOZ*wKq6`JUM^}*`+%##lo5p!s0UP zi~)nCX0wV{&Dtg^N{4&nZ?w&LvFgj5+_S;Cd}{C^>U>_7jlKY|(5Loothp|z*X|8X zS;a$y%(=QNnjx4-#_E+9RvKrd)i-zlRq!63^Q4?COut$qWlbpnl#9Mmys@1ls z?GrNU1@LU>gN2oJb2yVzJ3UN zqy;8D^Eom3KzXd!T}C-!C8Li_e^6Ld9X?6DJplUQq?8N2O_V&N-*g{T9Jxpms?KSV zc!nrtQm6GGdbCafMG)ruK*O3D)>S90efgFq5JXdXDX2OFQ_x+3Rc8{m^gzAf*mlL7 zOl-c->F?^5RWp6Dt*2g$(;Ph1a{r@Q+M+@md^G#asf;7WYxwNc&2UA4wnb1%XL8ux zT22Gh8GhPU83egbamS``6GZD8K}D3X(YKx0oXu37$BWVHj2YgXV6ePv z%x9J7qzg~GJKeV2srnO2HPKy_NgidUqb!vh5A6O)3=&&JY}eX$FXj6Hh+dBNH~w6& zvHWXyU)Z4hZF3F^o@&EUsjM%qtge@%lv6v-b!`@nBCnijb#^r@VDIh4i;)4KSYmRQMm`R7Ov;8lngIxxWjiPL4+p;@~RrIU1 zZCn78*`ixoRV;8HDgia>5*xs`sF!1I*`dlyLZ0-=SC@O2<*CV=w0ARc1%}YEDNI=V zM_r;J9BiIufn1pBhp!`YSU&Y?SplvCjk+%G^07Bs9&HUSZ9`dGQ3Z8@xQ9!=wx)i7z41DOBb?lI)^D<#(A0v9})9-Uk9W(r@2>VLDS?{6IG4Sd6ipvqcnx&FMs@ zc~qrK4L(@MHe4cuRN1>yTE(u=xjz z-T7Ieq|!pv))Nds*Bq78MwT|f05NB|IU<5)+mb^mxZ6bJWcg*SpxTt<$1(D6Y)XVm z7iq?_QP#1JvW~-muv58XCTbs{&Jl<0Q8@n%OD5{XgeXwy9xChIMTtRKkUKhzv>d7p zA#;uDt}^F!OnD9_exv@ja#g)C0a7V4df6t8WZ9+PvO+2f3>`yl&w+p-`#MaZ&h3ZGOPcUp^!!x4ou}9Ga zZEQ}ORPI_(#_sS5Z0g5uEx8(_EeFgzL4AG-Eq_p!tz^WS%GxSN2zctV){v2{ZU>FG0Kw;_i#Xe6Q39cUng!f@_eR^OMnH1VAP&U&yp9d3) zj(+L|ep83@E=T0()=g-s8?WynEP#cxeDXuv!xDMB2pt*of!$|-b0JcuTwGcea zRJLm&Ot$NwWRJx>!URh;l+oxI=RiPZn2;}s)4$4arrJ>-K{j9r%>umaocGv!6Q7S1-$q-XOYZMhmGWq;7WOK3J}) zwn4qIgiGs)6!Zt~8Tf+M?umNq&xU6l!kZ5gM0y?@Yt=nEy!s{NwMvno%eQ@F@7`pZ<*h=7{u zAxVtiD70LGz3JE#7{f5`@HfUX43k?}fiVn|TUdcH43k?}fiVn|TUdcH43k@OeWY|A z2@-CNfa7w0@&*|uQy`7v|MK?^!7vPyBPyaY?~8KfUxHy6CTDmRZ{Dwn^5=qK7$$Fc z;_G1VNb&RKtMZ>Q!7vPy3o3UPKHT!_APU)0DNRUC_DC=c!(^VyqmFXL#hY_Ci;w*T~c524|MW zJm3G5{J^m1d3yxIFicyh+^q=l4^b|Ey*SY~Yrgw4$S+EYPo5M(00000NkvXXu0mjf D?Akr@ literal 0 HcmV?d00001 diff --git a/components/HeaderMovieComponent.tsx b/components/HeaderMovieComponent.tsx index f154c4a..c37c308 100644 --- a/components/HeaderMovieComponent.tsx +++ b/components/HeaderMovieComponent.tsx @@ -19,7 +19,7 @@ export function HeaderMovie(props: headerMovieProps) { borderRadius: 100 / 2, marginTop: 4, backgroundColor: "lightgray", - marginHorizontal: 8 + marginHorizontal: 8, }, }); diff --git a/components/cards.tsx b/components/cards.tsx new file mode 100644 index 0000000..3949665 --- /dev/null +++ b/components/cards.tsx @@ -0,0 +1,27 @@ +import {Image, View} from "react-native"; +import * as React from "react"; + +export function SuggestedCard() { + + + return ( + + + + + ); +} + +export function NewCard() { + + + return ( + + + + ); +} \ No newline at end of file diff --git a/model/Movie.tsx b/model/Movie.tsx index 4104c8e..c9aa89a 100644 --- a/model/Movie.tsx +++ b/model/Movie.tsx @@ -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; diff --git a/model/review.tsx b/model/review.tsx index fd86214..23a5825 100644 --- a/model/review.tsx +++ b/model/review.tsx @@ -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; diff --git a/screens/HomeScreen.tsx b/screens/HomeScreen.tsx index 9c572db..bb2cb73 100644 --- a/screens/HomeScreen.tsx +++ b/screens/HomeScreen.tsx @@ -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([]); 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'>) { > + { swiper = rf @@ -229,12 +249,21 @@ export default function HomeScreen({navigation}: RootStackScreenProps<'Home'>) { renderCard={(card) => ( - ) + <> + + {suggestedMovies.includes(trendingMovies[displayIndex].id) && ()} + {(new Date().setDate(new Date().getDate() - 14) < new Date(trendingMovies[displayIndex].full_date).getTime()) && ()} + + + + + + ) } /> diff --git a/screens/InfoScreen.tsx b/screens/InfoScreen.tsx index ff45d20..9d7ac72 100644 --- a/screens/InfoScreen.tsx +++ b/screens/InfoScreen.tsx @@ -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) => {