Skip to content

Commit f43b5b1

Browse files
Integrated wikipedia related API
1 parent 80388b4 commit f43b5b1

File tree

6 files changed

+98
-16
lines changed

6 files changed

+98
-16
lines changed

frontend/src/components/Content.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ const Content: React.FC<ContentProps> = ({ isExpanded, showChatBot, openChatBot
7878
filesData[uid].source_url,
7979
localStorage.getItem('accesskey'),
8080
localStorage.getItem('secretkey'),
81-
filesData[uid].max_sources,
8281
filesData[uid].wiki_query ?? ''
8382
);
8483
if (apiResponse?.data?.status === 'Failed') {

frontend/src/components/Layout/DrawerDropzone.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ const DrawerDropzone: React.FC<DrawerProps> = ({ isExpanded }) => {
6262
type='push'
6363
closeable={false}
6464
key={'leftdrawer'}
65-
onExpandedChange={function Ha() { }}
65+
onExpandedChange={function Ha() {}}
6666
>
6767
<Drawer.Body style={{ overflow: 'hidden', height: 'intial' }}>
6868
<div className='flex h-full flex-col'>

frontend/src/components/WikipediaModal.tsx

Lines changed: 90 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
import { useState } from 'react';
22
import CustomModal from '../HOC/CustomModal';
33
import { 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

611
const 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}

frontend/src/services/URLScan.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ import axios from 'axios';
22
import { url } from '../utils/Utils';
33

44
interface ScanProps {
5-
urlParam: string;
5+
urlParam?: string;
66
userCredentials?: any;
77
model?: string;
88
accessKey?: string;
99
secretKey?: string;
1010
max_limit?: number;
11+
wikiquery?: string;
1112
query_source?: string;
1213
}
1314

@@ -18,7 +19,8 @@ const urlScanAPI = async (props: ScanProps) => {
1819
formData.append('database', props?.userCredentials?.database ?? '');
1920
formData.append('userName', props?.userCredentials?.userName ?? '');
2021
formData.append('password', props?.userCredentials?.password ?? '');
21-
formData.append('source_url', props?.urlParam);
22+
formData.append('source_url', props?.urlParam ?? '');
23+
formData.append('wiki_query', props?.wikiquery ?? '');
2224
if (props.model != undefined) {
2325
formData.append('model', props?.model);
2426
}

frontend/src/types.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ export interface CustomFile extends Partial<globalThis.File> {
99
model: string;
1010
fileSource: string;
1111
source_url?: string;
12-
max_sources?: number;
1312
wiki_query?: string;
1413
}
1514

@@ -80,7 +79,6 @@ export interface SourceNode {
8079
url?: string;
8180
awsAccessKeyId?: string;
8281
fileSource: string;
83-
max_limit?: number;
8482
query_source?: string;
8583
}
8684
export interface SideNavProps {

frontend/src/utils/FileAPI.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,16 @@ export const extractAPI = async (
2121
source_url?: any,
2222
aws_access_key_id?: any,
2323
aws_secret_access_key?: any,
24-
max_sources?: number,
2524
wiki_query?: string
2625
): Promise<any> => {
2726
const urlExtract = `${url()}/extract`;
2827
const method: Method = 'post';
2928
const commonParams: UserCredentials = userCredentials;
3029
let additionalParams: ExtractParams;
3130
if (source_url?.length) {
32-
if (max_sources != undefined && !isNaN(max_sources)) {
33-
additionalParams = { model, source_url, aws_secret_access_key, aws_access_key_id, max_sources, wiki_query };
34-
} else {
35-
additionalParams = { model, source_url, aws_secret_access_key, aws_access_key_id, wiki_query };
36-
}
31+
additionalParams = { model, source_url, aws_secret_access_key, aws_access_key_id };
32+
} else if (wiki_query?.length) {
33+
additionalParams = { model, wiki_query };
3734
} else {
3835
additionalParams = { file, model };
3936
}

0 commit comments

Comments
 (0)