standardize subscription periods and add null date handling

This commit is contained in:
austinkelsay 2025-05-14 16:55:23 -05:00
parent dc359dd1d1
commit ab7b5fc273
No known key found for this signature in database
GPG Key ID: 5A763922E5BA08EE
2 changed files with 14 additions and 7 deletions

View File

@ -17,6 +17,7 @@ import Nip05Form from '@/components/profile/subscription/Nip05Form';
import LightningAddressForm from '@/components/profile/subscription/LightningAddressForm'; import LightningAddressForm from '@/components/profile/subscription/LightningAddressForm';
import RenewSubscription from '@/components/profile/subscription/RenewSubscription'; import RenewSubscription from '@/components/profile/subscription/RenewSubscription';
import { SelectButton } from 'primereact/selectbutton'; import { SelectButton } from 'primereact/selectbutton';
import { SUBSCRIPTION_PERIODS, calculateExpirationDate } from '@/constants/subscriptionPeriods';
const UserSubscription = () => { const UserSubscription = () => {
const { data: session, update } = useSession(); const { data: session, update } = useSession();
@ -52,13 +53,18 @@ const UserSubscription = () => {
useEffect(() => { useEffect(() => {
if (user && user.role) { if (user && user.role) {
setSubscribed(user.role.subscribed); setSubscribed(user.role.subscribed);
if (user.role.lastPaymentAt) {
const subscribedAt = new Date(user.role.lastPaymentAt); const subscribedAt = new Date(user.role.lastPaymentAt);
// Calculate subscription end date based on type // Use the common helper to calculate expiration date
const daysToAdd = user.role.subscriptionType === 'yearly' ? 365 : 31; const subscribedUntil = calculateExpirationDate(subscribedAt, user.role.subscriptionType || 'monthly');
const subscribedUntil = new Date(subscribedAt.getTime() + daysToAdd * 24 * 60 * 60 * 1000);
setSubscribedUntil(subscribedUntil); setSubscribedUntil(subscribedUntil);
} else {
setSubscribedUntil(null);
}
if (user.role.subscriptionExpiredAt) { if (user.role.subscriptionExpiredAt) {
const expiredAt = new Date(user.role.subscriptionExpiredAt); const expiredAt = new Date(user.role.subscriptionExpiredAt);
setSubscriptionExpiredAt(expiredAt); setSubscriptionExpiredAt(expiredAt);
@ -243,7 +249,7 @@ const UserSubscription = () => {
<span className="font-semibold">Current Plan:</span> {user?.role?.subscriptionType || 'monthly'} subscription <span className="font-semibold">Current Plan:</span> {user?.role?.subscriptionType || 'monthly'} subscription
</p> </p>
<p className="text-gray-300"> <p className="text-gray-300">
<span className="font-semibold">Renews on:</span> {subscribedUntil?.toLocaleDateString()} <span className="font-semibold">Renews on:</span> {subscribedUntil ? subscribedUntil.toLocaleDateString() : 'N/A'}
</p> </p>
</div> </div>
<div className="flex flex-col gap-4"> <div className="flex flex-col gap-4">

View File

@ -18,6 +18,7 @@ import RenewSubscription from '@/components/profile/subscription/RenewSubscripti
import Nip05Form from '@/components/profile/subscription/Nip05Form'; import Nip05Form from '@/components/profile/subscription/Nip05Form';
import LightningAddressForm from '@/components/profile/subscription/LightningAddressForm'; import LightningAddressForm from '@/components/profile/subscription/LightningAddressForm';
import MoreInfo from '@/components/MoreInfo'; import MoreInfo from '@/components/MoreInfo';
import { SUBSCRIPTION_PERIODS } from '@/constants/subscriptionPeriods';
const AboutPage = () => { const AboutPage = () => {
const { data: session, update } = useSession(); const { data: session, update } = useSession();
@ -117,7 +118,7 @@ const AboutPage = () => {
if (user && user.role) { if (user && user.role) {
setSubscribed(user.role.subscribed); setSubscribed(user.role.subscribed);
const subscribedAt = new Date(user.role.lastPaymentAt); const subscribedAt = new Date(user.role.lastPaymentAt);
const subscribedUntil = new Date(subscribedAt.getTime() + 31 * 24 * 60 * 60 * 1000); const subscribedUntil = new Date(subscribedAt.getTime() + SUBSCRIPTION_PERIODS.MONTHLY.DAYS * 24 * 60 * 60 * 1000);
setSubscribedUntil(subscribedUntil); setSubscribedUntil(subscribedUntil);
if (user.role.subscriptionExpiredAt) { if (user.role.subscriptionExpiredAt) {
const expiredAt = new Date(user.role.subscriptionExpiredAt); const expiredAt = new Date(user.role.subscriptionExpiredAt);