1- import React , { useState } from "react" ;
1+ import React , { useEffect , useState } from "react" ;
22import { UploadButton , UploadDropzone } from "@bytescale/upload-widget-react" ;
3+ import { UploadWidgetOnPreUploadResult } from "@bytescale/upload-widget/dist/config/UploadWidgetOnPreUploadResult" ;
34
5+ /**
6+ * Playground for manual testing/experimentation of various edge cases. For example, checking how changes to the 'options'
7+ * param impact the upload components.
8+ */
49export default ( ) : JSX . Element => {
510 const [ files , setFiles ] = useState < string [ ] > ( [ ] ) ;
611 const [ , setCallback ] = useState < ( ) => void > ( ( ) => { } ) ;
7- console . log ( `Hey ${ Math . random ( ) } ` ) ;
12+ const [ ticks , setTicks ] = useState ( 0 ) ;
13+
14+ useEffect ( ( ) => {
15+ const handle = setInterval ( ( ) => setTicks ( x => x + 1 ) , 1000 ) ;
16+ return ( ) => clearInterval ( handle ) ;
17+ } , [ ] ) ;
18+
819 return (
920 < >
21+ < p > Ticks: { ticks } </ p >
22+
1023 < ul >
1124 { files . map ( x => (
1225 < li key = { x } >
@@ -21,10 +34,16 @@ export default (): JSX.Element => {
2134 { ( { onClick } ) => < button onClick = { onClick } > Upload a file...</ button > }
2235 </ UploadButton >
2336 < UploadDropzone
37+ className = { Math . random ( ) . toString ( ) }
2438 options = { {
2539 apiKey : "free" ,
26- onInit : ( { close } ) => {
27- setCallback ( close ) ;
40+ multi : true ,
41+ onInit : ( { reset } ) => {
42+ setCallback ( reset ) ;
43+ } ,
44+ styles : { colors : { primary : `#${ Math . floor ( Math . random ( ) * 16777215 ) . toString ( 16 ) } ` } } ,
45+ onPreUpload : ( ) : UploadWidgetOnPreUploadResult | undefined => {
46+ return Math . random ( ) < 0.5 ? undefined : { errorMessage : "Hello" } ;
2847 }
2948 } }
3049 onUpdate = { x => setFiles ( x . uploadedFiles . map ( x => x . fileUrl ) ) }
0 commit comments