Merge pull request #65 from vagusX/feat/save-term-accpeted-in-cache

feat: add local storage functionality to track acceptance of terms
This commit is contained in:
Abi Raja 2023-11-21 22:18:08 -05:00 committed by GitHub
commit 9811b8a7f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 6 deletions

View File

@ -42,6 +42,7 @@ function App() {
screenshotOneApiKey: null, screenshotOneApiKey: null,
isImageGenerationEnabled: true, isImageGenerationEnabled: true,
editorTheme: EditorTheme.COBALT, editorTheme: EditorTheme.COBALT,
isTermOfServiceAccepted: false,
}, },
"setting" "setting"
); );
@ -124,10 +125,22 @@ function App() {
toast.success("Copied to clipboard"); toast.success("Copied to clipboard");
}, [generatedCode]); }, [generatedCode]);
const handleTermDialogOpenChange = (open: boolean) => {
setSettings((s) => ({
...s,
isTermOfServiceAccepted: !open,
}));
};
return ( return (
<div className="mt-2"> <div className="mt-2">
{IS_RUNNING_ON_CLOUD && <PicoBadge />} {IS_RUNNING_ON_CLOUD && <PicoBadge />}
{IS_RUNNING_ON_CLOUD && <TermsOfServiceDialog />} {IS_RUNNING_ON_CLOUD && (
<TermsOfServiceDialog
open={!settings.isTermOfServiceAccepted}
onOpenChange={handleTermDialogOpenChange}
/>
)}
<div className="hidden lg:fixed lg:inset-y-0 lg:z-50 lg:flex lg:w-96 lg:flex-col"> <div className="hidden lg:fixed lg:inset-y-0 lg:z-50 lg:flex lg:w-96 lg:flex-col">
<div className="flex grow flex-col gap-y-2 overflow-y-auto border-r border-gray-200 bg-white px-6"> <div className="flex grow flex-col gap-y-2 overflow-y-auto border-r border-gray-200 bg-white px-6">

View File

@ -6,13 +6,14 @@ import {
DialogHeader, DialogHeader,
DialogTitle, DialogTitle,
} from "@/components/ui/dialog"; } from "@/components/ui/dialog";
import { useState } from "react";
function TermsOfServiceDialog() { const TermsOfServiceDialog: React.FC<{
const [isOpen, setIsOpen] = useState(true); open: boolean;
onOpenChange: (open: boolean) => void;
}> = ({ open, onOpenChange }) => {
return ( return (
<Dialog open={isOpen} onOpenChange={setIsOpen}> <Dialog open={open} onOpenChange={onOpenChange}>
<DialogContent> <DialogContent>
<DialogHeader> <DialogHeader>
<DialogTitle className="mb-4">Terms of Service</DialogTitle> <DialogTitle className="mb-4">Terms of Service</DialogTitle>
@ -45,6 +46,6 @@ function TermsOfServiceDialog() {
</DialogContent> </DialogContent>
</Dialog> </Dialog>
); );
} };
export default TermsOfServiceDialog; export default TermsOfServiceDialog;

View File

@ -8,6 +8,7 @@ export interface Settings {
screenshotOneApiKey: string | null; screenshotOneApiKey: string | null;
isImageGenerationEnabled: boolean; isImageGenerationEnabled: boolean;
editorTheme: EditorTheme; editorTheme: EditorTheme;
isTermOfServiceAccepted: boolean; // Only relevant for hosted version
} }
export enum AppState { export enum AppState {