package Ġnet . squ anch y . settings . view Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . widget . LinearLayout Ċ import Ġarrow . core . Option Ċ import Ġcom . google . android . material . app bar . AppBar Layout Ċ import Ġkotlinx . android . synt hetic . main . activity _ settings . view .* Ċ import Ġnet . squ anch y . R Ċ import Ġnet . squ anch y . image loader . Image Loader Ċ import Ġnet . squ anch y . image loader . image Loader Component Ċ import Ġnet . squ anch y . service . repository . Google Data Ċ import Ġnet . squ anch y . service . repository . User Ċ import Ġnet . squ anch y . support . lang . get OrThrow Ċ import Ġnet . squ anch y . support . unwrap To Activity Context Ċ Ċ class ĠSettings Header Layout ( context : ĠContext , Ġattrs : ĠAttributeSet ?) Ġ: ĠApp Bar Layout ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġimage Loader : ĠImage Loader ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! isIn Edit Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Loader Ġ= Ġimage Loader Component ( context . unwrap To Activity Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. image Loader () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsuper . set Orientation ( LinearLayout . VERTICAL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate With ( user : ĠOption < User >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( user . isDefined () Ġ&& Ġ! user . get OrThrow (). is Anonymous ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate With Authenticated User ( user . get OrThrow ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate With No Or Anonymous User () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate With Authenticated User ( user : ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgoogle UserInfo Ġ= Ġuser . google Data ĊĠĠĠĠĠĠĠ Ġif Ġ( google UserInfo Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate User Photo From ( google UserInfo , Ġimage Loader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername TextView . text Ġ= Ġgoogle UserInfo . displayName ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate User Photo From ( userInfo : ĠGoogle Data , Ġimage Loader : ĠImage Loader ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( image Loader Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Unable Ġto Ġaccess Ġthe ĠImage Loader , Ġit Ġhasn 't Ġbeen Ġinitialized Ġyet ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( userInfo . photoUrl Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Loader . load ( userInfo . photoUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ no _ avatar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. circle Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( user Circle Photo View ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Circle Photo View . setImage Resource ( R . drawable . ic _ no _ avatar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate With No Or Anonymous User () Ġ{ ĊĠĠĠĠĠĠĠ Ġuser Circle Photo View . setImage Resource ( R . drawable . avatar _ not _ signed _ in ) ĊĠĠĠĠĠĠĠ Ġusername TextView . setText ( R . string . settings _ header _ not _ signed _ in ) ĊĠĠĠ Ġ} Ċ } Ċ