aboutsummaryrefslogtreecommitdiffstats
path: root/src/containers/settings/ServicesScreen.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/containers/settings/ServicesScreen.js')
-rw-r--r--src/containers/settings/ServicesScreen.js75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/containers/settings/ServicesScreen.js b/src/containers/settings/ServicesScreen.js
new file mode 100644
index 000000000..d0580041f
--- /dev/null
+++ b/src/containers/settings/ServicesScreen.js
@@ -0,0 +1,75 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { inject, observer } from 'mobx-react';
4import { RouterStore } from 'mobx-react-router';
5
6// import RecipePreviewsStore from '../../stores/RecipePreviewsStore';
7import UserStore from '../../stores/UserStore';
8import ServiceStore from '../../stores/ServicesStore';
9import { gaPage } from '../../lib/analytics';
10
11import ServicesDashboard from '../../components/settings/services/ServicesDashboard';
12
13@inject('stores', 'actions') @observer
14export default class ServicesScreen extends Component {
15 componentDidMount() {
16 gaPage('Settings/Service Dashboard');
17 }
18
19 componentWillUnmount() {
20 this.props.actions.service.resetFilter();
21 }
22
23 deleteService() {
24 this.props.actions.service.deleteService();
25 this.props.stores.services.resetFilter();
26 }
27
28 render() {
29 const { user, services, router } = this.props.stores;
30 const {
31 toggleService,
32 filter,
33 resetFilter,
34 } = this.props.actions.service;
35 const isLoading = services.allServicesRequest.isExecuting;
36
37 let allServices = services.all;
38 if (services.filterNeedle !== null) {
39 allServices = services.filtered;
40 }
41
42 return (
43 <ServicesDashboard
44 user={user.data}
45 services={allServices}
46 status={services.actionStatus}
47 deleteService={() => this.deleteService()}
48 toggleService={toggleService}
49 isLoading={isLoading}
50 filterServices={filter}
51 resetFilter={resetFilter}
52 goTo={router.push}
53 servicesRequestFailed={services.allServicesRequest.wasExecuted && services.allServicesRequest.isError}
54 retryServicesRequest={() => services.allServicesRequest.reload()}
55 />
56 );
57 }
58}
59
60ServicesScreen.wrappedComponent.propTypes = {
61 stores: PropTypes.shape({
62 user: PropTypes.instanceOf(UserStore).isRequired,
63 services: PropTypes.instanceOf(ServiceStore).isRequired,
64 router: PropTypes.instanceOf(RouterStore).isRequired,
65 }).isRequired,
66 actions: PropTypes.shape({
67 service: PropTypes.shape({
68 showAddServiceInterface: PropTypes.func.isRequired,
69 deleteService: PropTypes.func.isRequired,
70 toggleService: PropTypes.func.isRequired,
71 filter: PropTypes.func.isRequired,
72 resetFilter: PropTypes.func.isRequired,
73 }).isRequired,
74 }).isRequired,
75};