@@ -2,35 +2,69 @@ import React from 'react';
2
2
import PropTypes from 'prop-types' ;
3
3
import styles from './CookieApprovalDialog.module.scss' ;
4
4
import withDarkMode from './withDarkMode' ;
5
+ import Cookies from 'js-cookie' ;
5
6
6
- const CookieApprovalDialog = ( { className, darkMode } ) => {
7
- return (
8
- < div className = { `${ styles . container } ${ className || '' } ` } >
9
- < div className = { styles . content } >
10
- { /* <X className={styles.buttonClose} size={18} /> */ }
11
- < div className = { styles . primaryContent } >
12
- < h4 className = { styles . heading } > This site uses cookies 🍪</ h4 >
13
- < p className = { styles . description } >
14
- We rely on cookies to play videos, remember your preferences, and
15
- analyze our website traffic. You consent to our cookies if you click
16
- “OK”.
17
- </ p >
18
- </ div >
19
- < div className = { styles . ctaContainer } >
20
- < button className = { `button ${ styles . approvalButton } ` } type = "button" >
21
- OK
22
- </ button >
23
- < button
24
- className = { `button button-tertiary ${ styles . ignoreButton } ` }
25
- type = "button"
26
- >
27
- Reject
28
- </ button >
7
+ class CookieApprovalDialog extends React . Component {
8
+ constructor ( props ) {
9
+ super ( props ) ;
10
+ this . state = {
11
+ cookieSet : Cookies . get ( 'newrelic-gdpr-consent' ) !== undefined
12
+ } ;
13
+ this . writeCookies = this . writeCookies . bind ( this ) ;
14
+ }
15
+
16
+ writeCookies ( answer ) {
17
+ Cookies . set ( 'newrelic-gdpr-consent' , ! ! answer , {
18
+ expires : 365
19
+ } ) ;
20
+ // console.debug(Cookies.get('newrelic-gdpr-consent'));
21
+ this . setState ( { cookieSet : true } ) ;
22
+ }
23
+
24
+ render ( ) {
25
+ const { className, darkMode } = this . props ; // eslint-disable-line no-unused-vars
26
+ // console.debug(this.state.cookieSet);
27
+ return (
28
+ ! this . state . cookieSet && (
29
+ < div className = { `${ styles . container } ${ className || '' } ` } >
30
+ < div className = { styles . content } >
31
+ { /* <X className={styles.buttonClose} size={18} /> */ }
32
+ < div className = { styles . primaryContent } >
33
+ < h4 className = { styles . heading } >
34
+ This site uses tracking cookies 🍪
35
+ </ h4 >
36
+ < p className = { styles . description } >
37
+ We rely on tracking instrumentation to deliver an optimal
38
+ experience across our sites. If you consent to our cookies,
39
+ please click “OK”.
40
+ </ p >
41
+ </ div >
42
+ < div className = { styles . ctaContainer } >
43
+ < button
44
+ className = { `button ${ styles . approvalButton } ` }
45
+ type = "button"
46
+ onClick = { ( ) => {
47
+ this . writeCookies ( true ) ;
48
+ } }
49
+ >
50
+ OK
51
+ </ button >
52
+ < button
53
+ className = { `button button-tertiary ${ styles . ignoreButton } ` }
54
+ type = "button"
55
+ onClick = { ( ) => {
56
+ this . writeCookies ( false ) ;
57
+ } }
58
+ >
59
+ Reject
60
+ </ button >
61
+ </ div >
62
+ </ div >
29
63
</ div >
30
- </ div >
31
- </ div >
32
- ) ;
33
- } ;
64
+ )
65
+ ) ;
66
+ }
67
+ }
34
68
35
69
CookieApprovalDialog . propTypes = {
36
70
className : PropTypes . string ,
0 commit comments