Skip to content

Commit a5a1b14

Browse files
fix: local storage state for free trial exit
1 parent f74a99c commit a5a1b14

File tree

3 files changed

+16
-10
lines changed

3 files changed

+16
-10
lines changed

gui/src/components/FreeTrialButton.tsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { useContext } from "react";
44
import { Button, SecondaryButton, vscButtonBackground } from ".";
55
import { IdeMessengerContext } from "../context/IdeMessenger";
66
import { fontSize } from "../util";
7+
import { setLocalStorage } from "../util/localStorage";
78
import { Listbox, ListboxButton, ListboxOptions, Transition } from "./ui";
89

910
interface ProgressBarProps {
@@ -79,6 +80,15 @@ export default function FreeTrialButton({
7980
}: FreeTrialButtonProps) {
8081
const ideMessenger = useContext(IdeMessengerContext);
8182

83+
const onExitFreeTrial = async () => {
84+
setLocalStorage("hasExitedFreeTrial", true);
85+
86+
await ideMessenger.request("controlPlane/openUrl", {
87+
path: "setup-models",
88+
orgSlug: undefined,
89+
});
90+
};
91+
8292
return (
8393
<Listbox>
8494
<div className="relative">
@@ -134,15 +144,7 @@ export default function FreeTrialButton({
134144
)}
135145

136146
<div className="mt-4 flex gap-2">
137-
<SecondaryButton
138-
className="flex-1"
139-
onClick={async () => {
140-
await ideMessenger.request("controlPlane/openUrl", {
141-
path: "setup-models",
142-
orgSlug: undefined,
143-
});
144-
}}
145-
>
147+
<SecondaryButton className="flex-1" onClick={onExitFreeTrial}>
146148
Exit trial
147149
</SecondaryButton>
148150
<Button

gui/src/components/mainInput/Lump/LumpToolbar/BlockSettingsTopToolbar.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { ToolsSectionTooltip } from "../sections/tool-policies/ToolPoliciesSecti
2424

2525
import { usesFreeTrialApiKey } from "core/config/usesFreeTrialApiKey";
2626
import type { FreeTrialStatus } from "core/control-plane/client";
27+
import { getLocalStorage } from "../../../../util/localStorage";
2728
import { AssistantAndOrgListbox } from "../../../AssistantAndOrgListbox";
2829

2930
interface BlockSettingsToolbarIcon {
@@ -151,7 +152,8 @@ export function BlockSettingsTopToolbar() {
151152

152153
const [freeTrialStatus, setFreeTrialStatus] =
153154
useState<FreeTrialStatus | null>(null);
154-
const isUsingFreeTrial = usesFreeTrialApiKey(config);
155+
const hasExitedFreeTrial = getLocalStorage("hasExitedFreeTrial");
156+
const isUsingFreeTrial = usesFreeTrialApiKey(config) && !hasExitedFreeTrial;
155157

156158
useEffect(() => {
157159
const fetchFreeTrialStatus = () => {

gui/src/util/localStorage.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@ type LocalStorageTypes = {
1616
showTutorialCard: boolean;
1717
shownProfilesIntroduction: boolean;
1818
disableIndexing: boolean;
19+
hasExitedFreeTrial: boolean;
1920
};
2021

2122
export enum LocalStorageKey {
2223
IsExploreDialogOpen = "isExploreDialogOpen",
2324
HasDismissedExploreDialog = "hasDismissedExploreDialog",
25+
HasExitedFreeTrial = "hasExitedFreeTrial",
2426
}
2527

2628
export function getLocalStorage<T extends keyof LocalStorageTypes>(

0 commit comments

Comments
 (0)