package Ġio . red green . bench press . github Ċ Ċ import Ġio . red green . bench press . architecture . Async Op Ċ import Ġio . red green . bench press . github . domain . User Ċ Ċ class ĠGitHub View Renderer ( private Ġval Ġview : ĠGitHub View ) Ġ{ ĊĠĠĠ Ġfun Ġrender ( model : ĠGitHub Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( model . fetch Follow ers Async Op Ġ== ĠAsync Op . SUCCEEDED Ġ&& Ġmodel . username Presence Ġ== ĠGitHub Model . Username Presence . NOT _ FOUND ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow User NotFound () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( model . fetch Follow ers Async Op Ġ== ĠAsync Op . FAILED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Unknown Error () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( model . fetch Follow ers Async Op Ġ== ĠAsync Op . SUCCEEDED Ġ&& Ġmodel . has Follow ers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Follow ers ( model . followers ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( model . fetch Follow ers Async Op Ġ== ĠAsync Op . SUCCEEDED Ġ&& Ġ! model . has Follow ers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow No Follow ers Found () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( model . fetch Follow ers Async Op Ġ== ĠAsync Op . IN _ FL IGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( model . can Search Ġ&& Ġmodel . fetch Follow ers Async Op Ġ== ĠAsync Op . IDLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Ready To Fetch Follow ers () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! model . can Search Ġ&& Ġmodel . fetch Follow ers Async Op Ġ== ĠAsync Op . IDLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Search Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Follow ers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Username TextView () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide No Follow ers Message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Retry Message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Username NotFound Message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Welcome Message () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Ready To Fetch Follow ers () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Search Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Welcome Message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Retry Message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Follow ers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Username NotFound Message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide No Follow ers Message () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Search Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Username TextView () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Retry Message () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Welcome Message () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Follow ers ( ĊĠĠĠĠĠĠĠ Ġfollow ers : ĠList < User > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Username TextView () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Follow ers ( followers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Search Button () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow User NotFound () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Search Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Username TextView () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Username NotFound Message () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow No Follow ers Found () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Username TextView () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Search Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow No Follow ers Message () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Unknown Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Username TextView () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Search Button () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Retry Message () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ