@@ -4,13 +4,13 @@ import Lottie from 'lottie-react';
4
4
import animationData from '../assets/95241-uploading.json' ;
5
5
import { Link } from 'react-router-dom' ;
6
6
7
- function Uploadnote ( { moduleNumber } ) {
7
+ function Uploadn ( { moduleNumber } ) {
8
8
const [ numNotes , setNumNotes ] = useState ( 0 ) ;
9
9
const [ selectedFiles , setSelectedFiles ] = useState ( [ ] ) ;
10
10
const [ uploading , setUploading ] = useState ( false ) ;
11
11
const [ uploadSuccess , setUploadSuccess ] = useState ( false ) ;
12
12
const [ showSuccessMessage , setShowSuccessMessage ] = useState ( false ) ;
13
- const [ fadeOut , setFadeOut ] = useState ( false ) ; // New state to control fading out
13
+ const [ fadeOut , setFadeOut ] = useState ( false ) ;
14
14
15
15
const handleNumNotesChange = ( event ) => {
16
16
const count = parseInt ( event . target . value , 10 ) ;
@@ -19,12 +19,35 @@ function Uploadnote({ moduleNumber }) {
19
19
setUploadSuccess ( false ) ;
20
20
} ;
21
21
22
- const handleFileChange = ( index , event ) => {
22
+ const handleFileChange = async ( index , event ) => {
23
23
const file = event . target . files [ 0 ] ;
24
24
const updatedFiles = [ ...selectedFiles ] ;
25
25
updatedFiles [ index ] = file ;
26
26
setSelectedFiles ( updatedFiles ) ;
27
27
setUploadSuccess ( false ) ;
28
+
29
+ try {
30
+ const formData = new FormData ( ) ;
31
+ formData . append ( 'files' , file ) ;
32
+
33
+ const response = await fetch ( 'https://3f2ssd7loqowjtj7hnzhni7trq0blutk.lambda-url.us-east-1.on.aws/notestotext_modwise' , {
34
+ method : 'POST' ,
35
+ body : formData ,
36
+ } ) ;
37
+
38
+ if ( response . ok ) {
39
+ setUploadSuccess ( true ) ;
40
+ setShowSuccessMessage ( true ) ;
41
+ setTimeout ( ( ) => {
42
+ setShowSuccessMessage ( false ) ;
43
+ setFadeOut ( true ) ;
44
+ } , 10000 ) ;
45
+ } else {
46
+ throw new Error ( 'Error uploading file' ) ;
47
+ }
48
+ } catch ( error ) {
49
+ console . error ( 'Error uploading file:' , error ) ;
50
+ }
28
51
} ;
29
52
30
53
const handleUpload = ( ) => {
@@ -65,20 +88,20 @@ function Uploadnote({ moduleNumber }) {
65
88
66
89
const saveFileLocally = ( filePath , file ) => {
67
90
return new Promise ( ( resolve , reject ) => {
68
- const virtualLink = document . createElement ( 'a' ) ;
69
- virtualLink . href = URL . createObjectURL ( file ) ;
70
- virtualLink . download = filePath ;
71
- virtualLink . addEventListener ( 'load' , ( ) => {
72
- URL . revokeObjectURL ( virtualLink . href ) ;
73
- resolve ( ) ;
74
- } ) ;
75
- virtualLink . addEventListener ( 'error' , ( error ) => {
76
- reject ( error ) ;
77
- } ) ;
78
- document . body . appendChild ( virtualLink ) ;
79
- virtualLink . click ( ) ;
80
- document . body . removeChild ( virtualLink ) ;
91
+ const virtualLink = document . createElement ( 'a' ) ;
92
+ virtualLink . href = URL . createObjectURL ( file ) ;
93
+ virtualLink . download = filePath ;
94
+ virtualLink . addEventListener ( 'load' , ( ) => {
95
+ URL . revokeObjectURL ( virtualLink . href ) ;
96
+ resolve ( ) ;
97
+ } ) ;
98
+ virtualLink . addEventListener ( 'error' , ( error ) => {
99
+ reject ( error ) ;
81
100
} ) ;
101
+ document . body . appendChild ( virtualLink ) ;
102
+ virtualLink . click ( ) ;
103
+ document . body . removeChild ( virtualLink ) ;
104
+ } ) ;
82
105
} ;
83
106
84
107
const handleUploadAnother = ( ) => {
@@ -88,6 +111,20 @@ function Uploadnote({ moduleNumber }) {
88
111
setFadeOut ( false ) ;
89
112
} ;
90
113
114
+ const handleFinish = ( ) => {
115
+ fetch ( 'https://3f2ssd7loqowjtj7hnzhni7trq0blutk.lambda-url.us-east-1.on.aws/notestotext' )
116
+ . then ( ( response ) => {
117
+ if ( response . ok ) {
118
+ // Handle successful response
119
+ } else {
120
+ throw new Error ( 'Error requesting data' ) ;
121
+ }
122
+ } )
123
+ . catch ( ( error ) => {
124
+ console . error ( 'Error requesting data:' , error ) ;
125
+ } ) ;
126
+ } ;
127
+
91
128
const renderUploadInputs = ( ) => {
92
129
const inputs = [ ] ;
93
130
@@ -144,18 +181,14 @@ function Uploadnote({ moduleNumber }) {
144
181
>
145
182
{ uploading ? 'Uploaded' : 'Upload' }
146
183
</ motion . button >
147
- < Link to = "/uploadpyq " className = "bg-green-500 text-white py-2 ml-4 px-6 mt-4 rounded-lg" >
184
+ < Link to = "/uploadp " className = "bg-green-500 text-white py-2 ml-4 px-6 mt-4 rounded-lg" >
148
185
Next
149
186
</ Link >
150
187
</ >
151
188
) : (
152
189
< >
153
190
{ showSuccessMessage && (
154
- < motion . div
155
- className = "text-xl"
156
- initial = { { opacity : 0 } }
157
- animate = { { opacity : 1 } }
158
- >
191
+ < motion . div className = "text-xl" initial = { { opacity : 0 } } animate = { { opacity : 1 } } >
159
192
Successfully Uploaded!
160
193
</ motion . div >
161
194
) }
@@ -165,9 +198,12 @@ function Uploadnote({ moduleNumber }) {
165
198
>
166
199
Upload Another
167
200
</ motion . button >
168
- < Link to = "/uploadpyq " className = "text-blue-500 mt-8" >
201
+ < Link to = "/uploadp " className = "text-blue-500 mt-8" >
169
202
Next
170
203
</ Link >
204
+ < button className = "text-blue-500 mt-8" onClick = { handleFinish } >
205
+ Finish
206
+ </ button >
171
207
</ >
172
208
) }
173
209
</ motion . div >
@@ -176,4 +212,4 @@ function Uploadnote({ moduleNumber }) {
176
212
) ;
177
213
}
178
214
179
- export default Uploadnote ;
215
+ export default Uploadn ;
0 commit comments