From cfa9f11f44ea4f2742f2fdcf111e1ee185bde665 Mon Sep 17 00:00:00 2001 From: Abdullah Atta Date: Wed, 10 Sep 2025 11:59:56 +0500 Subject: [PATCH] web: replace usage of subscription.type to subscription.plan --- apps/web/src/common/index.ts | 2 +- apps/web/src/components/editor/picker.ts | 4 +- .../src/components/navigation-menu/index.tsx | 2 +- .../web/src/dialogs/buy-dialog/buy-dialog.tsx | 47 ++++--------------- apps/web/src/dialogs/buy-dialog/plans.ts | 4 ++ .../src/dialogs/command-palette/commands.ts | 4 +- apps/web/src/dialogs/confirm.tsx | 2 +- apps/web/src/dialogs/note-linking-dialog.tsx | 10 ++-- .../settings/backup-export-settings.ts | 21 ++++----- .../components/subscription-status.tsx | 7 +-- .../settings/components/user-profile.tsx | 19 +++----- .../dialogs/settings/subscription-settings.ts | 4 +- .../web/src/dialogs/settings/sync-settings.ts | 6 +-- apps/web/src/global.d.ts | 4 -- apps/web/src/hooks/use-is-user-premium.ts | 29 +----------- apps/web/src/views/checkout.tsx | 20 ++++---- 16 files changed, 61 insertions(+), 124 deletions(-) diff --git a/apps/web/src/common/index.ts b/apps/web/src/common/index.ts index 7ae17a79f..5be53afd0 100644 --- a/apps/web/src/common/index.ts +++ b/apps/web/src/common/index.ts @@ -426,7 +426,7 @@ export async function logout() { const result = await showLogoutConfirmation(); if (!result) return; - if (result.backup) { + if (result.checks?.backup) { try { await createBackup({ mode: "partial" }); } catch (e) { diff --git a/apps/web/src/components/editor/picker.ts b/apps/web/src/components/editor/picker.ts index 51e1a0959..e8e0bb3e0 100644 --- a/apps/web/src/components/editor/picker.ts +++ b/apps/web/src/components/editor/picker.ts @@ -129,7 +129,7 @@ async function pickFile( options?: AddAttachmentOptions ): Promise { try { - if (!(await checkFeature("fileSize", file.size))) return; + if (!(await checkFeature("fileSize", { value: file.size }))) return; const hash = await addAttachment(file, options); return { @@ -154,7 +154,7 @@ async function pickImage( options?: AddAttachmentOptions ): Promise { try { - if (!(await checkFeature("fileSize", file.size))) return; + if (!(await checkFeature("fileSize", { value: file.size }))) return; const hash = await addAttachment(file, options); const dimensions = await getImageDimensions(file); diff --git a/apps/web/src/components/navigation-menu/index.tsx b/apps/web/src/components/navigation-menu/index.tsx index 66e220142..6f8c67637 100644 --- a/apps/web/src/components/navigation-menu/index.tsx +++ b/apps/web/src/components/navigation-menu/index.tsx @@ -241,7 +241,7 @@ function NavigationMenu({ onExpand }: { onExpand?: () => void }) { }, [isNavPaneCollapsed]); useEffect(() => { - function onNavigate(_, location: string) { + function onNavigate() { // collapse navigation menu on navigate e.g. when navigating to a notebook // or a tag if (!useAppStore.getState().isNavPaneCollapsed) return; diff --git a/apps/web/src/dialogs/buy-dialog/buy-dialog.tsx b/apps/web/src/dialogs/buy-dialog/buy-dialog.tsx index 09c2d1e5c..cf0335270 100644 --- a/apps/web/src/dialogs/buy-dialog/buy-dialog.tsx +++ b/apps/web/src/dialogs/buy-dialog/buy-dialog.tsx @@ -23,11 +23,10 @@ import { Loading, Coupon } from "../../components/icons"; import { useStore as useUserStore } from "../../stores/user-store"; import { useStore as useThemeStore } from "../../stores/theme-store"; import Rocket from "../../assets/rocket.svg?url"; -import { hardNavigate } from "../../navigation"; import { Features } from "./features"; import { PaddleCheckout } from "./paddle"; import { Plan, PricingInfo } from "./types"; -import { getPlans, PERIOD_METADATA, PLAN_METADATA, usePlans } from "./plans"; +import { getPlans, PERIOD_METADATA, PLAN_METADATA } from "./plans"; import { ComparePlans, Footer, @@ -38,7 +37,6 @@ import { import { useCheckoutStore } from "./store"; import { getCurrencySymbol, toPricingInfo } from "./helpers"; import { isUserSubscribed } from "../../hooks/use-is-user-premium"; -import { SUBSCRIPTION_STATUS } from "../../common/constants"; import BaseDialog from "../../components/dialog"; import { ScopedThemeProvider } from "../../components/theme-provider"; import { Period, SubscriptionPlan, User } from "@notesnook/core"; @@ -186,14 +184,7 @@ export function CheckoutSideBar(props: SideBarProps) { ); if (user && isUserSubscribed(user)) { - return ( - - ); + return ; } return null; @@ -232,39 +223,17 @@ export function CheckoutDetails({ return ; } -type AlreadyPremiumProps = { - isCanceled?: boolean; - onShowPlans: () => void; -}; -function AlreadyPremium(props: AlreadyPremiumProps) { - const { isCanceled, onShowPlans } = props; +function AlreadyPremium() { return ( <> - Notesnook Pro + Notesnook + + + You already have a Notesnook subscription. You can change your plan from + Settings {">"} Subscription. - {isCanceled ? ( - <> - - Resubscribing to Notesnook Pro will replace your existing - subscription. - - - - ) : ( - - You are already subscribed to Notesnook Pro. - - )} ); } diff --git a/apps/web/src/dialogs/buy-dialog/plans.ts b/apps/web/src/dialogs/buy-dialog/plans.ts index 5016f3738..a77abf878 100644 --- a/apps/web/src/dialogs/buy-dialog/plans.ts +++ b/apps/web/src/dialogs/buy-dialog/plans.ts @@ -44,6 +44,10 @@ export const PLAN_METADATA: PlanMetadata = { [SubscriptionPlan.EDUCATION]: { title: "Education", subtitle: "" + }, + [SubscriptionPlan.LEGACY_PRO]: { + title: "Pro (legacy)", + subtitle: "" } }; diff --git a/apps/web/src/dialogs/command-palette/commands.ts b/apps/web/src/dialogs/command-palette/commands.ts index 10ca9f42b..037a5eca6 100644 --- a/apps/web/src/dialogs/command-palette/commands.ts +++ b/apps/web/src/dialogs/command-palette/commands.ts @@ -357,7 +357,7 @@ async function getActiveNotebookCommands() { const commands: Command[] = []; const parentId = await db.notebooks.parentId(notebook.id); - const menuItems = notebookMenuItems(notebook, [notebook.id], { + const menuItems = await notebookMenuItems(notebook, [notebook.id], { isRoot: !parentId }); for (const menuItem of menuItems) { @@ -375,7 +375,7 @@ async function getActiveTagCommands() { const group = strings.actionsForTag(tag.title); const commands: Command[] = []; - const menuItems = tagMenuItems(tag, [tag.id]); + const menuItems = await tagMenuItems(tag, [tag.id]); for (const menuItem of menuItems) { commands.push(...menuItemToCommands(menuItem, group, "active-tag")); } diff --git a/apps/web/src/dialogs/confirm.tsx b/apps/web/src/dialogs/confirm.tsx index 7296f0d6c..27abf84ce 100644 --- a/apps/web/src/dialogs/confirm.tsx +++ b/apps/web/src/dialogs/confirm.tsx @@ -55,7 +55,7 @@ export type ConfirmDialogProps = BaseDialogProps< inputs?: Record; }; -export const ConfirmDialog = DialogManager.register(function ConfirmDialog<>( +export const ConfirmDialog = DialogManager.register(function ConfirmDialog( props: ConfirmDialogProps ) { const { diff --git a/apps/web/src/dialogs/note-linking-dialog.tsx b/apps/web/src/dialogs/note-linking-dialog.tsx index f49047a4b..2b2c54135 100644 --- a/apps/web/src/dialogs/note-linking-dialog.tsx +++ b/apps/web/src/dialogs/note-linking-dialog.tsx @@ -40,7 +40,7 @@ import { BaseDialogProps, DialogManager } from "../common/dialog-manager"; import { strings } from "@notesnook/intl"; import { Virtuoso } from "react-virtuoso"; import { CustomScrollbarsVirtualList } from "../components/list-container"; -import { BuyDialog } from "./buy-dialog"; +import { UpgradeDialog } from "./buy-dialog/upgrade-dialog"; export type NoteLinkingDialogProps = BaseDialogProps & { attributes?: LinkAttributes; @@ -203,9 +203,11 @@ export const NoteLinkingDialog = DialogManager.register( {blockLinkingAvailability?.error}{" "}