package Ġorg . step ic . d roid . core . present ers Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . support . annotation . MainThread Ċ import Ġorg . step ic . d roid . an alytic . An alytic Ċ import Ġorg . step ic . d roid . concurrency . Main Handler Ċ import Ġorg . step ic . d roid . configuration . Config Ċ import Ġorg . step ic . d roid . core . Screen Manager Ċ import Ġorg . step ic . d roid . core . present ers . contracts . Certificate View Ċ import Ġorg . step ic . d roid . di . certificates . Certificate Scope Ċ import Ġorg . step ic . d roid . model . Certificate Ċ import Ġorg . step ic . d roid . model . Certificate View Item Ċ import Ġorg . step ic . d roid . preferences . Shared Preference Helper Ċ import Ġorg . step ic . d roid . storage . operations . Database Facade Ċ import Ġorg . step ic . d roid . web . Api Ċ import Ġorg . step ic . d roid . web . Certificate Response Ċ import Ġorg . step ic . d roid . web . Courses Meta Response Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . ThreadPoolExecutor Ċ import Ġjavax . inject . Inject Ċ Ċ @ Certificate Scope Ċ class ĠCertificate Presenter Ċ @ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġapi : ĠApi , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġconfig : ĠConfig , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġscreen Manager : ĠScreen Manager , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdatabase : ĠDatabase Facade , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġthread Pool Executor : ĠThreadPool Executor , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmain Handler : ĠMain Handler , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġshared Preference Helper : ĠShared Preference Helper , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġan alytic : ĠAn alytic ) Ġ: ĠPres enter Base < Certificate View >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcertificate View ItemList : ĠArrayList < Certificate View Item >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcertificates Call : ĠCall < Certificate Response >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcourses Call : ĠCall < Courses Meta Response >? Ġ= Ġnull ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġshow Certificates ( is Refresh ing : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate View ItemList ?. isEmpty () Ġ== Ġtrue Ġ-> Ġview ?. show Empty State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate View ItemList ?. isNotEmpty () Ġ== Ġtrue Ġ-> Ġview ?. on Data Loaded ( certificate View ItemList ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate View ItemList Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// need Ġload Ġfrom Ġinternet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Refresh ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Pool Executor . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Anonymous Ġ= Ġshared Preference Helper . auth Response From Store Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Anonymous ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Handler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Anonymous User () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ execute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate View ItemList Ġ= Ġdatabase . getAll Certificates ()?. filter NotNull () Ġas ? ĠArrayList < Certificate View Item > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Handler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( certificate View ItemList Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Data Loaded ( certificate View ItemList ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Certificates Sil ent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// if Ġyou Ġreuse Ġthis Ġfunction , Ġyou Ġneed Ġhandle Ġget View 's Ġcallbacks Ġcarefully ĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġprivate Ġfun Ġload Certificates Sil ent () Ġ{ ĊĠĠĠĠĠĠĠ Ġcertificates Call Ġ= Ġapi . certificates ĊĠĠĠĠĠĠĠ Ġcertificates Call ?. enqueue ( object Ġ: ĠCallback < Certificate Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Certificate Response > ?, Ġresponse : ĠResponse < Certificate Response > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response ?. is Successful Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( certificate View ItemList Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate View ItemList Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcertificate List Ġ= Ġresponse . body ()?. certificates ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( certificate List Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Internet Problem () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( certificate List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Empty State () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// certificate Ġold List Ġis Ġnot Ġempty : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcourse Ids : ĠLong Array Ġ= Ġcertificate List . map NotNull Ġ{ Ġit . course Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( course Ids . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Internet Problem () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcourse Id To Certificate Map : ĠMap < Long , ĠCertificate > Ġ= Ġcertificate List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġit . course Ġ== Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate By Ġ{ Ġit . course !! Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠbaseUrl Ġ= Ġconfig . baseUrl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourses Call Ġ= Ġapi . getC our ses ( 1 , Ġcourse Ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcourses Call ?. enqueue ( object Ġ: ĠCallback < Courses Meta Response > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Courses Meta Response > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Internet Problem () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Courses Meta Response > ?, Ġresponse : ĠResponse < Courses Meta Response > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response ?. is Successful Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Certificate View Items : ĠList < Certificate View Item > Ġ= Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . courses ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcertificate Related To Course Ġ= Ġcourse Id To Certificate Map [ it . course Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcover : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . cover Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover Ġ= ĠbaseUrl Ġ+ Ġit . cover ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCertificate View Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate Related To Course ?. id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcover , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate Related To Course ?. type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate Related To Course ?. url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate Related To Course ?. grade , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate Related To Course ?. issue _ date ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate View ItemList ?. clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcertificate View ItemList ?. addAll ( local Certificate View Items ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Data Loaded ( certificate View ItemList ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthread Pool Executor . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . add Certificate View Items ( local Certificate View Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Internet Problem () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Internet Problem () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Certificate Response > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. on Internet Problem () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsize () Ġ= Ġcertificate View ItemList ?. size Ġ?: Ġ 0 ĊĊĠĠĠ Ġfun Ġshow Share Dialog For Certificate ( certificate View Item : ĠCertificate View Item ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġan alytic . report Event ( An alytic . Certificate . CLICK _ SHARE _ MAIN ) ĊĠĠĠĠĠĠĠ Ġview ?. on Need Show Share Dialog ( certificate View Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Certificate As Pdf ( activity : ĠActivity , Ġfull Path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġan alytic . report Event ( An alytic . Certificate . OPEN _ IN _ BROWSER ) ĊĠĠĠĠĠĠĠ Ġscreen Manager . show Pdf In Browser By Google Docs ( activity , Ġfull Path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( position : ĠInt ) Ġ= Ġcertificate View ItemList ?. get ( position ) ĊĊĠĠĠ Ġoverride Ġfun Ġdetach View ( view : ĠCertificate View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . detach View ( view ) ĊĠĠĠĠĠĠĠ Ġ// Ġcancel Ġshould Ġwork Ġnot Ġon Ġmain Ġthread Ġfor Ġcom . squareup . ret rofit : ret rofit : 2 . 0 . 0 - beta 2 Ġ( look Ġhttps :// github . com / square / okhttp / issues / 1 5 9 2 ) Ċ // ĠĠĠĠĠĠĠ Ġcertificates Call ?. cancel () Ċ // ĠĠĠĠĠĠĠ Ġcourses Call ?. cancel () ĊĠĠĠ Ġ} Ċ } Ċ