You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@devlake.apache.org by mi...@apache.org on 2024/05/27 07:07:41 UTC

(incubator-devlake) 01/01: fix: not refresh project when updating plugin linker

This is an automated email from the ASF dual-hosted git repository.

mintsweet pushed a commit to branch fix-linker-update
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git

commit e311d12bb68755fcf35fa0918f61f560e17e95d8
Author: mintsweet <0x...@gmail.com>
AuthorDate: Mon May 27 19:07:27 2024 +1200

    fix: not refresh project when updating plugin linker
---
 .../src/routes/project/detail/settings-panel.tsx   | 38 +++++++++++++++-------
 1 file changed, 26 insertions(+), 12 deletions(-)

diff --git a/config-ui/src/routes/project/detail/settings-panel.tsx b/config-ui/src/routes/project/detail/settings-panel.tsx
index 0cd2f006e..df206cf7f 100644
--- a/config-ui/src/routes/project/detail/settings-panel.tsx
+++ b/config-ui/src/routes/project/detail/settings-panel.tsx
@@ -38,19 +38,30 @@ interface Props {
 
 export const SettingsPanel = ({ project, onRefresh }: Props) => {
   const [name, setName] = useState('');
-  const [enableDora, setEnableDora] = useState(false);
-  const [associatePrWithIssues, setAssociatePrWithIssues] = useState(false);
-  const [regexPrIssue, setRegexPrIssue] = useState('');
+  const [dora, setDora] = useState({
+    enable: false,
+  });
+  const [linker, setLinker] = useState({
+    enable: false,
+    prToIssueRegexp: '',
+  });
   const [operating, setOperating] = useState(false);
   const [open, setOpen] = useState(false);
 
   const navigate = useNavigate();
 
   useEffect(() => {
-    const doraMetrics = project.metrics.find((ms: any) => ms.pluginName === 'dora');
+    const dora = project.metrics.find((ms) => ms.pluginName === 'dora');
+    const linker = project.metrics.find((ms) => ms.pluginName === 'linker');
 
     setName(project.name);
-    setEnableDora(doraMetrics?.enable ?? false);
+    setDora({
+      enable: dora?.enable ?? false,
+    });
+    setLinker({
+      enable: linker?.enable ?? false,
+      prToIssueRegexp: linker?.pluginOption?.prToIssueRegexp ?? '',
+    });
   }, [project]);
 
   const handleUpdate = async () => {
@@ -68,14 +79,14 @@ export const SettingsPanel = ({ project, onRefresh }: Props) => {
             {
               pluginName: 'dora',
               pluginOption: {},
-              enable: enableDora,
+              enable: dora.enable,
             },
             {
               pluginName: 'linker',
               pluginOption: {
-                prToIssueRegexp: regexPrIssue,
+                prToIssueRegexp: linker.prToIssueRegexp,
               },
-              enable: associatePrWithIssues,
+              enable: linker.enable,
             },
           ],
         }),
@@ -118,7 +129,7 @@ export const SettingsPanel = ({ project, onRefresh }: Props) => {
           </Block>
           <Block
             title={
-              <Checkbox checked={enableDora} onChange={(e) => setEnableDora(e.target.checked)}>
+              <Checkbox checked={dora.enable} onChange={(e) => setDora({ enable: e.target.checked })}>
                 Enable DORA Metrics
               </Checkbox>
             }
@@ -126,7 +137,7 @@ export const SettingsPanel = ({ project, onRefresh }: Props) => {
           />
           <Block
             title={
-              <Checkbox checked={associatePrWithIssues} onChange={(e) => setAssociatePrWithIssues(e.target.checked)}>
+              <Checkbox checked={linker.enable} onChange={(e) => setLinker({ ...linker, enable: e.target.checked })}>
                 Associate pull requests with issues
               </Checkbox>
             }
@@ -145,8 +156,11 @@ export const SettingsPanel = ({ project, onRefresh }: Props) => {
               </span>
             }
           >
-            {associatePrWithIssues && (
-              <Input style={{ width: 600 }} value={regexPrIssue} onChange={(e) => setRegexPrIssue(e.target.value)} />
+            {linker.enable && (
+              <Input
+                value={linker.prToIssueRegexp}
+                onChange={(e) => setLinker({ ...linker, prToIssueRegexp: e.target.value })}
+              />
             )}
           </Block>
           <Block>