@@ -6,20 +6,25 @@ import { useFileContext } from '../context/UsersFiles';
66import { v4 as uuidv4 } from 'uuid' ;
77import { useCredentials } from '../context/UserCredentials' ;
88import { urlScanAPI } from '../services/URLScan' ;
9+ import { wikiValidation } from '../utils/Utils' ;
910
1011const WikipediaModal : React . FC < WikipediaModalTypes > = ( { hideModal, open } ) => {
1112 const [ wikiQuery , setwikiQuery ] = useState < string > ( '' ) ;
1213 const [ statusMessage , setStatusMessage ] = useState < string > ( '' ) ;
1314 const [ status , setStatus ] = useState < 'unknown' | 'success' | 'info' | 'warning' | 'danger' > ( 'unknown' ) ;
1415 const { setFilesData, model, filesData } = useFileContext ( ) ;
1516 const { userCredentials } = useCredentials ( ) ;
17+ const [ isFocused , setisFocused ] = useState < boolean > ( false ) ;
18+ const [ isValid , setValid ] = useState < boolean > ( false ) ;
1619 const onClose = useCallback ( ( ) => {
1720 hideModal ( ) ;
1821 setwikiQuery ( '' ) ;
1922 setStatus ( 'unknown' ) ;
23+ setValid ( false )
24+ setisFocused ( false )
2025 } , [ ] ) ;
2126
22- const submitHandler = async ( ) => {
27+ const submitHandler = async ( url : string ) => {
2328 const defaultValues : CustomFileBase = {
2429 processing : 0 ,
2530 status : 'New' ,
@@ -30,7 +35,10 @@ const WikipediaModal: React.FC<WikipediaModalTypes> = ({ hideModal, open }) => {
3035 fileSource : 'Wikipedia' ,
3136 processingProgress : undefined ,
3237 } ;
33- if ( wikiQuery . length ) {
38+ if ( url . trim ( ) != '' ) {
39+ setValid ( wikiValidation ( url ) && isFocused ) ;
40+ }
41+ if ( isValid ) {
3442 try {
3543 setStatus ( 'info' ) ;
3644 setStatusMessage ( 'Scanning...' ) ;
@@ -47,6 +55,8 @@ const WikipediaModal: React.FC<WikipediaModalTypes> = ({ hideModal, open }) => {
4755 setTimeout ( ( ) => {
4856 setStatus ( 'unknown' ) ;
4957 setwikiQuery ( '' ) ;
58+ setValid ( false )
59+ setisFocused ( false )
5060 hideModal ( ) ;
5161 } , 5000 ) ;
5262 return ;
@@ -56,13 +66,13 @@ const WikipediaModal: React.FC<WikipediaModalTypes> = ({ hideModal, open }) => {
5666 if ( apiResCheck ) {
5767 setStatus ( 'info' ) ;
5868 setStatusMessage (
59- `Successfully Created Source Nodes for ${ apiResponse . data . success_count } and Failed for ${ apiResponse . data . failed_count } Wikipedia Sources `
69+ `Successfully Created Source Node for ${ apiResponse . data . success_count } and Failed for ${ apiResponse . data . failed_count } Wikipedia Link `
6070 ) ;
6171 } else if ( apiResponse ?. data ?. success_count ) {
62- setStatusMessage ( `Successfully Created Source Nodes for ${ apiResponse . data . success_count } Wikipedia Sources ` ) ;
72+ setStatusMessage ( `Successfully Created Source Node for ${ apiResponse . data . success_count } Wikipedia Link ` ) ;
6373 } else {
6474 setStatus ( 'danger' ) ;
65- setStatusMessage ( `Failed to Create Source Nodes for ${ apiResponse . data . failed_count } Wikipedia Sources ` ) ;
75+ setStatusMessage ( `Failed to Create Source Node for ${ apiResponse . data . failed_count } Wikipedia Link ` ) ;
6676 }
6777
6878 const copiedFilesData : CustomFile [ ] = [ ...filesData ] ;
@@ -96,13 +106,15 @@ const WikipediaModal: React.FC<WikipediaModalTypes> = ({ hideModal, open }) => {
96106 } ) ;
97107 setFilesData ( copiedFilesData ) ;
98108 setwikiQuery ( '' ) ;
109+ setValid ( false ) ;
110+ setisFocused ( false ) ;
99111 } catch ( error ) {
100112 setStatus ( 'danger' ) ;
101113 setStatusMessage ( 'Some Error Occurred or Please Check your Instance Connection' ) ;
102114 }
103115 } else {
104116 setStatus ( 'danger' ) ;
105- setStatusMessage ( 'Please Fill the Wikipedia source ' ) ;
117+ setStatusMessage ( 'Please Fill the Wikipedia Link ' ) ;
106118 setTimeout ( ( ) => {
107119 setStatus ( 'unknown' ) ;
108120 } , 5000 ) ;
@@ -111,30 +123,34 @@ const WikipediaModal: React.FC<WikipediaModalTypes> = ({ hideModal, open }) => {
111123 setTimeout ( ( ) => {
112124 setStatus ( 'unknown' ) ;
113125 hideModal ( ) ;
114- } , 500 ) ;
126+ } , 1000 ) ;
115127 } ;
116128 return (
117129 < CustomModal
118130 open = { open }
119131 onClose = { onClose }
120132 statusMessage = { statusMessage }
121133 setStatus = { setStatus }
122- submitHandler = { submitHandler }
134+ submitHandler = { ( ) => submitHandler ( wikiQuery ) }
123135 status = { status }
124136 submitLabel = 'Submit'
125137 >
126138 < div className = 'w-full inline-block' >
127139 < TextInput
140+ type = 'url'
128141 id = 'keyword'
129142 value = { wikiQuery }
130143 disabled = { false }
131- label = 'Wikipedia Keywords '
132- aria-label = 'Wikipedia Keywords '
133- placeholder = 'Albert Einstein ,Isaac Newton '
144+ label = 'Wikipedia Link '
145+ aria-label = 'Wikipedia Link '
146+ placeholder = 'https://en.wikipedia.org/wiki/Albert_Einstein '
134147 autoFocus
135148 fluid
136149 required
150+ onBlur = { ( ) => setValid ( wikiValidation ( wikiQuery ) && isFocused ) }
151+ errorText = { ! isValid && isFocused && 'Please Fill The Valid URL' }
137152 onChange = { ( e ) => {
153+ setisFocused ( true ) ;
138154 setwikiQuery ( e . target . value ) ;
139155 } }
140156 />
0 commit comments