mirror of
https://github.com/fleetdm/fleet
synced 2026-04-26 07:57:29 +00:00
59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
import { ReactElement } from "react";
|
|
import { getErrorReason } from "interfaces/errors";
|
|
import { IMdmVppToken } from "interfaces/mdm";
|
|
|
|
import {
|
|
ADD_SOFTWARE_ERROR_PREFIX,
|
|
DEFAULT_ADD_SOFTWARE_ERROR_MESSAGE,
|
|
ensurePeriod,
|
|
formatAlreadyAvailableInstallMessage,
|
|
} from "../helpers";
|
|
|
|
/**
|
|
* Checks if the given team has an available VPP token (either a token
|
|
* that's associated with the team, or a token that's available to "All
|
|
* teams")
|
|
*/
|
|
export const teamHasVPPToken = (
|
|
currentTeamId: number,
|
|
tokens?: IMdmVppToken[]
|
|
) => {
|
|
if (!tokens || tokens.length === 0) {
|
|
return false;
|
|
}
|
|
|
|
return tokens.some((token) => {
|
|
// if we've got a non-null, empty array it means the token is available for
|
|
// "All teams"
|
|
if (token.teams?.length === 0) {
|
|
return true;
|
|
}
|
|
|
|
return token.teams?.some((team) => team.team_id === currentTeamId);
|
|
});
|
|
};
|
|
|
|
// eslint-disable-next-line import/prefer-default-export
|
|
export const getErrorMessage = (e: unknown): string | ReactElement => {
|
|
const reason = getErrorReason(e);
|
|
|
|
// software is already available for install
|
|
if (reason.toLowerCase().includes("already")) {
|
|
const alreadyAvailableMessage = formatAlreadyAvailableInstallMessage(
|
|
reason
|
|
);
|
|
if (alreadyAvailableMessage) {
|
|
return alreadyAvailableMessage;
|
|
}
|
|
|
|
if (reason.includes("VPPApp")) {
|
|
return `${ADD_SOFTWARE_ERROR_PREFIX} The software is already available to install on this team.`;
|
|
}
|
|
}
|
|
|
|
if (reason) {
|
|
return `${ADD_SOFTWARE_ERROR_PREFIX} ${ensurePeriod(reason)}`;
|
|
}
|
|
|
|
return DEFAULT_ADD_SOFTWARE_ERROR_MESSAGE;
|
|
};
|