package Ġru . gs ench . github users . presentation . presenter Ċ Ċ import Ġjava . util . ArrayList Ċ Ċ import Ġru . gs ench . github users . domain . github _ repo . GitHub Repository Ċ import Ġru . gs ench . github users . domain . github _ repo . GitHub User Ċ import Ġru . gs ench . github users . domain . inter actor . User Model Ċ import Ġru . gs ench . github users . domain . use case . User UseCase Ċ import Ġru . gs ench . github users . presentation . view . User View Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġgr ish Ġon Ġ 0 9 . 0 5 . 2 0 1 7 . Ċ Ġ*/ Ċ Ċ class ĠUser Presenter ( private Ġval Ġinter actor : ĠUser UseCase ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġview : ĠUser View ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġuser : ĠGitHub User ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġrepos : ĠArrayList < GitHub Repository >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpinned Repos : ĠArrayList < GitHub Repository >? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset View ( view : ĠUser View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . view Ġ= Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġview !!. init () ĊĠĠĠĠĠĠĠ Ġupdate User () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate User () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġinter actor . user ĊĠĠĠĠĠĠĠ Ġrepos Ġ= ĠArrayList < GitHub Repository >() ĊĠĠĠĠĠĠĠ Ġview !!. setUser ( user ) ĊĠĠĠĠĠĠĠ Ġinter actor . getUser ( this ) ĊĠĠĠĠĠĠĠ Ġinter actor . get Repositories ( this ) ĊĠĠĠĠĠĠĠ Ġ// inter actor . get Pin ned Repositories ( this ); ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon User Received ( user : ĠGitHub User ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . user Ġ= Ġuser ĊĠĠĠĠĠĠĠ Ġview !!. setUser ( user ) ĊĠĠĠĠĠĠĠ Ġview !!. hide User Loading () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Repos Received ( repos : ĠArrayList < GitHub Repository >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . repos !!. addAll ( repos ) ĊĠĠĠĠĠĠĠ Ġview !!. hide Repo Loading () ĊĠĠĠĠĠĠĠ Ġif Ġ( pinned Repos Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview !!. notify Repos Update ( 0 , Ġthis . repos !!. size ) ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Repos With Pin ned () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Pin ned Repos Received ( repos : ĠArrayList < GitHub Repository >) Ġ{ ĊĠĠĠĠĠĠĠ Ġpinned Repos Ġ= Ġrepos ĊĠĠĠĠĠĠĠ Ġupdate Repos With Pin ned () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Repos With Pin ned () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( repos Ġ== Ġnull Ġ|| Ġpinned Repos Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġfor Ġ( repo Ġin Ġrepos !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( pin Repo Ġin Ġpinned Repos !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( repo . id Ġ== Ġpin Repo . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepos !!. remove ( repo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepos !!. add ( 0 , Ġrepo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview !!. notify Repos Update ( 0 , Ġrepos !!. size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen In Browser () Ġ{ ĊĠĠĠĠĠĠĠ Ġinter actor . open In Browser () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġview !!. close View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Loading Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġview !!. show Loading Error () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow ParseError () Ġ{ ĊĠĠĠĠĠĠĠ Ġview !!. show ParseError () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Unexpected Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġview !!. show Unexpected Error () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon F avor Click ( user Short : ĠUser Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Short . set Favorite (! user Short . is Favorite ()) ĊĠĠĠĠĠĠĠ Ġinter actor . notify F avor Changed ( user Short ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Repository At ( i : ĠInt ): ĠGitHub Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepos ! ![ i ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Repo Click ( repository : ĠGitHub Repository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinter actor . on Repo Click ( repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrepos Count : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġrepos !!. size Ċ } Ċ