diff options
Diffstat (limited to 'src/containers/settings/ServicesScreen.js')
-rw-r--r-- | src/containers/settings/ServicesScreen.js | 75 |
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 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { inject, observer } from 'mobx-react'; | ||
4 | import { RouterStore } from 'mobx-react-router'; | ||
5 | |||
6 | // import RecipePreviewsStore from '../../stores/RecipePreviewsStore'; | ||
7 | import UserStore from '../../stores/UserStore'; | ||
8 | import ServiceStore from '../../stores/ServicesStore'; | ||
9 | import { gaPage } from '../../lib/analytics'; | ||
10 | |||
11 | import ServicesDashboard from '../../components/settings/services/ServicesDashboard'; | ||
12 | |||
13 | @inject('stores', 'actions') @observer | ||
14 | export 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 | |||
60 | ServicesScreen.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 | }; | ||