package Ġcom . den im software . safe _ bod a _ chall ange . fragments Ċ Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . den im software . safe _ bod a _ chall ange .* Ċ import Ġcom . den im software . safe _ bod a _ chall ange . networking . GitHub Service Ċ import Ġcom . den im software . safe _ bod a _ chall ange . networking . Routes Ċ import Ġcom . den im software . safe _ bod a _ chall ange . networking . User Model Ċ import Ġcom . den im software . safe _ bod a _ chall ange . networking . generate Service Ċ import Ġkotlinx . android . synt hetic . main . fragment _ profile .* Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ Ċ /** Ċ Ġ* Created Ġby ĠY er im ah Ġon Ġ 1 1 / 2 1 / 2 0 2 0 . Ċ Ġ*/ Ċ class ĠProfile Fragment : ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠMainActivity ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġactivity Ġas ĠMainActivity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ profile , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġback Icon . setOnClickListener Ġ{ Ġcontext . on Back Pressed () Ġ} ĊĠĠĠĠĠĠĠ Ġretrieve User ( context , Ġconstraint Layout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Social Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . viewModel . load Fragment ( context . viewModel . get Fragment ByKey ( Constants . SO CIAL _ FRAGMENT ). fragment , Ġcontext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġretrieve User ( activity : ĠMainActivity , Ġconstraint Layout : ĠConstraint Layout ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( activity . viewModel . current UserName Ġ== Ġactivity . viewModel . current Profile . login ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Views ( activity , Ġactivity . viewModel . current Profile ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġretry Action Ġ= ĠView . OnClickListener Ġ{ Ġretrieve User ( activity , Ġconstraint Layout ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġgenerate Service ( GitHub Service :: class . java ). ĊĠĠĠĠĠĠĠ Ġretrieve User (" application / vnd . github . v 3 + json ", ĠRoutes . USER _ END _ POINT Ġ+ Ġactivity . viewModel . current UserName ) ĊĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: ĠCallback < User Model > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < User Model >, Ġresponse : ĠResponse < User Model >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . body (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpayload Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( payload Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . viewModel . current Profile Ġ= Ġpayload ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Views ( activity , Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , Ġconstraint Layout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . user _ empty _ message ), Ġretry Action , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . resources . getString ( R . string . retry _ text )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , Ġconstraint Layout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . user _ empty _ message ), Ġretry Action , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . resources . getString ( R . string . retry _ text )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < User Model >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , Ġconstraint Layout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . resources . getString ( R . string . network _ error _ text ), Ġretry Action , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . resources . getString ( R . string . retry _ text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views ( activity : ĠMainActivity , ĠcurrentUser : ĠUser Model ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġload Image ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile ImageView , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcurrentUser . avatar _ url Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . placeholder _ image ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġname TextView . text Ġ= ĠcurrentUser . name ĊĠĠĠĠĠĠĠ Ġcity TextView . text Ġ= ĠcurrentUser . location ĊĠĠĠĠĠĠĠ Ġval Ġfollow ers Ġ= Ġ Ġ"${ currentUser . followers } ĠFollow ers " ĊĠĠĠĠĠĠĠ Ġval Ġfollowing Ġ= Ġ Ġ"${ currentUser . following } ĠFollowing " ĊĠĠĠĠĠĠĠ Ġfollow ers TextView . text Ġ= Ġfollow ers ĊĠĠĠĠĠĠĠ Ġfollowing TextView . text Ġ= Ġfollowing ĊĠĠĠĠĠĠĠ Ġbio TextView . text Ġ= ĠcurrentUser . bio ĊĠĠĠĠĠĠĠ Ġp R TextView . text Ġ= ĠcurrentUser . public _ repos . toString () ĊĠĠĠĠĠĠĠ Ġp G TextView . text Ġ= ĠcurrentUser . public _ gist s . toString () ĊĠĠĠĠĠĠĠ Ġupdate Date TextView . text Ġ= ĠcurrentUser . updated _ at ĊĠĠĠĠĠĠĠ Ġlink TextView . text Ġ= ĠcurrentUser . url ĊĠĠĠĠĠĠĠ Ġlink TextView . paint Flags Ġ= ĠPaint . UNDER LINE _ TEXT _ FLAG ĊĠĠĠĠĠĠĠ Ġfollowing TextView . setOnClickListener Ġ{ Ġload Social Fragment () Ġ} ĊĠĠĠĠĠĠĠ Ġfollow ers TextView . setOnClickListener Ġ{ Ġload Social Fragment () Ġ} ĊĠĠĠ Ġ} Ċ }