From 5dcdcd81da2050825212e216bf5e7e69678d8c6e Mon Sep 17 00:00:00 2001 From: Nate Sesti Date: Mon, 31 Jul 2023 16:38:32 -0700 Subject: feat: :egg: getting to know users form --- extension/package-lock.json | 4 +- extension/package.json | 2 +- extension/react-app/package-lock.json | 16 +++++ extension/react-app/src/components/TextDialog.tsx | 11 ++-- extension/react-app/src/pages/gui.tsx | 75 ++++++++++++++++++++++- 5 files changed, 100 insertions(+), 8 deletions(-) (limited to 'extension') diff --git a/extension/package-lock.json b/extension/package-lock.json index cc583082..d6c53eb2 100644 --- a/extension/package-lock.json +++ b/extension/package-lock.json @@ -1,12 +1,12 @@ { "name": "continue", - "version": "0.0.232", + "version": "0.0.233", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "continue", - "version": "0.0.232", + "version": "0.0.233", "license": "Apache-2.0", "dependencies": { "@electron/rebuild": "^3.2.10", diff --git a/extension/package.json b/extension/package.json index 17398b91..d7334b2b 100644 --- a/extension/package.json +++ b/extension/package.json @@ -14,7 +14,7 @@ "displayName": "Continue", "pricing": "Free", "description": "The open-source coding autopilot", - "version": "0.0.232", + "version": "0.0.233", "publisher": "Continue", "engines": { "vscode": "^1.67.0" diff --git a/extension/react-app/package-lock.json b/extension/react-app/package-lock.json index fa7834f1..325ea240 100644 --- a/extension/react-app/package-lock.json +++ b/extension/react-app/package-lock.json @@ -964,6 +964,14 @@ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, + "node_modules/@types/node": { + "version": "14.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", + "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==", + "dev": true, + "optional": true, + "peer": true + }, "node_modules/@types/parse5": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", @@ -5043,6 +5051,14 @@ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, + "@types/node": { + "version": "14.18.54", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.54.tgz", + "integrity": "sha512-uq7O52wvo2Lggsx1x21tKZgqkJpvwCseBBPtX/nKQfpVlEsLOb11zZ1CRsWUKvJF0+lzuA9jwvA7Pr2Wt7i3xw==", + "dev": true, + "optional": true, + "peer": true + }, "@types/parse5": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", diff --git a/extension/react-app/src/components/TextDialog.tsx b/extension/react-app/src/components/TextDialog.tsx index 43051a04..41f811e8 100644 --- a/extension/react-app/src/components/TextDialog.tsx +++ b/extension/react-app/src/components/TextDialog.tsx @@ -29,8 +29,8 @@ const Dialog = styled.div` display: flex; flex-direction: column; box-shadow: 0 0 10px 0 ${vscForeground}; - width: fit-content; margin: auto; + word-wrap: break-word; `; const TextArea = styled.textarea` @@ -56,7 +56,7 @@ const TextDialog = (props: { showDialog: boolean; onEnter: (text: string) => void; onClose: () => void; - message?: string; + message?: string | JSX.Element; entryOn?: boolean; }) => { const [text, setText] = useState(""); @@ -81,7 +81,8 @@ const TextDialog = (props: { }} > - {props.message?.includes("Continue uses GPT-4") ? ( + {typeof props.message === "string" && + props.message.includes("Continue uses GPT-4") ? (

Continue uses GPT-4 by default, but works with any model. If @@ -114,8 +115,10 @@ const TextDialog = (props: { or would like to do so, please contact us at hi@continue.dev.

- ) : ( + ) : typeof props.message === "string" ? ( {props.message || ""} + ) : ( + props.message )} {props.entryOn && ( <> diff --git a/extension/react-app/src/pages/gui.tsx b/extension/react-app/src/pages/gui.tsx index 72b2e139..bf8d8281 100644 --- a/extension/react-app/src/pages/gui.tsx +++ b/extension/react-app/src/pages/gui.tsx @@ -65,6 +65,7 @@ interface GUIProps { function GUI(props: GUIProps) { const client = useContext(GUIClientContext); const posthog = usePostHog(); + const vscMachineId = useSelector( (state: RootStore) => state.config.vscMachineId ); @@ -120,7 +121,9 @@ function GUI(props: GUIProps) { (state: RootStore) => state.config.vscMediaUrl ); const [showFeedbackDialog, setShowFeedbackDialog] = useState(false); - const [feedbackDialogMessage, setFeedbackDialogMessage] = useState(""); + const [feedbackDialogMessage, setFeedbackDialogMessage] = useState< + string | JSX.Element + >(""); const [feedbackEntryOn, setFeedbackEntryOn] = useState(true); const dispatch = useDispatch(); @@ -276,6 +279,76 @@ function GUI(props: GUIProps) { setUserInputQueue((queue) => { return [...queue, input]; }); + + // Increment localstorage counter + const counter = localStorage.getItem("mainTextEntryCounter"); + if (counter) { + let currentCount = parseInt(counter); + localStorage.setItem( + "mainTextEntryCounter", + (currentCount + 1).toString() + ); + if (currentCount === 25) { + setFeedbackDialogMessage( +
+ 👋 Thanks for using Continue. We are a beta product and love + working closely with our first users. If you're interested in + speaking, enter your name and email. We won't use this information + for anything other than reaching out. +
+
+
{ + e.preventDefault(); + posthog?.capture("user_interest_form", { + name: e.target.elements[0].value, + email: e.target.elements[1].value, + }); + setFeedbackDialogMessage( +
+ Thanks! We'll be in touch soon. +
+ ); + }} + style={{ + display: "flex", + flexDirection: "column", + gap: "10px", + }} + > + + + +
+
+ ); + setFeedbackEntryOn(false); + setShowFeedbackDialog(true); + } + } else { + localStorage.setItem("mainTextEntryCounter", "1"); + } } }; -- cgit v1.2.3-70-g09d2