From e1d87c69970e816c192639636cff30d864f42527 Mon Sep 17 00:00:00 2001 From: natreex Date: Mon, 30 Mar 2026 21:13:55 -0400 Subject: [PATCH] Refactor subscription logic and replace `quill-sense` references with `ritor` equivalents - Updated `getCurrentSubscription` and related functions to reflect terminology changes. - Adjusted subscription levels and access checks to streamline logic. - Removed unused cases in `getSubLevel` and optimized conditionals for clarity. --- components/editor/DraftCompanion.tsx | 8 ++++---- components/ghostwriter/GhostWriter.tsx | 8 ++++---- components/quillsense/QuillSenseComponent.tsx | 4 ++-- lib/utils/quillsense.ts | 9 +++------ lib/utils/user.ts | 2 +- 5 files changed, 14 insertions(+), 17 deletions(-) diff --git a/components/editor/DraftCompanion.tsx b/components/editor/DraftCompanion.tsx index ca839cc..da6ea4e 100644 --- a/components/editor/DraftCompanion.tsx +++ b/components/editor/DraftCompanion.tsx @@ -18,7 +18,7 @@ import Button from "@/components/ui/Button"; import QSTextGeneratedPreview from "@/components/ui/QSTextGeneratedPreview"; import {EditorContext, EditorContextProps} from "@/context/EditorContext"; import {useTranslations} from '@/lib/i18n'; -import {getSubLevel, isOpenAIEnabled} from "@/lib/utils/quillsense"; +import {getSubLevel, isAnthropicEnabled} from "@/lib/utils/quillsense"; import TextInput from "@/components/form/TextInput"; import InputField from "@/components/form/InputField"; import TextAreaInput from "@/components/form/TextAreaInput"; @@ -93,9 +93,9 @@ export default function DraftCompanion() { const [useExplicit, setUseExplicit] = useState(false); const [useSmart, setUseSmart] = useState(false); - const isGPTEnabled: boolean = isOpenAIEnabled(session); - const isSubTierTree: boolean = getSubLevel(session) === 3; - const hasAccess: boolean = (isGPTEnabled || isSubTierTree) && !isCurrentlyOffline() && !book?.localBook; + const isAnthropicKey: boolean = isAnthropicEnabled(session); + const isSubTierTwo: boolean = getSubLevel(session) >= 2; + const hasAccess: boolean = (isAnthropicKey || isSubTierTwo) && !isCurrentlyOffline() && !book?.localBook; useEffect((): void => { getDraftContent().then(); diff --git a/components/ghostwriter/GhostWriter.tsx b/components/ghostwriter/GhostWriter.tsx index 3de32bf..66b902f 100644 --- a/components/ghostwriter/GhostWriter.tsx +++ b/components/ghostwriter/GhostWriter.tsx @@ -19,7 +19,7 @@ import GhostWriterTags from "@/components/ghostwriter/GhostWriterTags"; import {TiptapNode} from "@/lib/types/chapter"; import {convertTiptapToHTML} from "@/lib/utils/tiptap"; import {useTranslations} from '@/lib/i18n'; -import {getSubLevel, isOpenAIEnabled} from "@/lib/utils/quillsense"; +import {getSubLevel, isAnthropicEnabled} from "@/lib/utils/quillsense"; import {AIUsageContext, AIUsageContextProps} from "@/context/AIUsageContext"; import {LangContext, LangContextProps} from "@/context/LangContext"; import {configs} from "@/lib/configs"; @@ -52,9 +52,9 @@ export default function GhostWriter() { const [useExplicit, setUseExplicit] = useState(false); const [useSmart, setUseSmart] = useState(false); - const isGPTEnabled: boolean = isOpenAIEnabled(session); - const isSubTierTree: boolean = getSubLevel(session) === 3; - const hasAccess: boolean = isGPTEnabled || isSubTierTree; + const isAnthropicKey: boolean = isAnthropicEnabled(session); + const isSubTierTwo: boolean = getSubLevel(session) >= 2; + const hasAccess: boolean = isAnthropicKey || isSubTierTwo; async function handleStopGeneration(): Promise { if (abortController) { diff --git a/components/quillsense/QuillSenseComponent.tsx b/components/quillsense/QuillSenseComponent.tsx index be491a3..6f21f9e 100644 --- a/components/quillsense/QuillSenseComponent.tsx +++ b/components/quillsense/QuillSenseComponent.tsx @@ -29,7 +29,7 @@ export default function QuillSenseComponent(): React.JSX.Element { const subLevel: number = getSubLevel(session) const isGPTEnabled: boolean = isOpenAIEnabled(session); - const isSubTierTwo: boolean = getSubLevel(session) >= 1; + const isSubTierTwo: boolean = getSubLevel(session) >= 2; const hasAccess: boolean = isGPTEnabled || isSubTierTwo; const qsOptions: QSOption[] = [ @@ -77,7 +77,7 @@ export default function QuillSenseComponent(): React.JSX.Element { { - isBYOK || subLevel >= 1 ? ( + isBYOK || subLevel >= 2 ? ( <> {view === 'list' ? ( diff --git a/lib/utils/quillsense.ts b/lib/utils/quillsense.ts index 6617d6a..318b9f6 100644 --- a/lib/utils/quillsense.ts +++ b/lib/utils/quillsense.ts @@ -3,9 +3,9 @@ import {Subscription} from "@/lib/types/user"; import {getCurrentSubscription} from "@/lib/utils/user"; export function getSubLevel(session: SessionProps): number { - let currentSub: Subscription | null = getCurrentSubscription(session?.user, 'quill-sense'); + let currentSub: Subscription | null = getCurrentSubscription(session?.user, 'ritor-subscription'); if (!currentSub) { - currentSub = getCurrentSubscription(session?.user, 'quill-trial'); + currentSub = getCurrentSubscription(session?.user, 'ritor-trial'); if (!currentSub) { return 0; } @@ -15,8 +15,6 @@ export function getSubLevel(session: SessionProps): number { return 1; case 2: return 2; - case 3: - return 3; default: return 0; } @@ -24,8 +22,7 @@ export function getSubLevel(session: SessionProps): number { export function isBringYourKeys(session: SessionProps): boolean { if (!session?.user) return false; - const currentSub: Subscription | null = getCurrentSubscription(session?.user, 'use-your-keys'); - return currentSub?.status || session.user.groupId <= 4; + return session.user.apiKeys.openai || session.user.apiKeys.anthropic || session.user.apiKeys.gemini; } export function isGeminiEnabled(session: SessionProps): boolean { diff --git a/lib/utils/user.ts b/lib/utils/user.ts index 1529a57..65df460 100644 --- a/lib/utils/user.ts +++ b/lib/utils/user.ts @@ -1,7 +1,7 @@ import {GuideTour, Subscription, UserProps} from "@/lib/types/user"; import {SessionProps} from "@/lib/types/session"; -export function getCurrentSubscription(user: UserProps | null, type: "quill-sense" | "use-your-keys" | "quill-trial"): Subscription | null { +export function getCurrentSubscription(user: UserProps | null, type: "ritor-subscription" | "use-your-keys" | "ritor-trial"): Subscription | null { if (!user || !user.subscription || user.subscription.length === 0) { return null; }