@@ -15,6 +15,11 @@ import metricsConfig from 'helpers/metrics';
1515import Footer from 'components/Footer' ;
1616import NoScript from 'components/NoScript' ;
1717import { removeMedia } from 'redux/actions/media' ;
18+ import { removeFootNote } from 'redux/actions/footNote' ;
19+
20+ import Loader from 'quran-components/lib/Loader' ;
21+
22+ import { footNoteType } from 'types' ;
1823
1924import authConnect from './connect' ;
2025
@@ -28,10 +33,13 @@ class App extends Component {
2833 content : PropTypes . object
2934 } ) . isRequired ,
3035 removeMedia : PropTypes . func . isRequired ,
36+ removeFootNote : PropTypes . func . isRequired ,
3137 children : PropTypes . element ,
3238 main : PropTypes . element ,
3339 nav : PropTypes . element ,
3440 sidebar : PropTypes . element ,
41+ footNote : footNoteType ,
42+ loadingFootNote : PropTypes . bool
3543 } ;
3644
3745 static contextTypes = {
@@ -49,10 +57,20 @@ class App extends Component {
4957 sidebar,
5058 children,
5159 media,
60+ footNote,
61+ loadingFootNote,
5262 removeMedia, // eslint-disable-line no-shadow
63+ removeFootNote, // eslint-disable-line no-shadow
5364 ...props
5465 } = this . props ;
5566 debug ( 'component:APPLICATION' , 'Render' ) ;
67+ let footNoteText ;
68+
69+ if ( footNote ) {
70+ footNoteText = footNote . text ;
71+ } else {
72+ footNoteText = < Loader isActive = { loadingFootNote } /> ;
73+ }
5674
5775 return (
5876 < div >
@@ -91,6 +109,7 @@ class App extends Component {
91109 { children || main }
92110 < SmartBanner title = "The Noble Quran - القرآن الكريم" button = "Install" />
93111 < Footer />
112+
94113 < Modal bsSize = "large" show = { media && media . content } onHide = { removeMedia } >
95114 < ModalHeader closeButton >
96115 < ModalTitle className = "montserrat" >
@@ -104,6 +123,20 @@ class App extends Component {
104123 />
105124 </ ModalBody >
106125 </ Modal >
126+
127+ < Modal bsSize = "large" show = { ! ! footNote || loadingFootNote } onHide = { removeFootNote } >
128+ < ModalHeader closeButton >
129+ < ModalTitle className = "montserrat" >
130+ Foot note
131+ </ ModalTitle >
132+ </ ModalHeader >
133+ < ModalBody >
134+ < div
135+ className = { `${ footNote && footNote . languageName } ` }
136+ dangerouslySetInnerHTML = { { __html : footNoteText } }
137+ />
138+ </ ModalBody >
139+ </ Modal >
107140 </ div >
108141 ) ;
109142 }
@@ -113,6 +146,10 @@ const metricsApp = metrics(metricsConfig)(App);
113146const AsyncApp = asyncConnect ( [ { promise : authConnect } ] ) ( metricsApp ) ;
114147
115148export default connect (
116- state => ( { media : state . media } ) ,
117- { removeMedia }
149+ state => ( {
150+ media : state . media ,
151+ footNote : state . footNote . footNote ,
152+ loadingFootNote : state . footNote . loadingFootNote
153+ } ) ,
154+ { removeMedia, removeFootNote }
118155) ( AsyncApp ) ;
0 commit comments