mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	refactor: finish ApplicationList and add it to routes
This commit is contained in:
		
							parent
							
								
									fb403255ef
								
							
						
					
					
						commit
						f342d4d904
					
				| @ -1,5 +1,4 @@ | |||||||
| import React, { Component, useEffect } from 'react'; | import React, { useEffect, useMemo, useState } from 'react'; | ||||||
| import PropTypes from 'prop-types'; |  | ||||||
| import { CircularProgress } from '@material-ui/core'; | import { CircularProgress } from '@material-ui/core'; | ||||||
| import { Warning } from '@material-ui/icons'; | import { Warning } from '@material-ui/icons'; | ||||||
| 
 | 
 | ||||||
| @ -10,28 +9,52 @@ import HeaderTitle from '../common/HeaderTitle'; | |||||||
| import useApplications from '../../hooks/api/getters/useApplications/useApplications'; | import useApplications from '../../hooks/api/getters/useApplications/useApplications'; | ||||||
| 
 | 
 | ||||||
| const ApplicationList = () => { | const ApplicationList = () => { | ||||||
|     //missing useSettings
 |  | ||||||
|     const { applications, refetchApplications } = useApplications(); |     const { applications, refetchApplications } = useApplications(); | ||||||
| 
 |     const [filter, setFilter] = useState(''); | ||||||
|     useEffect(() => { |     useEffect(() => { | ||||||
|         refetchApplications(); |         refetchApplications(); | ||||||
|  |         // eslint-disable-next-line
 | ||||||
|     }, []); |     }, []); | ||||||
| 
 | 
 | ||||||
|     if (!applications) { |     const filteredApplications = useMemo(() => { | ||||||
|  |         const regExp = new RegExp(filter, 'i'); | ||||||
|  |         return filter | ||||||
|  |             ? applications?.filter(a => regExp.test(a.appName)) | ||||||
|  |             : applications; | ||||||
|  |     }, [applications, filter]); | ||||||
|  | 
 | ||||||
|  |     const Empty = () => ( | ||||||
|  |         <React.Fragment> | ||||||
|  |             <section style={{ textAlign: 'center' }}> | ||||||
|  |                 <Warning /> <br /> | ||||||
|  |                 <br /> | ||||||
|  |                 Oh snap, it does not seem like you have connected any | ||||||
|  |                 applications. To connect your application to Unleash you will | ||||||
|  |                 require a Client SDK. | ||||||
|  |                 <br /> | ||||||
|  |                 <br /> | ||||||
|  |                 You can read more about how to use Unleash in your application | ||||||
|  |                 in the{' '} | ||||||
|  |                 <a href="https://docs.getunleash.io/docs/sdks/"> | ||||||
|  |                     documentation. | ||||||
|  |                 </a> | ||||||
|  |             </section> | ||||||
|  |         </React.Fragment> | ||||||
|  |     ); | ||||||
|  | 
 | ||||||
|  |     if (!filteredApplications) { | ||||||
|         return <CircularProgress variant="indeterminate" />; |         return <CircularProgress variant="indeterminate" />; | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|     return ( |     return ( | ||||||
|         <> |         <> | ||||||
|             <div className={commonStyles.searchField}> |             <div className={commonStyles.searchField}> | ||||||
|                 <SearchField |                 <SearchField value={filter} updateValue={setFilter} /> | ||||||
|                     value={this.props.settings.filter} |  | ||||||
|                     updateValue={this.props.updateSetting.bind(this, 'filter')} |  | ||||||
|                 /> |  | ||||||
|             </div> |             </div> | ||||||
|             <PageContent headerContent={<HeaderTitle title="Applications" />}> |             <PageContent headerContent={<HeaderTitle title="Applications" />}> | ||||||
|                 <div className={commonStyles.fullwidth}> |                 <div className={commonStyles.fullwidth}> | ||||||
|                     {applications.length > 0 ? ( |                     {filteredApplications.length > 0 ? ( | ||||||
|                         <AppsLinkList apps={applications} /> |                         <AppsLinkList apps={filteredApplications} /> | ||||||
|                     ) : ( |                     ) : ( | ||||||
|                         <Empty /> |                         <Empty /> | ||||||
|                     )} |                     )} | ||||||
| @ -42,29 +65,3 @@ const ApplicationList = () => { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| export default ApplicationList; | export default ApplicationList; | ||||||
| 
 |  | ||||||
| const Empty = () => ( |  | ||||||
|     <React.Fragment> |  | ||||||
|         <section style={{ textAlign: 'center' }}> |  | ||||||
|             <Warning /> <br /> |  | ||||||
|             <br /> |  | ||||||
|             Oh snap, it does not seem like you have connected any applications. |  | ||||||
|             To connect your application to Unleash you will require a Client |  | ||||||
|             SDK. |  | ||||||
|             <br /> |  | ||||||
|             <br /> |  | ||||||
|             You can read more about how to use Unleash in your application in |  | ||||||
|             the{' '} |  | ||||||
|             <a href="https://docs.getunleash.io/docs/sdks/">documentation.</a> |  | ||||||
|         </section> |  | ||||||
|     </React.Fragment> |  | ||||||
| ); |  | ||||||
| 
 |  | ||||||
| class ClientStrategies extends Component { |  | ||||||
|     static propTypes = { |  | ||||||
|         applications: PropTypes.array, |  | ||||||
|         fetchAll: PropTypes.func.isRequired, |  | ||||||
|         settings: PropTypes.object.isRequired, |  | ||||||
|         updateSetting: PropTypes.func.isRequired, |  | ||||||
|     }; |  | ||||||
| } |  | ||||||
|  | |||||||
| @ -8,8 +8,8 @@ import useApplicationsApi from '../../hooks/api/actions/useApplicationsApi/useAp | |||||||
| const ApplicationUpdate = ({ application }) => { | const ApplicationUpdate = ({ application }) => { | ||||||
|     const { storeApplicationMetaData } = useApplicationsApi(); |     const { storeApplicationMetaData } = useApplicationsApi(); | ||||||
|     const { appName, icon, url, description } = application; |     const { appName, icon, url, description } = application; | ||||||
|     const [localUrl, setLocalUrl] = useState(url); |     const [localUrl, setLocalUrl] = useState(url || ''); | ||||||
|     const [localDescription, setLocalDescription] = useState(description); |     const [localDescription, setLocalDescription] = useState(description || ''); | ||||||
|     const commonStyles = useCommonStyles(); |     const commonStyles = useCommonStyles(); | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|  | |||||||
| @ -34,8 +34,7 @@ const EditApplication = () => { | |||||||
|     const { refetchApplication, application } = useApplication(name); |     const { refetchApplication, application } = useApplication(name); | ||||||
|     const { appName, url, description, icon = 'apps', createdAt } = application; |     const { appName, url, description, icon = 'apps', createdAt } = application; | ||||||
|     const { hasAccess } = useContext(AccessContext); |     const { hasAccess } = useContext(AccessContext); | ||||||
|     const { storeApplicationMetaData, deleteApplication } = |     const { deleteApplication } = useApplicationsApi(); | ||||||
|         useApplicationsApi(); |  | ||||||
| 
 | 
 | ||||||
|     const [loading, setLoading] = useState(true); |     const [loading, setLoading] = useState(true); | ||||||
|     const [showDialog, setShowDialog] = useState(false); |     const [showDialog, setShowDialog] = useState(false); | ||||||
|  | |||||||
| @ -7,7 +7,7 @@ import SearchIcon from '@material-ui/icons/Search'; | |||||||
| 
 | 
 | ||||||
| import { useStyles } from './styles'; | import { useStyles } from './styles'; | ||||||
| 
 | 
 | ||||||
| function SearchField({ updateValue, className }) { | function SearchField({ updateValue, className = '' }) { | ||||||
|     const styles = useStyles(); |     const styles = useStyles(); | ||||||
| 
 | 
 | ||||||
|     const [localValue, setLocalValue] = useState(''); |     const [localValue, setLocalValue] = useState(''); | ||||||
|  | |||||||
| @ -8,7 +8,6 @@ import HistoryPage from '../../page/history'; | |||||||
| import HistoryTogglePage from '../../page/history/toggle'; | import HistoryTogglePage from '../../page/history/toggle'; | ||||||
| import ShowArchive from '../../page/archive/show'; | import ShowArchive from '../../page/archive/show'; | ||||||
| import Archive from '../../page/archive'; | import Archive from '../../page/archive'; | ||||||
| import Applications from '../../page/applications'; |  | ||||||
| import ContextFields from '../../page/context'; | import ContextFields from '../../page/context'; | ||||||
| import ListTagTypes from '../../page/tag-types'; | import ListTagTypes from '../../page/tag-types'; | ||||||
| import Addons from '../../page/addons'; | import Addons from '../../page/addons'; | ||||||
| @ -47,6 +46,7 @@ import CreateProject from '../project/Project/CreateProject/CreateProject'; | |||||||
| import CreateFeature from '../feature/CreateFeature/CreateFeature/CreateFeature'; | import CreateFeature from '../feature/CreateFeature/CreateFeature/CreateFeature'; | ||||||
| import EditFeature from '../feature/CreateFeature/EditFeature/EditFeature'; | import EditFeature from '../feature/CreateFeature/EditFeature/EditFeature'; | ||||||
| import EditApplication from '../application/EditApplication'; | import EditApplication from '../application/EditApplication'; | ||||||
|  | import ApplicationList from '../application/ApplicationList'; | ||||||
| 
 | 
 | ||||||
| export const routes = [ | export const routes = [ | ||||||
|     // Project
 |     // Project
 | ||||||
| @ -203,7 +203,7 @@ export const routes = [ | |||||||
|     { |     { | ||||||
|         path: '/applications', |         path: '/applications', | ||||||
|         title: 'Applications', |         title: 'Applications', | ||||||
|         component: Applications, |         component: ApplicationList, | ||||||
|         type: 'protected', |         type: 'protected', | ||||||
|         layout: 'main', |         layout: 'main', | ||||||
|         menu: { mobile: true, advanced: true }, |         menu: { mobile: true, advanced: true }, | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user