import "./index.css"; import { useState } from "react"; import { FormattedMessage } from "react-intl"; import { RouteObject } from "react-router-dom"; import { formatShort } from "Number"; import { LockedFeatures, Plans, SubscriptionType } from "Subscription"; import ManageSubscriptionPage from "Pages/subscribe/ManageSubscription"; import AsyncButton from "Element/AsyncButton"; import useEventPublisher from "Feed/EventPublisher"; import SnortApi, { SubscriptionError, SubscriptionErrorCode } from "SnortApi"; import SendSats from "Element/SendSats"; export function mapPlanName(id: number) { switch (id) { case SubscriptionType.Supporter: return ; case SubscriptionType.Premium: return ; } } export function mapFeatureName(k: LockedFeatures) { switch (k) { case LockedFeatures.MultiAccount: return ; case LockedFeatures.NostrAddress: return ; case LockedFeatures.Badge: return ; case LockedFeatures.DeepL: return ; case LockedFeatures.RelayRetention: return ; case LockedFeatures.RelayBackup: return ; case LockedFeatures.RelayAccess: return ; case LockedFeatures.LNProxy: return ; case LockedFeatures.EmailBridge: return ; } } export function mapSubscriptionErrorCode(c: SubscriptionError) { switch (c.code) { case SubscriptionErrorCode.InternalError: return ; case SubscriptionErrorCode.SubscriptionActive: return ; case SubscriptionErrorCode.Duplicate: return ; default: return c.message; } } export function SubscribePage() { const publisher = useEventPublisher(); const api = new SnortApi(undefined, publisher); const [invoice, setInvoice] = useState(""); const [error, setError] = useState(); async function subscribe(type: number) { setError(undefined); try { const rsp = await api.createSubscription(type); setInvoice(rsp.pr); } catch (e) { if (e instanceof SubscriptionError) { setError(e); } } } return ( <>
{Plans.map(a => { const lower = Plans.filter(b => b.id < a.id); return (

{mapPlanName(a.id)}

{formatShort(a.price)} sats/mo, }} /> :

    {a.unlocks.map(b => (
  • {mapFeatureName(b)}
  • ))} {lower.map(b => (
  • ))}
subscribe(a.id)}> {a.disabled ? ( ) : ( )}
); })}
{error && {mapSubscriptionErrorCode(error)}} setInvoice("")} /> ); } export const SubscribeRoutes = [ { path: "/subscribe", element: , }, { path: "/subscribe/manage", element: , }, ] as RouteObject[];