import { capitalizeFirstLetter } from "./stringUtils";

/**
 * Helper function to get duration since last check or the last date checked
 * @param {Array} checks Array of check objects.
 * @param {boolean} duration Whether the function should return the duration since last checked or the date itself
 * @returns {number} Timestamp of the most recent check.
 */
export const getLastChecked = (checks, duration = true) => {
	if (!checks || checks.length === 0) {
		return 0; // Handle case when no checks are available
	}

	// Data is sorted newest -> oldest, so newest check is the most recent
	if (!duration) {
		return new Date(checks[0].createdAt);
	}
	return new Date() - new Date(checks[0].createdAt);
};

export const parseDomainName = (url) => {
	url = url.replace(/^https?:\/\//, "");
	// Remove leading/trailing dots
	url = url.replace(/^\.+|\.+$/g, "");
	// Split by dots
	const parts = url.split(".");
	// Remove common prefixes and empty parts and exclude the last element of the array (the last element should be the TLD)
	const cleanParts = parts.filter((part) => part !== "www" && part !== "").slice(0, -1);
	// If there's more than one part, append the two words and capitalize the first letters (e.g. ["api", "test"] -> "Api Test")
	const domainPart =
		cleanParts.length > 1
			? cleanParts.map((part) => capitalizeFirstLetter(part)).join(" ")
			: capitalizeFirstLetter(cleanParts[0]);

	if (domainPart) return domainPart;

	return url;
};
