diff --git a/awx/ui_next/src/components/Schedule/ScheduleDetail.jsx b/awx/ui_next/src/components/Schedule/ScheduleDetail.jsx index a8aad4daf1..c6ae0b97c4 100644 --- a/awx/ui_next/src/components/Schedule/ScheduleDetail.jsx +++ b/awx/ui_next/src/components/Schedule/ScheduleDetail.jsx @@ -2,7 +2,6 @@ import React, { useCallback, useEffect } from 'react'; import { Link } from 'react-router-dom'; import { rrulestr } from 'rrule'; import styled from 'styled-components'; -import { shape } from 'prop-types'; import { withI18n } from '@lingui/react'; import { t } from '@lingui/macro'; import { Schedule } from '@types'; @@ -21,7 +20,7 @@ const PromptTitle = styled(Title)` --pf-c-title--m-md--FontWeight: 700; `; -function ScheduleDetail({ preview, schedule, i18n }) { +function ScheduleDetail({ schedule, i18n }) { const { id, created, @@ -44,21 +43,26 @@ function ScheduleDetail({ preview, schedule, i18n }) { } = schedule; const { - result: credentials, + result: [credentials, preview], isLoading, error, - request: fetchCredentials, + request: fetchCredentialsAndPreview, } = useRequest( useCallback(async () => { - const { data } = await SchedulesAPI.readCredentials(id); - return data.results; - }, [id]), + const [{ data }, { data: schedulePreview }] = await Promise.all([ + SchedulesAPI.readCredentials(id), + SchedulesAPI.createPreview({ + rrule, + }), + ]); + return [data.results, schedulePreview]; + }, [id, rrule]), [] ); useEffect(() => { - fetchCredentials(); - }, [fetchCredentials]); + fetchCredentialsAndPreview(); + }, [fetchCredentialsAndPreview]); const rule = rrulestr(rrule); const repeatFrequency = @@ -192,12 +196,7 @@ function ScheduleDetail({ preview, schedule, i18n }) { } ScheduleDetail.propTypes = { - preview: shape(), schedule: Schedule.isRequired, }; -ScheduleDetail.defaultProps = { - preview: { local: [], utc: [] }, -}; - export default withI18n()(ScheduleDetail); diff --git a/awx/ui_next/src/components/Schedule/ScheduleDetail.test.jsx b/awx/ui_next/src/components/Schedule/ScheduleDetail.test.jsx index 0dbe6ff6bb..d67ff21fc2 100644 --- a/awx/ui_next/src/components/Schedule/ScheduleDetail.test.jsx +++ b/awx/ui_next/src/components/Schedule/ScheduleDetail.test.jsx @@ -52,10 +52,12 @@ const schedule = { next_run: '2020-03-16T04:00:00Z', }; -const preview = { - local: [], - utc: [], -}; +SchedulesAPI.createPreview.mockResolvedValue({ + data: { + local: [], + utc: [], + }, +}); describe('', () => { let wrapper; @@ -76,9 +78,7 @@ describe('', () => { wrapper = mountWithContexts( ( - - )} + component={() => } />, { context: { @@ -159,9 +159,7 @@ describe('', () => { wrapper = mountWithContexts( ( - - )} + component={() => } />, { context: { @@ -243,9 +241,7 @@ describe('', () => { wrapper = mountWithContexts( ( - - )} + component={() => } />, { context: { diff --git a/awx/ui_next/src/screens/Template/JobTemplateSchedule/JobTemplateSchedule.jsx b/awx/ui_next/src/screens/Template/JobTemplateSchedule/JobTemplateSchedule.jsx index 134ee37ffb..9a70207bc8 100644 --- a/awx/ui_next/src/screens/Template/JobTemplateSchedule/JobTemplateSchedule.jsx +++ b/awx/ui_next/src/screens/Template/JobTemplateSchedule/JobTemplateSchedule.jsx @@ -22,7 +22,6 @@ import { SchedulesAPI } from '@api'; function JobTemplateSchedule({ i18n, setBreadcrumb, jobTemplate }) { const [jobTemplateSchedule, setJobTemplateSchedule] = useState(null); - const [schedulePreview, setSchedulePreview] = useState(null); const [contentLoading, setContentLoading] = useState(true); const [contentError, setContentError] = useState(null); const { id: jobTemplateId, scheduleId } = useParams(); @@ -32,12 +31,7 @@ function JobTemplateSchedule({ i18n, setBreadcrumb, jobTemplate }) { const loadData = async () => { try { const { data } = await SchedulesAPI.readDetail(scheduleId); - const { data: preview } = await SchedulesAPI.createPreview({ - rrule: data.rrule, - }); - setJobTemplateSchedule(data); - setSchedulePreview(preview); setBreadcrumb(jobTemplate, data); } catch (err) { setContentError(err); @@ -122,12 +116,7 @@ function JobTemplateSchedule({ i18n, setBreadcrumb, jobTemplate }) { key="details" path="/templates/job_template/:id/schedules/:scheduleId/details" render={() => { - return ( - - ); + return ; }} />, ]}