package Ġchat . sphinx . video _ screen . ui Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġchat . sphinx . concept _ repository _ chat . Chat Repository Ċ import Ġchat . sphinx . concept _ repository _ contact . Contact Repository Ċ import Ġchat . sphinx . concept _ repository _ feed . Feed Repository Ċ import Ġchat . sphinx . concept _ repository _ lightning . Lightning Repository Ċ import Ġchat . sphinx . concept _ repository _ media . Repository Media Ċ import Ġchat . sphinx . concept _ repository _ message . Message Repository Ċ import Ġchat . sphinx . video _ screen . R Ċ import Ġchat . sphinx . video _ screen . ui . view state . Boost Animation ViewState Ċ import Ġchat . sphinx . video _ screen . ui . view state . Selected Video ViewState Ċ import Ġchat . sphinx . video _ screen . ui . view state . Video Feed Screen ViewState Ċ import Ġchat . sphinx . wrapper _ chat . Chat MetaData Ċ import Ġchat . sphinx . wrapper _ common . ItemId Ċ import Ġchat . sphinx . wrapper _ common . dashboard . Chat Id Ċ import Ġchat . sphinx . wrapper _ common . dashboard . Dashboard ItemType Ċ import Ġchat . sphinx . wrapper _ common . feed . Feed Id Ċ import Ġchat . sphinx . wrapper _ common . feed . Feed Url Ċ import Ġchat . sphinx . wrapper _ common . feed . isTrue Ċ import Ġchat . sphinx . wrapper _ common . feed . to Sub scribed Ċ import Ġchat . sphinx . wrapper _ common . lightning . Sat Ċ import Ġchat . sphinx . wrapper _ contact . Contact Ċ import Ġchat . sphinx . wrapper _ feed . Feed Ċ import Ġchat . sphinx . wrapper _ feed . Feed Item Ċ import Ġchat . sphinx . wrapper _ lightning . Node Balance Ċ import Ġchat . sphinx . wrapper _ message . Feed Boost Ċ import Ġchat . sphinx . wrapper _ podcast . Pod cast Ċ import Ġio . mat the wn el son . android _ feature _ view model . Base ViewModel Ċ import Ġio . mat the wn el son . android _ feature _ view model . Side Effect ViewModel Ċ import Ġio . mat the wn el son . android _ feature _ view model . submit Side Effect Ċ import Ġio . mat the wn el son . android _ feature _ view model . update ViewState Ċ import Ġio . mat the wn el son . concept _ coroutines . Coroutine Dispatch ers Ċ import Ġio . mat the wn el son . concept _ views . view state . ViewState Container Ċ import Ġio . mat the wn el son . concept _ views . view state . value Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . io . File Ċ Ċ internal Ġopen Ġclass ĠVideo Feed Screen ViewModel ( ĊĠĠĠ Ġdispatch ers : ĠCor outine Dispatch ers , ĊĠĠĠ Ġprivate Ġval Ġapp : ĠApplication , ĊĠĠĠ Ġprivate Ġval Ġchat Repository : ĠChat Repository , ĊĠĠĠ Ġprivate Ġval Ġrepository Media : ĠRepository Media , ĊĠĠĠ Ġprivate Ġval Ġfeed Repository : ĠFeed Repository , ĊĠĠĠ Ġprivate Ġval Ġcontact Repository : ĠContact Repository , ĊĠĠĠ Ġprivate Ġval Ġmessage Repository : ĠMessage Repository , ĊĠĠĠ Ġprivate Ġval Ġlight ning Repository : ĠLight ning Repository , Ċ ): ĠSide Effect ViewModel < ĊĠĠĠ ĠFragment Activity , ĊĠĠĠ ĠVideo Feed Screen Side Effect , ĊĠĠĠ ĠVideo Feed Screen ViewState ĊĠĠĠ Ġ>( dispatch ers , ĠVideo Feed Screen ViewState . Idle ) Ċ { ĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Account Balance (): ĠState Flow < Node Balance ?> Ġ= ĊĠĠĠĠĠĠĠ Ġlight ning Repository . get Account Balance () ĊĊĠĠĠ Ġprivate Ġval Ġvideo Feed Shared Flow : ĠShared Flow < Feed ?> Ġ= Ġflow Ġ{ ĊĠĠĠĠĠĠĠ Ġget Arg Feed Id ()?. let Ġ{ Ġfeed Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemit All ( feed Repository . get Feed ById ( feed Id )) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemit All ( feed Repository . get Feed By Chat Id ( get Arg Chat Id ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. distinct Until Changed (). share In ( ĊĠĠĠĠĠĠĠ ĠviewModel Scope , ĊĠĠĠĠĠĠĠ ĠSh aring Started . While Sub scribed ( 2 _ 0 0 0 ), ĊĠĠĠĠĠĠĠ Ġreplay Ġ= Ġ 1 , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġsuspend Ġfun Ġget Owner (): ĠContact Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcontact Repository . account Owner . value . let Ġ{ Ġcontact Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( contact Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresolved Owner : ĠContact ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact Repository . account Owner . collect Ġ{ Ġowner Contact Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( owner Contact Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Owner Ġ= Ġowner Contact ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 2 5 L ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Owner !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Video Feed (): ĠFeed ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvideo Feed Shared Flow . replay Cache . first OrNull ()?. let Ġ{ Ġfeed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfeed ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvideo Feed Shared Flow . first OrNull ()?. let Ġ{ Ġfeed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfeed ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġfeed : ĠFeed ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Feed Shared Flow . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{} ĊĠĠĠĠĠĠĠ Ġdelay ( 2 5 L ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfeed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġval Ġselected Video State Container : ĠView State Container < Selected Video ViewState > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠView State Container ( Selected Video ViewState . Idle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġval Ġboost Animation ViewState Container : ĠView State Container < Boost Animation ViewState > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠView State Container ( Boost Animation ViewState . Idle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġsubscribe To ViewState Flow () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( main Immediate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Feed Shared Flow . collect Ġ{ Ġfeed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed ?. let Ġ{ Ġnn Feed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ViewState ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Feed Screen ViewState . Feed Loaded ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnn Feed . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnn Feed . imageUrl To Show , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnn Feed . chat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnn Feed . subscribed , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnn Feed . items , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnn Feed . has Dest inations ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( selected Video State Container . value Ġis ĠSelected Video ViewState . Idle ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnn Feed . items . first OrNull ()?. let Ġ{ Ġvideo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Video State Container . update ViewState ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelected Video ViewState . Video Selected ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . enc lo sure Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . local File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . date Updated , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Feed Content In Background () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Feed Content In Background () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( main Immediate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchat Repository . get Chat ById ( get Arg Chat Id ()). first OrNull ()?. let Ġ{ Ġchat Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat . host ?. let Ġ{ Ġchat Host Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Arg Feed Url ()?. let Ġ{ Ġfeed Url Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubscribed Ġ= Ġ( chat Ġ!= Ġnull Ġ|| Ġ( get Video Feed ()?. subscribed ?. isTrue () Ġ== Ġtrue )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Repository . update Feed Content ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat Id Ġ= Ġchat . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Ġ= Ġchat Host , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Url Ġ= Ġfeed Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat UUID Ġ= Ġchat . uuid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubscribed Ġ= Ġsubscribed . to Sub scribed (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Episode Id Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġvideo ItemSelected ( video : ĠFeed Item ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( main Immediate ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Media . update Chat MetaData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Arg Chat Id (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChat MetaData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemId Ġ= Ġvideo . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Long Id Ġ= ĠItem Id (- 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ats Per Minute Ġ= Ġget Owner ()?. tip Amount Ġ?: ĠSat ( 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Seconds Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeed Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Video State Container . update ViewState ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSelected Video ViewState . Video Selected ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . enc lo sure Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . local File , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . date Updated , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo . duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Subscribe State () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( main Immediate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Video Feed ()?. let Ġ{ Ġfeed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Repository . toggle Feed Subscribe State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed . subscribed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Boost ( ĊĠĠĠĠĠĠĠ Ġamount : ĠSat , ĊĠĠĠĠĠĠĠ Ġfire works Callback : Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( main Immediate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Video Feed ()?. let Ġ{ Ġvideo Feed Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Feed . last Item ?. let Ġ{ Ġcurrent Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Account Balance (). first OrNull ()?. let Ġ{ Ġbalance Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( amount . value Ġ> Ġbalance . balance . value ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit Side Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Feed Screen Side Effect . Notify ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp . getString ( R . string . balance _ too _ low ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( amount . value Ġ<= Ġ 0 ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubmit Side Effect ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVideo Feed Screen Side Effect . Notify ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp . getString ( R . string . boost _ amount _ too _ low ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfire works Callback () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchat Id Ġ= Ġget Arg Chat Id () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Repository . send Boost ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFeed Boost ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Id Ġ= Ġvideo Feed . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemId Ġ= Ġcurrent Item . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Seconds Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġamount Ġ= Ġamount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Feed . dest inations . let Ġ{ Ġdest inations Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Media . stream Feed Payments ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChat MetaData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemId Ġ= Ġcurrent Item . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Long Id Ġ= ĠItem Id (- 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs ats Per Minute Ġ= Ġamount , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Seconds Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeed Ġ= Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideo Feed . id . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Item . id . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest inations ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġget Arg Chat Id (): ĠChat Id Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠChat Id ( Chat Id . NULL _ CHAT _ ID . to Long ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġget Arg Feed Url (): ĠFeed Url ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġget Arg Feed Id (): ĠFeed Id ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdownload Media ( ĊĠĠĠĠĠĠĠ Ġfeed Item : ĠFeed Item , ĊĠĠĠĠĠĠĠ Ġdownload Complete Callback : Ġ( downloaded File : ĠFile ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository Media . download Media If Applicable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Item , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdownload Complete Callback ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġdelete Downloaded Media ( feed Item : ĠFeed Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( repository Media . delete Downloaded Media If Applicable ( feed Item )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeed Item . local File Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Feed Item Download InProgress ( feed ItemId : ĠFeed Id ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository Media . in Progress Download Ids (). contains ( feed ItemId ) ĊĠĠĠ Ġ} Ċ }