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 { replaceWithBr } from "~/lib/newlineToBr";
|
||||||
import { getStorageUrl } from "~/lib/storage_utils";
|
import { getStorageUrl } from "~/lib/storage_utils";
|
||||||
import { cn } from "~/lib/utils";
|
import { cn } from "~/lib/utils";
|
||||||
import { AnnuncioContext } from "~/providers/AnnuncioProvider";
|
import { AnnuncioContext, useAnnuncio } from "~/providers/AnnuncioProvider";
|
||||||
import { useTranslation } from "~/providers/I18nProvider";
|
import { useTranslation } from "~/providers/I18nProvider";
|
||||||
import { buildRicercaUrl } from "~/providers/RicercaProvider";
|
import { buildRicercaUrl } from "~/providers/RicercaProvider";
|
||||||
import { useSession } from "~/providers/SessionProvider";
|
import { useSession } from "~/providers/SessionProvider";
|
||||||
|
|
@ -211,14 +211,7 @@ const AnnuncioView = ({ cod, flag }: Omit<AnnuncioProps, "meta">) => {
|
||||||
{data.tipo &&
|
{data.tipo &&
|
||||||
(data.tipo === "Transitorio" || data.tipo === "Stabile") && (
|
(data.tipo === "Transitorio" || data.tipo === "Stabile") && (
|
||||||
<>
|
<>
|
||||||
<Pricing
|
<Pricing isDesktop={isDesktop} />
|
||||||
isDesktop={isDesktop}
|
|
||||||
tipologia={
|
|
||||||
data.tipo === "Transitorio"
|
|
||||||
? TipologiaPosizioneEnum.Transitorio
|
|
||||||
: TipologiaPosizioneEnum.Stabile
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -282,15 +275,13 @@ export const getStaticPaths: GetStaticPaths = async () => {
|
||||||
|
|
||||||
export default AnnuncioDettaglio;
|
export default AnnuncioDettaglio;
|
||||||
|
|
||||||
const Pricing = ({
|
const Pricing = ({ isDesktop }: { isDesktop: boolean }) => {
|
||||||
isDesktop,
|
|
||||||
tipologia,
|
|
||||||
}: {
|
|
||||||
isDesktop: boolean;
|
|
||||||
tipologia: TipologiaPosizioneEnum;
|
|
||||||
}) => {
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
const { prezzo, tipo } = useAnnuncio();
|
||||||
|
const tipologia =
|
||||||
|
tipo === "Transitorio"
|
||||||
|
? TipologiaPosizioneEnum.Transitorio
|
||||||
|
: TipologiaPosizioneEnum.Stabile;
|
||||||
const { data: prezziario, isLoading } =
|
const { data: prezziario, isLoading } =
|
||||||
api.prezziario.getPrezziPerTipologia.useQuery({
|
api.prezziario.getPrezziPerTipologia.useQuery({
|
||||||
tipologia,
|
tipologia,
|
||||||
|
|
@ -328,6 +319,16 @@ const Pricing = ({
|
||||||
secondPayment: s.prezzo_cent / 100,
|
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) {
|
if (isDesktop) {
|
||||||
return (
|
return (
|
||||||
<PricingComponent
|
<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",
|
"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}
|
cta={cta}
|
||||||
|
defaultValue={defaultValue}
|
||||||
opzioni={opzioni}
|
opzioni={opzioni}
|
||||||
pricingData={pricing}
|
pricingData={pricing}
|
||||||
statico={true}
|
statico={true}
|
||||||
|
|
@ -370,6 +372,7 @@ const Pricing = ({
|
||||||
<PricingComponent
|
<PricingComponent
|
||||||
className={cn(style, "max-w-full")}
|
className={cn(style, "max-w-full")}
|
||||||
cta={cta}
|
cta={cta}
|
||||||
|
defaultValue={defaultValue}
|
||||||
opzioni={opzioni}
|
opzioni={opzioni}
|
||||||
pricingData={pricing}
|
pricingData={pricing}
|
||||||
statico={true}
|
statico={true}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue