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

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

export const getPublicUser = (user: User): PublicUser => {
	return {
		firstname: user.firstname,
		lastname: user.lastname
			.split(" ")
			.map((part) => `${part[0]}.`)
			.join(" "), // Only take the first part of the name
		fullName: `${user.firstname} ${user.lastname
			.split(" ")
			.map((part) => `${part[0]}.`)
			.join(" ")}`,
		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;
};
