package Ġcom . z iz oh . ule sson . dashboard . views . chapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . core . view . isVisible Ċ import Ġcom . z iz oh . ule sson . dashboard . R Ċ import Ġcom . z iz oh . ule sson . dashboard . databinding . Layout Chapter s Binding Ċ import Ġcom . z iz oh . ule sson . dashboard . navigation . Navigation Dispatcher Ċ import Ġcom . z iz oh . ule sson . dashboard . presentation . chapter . m vi . Chapter View Intent Ċ import Ġcom . z iz oh . ule sson . dashboard . presentation . chapter . m vi . Chapter ViewState Ċ import Ġcom . z iz oh . ule sson . dashboard . ui . chapter . adapter . Chapter Adapter Ċ import Ġcom . z iz oh . ule sson . presentation . m vi . M VI View Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġkotlinx . coroutines . flow . on Each Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Provider Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġz iz oh Ġon Ġ 1 9 / January / 2 0 2 1 . Ċ Ġ*/ Ċ Ċ @ Android EntryPoint Ċ class ĠChapter s View Ġ@ Jvm Over loads Ġconstructor ( context : ĠContext , Ġattribute Set : ĠAttributeSet ) Ġ: ĊĠĠĠ ĠLinearLayout ( context , Ġattribute Set ), ĊĠĠĠ ĠM VI View < Chapter View Intent , ĠChapter ViewState > Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġchapter Adapter : ĠChapter Adapter ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġnavigator : ĠProvider < Navigation Dispatcher > ĊĊĠĠĠ Ġprivate Ġvar Ġbinding : ĠLayout Chapter s Binding ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġis Save Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġinflater : ĠLayoutInflater Ġ= Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getSystem Service ( Context . LAYOUT _ IN FL ATER _ SERVICE ) Ġas ĠLayoutInflater ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠLayout Chapter s Binding . inflate ( in flater , Ġthis , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġbinding . rv Chapter s . adapter Ġ= Ġchapter Adapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclick Listener Ġ= Ġnavigator . get () :: open Video Fragment From Chapter Fragment ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . tv Chapter . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator . get (). go Back () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsave W atched Topic : ĠFlow < Chapter View Intent > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġchapter Adapter . click s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each ( navigator . get () :: open Video Fragment From Chapter Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map ( Chapter View Intent :: Save W atched Topic ) ĊĊĠĠĠ Ġfun Ġretry Intent ( subject Id : ĠInt ): ĠFlow < Chapter View Intent > Ġ= ĊĠĠĠĠĠĠĠ Ġbinding . chapter s Error State . click s . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChapter View Intent . Load Chapter s ( subject Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrender ( state : ĠChapter ViewState ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChapter ViewState . Idle Ġ-> Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠChapter ViewState . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv Chapter s . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s Error State . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s ProgressBar . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChapter ViewState . Chapter s Loaded Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s ProgressBar . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s Error State . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Chapter . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Chapter . text Ġ= Ġstate . chapter s [ 0 ]. subject Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv Chapter s . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter Adapter . submit List ( state . chapter s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠChapter ViewState . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv Chapter s . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s ProgressBar . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s Error State . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s Error State . setTitle ( context . getString ( R . string . an _ error _ occ urred )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s Error State . set Caption ( state . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchapter s Error State . is Button Visible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġintent s : ĠFlow < Chapter View Intent > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsave W atched Topic Ċ } Ċ