fleet/frontend/components/ActivityDetails/InstallDetails/constants.ts
jacobshandling d9f7935fce
UI – Uninstall features for host details, install/uninstall actions, activity feed, misc other items (#21933)
## #21566 - Host details updates for Uninstall packages

details > software page. Full tasks outlined in the issue, [Figma
here](https://www.figma.com/design/ToQaK2yUJwDyzagTdrbOfX/%2320320-Uninstall-packages?node-id=5364-13173&m=dev)

**Updated install status tooltips:**

![install-status-tooltips](https://github.com/user-attachments/assets/9869c7d6-f953-4adc-9692-52f5dad9d81a)

**Uninstall action:**

![uninstall-action](https://github.com/user-attachments/assets/189d5755-556c-48ca-8824-08db14ec95d4)

**Update install details:**
![Screenshot 2024-09-09 at 1 12
58 PM](https://github.com/user-attachments/assets/f52b349b-9f01-49d4-b952-6efd60f29979)


## #21931 - updated specs for install/uninstall states

## #21568 - activity feed items for Uninstall
![Screenshot 2024-09-09 at 5 00
07 PM](https://github.com/user-attachments/assets/eb61949a-9f8d-4b9e-a437-2d31a6808f07)
![Screenshot 2024-09-09 at 5 42
52 PM](https://github.com/user-attachments/assets/a8c2de0e-27e3-4d2b-bf69-702ea7b72e48)
![Screenshot 2024-09-09 at 5 43
03 PM](https://github.com/user-attachments/assets/b6127ed3-6fcf-439e-aa3d-91038a025d92)

## #21567 - Uninstall details modal
![Screenshot 2024-09-10 at 7 42
18 PM](https://github.com/user-attachments/assets/a42e4e4a-eadd-4e75-84c5-c5f6a6230950)
_remaining TODO_:
  - [x] manually QA 'failed' states
- [x] determine where to source timestamp from for uninstall activities

- [x] Manual QA for all new/changed functionality

---------

Co-authored-by: Jacob Shandling <jacob@fleetdm.com>
Co-authored-by: Victor Lyuboslavsky <victor@fleetdm.com>
2024-09-12 11:51:59 -04:00

45 lines
1.3 KiB
TypeScript

import { IconNames } from "components/icons";
import { SoftwareInstallStatus } from "interfaces/software";
export const INSTALL_DETAILS_STATUS_ICONS: Record<
SoftwareInstallStatus,
IconNames
> = {
pending_install: "pending-outline",
installed: "success-outline",
uninstalled: "success-outline",
failed_install: "error-outline",
pending_uninstall: "pending-outline",
failed_uninstall: "error-outline",
} as const;
const INSTALL_DETAILS_STATUS_PREDICATES: Record<
SoftwareInstallStatus,
string
> = {
pending_install: "is installing or will install",
installed: "installed",
uninstalled: "uninstalled",
failed_install: "failed to install",
pending_uninstall: "is uninstalling or will uninstall",
failed_uninstall: "failed to uninstall",
} as const;
export const getInstallDetailsStatusPredicate = (
status: string | undefined
) => {
if (!status) {
return INSTALL_DETAILS_STATUS_PREDICATES.pending_install;
}
return (
INSTALL_DETAILS_STATUS_PREDICATES[
status.toLowerCase() as SoftwareInstallStatus
] || INSTALL_DETAILS_STATUS_PREDICATES.pending_install
);
};
export const SOFTWARE_INSTALL_OUTPUT_DISPLAY_LABELS = {
pre_install_query_output: "Pre-install condition",
output: "Software install output",
post_install_script_output: "Post-install script output",
} as const;