tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

UnsupportedBrowserList.js (2553B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 "use strict";
      6 
      7 const {
      8  createFactory,
      9  PureComponent,
     10 } = require("resource://devtools/client/shared/vendor/react.mjs");
     11 const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js");
     12 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs");
     13 
     14 const UnsupportedBrowserItem = createFactory(
     15  require("resource://devtools/client/inspector/compatibility/components/UnsupportedBrowserItem.js")
     16 );
     17 
     18 const Types = require("resource://devtools/client/inspector/compatibility/types.js");
     19 
     20 class UnsupportedBrowserList extends PureComponent {
     21  static get propTypes() {
     22    return {
     23      browsers: PropTypes.arrayOf(PropTypes.shape(Types.browser)).isRequired,
     24    };
     25  }
     26 
     27  render() {
     28    const { browsers } = this.props;
     29 
     30    const unsupportedBrowserItems = {};
     31 
     32    const unsupportedVersionsListByBrowser = new Map();
     33 
     34    for (const { name, version, status } of browsers) {
     35      if (!unsupportedVersionsListByBrowser.has(name)) {
     36        unsupportedVersionsListByBrowser.set(name, []);
     37      }
     38      unsupportedVersionsListByBrowser.get(name).push({ version, status });
     39    }
     40 
     41    for (const { id, name, version, status } of browsers) {
     42      // Only display one icon per browser
     43      if (!unsupportedBrowserItems[id]) {
     44        if (status === "esr") {
     45          // The data is ordered by version number, so we'll show the first unsupported
     46          // browser version. This might be confusing for Firefox as we'll show ESR
     47          // version first, and so the user wouldn't be able to tell if there's an issue
     48          // only on ESR, or also on release.
     49          // So only show ESR if there's no newer unsupported version
     50          const newerVersionIsUnsupported = browsers.find(
     51            browser => browser.id == id && browser.status !== status
     52          );
     53          if (newerVersionIsUnsupported) {
     54            continue;
     55          }
     56        }
     57 
     58        unsupportedBrowserItems[id] = UnsupportedBrowserItem({
     59          key: id,
     60          id,
     61          name,
     62          version,
     63          unsupportedVersions: unsupportedVersionsListByBrowser.get(name),
     64        });
     65      }
     66    }
     67    return dom.ul(
     68      {
     69        className: "compatibility-unsupported-browser-list",
     70      },
     71      Object.values(unsupportedBrowserItems)
     72    );
     73  }
     74 }
     75 
     76 module.exports = UnsupportedBrowserList;