package Ġorg . fl ax o . frontend . component Ċ Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . html . Button Type Ċ import Ġkotlinx . html . InputType Ċ import Ġkotlinx . html . classes Ċ import Ġkotlinx . html . hidden Ċ import Ġkotlinx . html . id Ċ import Ġkotlinx . html . js . onClick Function Ċ import Ġkotlinx . html . role Ċ import Ġkotlinx . html . tab Index Ċ import Ġorg . fl ax o . common . data . User Ċ import Ġorg . fl ax o . frontend . Container Ċ import Ġorg . fl ax o . frontend . Credentials Ċ import Ġorg . fl ax o . frontend . Notifications Ċ import Ġorg . fl ax o . frontend . click On Button Ċ import Ġorg . fl ax o . frontend . client . Fl ax o Client Ċ import Ġorg . fl ax o . frontend . client . Fl ax o HttpException Ċ import Ġorg . fl ax o . frontend . validated Input Value Ċ import Ġreact . R Builder Ċ import Ġreact . R Component Ċ import Ġreact . R Props Ċ import Ġreact . dom . button Ċ import Ġreact . dom . div Ċ import Ġreact . dom . h 5 Ċ import Ġreact . dom . input Ċ import Ġreact . dom . small Ċ import Ġreact . dom . span Ċ Ċ /** Ċ Ġ* ĠAdds Ġregistration Ġmodal . Ċ Ġ*/ Ċ fun ĠR Builder . registration Modal ( on Login : Ġ( String , ĠString , ĠUser ) Ġ-> ĠUnit ) Ġ= Ġchild ( Registration Modal :: class ) Ġ{ ĊĠĠĠ Ġattrs . on Login Ġ= Ġon Login Ċ } Ċ Ċ private Ġclass ĠRegistration Modal Props ( var Ġon Login : Ġ( String , ĠString , ĠUser ) Ġ-> ĠUnit ) Ġ: ĠR Props Ċ Ċ private Ġclass ĠRegistration Modal ( props : ĠRegistration Modal Props ) ĊĠĠĠ Ġ: ĠR Component < Registration Modal Props , ĠEmpty State >( props ) Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREG ISTR ATION _ MOD AL _ ID Ġ= Ġ" registration Modal " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUSER NAME _ INPUT _ ID Ġ= Ġ" username Registration " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUSER NAME _ INPUT _ HELP _ ID Ġ= Ġ" username Registration Help " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPASSWORD _ INPUT _ ID Ġ= Ġ" password Registration " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPASSWORD _ INPUT _ HELP _ ID Ġ= Ġ" password Registration Help " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREG ISTR ATION _ MOD AL _ CANCEL _ ID Ġ= Ġ" registration Model Cancel " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġfl ax o Client : ĠFl ax o Client Ġ= ĠContainer . fl ax o Client ĊĊĠĠĠ Ġoverride Ġfun ĠR Builder . render () Ġ{ ĊĠĠĠĠĠĠĠ Ġspan Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( classes Ġ= Ġ" btn Ġbtn - primary ", Ġtype Ġ= ĠButton Type . button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Toggle Ġ= Ġ" modal " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Target Ġ= Ġ"# $ REGISTR ATION _ MOD AL _ ID " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Register " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdiv (" modal Ġfade ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠREG ISTR ATION _ MOD AL _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtab Index Ġ= Ġ"- 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrole Ġ= Ġ" dialog " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaria Hidden Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" modal - dialog ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrole Ġ= Ġ" document " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" modal - content ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" modal - header ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh 5 (" modal - title ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Register " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( classes Ġ= Ġ" close ", Ġtype Ġ= ĠButton Type . button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Dismiss Ġ= Ġ" modal " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaria Label Ġ= Ġ" Close " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspan Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhidden Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ "& times ;" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" modal - body ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Input () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Input () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiv (" modal - footer ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( classes Ġ= Ġ" btn Ġbtn - primary ", Ġtype Ġ= ĠButton Type . button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs . onClick Function Ġ= Ġ{ ĠGlobal Scope . launch Ġ{ Ġregister User () Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Register " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton ( classes Ġ= Ġ" btn Ġbtn - secondary ", Ġtype Ġ= ĠButton Type . button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠREG ISTR ATION _ MOD AL _ CANCEL _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Dismiss Ġ= Ġ" modal " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Cancel " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . username Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv (" form - group ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel (" Username ", ĠUSER NAME _ INPUT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUSER NAME _ INPUT _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" form - control ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠInput Type . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaria Descri bed By Ġ= ĠUSER NAME _ INPUT _ HELP _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsmall Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠUSER NAME _ INPUT _ HELP _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" form - text ", Ġ" text - muted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Account Ġusername " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠR Builder . password Input () Ġ{ ĊĠĠĠĠĠĠĠ Ġdiv (" form - group ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel (" Password ", ĠPASSWORD _ INPUT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠPASSWORD _ INPUT _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" form - control ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠInput Type . password ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaria Descri bed By Ġ= ĠPASSWORD _ INPUT _ HELP _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsmall Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠPASSWORD _ INPUT _ HELP _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclasses Ġ= Ġset Of (" form - text ", Ġ" text - muted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Account Ġpassword " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġregister User () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġvalidated Input Value ( USERNAME _ INPUT _ ID ) ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġvalidated Input Value ( PASSWORD _ INPUT _ ID ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( username Ġ!= Ġnull Ġ&& Ġpassword Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredentials Ġ= ĠCredentials ( username , Ġpassword ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġfl ax o Client . register User ( credentials ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick On Button ( REGISTR ATION _ MOD AL _ CANCEL _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops . on Login ( username , Ġpassword , Ġuser ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . success (" User Ġ$ username Ġhas Ġbeen Ġregistered .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFl ax o HttpException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . error (" Error Ġoccurred Ġwhile Ġregistering Ġ$ username Ġuser .", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ