From e343c9698d25936e9fbcef7e96fb21009d078ae3 Mon Sep 17 00:00:00 2001 From: mabashian Date: Wed, 29 Jul 2020 09:09:27 -0400 Subject: [PATCH 1/2] Converts ProjectsList to use useRequest in preparation for advanced search --- .../NodeModals/NodeTypeStep/ProjectsList.jsx | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx index bb8d58006e..99369aa94f 100644 --- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx +++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx @@ -1,10 +1,11 @@ -import React, { useState, useEffect } from 'react'; +import React, { useEffect, useCallback } from 'react'; import { useLocation } from 'react-router-dom'; import { withI18n } from '@lingui/react'; import { t } from '@lingui/macro'; import { func, shape } from 'prop-types'; import { ProjectsAPI } from '../../../../../../api'; import { getQSConfig, parseQueryString } from '../../../../../../util/qs'; +import useRequest from '../../../../../../util/useRequest'; import PaginatedDataList from '../../../../../../components/PaginatedDataList'; import DataListToolbar from '../../../../../../components/DataListToolbar'; import CheckboxListItem from '../../../../../../components/CheckboxListItem'; @@ -16,30 +17,31 @@ const QS_CONFIG = getQSConfig('projects', { }); function ProjectsList({ i18n, nodeResource, onUpdateNodeResource }) { - const [count, setCount] = useState(0); - const [error, setError] = useState(null); - const [isLoading, setIsLoading] = useState(true); - const [projects, setProjects] = useState([]); - const location = useLocation(); - useEffect(() => { - (async () => { - setIsLoading(true); - setProjects([]); - setCount(0); + const { + result: { projects, count }, + error, + isLoading, + request: fetchProjects, + } = useRequest( + useCallback(async () => { const params = parseQueryString(QS_CONFIG, location.search); - try { - const { data } = await ProjectsAPI.read(params); - setProjects(data.results); - setCount(data.count); - } catch (err) { - setError(err); - } finally { - setIsLoading(false); - } - })(); - }, [location]); + const results = await ProjectsAPI.read(params); + return { + projects: results.data.results, + count: results.data.count, + }; + }, [location]), + { + projects: [], + count: 0, + } + ); + + useEffect(() => { + fetchProjects(); + }, [fetchProjects]); return ( Date: Wed, 29 Jul 2020 11:43:28 -0400 Subject: [PATCH 2/2] Update capitalization to match PF guidelines --- .../Modals/NodeModals/NodeTypeStep/ProjectsList.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx index 99369aa94f..f82018cf59 100644 --- a/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx +++ b/awx/ui_next/src/screens/Template/WorkflowJobTemplateVisualizer/Modals/NodeModals/NodeTypeStep/ProjectsList.jsx @@ -83,15 +83,15 @@ function ProjectsList({ i18n, nodeResource, onUpdateNodeResource }) { ], }, { - name: i18n._(t`Source Control URL`), + name: i18n._(t`Source control URL`), key: 'scm_url', }, { - name: i18n._(t`Modified By (Username)`), + name: i18n._(t`Modified by (username)`), key: 'modified_by__username', }, { - name: i18n._(t`Created By (Username)`), + name: i18n._(t`Created by (username)`), key: 'created_by__username', }, ]}