@@ -16,8 +16,8 @@ import {
16
16
useDisclosure ,
17
17
} from '@nextui-org/react' ;
18
18
import React , { useContext , useEffect , useState } from 'react' ;
19
- import { IoMdRefresh } from 'react-icons/io' ;
20
19
import {
20
+ clearOneDriveFiles ,
21
21
getOneDriveFiles ,
22
22
isOneDriveConfigured ,
23
23
runOneDriveSync ,
@@ -28,7 +28,6 @@ import { EditContext } from '@/contexts/edit';
28
28
import { importFiles } from '@/actions/knowledge/filehelper' ;
29
29
import { Link } from '@nextui-org/react' ;
30
30
import { syncFiles } from '@/actions/knowledge/tool' ;
31
- import { BiPlus } from 'react-icons/bi' ;
32
31
33
32
interface OnedriveFileModalProps {
34
33
isOpen : boolean ;
@@ -54,8 +53,8 @@ export const OnedriveFileModal = ({
54
53
const { droppedFiles, ensureImportedFiles } = useContext ( EditContext ) ;
55
54
const [ searchQuery , setSearchQuery ] = useState < string > ( '' ) ;
56
55
const [ importing , setImporting ] = useState ( false ) ;
57
- const externalLinkModal = useDisclosure ( ) ;
58
56
const [ sharedLink , setSharedLink ] = useState < string > ( '' ) ;
57
+ const [ isClearing , setIsClearing ] = useState ( false ) ;
59
58
60
59
const [ onedriveFiles , setOnedriveFiles ] = useState <
61
60
Map < string , { url : string ; fileName : string ; displayName : string } >
@@ -99,7 +98,6 @@ export const OnedriveFileModal = ({
99
98
} ;
100
99
101
100
const syncOnedrive = async ( ) => {
102
- setIsSyncing ( true ) ;
103
101
try {
104
102
const isConfigured = await isOneDriveConfigured ( ) ;
105
103
await runOneDriveSync ( isConfigured ) ;
@@ -108,8 +106,6 @@ export const OnedriveFileModal = ({
108
106
setSyncError ( '' ) ;
109
107
} catch ( e ) {
110
108
setSyncError ( ( e as Error ) . toString ( ) ) ;
111
- } finally {
112
- setIsSyncing ( false ) ;
113
109
}
114
110
} ;
115
111
@@ -121,9 +117,8 @@ export const OnedriveFileModal = ({
121
117
}
122
118
} ;
123
119
124
- const addSharedLink = async ( ) => {
120
+ const load = async ( ) => {
125
121
setIsSyncing ( true ) ;
126
- externalLinkModal . onClose ( ) ;
127
122
try {
128
123
await syncSharedLink ( sharedLink ) ;
129
124
setOnedriveFiles ( await getOneDriveFiles ( ) ) ;
@@ -135,6 +130,18 @@ export const OnedriveFileModal = ({
135
130
}
136
131
} ;
137
132
133
+ const clear = async ( ) => {
134
+ setIsClearing ( true ) ;
135
+ try {
136
+ await clearOneDriveFiles ( ) ;
137
+ syncOnedrive ( ) ;
138
+ } catch ( e ) {
139
+ setSyncError ( ( e as Error ) . toString ( ) ) ;
140
+ } finally {
141
+ setIsClearing ( false ) ;
142
+ }
143
+ } ;
144
+
138
145
return (
139
146
< >
140
147
< Modal
@@ -158,46 +165,46 @@ export const OnedriveFileModal = ({
158
165
< p className = "ml-2" > Onedrive</ p >
159
166
</ div >
160
167
161
- < div className = "flex items-center justify-end p-2" >
168
+ < div className = "justify-end flex" >
169
+ < Input
170
+ className = "w-[40vh] flex justify-end ml-2"
171
+ size = "sm"
172
+ placeholder = "Enter your document link"
173
+ value = { sharedLink }
174
+ onChange = { ( e ) => {
175
+ setSharedLink ( e . target . value ) ;
176
+ } }
177
+ />
162
178
< Button
179
+ className = "ml-2"
163
180
size = "sm"
181
+ variant = "flat"
164
182
color = "primary"
165
183
isLoading = { isSyncing }
166
- startContent = { ! isSyncing && < IoMdRefresh /> }
167
- onClick = { syncOnedrive }
184
+ onClick = { load }
185
+ >
186
+ Load
187
+ </ Button >
188
+ < Button
189
+ className = "ml-2"
190
+ size = "sm"
191
+ color = "primary"
192
+ variant = "flat"
193
+ isLoading = { isClearing }
194
+ onClick = { clear }
168
195
>
169
- { ! isSyncing && 'Sync' }
196
+ Clear
170
197
</ Button >
171
- { syncError && (
172
- < p className = "text-sm text-red-500 ml-2" > { syncError } </ p >
173
- ) }
174
198
</ div >
175
199
</ div >
200
+ < div className = "flex items-center justify-end p-2" >
201
+ { syncError && (
202
+ < p className = "text-sm text-red-500 ml-2" > { syncError } </ p >
203
+ ) }
204
+ </ div >
176
205
</ ModalHeader >
177
206
< ModalBody >
178
- < div className = "justify-between flex" >
179
- < Input
180
- className = "w-[20%] flex justify-end"
181
- placeholder = "Search"
182
- size = "sm"
183
- value = { searchQuery }
184
- onChange = { ( e ) => {
185
- setSearchQuery ( e . target . value ) ;
186
- } }
187
- startContent = { < CiSearch /> }
188
- />
189
- < Button
190
- isIconOnly
191
- size = "sm"
192
- color = "primary"
193
- startContent = { < BiPlus /> }
194
- onClick = { ( ) => {
195
- externalLinkModal . onOpen ( ) ;
196
- } }
197
- />
198
- </ div >
199
-
200
- { onedriveConfigured && onedriveFiles . size > 0 ? (
207
+ { onedriveConfigured && onedriveFiles . size > 0 && (
201
208
< div className = "flex flex-col gap-1" >
202
209
< Table
203
210
selectionMode = "multiple"
@@ -255,12 +262,6 @@ export const OnedriveFileModal = ({
255
262
</ TableBody >
256
263
</ Table >
257
264
</ div >
258
- ) : (
259
- < div className = "flex items-center justify-center h-full" >
260
- < p className = "text-sm text-zinc-500" >
261
- { `Click the "Sync" button to sync your Onedrive files` }
262
- </ p >
263
- </ div >
264
265
) }
265
266
</ ModalBody >
266
267
< ModalFooter >
@@ -270,34 +271,7 @@ export const OnedriveFileModal = ({
270
271
size = "sm"
271
272
onClick = { onClickImport }
272
273
>
273
- Import
274
- </ Button >
275
- </ ModalFooter >
276
- </ ModalContent >
277
- </ Modal >
278
- < Modal
279
- isOpen = { externalLinkModal . isOpen }
280
- onClose = { externalLinkModal . onClose }
281
- >
282
- < ModalContent >
283
- < ModalHeader > Shared Link</ ModalHeader >
284
- < ModalBody >
285
- < Input
286
- placeholder = { 'Add shared link for documents' }
287
- value = { sharedLink }
288
- onChange = { ( e ) => setSharedLink ( e . target . value ) }
289
- />
290
- </ ModalBody >
291
- < ModalFooter >
292
- < Button
293
- color = "primary"
294
- disabled = { isSyncing }
295
- size = "sm"
296
- onClick = { ( ) => {
297
- addSharedLink ( ) ;
298
- } }
299
- >
300
- Add
274
+ Add to Knowledge
301
275
</ Button >
302
276
</ ModalFooter >
303
277
</ ModalContent >
0 commit comments