package Ġcom . silver car . sample Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . silver car . un le ash . Default Un le ash Ċ import Ġcom . silver car . un le ash . Un le ash Ċ import Ġcom . silver car . un le ash . event . Un le ash Ready Ċ import Ġcom . silver car . un le ash . event . Un le ash Subscriber Ċ import Ġcom . silver car . un le ash . repository . Feature Toggle Response Ċ import Ġcom . silver car . un le ash . repository . Toggle Collection Ċ import Ġcom . silver car . un le ash . util . un le ash Config Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . suspend C ancellable Coroutine Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlin . coroutines . resume Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠ Ġprivate Ġlateinit Ġvar Ġun le ash : ĠUn le ash ĊĠ Ġprivate Ġlateinit Ġvar Ġun le ash Enabled : ĠTextView ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠ Ġset Support ActionBar ( findViewById ( R . id . toolbar )) ĊĊĠĠĠ Ġsupport ActionBar ?. let Ġ{ ĠsetTitle ( R . string . app _ name ) Ġ} ĊĊĠĠĠ Ġun le ash Enabled Ġ= ĠfindViewById ( R . id . un le ash Enabled ) ĊĊĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠ Ġun le ash Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ Ġinit Un le ash () Ġ} ĊĠĠĠĠĠ Ġval Ġis Enabled Ġ= Ġun le ash . isEnabled (" test - android ") ĊĊĠĠĠĠĠ ĠTim ber . d (" isEnabled Ġjust Ġgot Ġset Ġto Ġ% b ", Ġis Enabled ) ĊĠĠĠĠĠ Ġun le ash Enabled . text Ġ= ĠgetString ( R . string . un le ash _ test _ android _ enabled _ formatted , Ġis Enabled ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠTODO : ĠNeed Ġto Ġchange Ġhow ĠUn le ash Ġis Ġinit Ġbecause Ġthis Ġis Ġvery Ġpain ful Ġto Ġintegrate ĊĠ Ġprivate Ġsuspend Ġfun Ġinit Un le ash (): ĠUn le ash Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġsubscriber : ĠUn le ash Subscriber ĊĊĠĠĠ Ġval Ġun le ash : ĠUn le ash Ġby Ġlazy Ġ{ ĊĠĠĠĠĠ ĠDefault Un le ash ( un le ash Config Ġ{ ĊĠĠĠĠĠĠĠ ĠappName ( application . packageName ) ĊĠĠĠĠĠĠĠ Ġun le ash API (" https :// un le ash . silver car . com / api ") ĊĠĠĠĠĠĠĠ Ġfetch Toggle s Interval ( TimeUnit . MIN UTES . to Seconds ( INTERVAL )) ĊĠĠĠĠĠĠĠ Ġsend Metrics Interval ( TimeUnit . MIN UTES . to Seconds ( INTERVAL )) ĊĠĠĠĠĠĠĠ Ġsubscriber ( subscriber ) ĊĠĠĠĠĠ Ġ}. build (), ĠEnvironment Strategy ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġsuspend C ancellable Coroutine < Un le ash > Ġ{ Ġcoroutine Ġ-> ĊĠĠĠĠĠ Ġsubscriber Ġ= Ġobject Ġ: ĠUn le ash Subscriber Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ready ( ready : ĠUn le ash Ready ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Un le ash Ġis Ġready ") ĊĠĠĠĠĠĠĠĠĠ Ġcoroutine . resume ( un le ash ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtoggle s F etched ( response : ĠFeature Toggle Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Fetch Ġtoggle s Ġwith Ġstatus : Ġ% s ", Ġresponse . status ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtoggle s Back ed Up ( toggle Collection : ĠToggle Collection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Backup Ġstored .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġcoroutine . invoke On Cancellation Ġ{ Ġun le ash . shutdown () Ġ} ĊĊĠĠĠĠĠ Ġ// Ġinit ĠUn le ash ĊĠĠĠĠĠ Ġun le ash ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġconst Ġval ĠINTER VAL : ĠLong Ġ= Ġ 6 0 ĊĠ Ġ} Ċ } Ċ