/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠZ UP ĠIT ĠSER V IC OS ĠEM ĠT EC NO LOG IA ĠE ĠIN OV AC AO ĠSA Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġbr . com . z up . be agle . android . components Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . view . get Ċ import Ġbr . com . z up . be agle . android . context . Bind Ċ import Ġbr . com . z up . be agle . android . utils . evaluate Ċ import Ġbr . com . z up . be agle . android . utils . observe Ċ import Ġbr . com . z up . be agle . android . utils . observe Bind Changes Ċ import Ġbr . com . z up . be agle . android . view . Server D riven State Ċ import Ġbr . com . z up . be agle . android . view . View Factory Ċ import Ġbr . com . z up . be agle . android . view . custom . Be agle View Ċ import Ġbr . com . z up . be agle . android . view . custom . On Server StateChanged Ċ import Ġbr . com . z up . be agle . android . widget . Root View Ċ import Ġbr . com . z up . be agle . android . widget . Widget View Ċ import Ġbr . com . z up . be agle . annotation . Register Widget Ċ import Ġbr . com . z up . be agle . core . Server D riven Component Ċ import Ġbr . com . z up . be agle . databinding . Be agle Include Error Server D riven Binding Ċ Ċ /** Ċ Ġ* Ġ ĠThe ĠLazy Component Ġis Ġused Ġwhen Ġan Ġasynchronous ĠB FF Ġrequest Ġis Ġmade . Ċ Ġ* Ġ ĠAn ĠinitialState Ġview Ġis Ġset Ġon Ġthis Ġcomponent . Ċ Ġ* Ġ ĠIt Ġworks Ġlike Ġa Ġloading Ġcomponent Ġor Ġa Ġdefault Ġpicture Ġthat Ġis Ġset Ġuntil Ġthe Ġrequest Ġis Ġful filled . Ċ Ġ* Ċ Ġ* Ġ@ param Ġpath ĠThe ĠURL Ġto Ġmake Ġthe Ġrequest . Ċ Ġ* Ġ@ param ĠinitialState Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefine Ġa ĠServer D riven Component Ġthat Ġis Ġset Ġto Ġbe Ġon Ġview Ġwhile Ġthe Ġasynchronous Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġmade Ġis Ġbeing Ġful filled . Ċ Ġ* Ċ Ġ*/ Ċ @ Register Widget (" lazy Component ") Ċ data Ġclass ĠLazy Component ( ĊĠĠĠ Ġval Ġpath : ĠBind < String >, ĊĠĠĠ Ġval ĠinitialState : ĠServer D riven Component , Ċ ) Ġ: ĠWidget View () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbuild View ( root View : ĠRoot View ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠView Factory . make Be agle View ( root View ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Server D riven Component ( initialState ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġprevious Path : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserve Bind Changes ( root View , Ġthis , Ġpath ) Ġ{ Ġevaluated Path Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevaluated Path ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Path Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View ( evalu ated Path , Ġthis [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Path Ġ= Ġevaluated Path ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver StateChanged Listener Ġ= Ġobject Ġ: ĠOn Server StateChanged Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġinvoke ( server State : ĠServer D riven State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( server State Ġis ĠServer D riven State . Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Error Screen ( this @ apply , Ġserver State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Error Screen ( be agle View : ĠBe agle View , Ġserver State : ĠServer D riven State . Error ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbe agle View . removeAll Views () ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBe agle Include Error Server D riven Binding . inflate ( LayoutInflater . from ( be agle View . context )) ĊĠĠĠĠĠĠĠ Ġbe agle View . addView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġbinding . button Retry . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbe agle View . removeAll Views () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbe agle View . add Server D riven Component ( initialState ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġserver State . retry . invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ