Skip to content

useTypeCard

  • Devuelve el texto del boton corrrespondiente al tipo de layout de una tarjeta
// Importa los tipos necesarios
import type { CardLocales } from '@/interfaces/cards'
import type { ButtonTypes } from '@/types/shared/common'
/**
* Devuelve el texto del botón correspondiente al tipo de layout de una tarjeta.
*
* @param cardLayoutType - Tipo de diseño de la tarjeta, debe ser una clave válida de ButtonTypes (por ejemplo: 'episode', 'course', etc.)
* @param cardLocales - Objeto con los textos localizados para los botones de las tarjetas.
* @returns Un objeto con el texto adecuado para el botón según el tipo de tarjeta.
*/
export function useTypeButton(
cardLayoutType: keyof ButtonTypes,
cardLocales: CardLocales,
) {
// Variable que almacenará el texto del botón
let typeButton = ''
// Extrae los textos localizados para cada tipo de botón desde el objeto cardLocales.buttons
const {
course,
direct,
episode,
master,
medium,
ondemand,
pack,
serie,
video,
soon,
pdf,
} = cardLocales.buttons
// Mapeo entre el tipo de diseño y el texto correspondiente
const buttonTypesMap: { [key in keyof ButtonTypes]: string } = {
episode,
pack,
serie,
course,
master,
direct,
ondemand,
video,
medium,
soon,
pdf,
}
// Asigna el texto según el tipo de tarjeta
typeButton = buttonTypesMap[cardLayoutType]
// Devuelve el texto del botón
return {
typeButton,
}
}
const cardLocales = {
buttons: {
episode: "Ver episodio",
pack: "Comprar pack",
serie: "Ver serie",
course: "Acceder al curso",
master: "Ver máster",
direct: "En directo",
ondemand: "Bajo demanda",
video: "Ver video",
medium: "Ver medio",
soon: "Próximamente",
pdf: "Descargar PDF",
},
};
const { typeButton } = useTypeButton("video", cardLocales);
console.log(typeButton); // "Ver video"