package Ġorg . fl ax o . frontend . component Ċ Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . html . js . onClick Function Ċ import Ġorg . fl ax o . common . data . Course Ċ import Ġorg . fl ax o . common . data . Course Lifecycle Ċ import Ġorg . fl ax o . frontend . Container Ċ import Ġorg . fl ax o . frontend . Notifications Ċ import Ġorg . fl ax o . frontend . On Course Statistics Change Ċ import Ġorg . fl ax o . frontend . client . Fl ax o HttpException Ċ import Ġorg . fl ax o . frontend . credentials Ċ import Ġreact . R Builder Ċ import Ġreact . dom . button Ċ import Ġreact . dom . i Ċ Ċ /** Ċ Ġ* ĠAdds Ġcourse Ġstatistics Ġrefresh Ġbutton . Ċ Ġ*/ Ċ fun ĠR Builder . course Statistics Refresh ( course : ĠCourse , ĠonUpdate : ĠOn Course Statistics Change ) Ġ{ ĊĠĠĠ Ġbutton ( classes Ġ= Ġ" btn Ġbtn - outline - info Ġicon - btn ") Ġ{ ĊĠĠĠĠĠĠĠ Ġattrs Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Function Ġ= Ġ{ ĠGlobal Scope . launch Ġ{ Ġsynchronize Course Statistics ( course , ĠonUpdate ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisabled Ġ= Ġcourse . state . lifecycle Ġ== ĠCourse Lifecycle . INIT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġi ( classes Ġ= Ġ" material - icons ") Ġ{ Ġ+" refresh " Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġsuspend Ġfun Ġsynchronize Course Statistics ( course : ĠCourse , ĠonUpdate : ĠOn Course Statistics Change ) Ġ{ ĊĠĠĠ Ġcredentials ?. also Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . info (" Course Ġstatistics Ġrefresh ing Ġwas Ġinitiated .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Statistics Ġ= ĠContainer . fl ax o Client . sync Course ( it , Ġcourse . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate ( updated Statistics ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . success (" Course Ġstatistics Ġsynchronization Ġhas Ġbeen Ġfinished .") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFl ax o HttpException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconsole . log ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications . error (" Error Ġoccurred Ġduring Ġ${ course . name } Ġcourse Ġstatistics Ġsynchronization .", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ