mirror of
https://github.com/lux-tel/session-desktop.git
synced 2026-10-30 20:33:24 +00:00
64 lines
2.1 KiB
TypeScript
64 lines
2.1 KiB
TypeScript
import { useMemo } from 'react';
|
|
import { useCurrentUserHasExpiredPro } from '../../hooks/useHasPro';
|
|
import { StyledCTATitle } from './SessionCTA';
|
|
import { Localizer } from '../basic/Localizer';
|
|
import { assertUnreachable } from '../../types/sqlSharedTypes';
|
|
import { ProIconButton } from '../buttons/ProButton';
|
|
import { CTAVariant, isProCTAFeatureVariant, type ProCTAVariant } from './cta/types';
|
|
|
|
export function ProCTATitle({ variant }: { variant: ProCTAVariant }) {
|
|
const userHasExpiredPro = useCurrentUserHasExpiredPro();
|
|
|
|
const titleText = useMemo(() => {
|
|
if (isProCTAFeatureVariant(variant)) {
|
|
return <Localizer token={userHasExpiredPro ? 'renew' : 'upgradeTo'} />;
|
|
}
|
|
|
|
switch (variant) {
|
|
// TODO: Group CTA titles arent finalised and need to be implemneted later
|
|
case CTAVariant.PRO_GROUP_NON_ADMIN:
|
|
return <Localizer token="upgradeTo" />;
|
|
|
|
case CTAVariant.PRO_GROUP_ADMIN:
|
|
return <Localizer token={userHasExpiredPro ? 'renew' : 'upgradeTo'} />;
|
|
|
|
case CTAVariant.PRO_ANIMATED_DISPLAY_PICTURE_ACTIVATED:
|
|
return <Localizer token="proActivated" />;
|
|
|
|
case CTAVariant.PRO_GROUP_ACTIVATED:
|
|
return <Localizer token="proGroupActivated" />;
|
|
|
|
case CTAVariant.PRO_EXPIRING_SOON:
|
|
return <Localizer token="proExpiringSoon" />;
|
|
|
|
case CTAVariant.PRO_EXPIRED:
|
|
return <Localizer token="proExpired" />;
|
|
|
|
default:
|
|
assertUnreachable(variant, 'CtaTitle');
|
|
throw new Error('unreachable');
|
|
}
|
|
}, [variant, userHasExpiredPro]);
|
|
|
|
const isTitleDirectionReversed = useMemo(() => {
|
|
return [
|
|
CTAVariant.PRO_ANIMATED_DISPLAY_PICTURE_ACTIVATED,
|
|
CTAVariant.PRO_GROUP_ACTIVATED,
|
|
CTAVariant.PRO_EXPIRING_SOON,
|
|
CTAVariant.PRO_EXPIRED,
|
|
].includes(variant);
|
|
}, [variant]);
|
|
|
|
return (
|
|
<StyledCTATitle $reverseDirection={isTitleDirectionReversed} data-testid="cta-heading">
|
|
{titleText}
|
|
<ProIconButton
|
|
iconSize="huge"
|
|
dataTestId="cta-heading-pro-badge"
|
|
onClick={undefined}
|
|
noColors={variant === CTAVariant.PRO_EXPIRED}
|
|
/>
|
|
</StyledCTATitle>
|
|
);
|
|
}
|