diff --git a/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileListItem/ProfileListItem.tsx b/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileListItem/ProfileListItem.tsx index 51c185c521..b61ea7c2f0 100644 --- a/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileListItem/ProfileListItem.tsx +++ b/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileListItem/ProfileListItem.tsx @@ -53,6 +53,21 @@ const ProfileDetails = ({ ); }; +const createProfileExtension = (profile: IMdmProfile) => { + if (isDDMProfile(profile)) { + return "json"; + } + return profile.platform === "darwin" ? "mobileconfig" : "xml"; +}; + +const createFileContent = async (profile: IMdmProfile) => { + const content = await mdmAPI.downloadProfile(profile.profile_uuid); + if (isDDMProfile(profile)) { + return JSON.stringify(content, null, 2); + } + return content; +}; + interface IProfileListItemProps { isPremium: boolean; profile: IMdmProfile; @@ -68,13 +83,13 @@ const ProfileListItem = ({ onDelete, setProfileLabelsModalData, }: IProfileListItemProps) => { - const { created_at, labels, name, platform, profile_uuid } = profile; + const { created_at, labels, name, platform } = profile; const subClass = "list-item"; const onClickDownload = async () => { - const fileContent = await mdmAPI.downloadProfile(profile_uuid); + const fileContent = await createFileContent(profile); const formatDate = format(new Date(), "yyyy-MM-dd"); - const extension = platform === "darwin" ? "mobileconfig" : "xml"; + const extension = createProfileExtension(profile); const filename = `${formatDate}_${name}.${extension}`; const file = new File([fileContent], filename); FileSaver.saveAs(file); diff --git a/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileUploader/components/AddProfileModal.tsx b/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileUploader/components/AddProfileModal.tsx index 883479185a..403ef83c16 100644 --- a/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileUploader/components/AddProfileModal.tsx +++ b/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileUploader/components/AddProfileModal.tsx @@ -52,7 +52,7 @@ const FileChooser = ({ { diff --git a/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileUploader/helpers.tsx b/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileUploader/helpers.tsx index 3f12067abf..bef5542e71 100644 --- a/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileUploader/helpers.tsx +++ b/frontend/pages/ManageControlsPage/OSSettings/cards/CustomSettings/components/ProfileUploader/helpers.tsx @@ -78,6 +78,9 @@ export const parseFile = async (file: File): Promise<[string, string]> => { // } return [name, "macOS"]; } + case "json": { + return [name, "macOS"]; + } default: { throw new Error(`Invalid file type: ${ext}`); } diff --git a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx index 11b2178bcf..4f03cb495a 100644 --- a/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx +++ b/frontend/pages/hosts/details/HostDetailsPage/HostDetailsPage.tsx @@ -753,30 +753,6 @@ const HostDetailsPage = ({ name: host?.mdm.macos_setup?.bootstrap_package_name, }; - // TODO: Remove this when API is ready - if (!host.mdm.profiles) { - host.mdm.profiles = []; - } else { - host.mdm.profiles = [ - createMockHostMdmProfile({ - name: "test.json", - status: "success", - }), - createMockHostMdmProfile({ - name: "test2.json", - status: "pending", - }), - createMockHostMdmProfile({ - name: "test3.json", - status: "failed", - }), - createMockHostMdmProfile({ - name: "test4.json", - status: "acknowledged", - }), - ]; - } - return ( <>