feat: refactor Pricing component to use context for pricing data and simplify props
This commit is contained in:
parent
65e58ab2db
commit
eb36e07076
1 changed files with 20 additions and 17 deletions
|
|
@ -64,7 +64,7 @@ import { handleConsegna } from "~/lib/annuncio_details";
|
|||
import { replaceWithBr } from "~/lib/newlineToBr";
|
||||
import { getStorageUrl } from "~/lib/storage_utils";
|
||||
import { cn } from "~/lib/utils";
|
||||
import { AnnuncioContext } from "~/providers/AnnuncioProvider";
|
||||
import { AnnuncioContext, useAnnuncio } from "~/providers/AnnuncioProvider";
|
||||
import { useTranslation } from "~/providers/I18nProvider";
|
||||
import { buildRicercaUrl } from "~/providers/RicercaProvider";
|
||||
import { useSession } from "~/providers/SessionProvider";
|
||||
|
|
@ -211,14 +211,7 @@ const AnnuncioView = ({ cod, flag }: Omit<AnnuncioProps, "meta">) => {
|
|||
{data.tipo &&
|
||||
(data.tipo === "Transitorio" || data.tipo === "Stabile") && (
|
||||
<>
|
||||
<Pricing
|
||||
isDesktop={isDesktop}
|
||||
tipologia={
|
||||
data.tipo === "Transitorio"
|
||||
? TipologiaPosizioneEnum.Transitorio
|
||||
: TipologiaPosizioneEnum.Stabile
|
||||
}
|
||||
/>
|
||||
<Pricing isDesktop={isDesktop} />
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
|
|
@ -282,15 +275,13 @@ export const getStaticPaths: GetStaticPaths = async () => {
|
|||
|
||||
export default AnnuncioDettaglio;
|
||||
|
||||
const Pricing = ({
|
||||
isDesktop,
|
||||
tipologia,
|
||||
}: {
|
||||
isDesktop: boolean;
|
||||
tipologia: TipologiaPosizioneEnum;
|
||||
}) => {
|
||||
const Pricing = ({ isDesktop }: { isDesktop: boolean }) => {
|
||||
const { t } = useTranslation();
|
||||
|
||||
const { prezzo, tipo } = useAnnuncio();
|
||||
const tipologia =
|
||||
tipo === "Transitorio"
|
||||
? TipologiaPosizioneEnum.Transitorio
|
||||
: TipologiaPosizioneEnum.Stabile;
|
||||
const { data: prezziario, isLoading } =
|
||||
api.prezziario.getPrezziPerTipologia.useQuery({
|
||||
tipologia,
|
||||
|
|
@ -328,6 +319,16 @@ const Pricing = ({
|
|||
secondPayment: s.prezzo_cent / 100,
|
||||
}));
|
||||
|
||||
//se stabile, mostra il prezzo basato sul canone in default
|
||||
const defaultValue =
|
||||
tipologia === TipologiaPosizioneEnum.Stabile
|
||||
? prezzo > 70000
|
||||
? 2
|
||||
: prezzo > 50000
|
||||
? 1
|
||||
: 0
|
||||
: undefined;
|
||||
|
||||
if (isDesktop) {
|
||||
return (
|
||||
<PricingComponent
|
||||
|
|
@ -336,6 +337,7 @@ const Pricing = ({
|
|||
"max-w-2xl **:data-[role=wrapper]:flex-wrap **:data-[role=amount]:text-2xl lg:**:data-[role=wrapper]:flex-nowrap xl:**:data-[role=amount]:text-3xl sm:[&_#contratto-link]:h-8 xl:[&_#contratto-link]:h-9",
|
||||
)}
|
||||
cta={cta}
|
||||
defaultValue={defaultValue}
|
||||
opzioni={opzioni}
|
||||
pricingData={pricing}
|
||||
statico={true}
|
||||
|
|
@ -370,6 +372,7 @@ const Pricing = ({
|
|||
<PricingComponent
|
||||
className={cn(style, "max-w-full")}
|
||||
cta={cta}
|
||||
defaultValue={defaultValue}
|
||||
opzioni={opzioni}
|
||||
pricingData={pricing}
|
||||
statico={true}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue