11import { useState } from 'react' ;
22import CustomModal from '../HOC/CustomModal' ;
33import { TextInput } from '@neo4j-ndl/react' ;
4- import { WikipediaModalTypes } from '../types' ;
4+ import { CustomFile , WikipediaModalTypes } from '../types' ;
5+ import { useFileContext } from '../context/UsersFiles' ;
6+ import { getFileFromLocal } from '../utils/Utils' ;
7+ import { v4 as uuidv4 } from 'uuid' ;
8+ import { useCredentials } from '../context/UserCredentials' ;
9+ import { urlScanAPI } from '../services/URLScan' ;
510
611const WikipediaModal : React . FC < WikipediaModalTypes > = ( { hideModal, open } ) => {
712 const [ wikiQuery , setwikiQuery ] = useState < string > ( '' ) ;
813 const [ statusMessage , setStatusMessage ] = useState < string > ( '' ) ;
9-
1014 const [ status , setStatus ] = useState < 'unknown' | 'success' | 'info' | 'warning' | 'danger' > ( 'unknown' ) ;
11-
15+ const { setFiles, setFilesData, model, filesData, files } = useFileContext ( ) ;
16+ const { userCredentials } = useCredentials ( ) ;
1217 const onClose = ( ) => {
1318 hideModal ( ) ;
1419 reset ( ) ;
@@ -17,7 +22,88 @@ const WikipediaModal: React.FC<WikipediaModalTypes> = ({ hideModal, open }) => {
1722 const reset = ( ) => {
1823 setwikiQuery ( '' ) ;
1924 } ;
20- const submitHandler = ( ) => { } ;
25+ const submitHandler = async ( ) => {
26+ const defaultValues : CustomFile = {
27+ processing : 0 ,
28+ status : 'New' ,
29+ NodesCount : 0 ,
30+ id : uuidv4 ( ) ,
31+ relationshipCount : 0 ,
32+ type : 'text' ,
33+ model : model ,
34+ fileSource : 'wikipedia' ,
35+ } ;
36+ if ( wikiQuery . length ) {
37+ try {
38+ setStatus ( 'info' ) ;
39+ setStatusMessage ( 'Scanning...' ) ;
40+ const apiResponse = await urlScanAPI ( {
41+ userCredentials : userCredentials ,
42+ model : model ,
43+ wikiquery : wikiQuery ,
44+ } ) ;
45+ console . log ( 'response' , apiResponse ) ;
46+ setStatus ( 'success' ) ;
47+ if ( apiResponse ?. data . status == 'Failed' || ! apiResponse . data ) {
48+ setStatus ( 'danger' ) ;
49+ setStatusMessage ( 'Please Fill The Valid Credentials' ?? apiResponse ?. message ) ;
50+ setTimeout ( ( ) => {
51+ hideModal ( ) ;
52+ setStatus ( 'unknown' ) ;
53+ reset ( ) ;
54+ } , 5000 ) ;
55+ return ;
56+ }
57+ setStatusMessage ( `Successfully Created Source Nodes for ${ apiResponse . data . success_count } Wikipedia Sources` ) ;
58+ const copiedFilesData : CustomFile [ ] = [ ...filesData ] ;
59+ const copiedFiles : File [ ] = [ ...files ] ;
60+ apiResponse ?. data . file_name . forEach ( ( item : any ) => {
61+ const filedataIndex = copiedFilesData . findIndex ( ( filedataitem ) => filedataitem ?. name === item ?. fileName ) ;
62+ const fileIndex = copiedFiles . findIndex ( ( filedataitem ) => filedataitem ?. name === item ?. fileName ) ;
63+ if ( filedataIndex == - 1 ) {
64+ copiedFilesData . unshift ( {
65+ name : item . fileName ,
66+ size : item . fileSize ,
67+ wiki_query : item . fileName ,
68+ ...defaultValues ,
69+ } ) ;
70+ } else {
71+ const tempFileData = copiedFilesData [ filedataIndex ] ;
72+ copiedFilesData . splice ( filedataIndex , 1 ) ;
73+ copiedFilesData . unshift ( {
74+ ...tempFileData ,
75+ status : defaultValues . status ,
76+ NodesCount : defaultValues . NodesCount ,
77+ relationshipCount : defaultValues . relationshipCount ,
78+ processing : defaultValues . processing ,
79+ model : defaultValues . model ,
80+ fileSource : defaultValues . fileSource ,
81+ } ) ;
82+ }
83+ if ( fileIndex == - 1 ) {
84+ //@ts -ignore
85+ copiedFiles . unshift ( null ) ;
86+ } else {
87+ const tempFile = copiedFiles [ filedataIndex ] ;
88+ copiedFiles . splice ( fileIndex , 1 ) ;
89+ copiedFiles . unshift ( getFileFromLocal ( tempFile . name ) ?? tempFile ) ;
90+ }
91+ } ) ;
92+ setFilesData ( copiedFilesData ) ;
93+ setFiles ( copiedFiles ) ;
94+ reset ( ) ;
95+ } catch ( error ) {
96+ setStatus ( 'danger' ) ;
97+ setStatusMessage ( 'Some Error Occurred or Please Check your Instance Connection' ) ;
98+ }
99+ } else {
100+ setStatus ( 'danger' ) ;
101+ setStatusMessage ( 'Please Fill the Wikipedia source' ) ;
102+ setTimeout ( ( ) => {
103+ setStatus ( 'unknown' ) ;
104+ } , 5000 ) ;
105+ }
106+ } ;
21107 return (
22108 < CustomModal
23109 open = { open }
0 commit comments