From a051331680b21f20201a47601d69505a4cfa9e40 Mon Sep 17 00:00:00 2001 From: muhamedsalih-tw <104364298+muhamedsalih-tw@users.noreply.github.com> Date: Sat, 19 Nov 2022 15:21:09 +0530 Subject: Transform service components to ts (#778) --- .../settings/services/ServicesDashboard.tsx | 188 +++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 src/components/settings/services/ServicesDashboard.tsx (limited to 'src/components/settings/services/ServicesDashboard.tsx') diff --git a/src/components/settings/services/ServicesDashboard.tsx b/src/components/settings/services/ServicesDashboard.tsx new file mode 100644 index 000000000..36057902f --- /dev/null +++ b/src/components/settings/services/ServicesDashboard.tsx @@ -0,0 +1,188 @@ +import { Component, ReactElement } from 'react'; +import { observer } from 'mobx-react'; +import { Link } from 'react-router-dom'; +import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; +import { To } from 'history'; +import SearchInput from '../../ui/SearchInput'; +import Infobox from '../../ui/Infobox'; +import Loader from '../../ui/Loader'; +import FAB from '../../ui/FAB'; +import ServiceItem from './ServiceItem'; +import Appear from '../../ui/effects/Appear'; +import { H1 } from '../../ui/headline'; +import Service from '../../../models/Service'; + +const messages = defineMessages({ + headline: { + id: 'settings.services.headline', + defaultMessage: 'Your services', + }, + searchService: { + id: 'settings.searchService', + defaultMessage: 'Search service', + }, + noServicesAdded: { + id: 'settings.services.noServicesAdded', + defaultMessage: 'Start by adding a service.', + }, + noServiceFound: { + id: 'settings.services.nothingFound', + defaultMessage: 'Sorry, but no service matched your search term.', + }, + discoverServices: { + id: 'settings.services.discoverServices', + defaultMessage: 'Discover services', + }, + servicesRequestFailed: { + id: 'settings.services.servicesRequestFailed', + defaultMessage: 'Could not load your services', + }, + tryReloadServices: { + id: 'settings.account.tryReloadServices', + defaultMessage: 'Try again', + }, + updatedInfo: { + id: 'settings.services.updatedInfo', + defaultMessage: 'Your changes have been saved', + }, + deletedInfo: { + id: 'settings.services.deletedInfo', + defaultMessage: 'Service has been deleted', + }, +}); + +interface IProps extends WrappedComponentProps { + services: Service[]; + isLoading: boolean; + // toggleService: any; // TODO - - [TECH DEBT] check it later + filterServices: any; + resetFilter: () => void; + goTo: (to: To, state?: any) => void; + servicesRequestFailed: boolean; + retryServicesRequest: () => void; + status: any; + searchNeedle: string | null; +} + +@observer +class ServicesDashboard extends Component { + render(): ReactElement { + const { + services, + isLoading, + // toggleService, // TODO - - [TECH DEBT] check it later + filterServices, + resetFilter, + goTo, + servicesRequestFailed, + retryServicesRequest, + status, + searchNeedle = '', + intl, + } = this.props; + + return ( +
+
+

{intl.formatMessage(messages.headline)}

+
+
+ {(services.length > 0 || searchNeedle) && !isLoading && ( + filterServices({ needle })} + onReset={() => resetFilter()} + autoFocus + /> + )} + {!isLoading && servicesRequestFailed && ( + + {intl.formatMessage(messages.servicesRequestFailed)} + + )} + + {status.length > 0 && status.includes('updated') && ( + + + {intl.formatMessage(messages.updatedInfo)} + + + )} + + {status.length > 0 && status.includes('service-deleted') && ( + + + {intl.formatMessage(messages.deletedInfo)} + + + )} + + {!isLoading && services.length === 0 && !searchNeedle && ( +
+

+ + + + {intl.formatMessage(messages.noServicesAdded)} +

+ + {intl.formatMessage(messages.discoverServices)} + +
+ )} + {!isLoading && services.length === 0 && searchNeedle && ( +
+

+ + + + {intl.formatMessage(messages.noServiceFound)} +

+
+ )} + {isLoading ? ( + + ) : ( + + + {services.map(service => ( + + // toggleService({ serviceId: service.id }) + // } + goToServiceForm={() => + goTo(`/settings/services/edit/${service.id}`) + } + /> + ))} + +
+ )} + + + + + +
+
+ ); + } +} + +export default injectIntl(ServicesDashboard); -- cgit v1.2.3-70-g09d2