// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // Import React and Amplify packages import React from 'react'; import { Cookies } from 'react-cookie'; import { I18n } from 'aws-amplify'; // Import React Bootstrap components import Navbar from 'react-bootstrap/Navbar'; import Nav from 'react-bootstrap/Nav'; import Form from 'react-bootstrap/Form'; import Button from 'react-bootstrap/Button'; import {Buffer} from 'buffer'; // Import custom setting import EmptyCol from './EmptyCol'; /** * Properties Interface * @interface IProps */ interface IProps { } /** * State Interface * @interface IState */ interface IState { showCookieBanner: boolean; cookieLanguageCode: string; } /** * Footer class returns the default footer HTML tags including copyright and AWS Solutions link. * @class Footer */ class Footer extends React.Component { private cookies: Cookies; constructor(props: Readonly) { super(props); this.state = { showCookieBanner: false, cookieLanguageCode: '' }; this.cookies = new Cookies(); this.handleLanguageChange = this.handleLanguageChange.bind(this); this.handleCookieBanner = this.handleCookieBanner.bind(this); } /** * ComponentDidMount function. */ componentDidMount() { const cookie = this.cookies.get('ui_cookie'); if (!cookie) { this.setState({ showCookieBanner: true }); } const localeCode = new Cookies().get('ui_locale'); let cookieLanguageCode = localeCode; if (localeCode === 'ja') { cookieLanguageCode = 'jp'; } else if (localeCode === 'zh') { cookieLanguageCode = 'cn'; } this.setState({ cookieLanguageCode }); } /** * Handle the language change. Each changes last for 20 years. * @param {any} event - Language change event */ handleLanguageChange(event: any) { let cookieExpires = new Date(); cookieExpires.setFullYear(cookieExpires.getFullYear() + 20); this.cookies.set('ui_locale', event.target.value, { expires: cookieExpires, path: '/', secure: true }); window.location.reload(); } /** * Handle cookie banner. */ handleCookieBanner() { const cookie = Buffer.from(new Date().toISOString()).toString('base64'); let cookieExpires = new Date(); cookieExpires.setMonth(cookieExpires.getMonth() + 1); this.cookies.set('ui_cookie', cookie, { expires: cookieExpires, path: '/', secure: true }); this.setState({ showCookieBanner: false }); } /** * Render the footer page. */ render() { return ( ); } } export default Footer;