import { User } from "../../generated/client";

export interface PublicUser {
	firstname: string;
	lastname: string;
	publicId: string;
	badges: string[];
	fullName: string;
}

export const DISCORD_ROLES = {
	ONLINE_DISPATCHER: "1287399540390891571",
	ONLINE_PILOT: "1287399540390891571",
	DISPATCHER: "1081247459994501222",
	PILOT: "1081247405304975390",
};

export const getPublicUser = (
	user: User,
	options = {
		ignorePrivacy: false,
	},
): PublicUser => {
	const lastName = user.lastname
		.trim()
		.split(" ")
		.map((part) => `${part[0] || ""}.`)
		.join(" ");

	return {
		firstname: user.firstname,
		lastname: user.settingsHideLastname && !options.ignorePrivacy ? "" : lastName.trim(), // Only take the first letter of each section of the last name
		fullName:
			`${user.firstname} ${user.settingsHideLastname && !options.ignorePrivacy ? "" : lastName}`.trim(),
		publicId: user.publicId,
		badges: user.badges,
	};
};

export const asPublicUser = (publicUSerJson: unknown): PublicUser => {
	if (typeof publicUSerJson !== "object" || publicUSerJson === null) {
		throw new Error("Invalid JSON format for PublicUser");
	}
	return publicUSerJson as PublicUser;
};
