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 ;
}}
/>,
]}