@@ -2,6 +2,7 @@ import React, { Component } from 'react';
22import { Container } from 'reactstrap' ;
33import '.././App.css' ;
44import AppNavbar from '.././AppNavbar' ;
5+ import { loadCameraRollImages } from '../utils/cameraRollConfig' ;
56
67class Home extends Component {
78 constructor ( props ) {
@@ -17,18 +18,59 @@ class Home extends Component {
1718 className,
1819 headerClassName,
1920 introId,
20- welcomeMessage
21+ welcomeMessage,
22+ backgroundImages : [ ] ,
23+ backgroundImageIndex : 0
2124 } ;
25+
26+ this . rotateCameraRollImage = this . rotateCameraRollImage . bind ( this ) ;
27+ this . rotationIntervalId = null ;
28+ this . isMountedView = false ;
29+ }
30+
31+ async componentDidMount ( ) {
32+ this . isMountedView = true ;
33+ const backgroundImages = await loadCameraRollImages ( 'home' ) ;
34+
35+ if ( this . isMountedView ) {
36+ this . setState ( { backgroundImages, backgroundImageIndex : 0 } ) ;
37+
38+ if ( backgroundImages . length > 1 ) {
39+ this . rotationIntervalId = setInterval ( this . rotateCameraRollImage , 10000 ) ;
40+ }
41+ }
42+ }
43+
44+ componentWillUnmount ( ) {
45+ this . isMountedView = false ;
46+
47+ if ( this . rotationIntervalId ) {
48+ clearInterval ( this . rotationIntervalId ) ;
49+ }
50+ }
51+
52+ rotateCameraRollImage ( ) {
53+ this . setState ( ( prevState ) => ( {
54+ backgroundImageIndex : ( prevState . backgroundImageIndex + 1 ) % prevState . backgroundImages . length
55+ } ) ) ;
2256 }
2357
2458 render ( ) {
25- const { className, headerClassName, introId, welcomeMessage } = this . state ;
59+ const { className, headerClassName, introId, welcomeMessage, backgroundImages, backgroundImageIndex } = this . state ;
60+ const activeBackgroundImage = backgroundImages [ backgroundImageIndex ] ;
61+ const headerStyle = activeBackgroundImage
62+ ? { backgroundImage : `linear-gradient(rgba(10, 34, 80, 0.55), rgba(10, 34, 80, 0.55)), url(${ activeBackgroundImage } )` }
63+ : undefined ;
2664
2765 return (
2866 < div className = { className } >
2967 < AppNavbar />
3068 < Container >
31- < header className = { headerClassName } >
69+ < header
70+ data-testid = "home-header"
71+ className = { `${ headerClassName } App-header-camera-roll App-header-camera-roll--home` }
72+ style = { headerStyle }
73+ >
3274 < br /> < br />
3375 < p id = { introId } >
3476 { welcomeMessage } < br /> < br />
0 commit comments