Source code
Revision control
Copy as Markdown
Other Tools
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
"use strict";
const {
createFactory,
PureComponent,
} = require("resource://devtools/client/shared/vendor/react.js");
const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.js");
const {
section,
} = require("resource://devtools/client/shared/vendor/react-dom-factories.js");
const {
connect,
} = require("resource://devtools/client/shared/vendor/react-redux.js");
const Types = require("resource://devtools/client/application/src/types/index.js");
const RegistrationList = createFactory(
require("resource://devtools/client/application/src/components/service-workers/RegistrationList.js")
);
const RegistrationListEmpty = createFactory(
require("resource://devtools/client/application/src/components/service-workers/RegistrationListEmpty.js")
);
class WorkersPage extends PureComponent {
static get propTypes() {
return {
// mapped from state
canDebugWorkers: PropTypes.bool.isRequired,
domain: PropTypes.string.isRequired,
registrations: Types.registrationArray.isRequired,
};
}
render() {
const { canDebugWorkers, domain, registrations } = this.props;
// Filter out workers from other domains
const domainWorkers = registrations.filter(
x => !!x.workers.length && new URL(x.workers[0].url).hostname === domain
);
const isListEmpty = domainWorkers.length === 0;
return section(
{
className: `app-page js-service-workers-page ${
isListEmpty ? "app-page--empty" : ""
}`,
},
isListEmpty
? RegistrationListEmpty({})
: RegistrationList({
canDebugWorkers,
registrations: domainWorkers,
})
);
}
}
function mapStateToProps(state) {
return {
canDebugWorkers: state.workers.canDebugWorkers,
domain: state.page.domain,
registrations: state.workers.list,
};
}
// Exports
module.exports = connect(mapStateToProps)(WorkersPage);