import React from "react";
import { API_NO_TEAM_ID, ITeamConfig } from "interfaces/team";
import { IConfig } from "interfaces/config";
import { ApplePlatform } from "interfaces/platform";
import SectionHeader from "components/SectionHeader";
import Spinner from "components/Spinner";
import WindowsTargetForm from "../WindowsTargetForm";
import PlatformTabs from "../PlatformTabs";
import { OSUpdatesTargetPlatform } from "../../OSUpdates";
const baseClass = "os-updates-target-section";
type GetDefaultFnParams = {
osType?: ApplePlatform;
currentTeamId: number;
appConfig: IConfig;
teamConfig?: ITeamConfig;
};
const getDefaultOSVersion = ({
osType,
currentTeamId,
appConfig,
teamConfig,
}: GetDefaultFnParams) => {
const mdmData =
currentTeamId === API_NO_TEAM_ID ? appConfig?.mdm : teamConfig?.mdm;
switch (osType) {
case "darwin":
return mdmData?.macos_updates.minimum_version ?? "";
case "ios":
return mdmData?.ios_updates.minimum_version ?? "";
case "ipados":
return mdmData?.ipados_updates.minimum_version ?? "";
default:
return "";
}
};
const getDefaultDeadline = ({
osType,
currentTeamId,
appConfig,
teamConfig,
}: GetDefaultFnParams) => {
const mdmData =
currentTeamId === API_NO_TEAM_ID ? appConfig?.mdm : teamConfig?.mdm;
switch (osType) {
case "darwin":
return mdmData?.macos_updates.deadline ?? "";
case "ios":
return mdmData?.ios_updates.deadline ?? "";
case "ipados":
return mdmData?.ipados_updates.deadline ?? "";
default:
return "";
}
};
const getDefaultWindowsDeadlineDays = ({
currentTeamId,
appConfig,
teamConfig,
}: GetDefaultFnParams) => {
return currentTeamId === API_NO_TEAM_ID
? appConfig.mdm.windows_updates.deadline_days?.toString() ?? ""
: teamConfig?.mdm?.windows_updates.deadline_days?.toString() ?? "";
};
const getDefaultWindowsGracePeriodDays = ({
currentTeamId,
appConfig,
teamConfig,
}: GetDefaultFnParams) => {
return currentTeamId === API_NO_TEAM_ID
? appConfig.mdm.windows_updates.grace_period_days?.toString() ?? ""
: teamConfig?.mdm?.windows_updates.grace_period_days?.toString() ?? "";
};
interface ITargetSectionProps {
appConfig: IConfig;
currentTeamId: number;
isFetching: boolean;
selectedPlatform: OSUpdatesTargetPlatform;
teamConfig?: ITeamConfig;
onSelectPlatform: (platform: OSUpdatesTargetPlatform) => void;
refetchAppConfig: () => void;
refetchTeamConfig: () => void;
}
const TargetSection = ({
appConfig,
currentTeamId,
isFetching,
selectedPlatform,
teamConfig,
onSelectPlatform,
refetchAppConfig,
refetchTeamConfig,
}: ITargetSectionProps) => {
if (isFetching) {
return