[unreleased bug] Fleet UI: Automated queries policies (#18774)

This commit is contained in:
RachelElysia 2024-05-06 16:40:19 -04:00 committed by RachelElysia
parent 973b0780d4
commit 8e9adb0889
2 changed files with 42 additions and 22 deletions

View file

@ -18,6 +18,7 @@ import {
ILoadAllPoliciesResponse,
ILoadTeamPoliciesResponse,
IPoliciesCountResponse,
IPolicy,
} from "interfaces/policy";
import { ITeamConfig } from "interfaces/team";
@ -133,8 +134,10 @@ const ManagePolicyPage = ({
const [showAddPolicyModal, setShowAddPolicyModal] = useState(false);
const [showDeletePolicyModal, setShowDeletePolicyModal] = useState(false);
const [showCalendarEventsModal, setShowCalendarEventsModal] = useState(false);
const [teamPolicies, setTeamPolicies] = useState<IPolicyStats[]>();
const [
policiesAvailableToAutomate,
setPoliciesAvailableToAutomate,
] = useState<IPolicyStats[]>([]);
// Functions to avoid race conditions
const initialSearchQuery = (() => queryParams.query ?? "")();
@ -214,6 +217,9 @@ const ManagePolicyPage = ({
enabled: isRouteOk && !isAnyTeamSelected,
select: (data) => data.policies,
staleTime: 5000,
onSuccess: (data) => {
setPoliciesAvailableToAutomate(data);
},
}
);
@ -240,13 +246,14 @@ const ManagePolicyPage = ({
);
const {
data: teamPolicies,
error: teamPoliciesError,
isFetching: isFetchingTeamPolicies,
refetch: refetchTeamPolicies,
} = useQuery<
ILoadTeamPoliciesResponse,
Error,
ILoadTeamPoliciesResponse,
IPolicyStats[],
ITeamPoliciesQueryKey[]
>(
[
@ -266,8 +273,12 @@ const ManagePolicyPage = ({
},
{
enabled: isRouteOk && isPremiumTier && !!teamIdForApi,
select: (data: ILoadTeamPoliciesResponse) => data.policies,
onSuccess: (data) => {
setTeamPolicies(data.policies);
const allPoliciesAvailableToAutomate = data.filter(
(policy: IPolicy) => policy.team_id === currentTeamId
);
setPoliciesAvailableToAutomate(allPoliciesAvailableToAutomate);
},
}
);
@ -328,12 +339,10 @@ const ManagePolicyPage = ({
}
);
const canAddOrDeletePolicy: boolean =
const canAddOrDeletePolicy =
isGlobalAdmin || isGlobalMaintainer || isTeamMaintainer || isTeamAdmin;
const canManageAutomations: boolean = isGlobalAdmin || isTeamAdmin;
const hasPoliciesToAutomateOrDelete: boolean = teamIdForApi
? !isFetchingTeamCount && !!teamPoliciesCount && teamPoliciesCount > 0
: !!globalPoliciesCount && globalPoliciesCount > 0;
const canManageAutomations = isGlobalAdmin || isTeamAdmin;
const hasPoliciesToAutomateOrDelete = policiesAvailableToAutomate.length > 0;
const {
data: config,
@ -513,7 +522,7 @@ const ManagePolicyPage = ({
// update changed policies calendar events enabled
const changedPolicies = formData.policies.filter((formPolicy) => {
const prevPolicyState = teamPolicies?.find(
const prevPolicyState = policiesAvailableToAutomate.find(
(policy) => policy.id === formPolicy.id
);
return (
@ -588,9 +597,6 @@ const ManagePolicyPage = ({
}
};
const availablePoliciesForAutomation =
(isAnyTeamSelected ? teamPolicies : globalPolicies) || [];
const policiesErrors = isAnyTeamSelected
? teamPoliciesError
: globalPoliciesError;
@ -801,7 +807,7 @@ const ManagePolicyPage = ({
<OtherWorkflowsModal
automationsConfig={automationsConfig}
availableIntegrations={config.integrations}
availablePolicies={availablePoliciesForAutomation}
availablePolicies={policiesAvailableToAutomate}
isUpdatingAutomations={isUpdatingAutomations}
onExit={toggleOtherWorkflowsModal}
handleSubmit={handleUpdateOtherWorkflows}
@ -834,7 +840,7 @@ const ManagePolicyPage = ({
?.enable_calendar_events ?? false
}
url={teamConfig?.integrations.google_calendar?.webhook_url || ""}
policies={teamPolicies || []}
policies={policiesAvailableToAutomate}
isUpdating={updatingPolicyEnabledCalendarEvents}
/>
)}

View file

@ -117,6 +117,9 @@ const ManageQueriesPage = ({
const [showPreviewDataModal, setShowPreviewDataModal] = useState(false);
const [isUpdatingQueries, setIsUpdatingQueries] = useState(false);
const [isUpdatingAutomations, setIsUpdatingAutomations] = useState(false);
const [queriesAvailableToAutomate, setQueriesAvailableToAutomate] = useState<
IEnhancedQuery[] | []
>([]);
const {
data: enhancedQueries,
@ -138,6 +141,19 @@ const ManageQueriesPage = ({
refetchOnWindowFocus: false,
enabled: isRouteOk,
staleTime: 5000,
onSuccess: (data) => {
if (data) {
const enhancedAllQueries = data.map(enhanceQuery);
const allQueriesAvailableToAutomate = teamIdForApi
? enhancedAllQueries.filter(
(query: IEnhancedQuery) => query.team_id === currentTeamId
)
: enhancedAllQueries;
setQueriesAvailableToAutomate(allQueriesAvailableToAutomate);
}
},
}
);
@ -150,12 +166,10 @@ const ManageQueriesPage = ({
}, [teamIdForApi, enhancedQueries]);
const automatedQueryIds = useMemo(() => {
return enhancedQueries
? enhancedQueries
.filter((query) => query.automations_enabled)
.map((query) => query.id)
: [];
}, [enhancedQueries]);
return queriesAvailableToAutomate
.filter((query) => query.automations_enabled)
.map((query) => query.id);
}, [queriesAvailableToAutomate]);
useEffect(() => {
const path = location.pathname + location.search;
@ -330,7 +344,7 @@ const ManageQueriesPage = ({
onCancel={toggleManageAutomationsModal}
isShowingPreviewDataModal={showPreviewDataModal}
togglePreviewDataModal={togglePreviewDataModal}
availableQueries={enhancedQueries}
availableQueries={queriesAvailableToAutomate}
automatedQueryIds={automatedQueryIds}
logDestination={config?.logging.result.plugin || ""}
/>