import { SlInput , SlButton } from '@shoelace-style/shoelace' ;
import { IdType , UserConfiguration } from 'ass' ;
const genericErrorAlert = ( ) = > alert ( 'An error occured, please check the console for details' ) ;
const errAlert = ( logTitle : string , err : any , stream : 'error' | 'warn' = 'error' ) = > ( console [ stream ] ( logTitle , err ) , genericErrorAlert ( ) ) ;
// * Wait for the document to be ready
document . addEventListener ( 'DOMContentLoaded' , ( ) = > {
const dirInputElm = document . querySelector ( '#dir' ) as SlInput ;
const idTypeInputElm = document . querySelector ( '#idtype' ) as SlInput ;
const idSizeInputElm = document . querySelector ( '#idsize' ) as SlInput ;
const gfySizeInputElm = document . querySelector ( '#gfysize' ) as SlInput ;
const fileSizeInputElm = document . querySelector ( '#filesize' ) as SlInput ;
const submitButtonElm = document . querySelector ( '#submit' ) as SlButton ;
// * Setup button click handler
submitButtonElm . addEventListener ( 'click' , async ( ) = > {
const config : UserConfiguration = {
uploadsDir : dirInputElm.value ,
idType : idTypeInputElm.value as IdType ,
idSize : parseInt ( idSizeInputElm . value ) ,
gfySize : parseInt ( gfySizeInputElm . value ) ,
maximumFileSize : parseInt ( fileSizeInputElm . value ) ,
} ;
fetch ( '/setup' , {
method : 'POST' ,
headers : { 'Content-Type' : 'application/json' } ,
body : JSON.stringify ( config )
} )
. then ( ( res ) = > res . json ( ) )
. then ( ( data : {
success : boolean ,
message : string
} ) = > {
if ( ! data . success ) alert ( data . message ) ;
else alert ( 'good?' ) ;
} )
. catch ( ( err ) = > errAlert ( 'POST to /setup failed!' , err ) ) ;
} ) ;
} ) ;