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
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const {
createFactory,
PureComponent,
const {
section,
const {
connect,
const RegistrationList = createFactory(
);
const RegistrationListEmpty = createFactory(
);
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);