67 lines
2.3 KiB
TypeScript
67 lines
2.3 KiB
TypeScript
// Metro module 6563 (f6564).
|
|
import { useEffect, useState, useRef } from "react";
|
|
import UserOfferStore from "../../../stores/billing/UserOfferStore";
|
|
import PromotionsStore from "../promotions/PromotionsStore";
|
|
import { maybeFetchActivePromotions } from "../promotions/PromotionsActionCreators";
|
|
import { useStateFromStores } from "../../../_bundle/Module589";
|
|
import { PromotionTypes } from "../promotions/constants";
|
|
export function usePromotionMarketingComponent(c15799_0) {
|
|
let stateFromStores, endDate, ref;
|
|
useEffect(() => {
|
|
maybeFetchActivePromotions();
|
|
}, []);
|
|
stateFromStores = useStateFromStores([PromotionsStore, UserOfferStore], () => {
|
|
const marketingComponentByType = PromotionsStore.getMarketingComponentByType(c15799_0);
|
|
if (marketingComponentByType == null) {
|
|
return null;
|
|
}
|
|
const promotionByTypeAndId = PromotionsStore.getPromotionByTypeAndId(PromotionTypes.MARKETING_MOMENT, marketingComponentByType.promotionId);
|
|
const trialId = promotionByTypeAndId?.trialId;
|
|
L7: {
|
|
if (trialId != null) {
|
|
const userTrialOffer = UserOfferStore.getUserTrialOffer(promotionByTypeAndId.trialId);
|
|
if (userTrialOffer != null) {
|
|
if (userTrialOffer.expires_at == null) {
|
|
break L7;
|
|
}
|
|
if (!(Date.parse(userTrialOffer.expires_at) < Date.now())) {
|
|
break L7;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
return marketingComponentByType;
|
|
});
|
|
endDate = useStateFromStores([PromotionsStore], () => {
|
|
const MARKETING_MOMENT = PromotionTypes.MARKETING_MOMENT;
|
|
let r14 = stateFromStores?.promotionId;
|
|
if (r14 == null) {
|
|
r14 = "";
|
|
}
|
|
return PromotionsStore.getPromotionByTypeAndId(MARKETING_MOMENT, r14);
|
|
})?.endDate;
|
|
const [state, setState] = useState(false);
|
|
ref = useRef(null);
|
|
useEffect(() => {
|
|
if (endDate != null) {
|
|
const r21 = endDate.getTime() - Date.now();
|
|
if (r21 > 0 && r21 < 86400000) {
|
|
setState(false);
|
|
clearTimeout(ref.current);
|
|
ref.current = setTimeout(() => {
|
|
setState(true);
|
|
}, r21);
|
|
} else if (r21 <= 0) {
|
|
setState(true);
|
|
}
|
|
return () => {
|
|
clearTimeout(ref.current);
|
|
};
|
|
}
|
|
setState(false);
|
|
clearTimeout(ref.current);
|
|
}, [endDate]);
|
|
return state ? null : stateFromStores;
|
|
}
|