import { useState, useEffect } from 'preact/hooks';
import { ProBadge } from './ProBadge';
import { HStack, Stack, VStack } from './Stack';
import { Panel } from './Panel';
import { Text } from './Text';
import { getHumanReadableDate } from '../utils';
import { LoaderWithText } from './Loader';
const DEFAULT_PROFILE_IMG =
"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23ccc' d='M12,19.2C9.5,19.2 7.29,17.92 6,16C6.03,14 10,12.9 12,12.9C14,12.9 17.97,14 18,16C16.71,17.92 14.5,19.2 12,19.2M12,5A3,3 0 0,1 15,8A3,3 0 0,1 12,11A3,3 0 0,1 9,8A3,3 0 0,1 12,5M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z'/%3E%3C/svg%3E";
const Header = ({ user, logoutBtnHandler }) => {
return (
{user && user.displayName ? user.displayName : 'Anonymous Creator'}
{user.isPro && }
);
};
export function Profile({ user, logoutBtnHandler }) {
const [currentSubscription, setCurrentSubscription] = useState(null);
const [isFetchingSubscription, setIsFetchingSubscription] = useState(false);
useEffect(() => {
if (user?.isPro) {
setIsFetchingSubscription(true);
window.db.getUserSubscriptionEvents(user.uid).then(events => {
setIsFetchingSubscription(false);
let creationEvent = events
.filter(
event =>
event.type === 'subscription_created' ||
event.type === 'order_created'
)
.sort((a, b) => b.timestamp.seconds - a.timestamp.seconds)
// remove order_created events which correspond to subscriptions (non lifetime orders)
.filter(
event =>
!(
event.type === 'order_created' &&
!event.data.data.attributes.first_order_item?.variant_name?.match(
/lifetime/i
)
)
)[0];
if (creationEvent) {
// log(creationEvent);
creationEvent.attributes = creationEvent.data.data.attributes;
setCurrentSubscription(creationEvent);
}
});
}
}, [user]);
return (
{window.user?.isPro && (
{isFetchingSubscription ? (
Loading billing details...
) : null}
{currentSubscription ? (
Plan:
{' '}
Web Maker PRO (
{currentSubscription.attributes.variant_name ||
currentSubscription.attributes.first_order_item
?.variant_name}
)
Subscription Status:{' '}
{currentSubscription.attributes.status === 'paid'
? 'PRO for life ❤️'
: currentSubscription.attributes.status}
Renews on:{' '}
{currentSubscription.attributes.status === 'paid'
? 'Never ever'
: getHumanReadableDate(
currentSubscription.attributes.renews_at
)}
{currentSubscription.attributes.status === 'paid' ? null : (
Cancel subscription
)}
{/*
Link 2
Link 3
*/}
) : null}
)}
{user?.isPro && currentSubscription ? (
) : null}
);
}