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

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit c004fae040602fd299f563cfaba606ef2dd2766f
Author: Marat Gubaidullin <[email protected]>
AuthorDate: Thu Dec 7 17:07:38 2023 -0500

    Check filenames
---
 .../src/main/webui/src/api/ProjectModels.ts        |  2 -
 .../webui/src/project/files/CreateFileModal.tsx    | 44 +++++++++++-----------
 .../src/main/webui/src/project/files/FilesTab.tsx  |  4 +-
 3 files changed, 24 insertions(+), 26 deletions(-)

diff --git a/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts 
b/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts
index 0d6ab4fe..49beac67 100644
--- a/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts
+++ b/karavan-web/karavan-app/src/main/webui/src/api/ProjectModels.ts
@@ -156,9 +156,7 @@ export const ProjectFileTypes: ProjectFileType[] = [
     new ProjectFileType("PROPERTIES", "Properties", "properties"),
     new ProjectFileType("JSON", "JSON", "json"),
     new ProjectFileType("YAML", "YAML", "yaml"),
-    new ProjectFileType("LOG", "Log", "log"),
     new ProjectFileType("SH", "Script", "sh"),
-    new ProjectFileType("SQL", "SQL", "sql"),
     new ProjectFileType("OTHER", "Other", "*"),
 ];
 
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/project/files/CreateFileModal.tsx 
b/karavan-web/karavan-app/src/main/webui/src/project/files/CreateFileModal.tsx
index 1d65e5d7..c5c99037 100644
--- 
a/karavan-web/karavan-app/src/main/webui/src/project/files/CreateFileModal.tsx
+++ 
b/karavan-web/karavan-app/src/main/webui/src/project/files/CreateFileModal.tsx
@@ -93,19 +93,15 @@ export function CreateFileModal(props: Props) {
     }
 
     function confirmAndCloseModal() {
-        const extension = ProjectFileTypes.filter(value => value.name === 
fileType)[0].extension;
-        const filename = (extension !== 'java') ? fileNameCheck(name) : 
CamelUi.javaNameFromTitle(name);
         const code = getCode();
-        if (filename && extension) {
-            const fullFileName = filename + (isKamelet ? '-' + kameletType : 
'') + '.' + extension;
-            const file = new ProjectFile(fullFileName, project.projectId, 
code, Date.now());
-            ProjectService.createFile(file);
-            cleanValues();
-            if (code) {
-                setFile('select', file, designerTab);
-            } else {
-                setFile("none");
-            }
+        const fullFileName = getFullFileName(name, fileType);
+        const file = new ProjectFile(fullFileName, project.projectId, code, 
Date.now());
+        ProjectService.createFile(file);
+        cleanValues();
+        if (code) {
+            setFile('select', file, designerTab);
+        } else {
+            setFile("none");
         }
     }
 
@@ -118,7 +114,6 @@ export function CreateFileModal(props: Props) {
     }
 
     const isKamelet = props.isKameletsProject;
-    const extension = ProjectFileTypes.filter(value => value.name === 
fileType)[0]?.extension;
 
     const listOfValues: Value[] = KameletApi.getKamelets()
         .filter(k => k.metadata.labels["camel.apache.org/kamelet.type"] === 
kameletType)
@@ -127,11 +122,20 @@ export function CreateFileModal(props: Props) {
             return v;
         })
 
-    function getFullFileName(name: string) {
+    function getFullFileName(name: string, type?: string) {
+        let extension = ProjectFileTypes.filter(value => value.name === 
type)[0]?.extension;
+        extension = extension === '*' ? '' : '.' + extension;
         const filename = (extension !== 'java')
             ? fileNameCheck(name)
             : CamelUi.javaNameFromTitle(name);
-        return filename + (isKamelet ? '-' + kameletType : '') + '.' + 
extension;
+        return filename + (isKamelet ? '-' + kameletType : '') + extension;
+    }
+
+    function update(value: string, type?: string) {
+        setName(value);
+        const exists = getExistingFilenames().findIndex(f => f === 
getFullFileName(value, type)) === -1;
+        setNameAvailable(exists);
+        setFileType(type);
     }
 
     return (
@@ -155,7 +159,7 @@ export function CreateFileModal(props: Props) {
                                 return <ToggleGroupItem key={title} 
text={title} buttonId={p.name}
                                                         isSelected={fileType 
=== p.name}
                                                         onChange={(_, 
selected) => {
-                                                            
setFileType(p.name);
+                                                            update(name, 
p.name);
                                                         }}/>
                             })}
                     </ToggleGroup>
@@ -177,15 +181,11 @@ export function CreateFileModal(props: Props) {
                     <TextInput id="name"
                                aria-label="name"
                                value={name}
-                               onChange={(_, value) => {
-                                   setName(value);
-                                   const exists = 
getExistingFilenames().findIndex(f => f === getFullFileName(value)) === -1;
-                                   setNameAvailable(exists);
-                               }}/>
+                               onChange={(_, value) => update(value, 
fileType)}/>
                     <FormHelperText>
                         <HelperText id="helper-text1">
                             <HelperTextItem variant={nameAvailable ? 'default' 
: 'error'}>
-                                {!nameAvailable ? 'File ': 
''}{getFullFileName(name)}{!nameAvailable ? ' already exists': ''}
+                                {!nameAvailable ? 'File ': 
''}{getFullFileName(name, fileType)}{!nameAvailable ? ' already exists': ''}
                             </HelperTextItem>
                         </HelperText>
                     </FormHelperText>
diff --git 
a/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx 
b/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx
index 4904d2aa..868cd0a0 100644
--- a/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/project/files/FilesTab.tsx
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-import React, {useEffect} from 'react';
+import React from 'react';
 import {
     Badge,
     Bullseye,
@@ -86,7 +86,7 @@ export function FilesTab () {
 
     const types = isBuildIn()
         ? (isKameletsProject() ? ['KAMELET'] : ['CODE', 'PROPERTIES'])
-        : ProjectFileTypes.filter(p => !['PROPERTIES', 'LOG', 
'KAMELET'].includes(p.name)).map(p => p.name);
+        : ProjectFileTypes.filter(p => !['PROPERTIES', 
'KAMELET'].includes(p.name)).map(p => p.name);
 
     return (
         <PageSection className="project-tab-panel" padding={{default: 
"padding"}}>

Reply via email to