| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | /* @flow */
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { translate } from '../../base/i18n';
import { Platform } from '../../base/react';
import { CHROME, FIREFOX, IE, SAFARI } from './browserLinks';
import HideNotificationBarStyle from './HideNotificationBarStyle';
/**
 * The namespace of the CSS styles of UnsupportedDesktopBrowser.
 *
 * @private
 * @type {string}
 */
const _SNS = 'unsupported-desktop-browser';
/**
 * React component representing unsupported browser page.
 *
 * @class UnsupportedDesktopBrowser
 */
class UnsupportedDesktopBrowser extends Component<*> {
    /**
     * UnsupportedDesktopBrowser component's property types.
     *
     * @static
     */
    static propTypes = {
        /**
         * The function to translate human-readable text.
         *
         * @public
         * @type {Function}
         */
        t: PropTypes.func
    };
    /**
     * Renders the component.
     *
     * @returns {ReactElement}
     */
    render() {
        return (
            <div className = { _SNS }>
                <h2 className = { `${_SNS}__title` }>
                    It looks like you're using a browser we don't support.
                </h2>
                <p className = { `${_SNS}__description` }>
                    Please try again with the latest version of 
                    <a
                        className = { `${_SNS}__link` }
                        href = { CHROME } >Chrome</a>, 
                    <a
                        className = { `${_SNS}__link` }
                        href = { FIREFOX }>Firefox</a> or 
                    {
                        this._renderOSSpecificBrowserDownloadLink()
                    }
                </p>
                <HideNotificationBarStyle />
            </div>
        );
    }
    /**
     * Depending on the platform returns the link to Safari browser.
     *
     * @returns {ReactElement|null}
     * @private
     */
    _renderOSSpecificBrowserDownloadLink() {
        let link;
        let text;
        switch (Platform.OS) {
        case 'macos':
            link = SAFARI;
            text = 'Safari';
            break;
        case 'windows':
            link = IE;
            text = 'Internet Explorer';
            break;
        }
        if (typeof link !== 'undefined') {
            return (
                <a
                    className = { `${_SNS}__link` }
                    href = { link }>
                    {
                        text
                    }
                </a>
            );
        }
        return null;
    }
}
export default translate(UnsupportedDesktopBrowser);
 |