diff --git a/src/components/molecules/ActorHero/index.tsx b/src/components/molecules/ActorHero/index.tsx index 80bae35..c613b77 100644 --- a/src/components/molecules/ActorHero/index.tsx +++ b/src/components/molecules/ActorHero/index.tsx @@ -1,6 +1,7 @@ "use client"; import { BackButton } from "@/components/atoms/BackButton"; +import { formatter } from "@/helpers/formater"; import { PersonDetailsRich } from "@/lib/tmdb/types"; import { FC } from "react"; import { @@ -21,14 +22,6 @@ type Props = { }; export const ActorHero: FC = ({ personDetails }) => { - const formatDate = (dateString: string) => { - return new Date(dateString).toLocaleDateString("pl-PL", { - year: "numeric", - month: "long", - day: "numeric", - }); - }; - const calculateAge = (birthday: string, deathday?: string | null) => { const birth = new Date(birthday); const end = deathday ? new Date(deathday) : new Date(); @@ -141,7 +134,9 @@ export const ActorHero: FC = ({ personDetails }) => {
- {formatDate(personDetails.birthday)} + + {formatter.formatDate(personDetails.birthday)} +
)} @@ -152,7 +147,9 @@ export const ActorHero: FC = ({ personDetails }) => {
Data śmierci: - {formatDate(personDetails.deathday)} + + {formatter.formatDate(personDetails.deathday)} +
)} diff --git a/src/components/molecules/HeroMovie/index.tsx b/src/components/molecules/HeroMovie/index.tsx index 67570bf..6f3da80 100644 --- a/src/components/molecules/HeroMovie/index.tsx +++ b/src/components/molecules/HeroMovie/index.tsx @@ -14,6 +14,7 @@ import { FaEye, } from "react-icons/fa"; import { convertToMovie } from "@/helpers/convertToMovie"; +import { formatter } from "@/helpers/formater"; type Props = { movieDetails: MovieDetailsRich; @@ -29,12 +30,6 @@ export const HeroMovie: FC = ({ movieDetails }) => { const isSeen = movieInStore?.seen || false; const loading = movies.length === 0; - const formatRuntime = (minutes: number) => { - const hours = Math.floor(minutes / 60); - const mins = minutes % 60; - return `${hours}h ${mins}m`; - }; - const convertedMovie = convertToMovie(movieDetails); // Convert TMDB movie to our Movie type. @@ -152,7 +147,9 @@ export const HeroMovie: FC = ({ movieDetails }) => { {movieDetails.runtime && (
- {formatRuntime(movieDetails.runtime)} + + {formatter.formatRuntime(movieDetails.runtime)} +
)} diff --git a/src/components/molecules/MovieCast/index.tsx b/src/components/molecules/MovieCast/index.tsx index 471ba03..15a0bc4 100644 --- a/src/components/molecules/MovieCast/index.tsx +++ b/src/components/molecules/MovieCast/index.tsx @@ -4,6 +4,7 @@ import { Button } from "@/components/atoms/Button"; import { MovieDetailsRich } from "@/lib/tmdb/types"; import { FC, useState } from "react"; import { FaDollarSign } from "react-icons/fa"; +import { formatter } from "@/helpers/formater"; type Props = { movieDetails: MovieDetailsRich; @@ -109,7 +110,7 @@ export const MovieCast: FC = ({ movieDetails }) => { Budżet: - {formatCurrency(movieDetails.budget)} + {formatter.formatCurrency(movieDetails.budget)} )} @@ -118,7 +119,7 @@ export const MovieCast: FC = ({ movieDetails }) => { Przychody: - {formatCurrency(movieDetails.revenue)} + {formatter.formatCurrency(movieDetails.revenue)} )} @@ -127,7 +128,7 @@ export const MovieCast: FC = ({ movieDetails }) => { Zysk: - {formatCurrency( + {formatter.formatCurrency( movieDetails.revenue - movieDetails.budget )} diff --git a/src/helpers/formater/index.ts b/src/helpers/formater/index.ts new file mode 100644 index 0000000..9b014eb --- /dev/null +++ b/src/helpers/formater/index.ts @@ -0,0 +1,27 @@ +export const formatter = { + formatDate: (dateString: string) => { + const date = new Date(dateString); + return date.toLocaleDateString("pl-PL", { + day: "2-digit", + month: "2-digit", + year: "numeric", + }); + }, + formatCurrency: (amount: number) => { + return new Intl.NumberFormat("pl-PL", { + style: "currency", + currency: "PLN", + }).format(amount); + }, + formatPopularity: (popularity: number) => { + return Math.round(popularity); + }, + formatVoteAverage: (voteAverage: number) => { + return voteAverage.toFixed(1); + }, + formatRuntime: (runtime: number) => { + const hours = Math.floor(runtime / 60); + const minutes = runtime % 60; + return `${hours}h ${minutes}m`; + }, +};