/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠAd yen ĠN . V . Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġopen Ġsource Ġand Ġavailable Ġunder Ġthe ĠMIT Ġlicense . ĠSee Ġthe ĠLICENSE Ġfile Ġfor Ġmore Ġinfo . Ċ Ġ* Ċ Ġ* ĠCreated Ġby Ġar man Ġon Ġ 2 6 / 7 / 2 0 1 9 . Ċ Ġ*/ Ċ package Ġcom . ady en . checkout . components . api Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġcom . ady en . checkout . components . api . Logo Api . Companion . getInstance Ċ import Ġcom . ady en . checkout . components . api . Logo Connection Task . Logo Callback Ċ import Ġcom . ady en . checkout . core . api . Environment Ċ import Ġcom . ady en . checkout . core . log . Log Util Ċ import Ġcom . ady en . checkout . core . log . Logger Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util . HashMap Ċ Ċ /** Ċ Ġ* ĠLoading ĠImage Ġfrom ĠLogo Api . Ċ Ġ*/ Ċ class ĠImage Loader ( private Ġval Ġlogo Api : ĠLogo Api ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcallbacks : ĠMutable Map < String , ĠLogo Callback > Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġval Ġimage Views : ĠMutable Map < String , ĠWeak Reference < ImageView >> Ġ= ĠHashMap () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġimage Ġto ĠImageView Ġwith Ġplace Ġholder Ġbefore Ġload Ġand Ġerror Ġfallback Ġimage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġload ( ĊĠĠĠĠĠĠĠ Ġtx Variant : ĠString , ĊĠĠĠĠĠĠĠ Ġview : ĠImageView , ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġplaceholder : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġerror Fallback : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġload ( tx Variant , Ġ"", Ġview , Ġplaceholder , Ġerror Fallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoad Ġimage Ġto ĠImageView Ġwith Ġplace Ġholder Ġbefore Ġload Ġand Ġerror Ġfallback Ġimage . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġload ( ĊĠĠĠĠĠĠĠ Ġtx Variant : ĠString , ĊĠĠĠĠĠĠĠ Ġtx Sub Variant : ĠString , ĊĠĠĠĠĠĠĠ Ġview : ĠImageView , ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġplaceholder : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġ@ Drawable Res Ġerror Fallback : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( placeholder Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setImage Resource ( placeholder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġtx Variant Ġ+ Ġtx Sub Variant Ġ+ Ġview . hashCode () ĊĠĠĠĠĠĠĠ Ġif Ġ( callbacks . containsKey ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks . remove ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Views . remove ( id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcallback : ĠLogo Callback Ġ= Ġobject Ġ: ĠLogo Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Logo Received ( drawable : ĠBitmap Drawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= Ġimage Views [ id ]?. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( imageView Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Drawable ( drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . e ( TAG , Ġ" ImageView Ġis Ġnull Ġfor Ġreceived ĠLogo Ġ- Ġ$ id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks . remove ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Views . remove ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive Failed () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= Ġimage Views [ id ]?. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( imageView Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠimageView . setImage Resource ( error Fallback ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . e ( TAG , Ġ" ImageView Ġis Ġnull Ġfor Ġfailed ĠLogo Ġ- Ġ$ id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallbacks . remove ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Views . remove ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġimage Views [ id ] Ġ= ĠWeak Reference ( view ) ĊĠĠĠĠĠĠĠ Ġcallbacks [ id ] Ġ= Ġcallback ĊĠĠĠĠĠĠĠ Ġlogo Api . get Logo ( tx Variant , Ġtx Sub Variant , Ġnull , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠLog Util . getTag () ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext , Ġenvironment : ĠEnvironment ): ĠImage Loader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠImage Loader ( getInstance ( environment , Ġcontext . resources . display Metrics )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ