enzostvs HF Staff commited on
Commit
18847f3
·
1 Parent(s): c8f556a

set in storage current html after clicking login button

Browse files
src/components/App.tsx CHANGED
@@ -3,7 +3,13 @@ import { useRef, useState } from "react";
3
  import Editor from "@monaco-editor/react";
4
  import classNames from "classnames";
5
  import { editor } from "monaco-editor";
6
- import { useMount, useUnmount, useEvent, createBreakpoint } from "react-use";
 
 
 
 
 
 
7
  import { toast } from "react-toastify";
8
 
9
  import Header from "./header/header";
@@ -21,6 +27,8 @@ const useBreakpoint = createBreakpoint({
21
 
22
  function App() {
23
  const breakpoint = useBreakpoint();
 
 
24
 
25
  const preview = useRef<HTMLDivElement>(null);
26
  const editor = useRef<HTMLDivElement>(null);
@@ -29,7 +37,7 @@ function App() {
29
 
30
  const [isResizing, setIsResizing] = useState(false);
31
  const [error, setError] = useState(false);
32
- const [html, setHtml] = useState(defaultHTML);
33
  const [isAiWorking, setisAiWorking] = useState(false);
34
  const [auth, setAuth] = useState<Auth | undefined>(undefined);
35
 
@@ -72,6 +80,10 @@ function App() {
72
 
73
  useMount(() => {
74
  fetchMe();
 
 
 
 
75
  if (!editor.current || !preview.current) return;
76
 
77
  if (breakpoint === "lg") {
 
3
  import Editor from "@monaco-editor/react";
4
  import classNames from "classnames";
5
  import { editor } from "monaco-editor";
6
+ import {
7
+ useMount,
8
+ useUnmount,
9
+ useEvent,
10
+ createBreakpoint,
11
+ useLocalStorage,
12
+ } from "react-use";
13
  import { toast } from "react-toastify";
14
 
15
  import Header from "./header/header";
 
27
 
28
  function App() {
29
  const breakpoint = useBreakpoint();
30
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
31
+ const [htmlStorage, _, removeHtmlStorage] = useLocalStorage("html_content");
32
 
33
  const preview = useRef<HTMLDivElement>(null);
34
  const editor = useRef<HTMLDivElement>(null);
 
37
 
38
  const [isResizing, setIsResizing] = useState(false);
39
  const [error, setError] = useState(false);
40
+ const [html, setHtml] = useState((htmlStorage as string) ?? defaultHTML);
41
  const [isAiWorking, setisAiWorking] = useState(false);
42
  const [auth, setAuth] = useState<Auth | undefined>(undefined);
43
 
 
80
 
81
  useMount(() => {
82
  fetchMe();
83
+ if (htmlStorage) {
84
+ removeHtmlStorage();
85
+ toast.warn("Previous HTML content restored from local storage.");
86
+ }
87
  if (!editor.current || !preview.current) return;
88
 
89
  if (breakpoint === "lg") {
src/components/ask-ai/ask-ai.tsx CHANGED
@@ -137,7 +137,7 @@ function AskAI({
137
  }
138
  )}
139
  >
140
- <Login>
141
  <p className="text-gray-500 text-sm mb-3">
142
  You reached the limit of free AI usage. Please login to continue.
143
  </p>
 
137
  }
138
  )}
139
  >
140
+ <Login html={html}>
141
  <p className="text-gray-500 text-sm mb-3">
142
  You reached the limit of free AI usage. Please login to continue.
143
  </p>
src/components/deploy-button/deploy-button.tsx CHANGED
@@ -101,7 +101,7 @@ function DeployButton({
101
  )}
102
  >
103
  {!auth ? (
104
- <Login />
105
  ) : (
106
  <>
107
  <header className="flex items-center text-sm px-4 py-2 border-b border-gray-200 gap-2 bg-gray-100 font-semibold text-gray-700">
 
101
  )}
102
  >
103
  {!auth ? (
104
+ <Login html={html} />
105
  ) : (
106
  <>
107
  <header className="flex items-center text-sm px-4 py-2 border-b border-gray-200 gap-2 bg-gray-100 font-semibold text-gray-700">
src/components/login/login.tsx CHANGED
@@ -1,4 +1,23 @@
1
- function Login({ children }: { children?: React.ReactNode }) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  return (
3
  <>
4
  <header className="flex items-center text-sm px-4 py-2 border-b border-gray-200 gap-2 bg-gray-100 font-semibold text-gray-700">
@@ -9,7 +28,7 @@ function Login({ children }: { children?: React.ReactNode }) {
9
  </header>
10
  <main className="px-4 py-4 space-y-3">
11
  {children}
12
- <a href="/api/login">
13
  <img
14
  src="https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-lg-dark.svg"
15
  alt="Sign in with Hugging Face"
 
1
+ import { useLocalStorage } from "react-use";
2
+ import { defaultHTML } from "../../utils/consts";
3
+
4
+ function Login({
5
+ html,
6
+ children,
7
+ }: {
8
+ html?: string;
9
+ children?: React.ReactNode;
10
+ }) {
11
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
12
+ const [_, setStorage] = useLocalStorage("html_content");
13
+
14
+ const handleClick = () => {
15
+ if (html !== defaultHTML) {
16
+ setStorage(html);
17
+ }
18
+ console.log("store current HTML in local storage");
19
+ };
20
+
21
  return (
22
  <>
23
  <header className="flex items-center text-sm px-4 py-2 border-b border-gray-200 gap-2 bg-gray-100 font-semibold text-gray-700">
 
28
  </header>
29
  <main className="px-4 py-4 space-y-3">
30
  {children}
31
+ <a href="/api/login" onClick={handleClick}>
32
  <img
33
  src="https://huggingface.co/datasets/huggingface/badges/resolve/main/sign-in-with-huggingface-lg-dark.svg"
34
  alt="Sign in with Hugging Face"