From 918623eb975ccbc11a91206fa6363f5ab1ca3404 Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Sat, 31 Aug 2024 18:16:08 -0700 Subject: [PATCH] callback toast --- backend/danswer/configs/app_configs.py | 4 +- backend/danswer/server/manage/users.py | 6 +- web/src/app/ee/admin/plan/BillingSettings.tsx | 108 ++++++++---------- .../ee/admin/plan/StripeCheckoutButton.tsx | 1 + web/src/app/ee/admin/plan/page.tsx | 1 - web/src/components/icons/icons.tsx | 73 +++++++++++- 6 files changed, 124 insertions(+), 69 deletions(-) diff --git a/backend/danswer/configs/app_configs.py b/backend/danswer/configs/app_configs.py index 7e1c5d494..61acabfc0 100644 --- a/backend/danswer/configs/app_configs.py +++ b/backend/danswer/configs/app_configs.py @@ -374,5 +374,7 @@ STRIPE_PRICE = os.environ.get("STRIPE_PRICE", "price_1PsYoPHlhTYqRZib2t5ydpq5") # STRIPE_PRICE="price_1PsYoPHlhTYqRZib2t5ydpq5" -# STRIPE_WEBHOOK_SECRET="whsec_1cd766cd6bd08590aa8c46ab5c21ac32cad77c29de2e09a152a01971d6f405d3" +STRIPE_WEBHOOK_SECRET = ( + "whsec_1cd766cd6bd08590aa8c46ab5c21ac32cad77c29de2e09a152a01971d6f405d3" +) # STRIPE_SECRET_KEY="sk_test_51NwZq2HlhTYqRZibT2cssHV8E5QcLAUmaRLQPMjGb5aOxOWomVxOmzRgxf82ziDBuGdPP2GIDod8xe6DyqeGgUDi00KbsHPoT4" diff --git a/backend/danswer/server/manage/users.py b/backend/danswer/server/manage/users.py index c3d9b8de8..44a7b58c2 100644 --- a/backend/danswer/server/manage/users.py +++ b/backend/danswer/server/manage/users.py @@ -34,6 +34,7 @@ from danswer.configs.app_configs import AUTH_TYPE from danswer.configs.app_configs import SESSION_EXPIRE_TIME_SECONDS from danswer.configs.app_configs import STRIPE_PRICE from danswer.configs.app_configs import VALID_EMAIL_DOMAINS +from danswer.configs.app_configs import WEB_DOMAIN from danswer.configs.constants import AuthType from danswer.db.engine import get_session from danswer.db.models import AccessToken @@ -357,8 +358,8 @@ async def create_checkout_session( user_email = "pablosfsanchez@gmail.com" - success_url = "http://localhost:3000/billing/success" - cancel_url = "http://localhost:3000/billing/cancel" + success_url = f"{WEB_DOMAIN}/admin/plan?success=true" + cancel_url = f"{WEB_DOMAIN}/admin/plan?success=false" logger.info(f"Stripe price being used: {STRIPE_PRICE}") logger.info( @@ -379,6 +380,7 @@ async def create_checkout_session( cancel_url=cancel_url, metadata={"tenant_id": str("random tenant")}, ) + print("I am setting a tenant id in my metadata") logger.info( f"Checkout session created successfully with id: {checkout_session.id}" ) diff --git a/web/src/app/ee/admin/plan/BillingSettings.tsx b/web/src/app/ee/admin/plan/BillingSettings.tsx index b9f7c5139..335237d5b 100644 --- a/web/src/app/ee/admin/plan/BillingSettings.tsx +++ b/web/src/app/ee/admin/plan/BillingSettings.tsx @@ -3,19 +3,52 @@ import { BillingPlanType } from "@/app/admin/settings/interfaces"; import { useContext, useEffect, useState } from "react"; import { SettingsContext } from "@/components/settings/SettingsProvider"; -import { Button, Divider, Text, Card } from "@tremor/react"; +import { Button, Divider, Card } from "@tremor/react"; import { StripeCheckoutButton } from "./StripeCheckoutButton"; -import { CheckmarkIcon, XIcon } from "@/components/icons/icons"; -import { FiAward, FiDollarSign, FiHelpCircle, FiStar } from "react-icons/fi"; +import { + CheckmarkIcon, + CheckmarkCircleIcon, + LightningIcon, + PeopleIcon, + XIcon, + ChevronDownIcon, +} from "@/components/icons/icons"; +import { FiAward, FiDollarSign, FiStar } from "react-icons/fi"; import Cookies from "js-cookie"; import { Modal } from "@/components/Modal"; import { Logo } from "@/components/Logo"; -import Link from "next/link"; +import { useSearchParams } from "next/navigation"; +import { usePopup } from "@/components/admin/connectors/Popup"; export function BillingSettings({ newUser }: { newUser: boolean }) { const settings = useContext(SettingsContext); const cloudSettings = settings?.cloudSettings; + const searchParams = useSearchParams(); + const { popup, setPopup } = usePopup(); + + useEffect(() => { + const success = searchParams.get("success"); + if (success === "true") { + setPopup({ + message: "Your plan has been successfully updated!", + type: "success", + }); + } else if (success === "false") { + setPopup({ + message: "There was an error updating your plan", + type: "error", + }); + } + + // Clear the 'success' parameter from the URL + if (success) { + const newUrl = new URL(window.location.href); + newUrl.searchParams.delete("success"); + window.history.replaceState({}, "", newUrl); + } + }, []); + if (!cloudSettings) { return null; } @@ -114,40 +147,14 @@ export function BillingSettings({ newUser }: { newUser: boolean }) { )}
-

+

Your Plan - - - +

-

- - - +

+ Tier:

@@ -155,21 +162,8 @@ export function BillingSettings({ newUser }: { newUser: boolean }) {
-

- - - +

+ Current Seats:

@@ -191,20 +185,7 @@ export function BillingSettings({ newUser }: { newUser: boolean }) { {getBillingPlanIcon(newPlan!)} {newPlan} - - - +
{isOpen && (
@@ -319,6 +300,7 @@ export function BillingSettings({ newUser }: { newUser: boolean }) {
)} + {popup}
); } diff --git a/web/src/app/ee/admin/plan/StripeCheckoutButton.tsx b/web/src/app/ee/admin/plan/StripeCheckoutButton.tsx index 1ada51a19..d3f9303cb 100644 --- a/web/src/app/ee/admin/plan/StripeCheckoutButton.tsx +++ b/web/src/app/ee/admin/plan/StripeCheckoutButton.tsx @@ -35,6 +35,7 @@ export function StripeCheckoutButton({ } const { sessionId } = await response.json(); + console.log(process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY); const stripe = await loadStripe( process.env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY! ); diff --git a/web/src/app/ee/admin/plan/page.tsx b/web/src/app/ee/admin/plan/page.tsx index 064a4aa2f..481cc51ea 100644 --- a/web/src/app/ee/admin/plan/page.tsx +++ b/web/src/app/ee/admin/plan/page.tsx @@ -13,7 +13,6 @@ export default async function Whitelabeling() { title="Billing" icon={} /> -
); diff --git a/web/src/components/icons/icons.tsx b/web/src/components/icons/icons.tsx index f2f93d484..262fb0db6 100644 --- a/web/src/components/icons/icons.tsx +++ b/web/src/components/icons/icons.tsx @@ -2771,10 +2771,79 @@ export const CreditCardIcon = ({ ); }; + +export const LightningIcon = ({ + size = 16, + className = defaultTailwindCSS, +}: IconProps) => { + return ( + + + + ); +}; + +export const CheckmarkCircleIcon = ({ + size = 16, + className = defaultTailwindCSS, +}: IconProps) => { + return ( + + + + ); +}; + +export const PeopleIcon = ({ + size = 16, + className = defaultTailwindCSS, +}: IconProps) => { + return ( + + + + ); +};