From 83916a75d2639a94d215f8f26388559e8f35dc5a Mon Sep 17 00:00:00 2001 From: Tao Chen Date: Thu, 16 Mar 2023 18:39:36 -0700 Subject: [PATCH] Persistent repo selection --- .../apps/github-qna-webapp-react/src/App.tsx | 6 ++-- .../src/components/GitHubRepoSelection.tsx | 34 ++++++++++++++----- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/samples/apps/github-qna-webapp-react/src/App.tsx b/samples/apps/github-qna-webapp-react/src/App.tsx index ac8f826000e9..82cd42b6f1d1 100644 --- a/samples/apps/github-qna-webapp-react/src/App.tsx +++ b/samples/apps/github-qna-webapp-react/src/App.tsx @@ -38,8 +38,8 @@ const App: FC = () => { const [keyConfig, setKeyConfig] = useState(); const [appState, setAppState] = useState(AppState.ProbeForFunction); const [selectedTabValue, setSelectedTabValue] = useState('completion'); - const [project, setProject] = useState(); - const [branch, setBranch] = useState(); + const [project, setProject] = useState(''); + const [branch, setBranch] = useState(''); useEffect(() => { changeAppState(appState); @@ -187,6 +187,8 @@ const App: FC = () => { { setProject(project); setBranch(branch); diff --git a/samples/apps/github-qna-webapp-react/src/components/GitHubRepoSelection.tsx b/samples/apps/github-qna-webapp-react/src/components/GitHubRepoSelection.tsx index a456870ddab7..c6d066c6616c 100644 --- a/samples/apps/github-qna-webapp-react/src/components/GitHubRepoSelection.tsx +++ b/samples/apps/github-qna-webapp-react/src/components/GitHubRepoSelection.tsx @@ -2,25 +2,31 @@ import { Body1, Button, Input, Label, Spinner, Title3 } from '@fluentui/react-components'; import { ArrowDownload16Regular, CheckmarkCircle20Filled } from '@fluentui/react-icons'; -import { FC, useState } from 'react'; +import React, { FC, useState } from 'react'; import { useSemanticKernel } from '../hooks/useSemanticKernel'; import { IKeyConfig } from '../model/KeyConfig'; interface IData { uri: string; keyConfig: IKeyConfig; + prevProject: string; + prevBranch: string; onBack: () => void; onLoadProject: (project: string, branch: string) => void; } -const GitHubProjectSelection: FC = ({ uri, keyConfig, onLoadProject, onBack }) => { - const [project, setProject] = useState(); - const [branch, setBranch] = useState(); +const GitHubProjectSelection: FC = ({ uri, keyConfig, prevProject, prevBranch, onLoadProject, onBack }) => { + const [project, setProject] = useState(prevProject); + const [branch, setBranch] = useState(prevBranch); const [isLoading, setIsLoading] = useState(false); - const [isLoaded, setIsLoaded] = useState(false); + const [isLoaded, setIsLoaded] = useState(project !== '' && branch !== ''); const [isLoadError, setIsLoadError] = useState(false); const sk = useSemanticKernel(uri); + const isSameProjectAndBranch = () => { + return project === prevProject && branch === prevBranch && project !== '' && branch !== ''; + } + const download = async () => { try { setIsLoading(true); @@ -48,6 +54,14 @@ const GitHubProjectSelection: FC = ({ uri, keyConfig, onLoadProject, onBa } }; + React.useEffect(() => { + setIsLoaded(isSameProjectAndBranch()) + }, [project]); + + React.useEffect(() => { + setIsLoaded(isSameProjectAndBranch()) + }, [branch]); + return (
Enter in the GitHub Project URL @@ -64,7 +78,9 @@ const GitHubProjectSelection: FC = ({ uri, keyConfig, onLoadProject, onBa style={{ width: '100%' }} type="text" value={project} - onChange={(e) => setProject(e.target.value)} + onChange={(e) => { + setProject(e.target.value); + }} placeholder="https://github.com/microsoft/semantic-kernel" />
@@ -76,11 +92,13 @@ const GitHubProjectSelection: FC = ({ uri, keyConfig, onLoadProject, onBa style={{ width: '100%' }} type="text" value={branch} - onChange={(e) => setBranch(e.target.value)} + onChange={(e) => { + setBranch(e.target.value); + }} placeholder="main" />