package Ġcom . github . sky fe 7 9 . android . library . app . examples . counter Ċ Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġcom . github . sky fe 7 9 . android . library . app . examples . counter . action . Async Increase Action Ċ import Ġcom . github . sky fe 7 9 . android . library . app . examples . counter . action . De crease Action Ċ import Ġcom . github . sky fe 7 9 . android . library . app . examples . counter . action . Increase Action Ċ import Ġcom . github . sky fe 7 9 . android . react component kit . component . Layout Component Ċ import Ġcom . github . sky fe 7 9 . android . react component kit . dispatcher . dispatch Ċ import Ġcom . github . sky fe 7 9 . android . react component kit . view model . Token Ċ import Ġcom . github . sky fe 7 9 . android . react component kit . redux . Async Ċ import Ġcom . github . sky fe 7 9 . android . react component kit . redux . State Ċ import Ġcom . github . sky fe 7 9 . android . react component kit . subscriber . subscribe State Ċ import Ġorg . jetbrains . ank o .* Ċ Ċ class ĠCounter Layout ( token : ĠToken ): ĠLayout Component < Counter Activity >( token ) Ġ{ ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠIDs Ġ{ ĊĠĠĠĠĠĠĠ ĠTextView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġcount TextView : ĠTextView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġincrease Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdecrease Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġasync Increase Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprogress : ĠProgress Bar ĊĊĠĠĠ Ġoverride Ġfun Ġon Init () Ġ{ ĊĠĠĠĠĠĠĠ Ġsubscribe State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate View ( ui : ĠAn ko Context < Counter Activity >): ĠView Ġ= Ġwith ( ui ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġrelative Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount TextView Ġ= ĠtextView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġ 5 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. l params Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= ĠIDs . TextView . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter In Parent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= ĠprogressBar (). l params Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcenter In Parent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlinear Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠLinearLayout . HORIZONTAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgravity Ġ= ĠGr avity . CENTER ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecrease Button Ġ= Ġbutton (" ĠĠ Ġ- ĠĠ Ġ"). l params ( width Ġ= Ġ 0 , Ġweight Ġ= Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġincrease Button Ġ= Ġbutton (" ĠĠ Ġ+ ĠĠ Ġ"). l params ( width Ġ= Ġ 0 , Ġweight Ġ= Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasync Increase Button Ġ= Ġbutton (" async Ġ+ "). l params ( width Ġ= Ġ 0 , Ġweight Ġ= Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. apply Re cursively Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠButton Ġ-> Ġit . text Size Ġ= Ġ 2 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. l params Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġmatch Parent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmargin Ġ= Ġdip ( 1 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalign Parent Bottom () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġasync Increase Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch ( Async Increase Action ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġincrease Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch ( Increase Action ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdecrease Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatch ( De crease Action ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon ( state : ĠState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount State Ġ= Ġ( state Ġas ? ĠCounter State ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġcount TextView . text Ġ= Ġ"${ count State . count }" ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( state . async Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAsync . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . animate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAsync . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }