package Ġcom . ade mir . mo view . commons Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . ade mir . mo view . Build Config Ċ import Ġcom . ade mir . mo view . R Ċ import Ġcom . ade mir . mo view . Session Controller Ċ import Ġcom . ade mir . mo view . model . User Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġcom . squareup . pic asso . Transformation Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . util .* Ċ Ċ fun ĠViewGroup . inflate (@ Layout Res Ġlayout Id : ĠInt , Ġattach To Root : ĠBoolean Ġ= Ġfalse ): ĠView Ġ{ ĊĠĠĠ Ġreturn ĠLayoutInflater . from ( context ). inflate ( layout Id , Ġthis , Ġattach To Root ) Ċ } Ċ Ċ fun ĠImageView . load ( path : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder : ĠInt Ġ= ĠR . drawable . ic _ image _ gray _ 2 4 dp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransformation : ĠTransformation ? Ġ= Ġnull ) Ġ{ ĊĠĠĠ Ġif Ġ( path . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠPic asso . get (). apply Ġ{ Ġis Logging Enabled Ġ= ĠBuild Config . DEBUG Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( placeholder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġtransformation ?. let Ġ{ Ġtransform ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( this ) ĊĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġset Image Resource ( placeholder ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun ĠSharedPreferences . edit ( func : ĠSharedPreferences . Editor . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġeditor Ġ= Ġedit () ĊĠĠĠ Ġeditor . func () ĊĠĠĠ Ġeditor . apply () Ċ } Ċ Ċ fun ĠSharedPreferences . Editor . set ( pair : ĠPair < String , ĠString ?> ) Ġ= ĊĠĠĠĠĠĠĠ Ġput String ( pair . first , Ġpair . second ) !! Ċ Ċ fun ĠSharedPreferences . put User ( user : ĠUser ) Ġ{ ĊĠĠĠ Ġedit Ġ{ ĊĠĠĠĠĠĠĠ Ġset ( Constants . PRE F _ SESSION _ TOKEN Ġto Ġuser . token ) ĊĠĠĠĠĠĠĠ Ġset ( Constants . PRE F _ SESSION _ USERNAME Ġto Ġuser . username ) ĊĠĠĠĠĠĠĠ Ġset ( Constants . PRE F _ SESSION _ NAME Ġto Ġuser . name ) ĊĠĠĠĠĠĠĠ Ġset ( Constants . PRE F _ SESSION _ EMAIL Ġto Ġuser . email ) ĊĠĠĠĠĠĠĠ Ġput Int ( Constants . PRE F _ SESSION _ FOLLOW ING _ COUNT , Ġuser . following Count ) ĊĠĠĠĠĠĠĠ Ġput Int ( Constants . PRE F _ SESSION _ FOLLOW ERS _ COUNT , Ġuser . following Count ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠSharedPreferences . load User (): ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( contains ( Constants . PRE F _ SESSION _ TOKEN )) Ġ{ ĊĠĠĠĠĠĠĠ ĠSession Controller . user Ġ= ĠUser ( this ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠContext . get Preferences () Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) !! Ċ Ċ fun Ġrelease DateFormat ted ( date : ĠString ?): ĠString Ġ{ ĊĠĠĠ Ġdate ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsplit Ġ= Ġdate . split ("- ") ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġsplit [ 2 ] Ġ+ Ġ'/' Ġ+ Ġsplit [ 1 ] Ġ+ Ġ'/' Ġ+ Ġsplit [ 0 ] ĊĠĠĠĠĠĠĠ Ġreturn Ġtext ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġ"" Ċ } Ċ Ċ fun Ġ< T Ġ: Ġandroidx . recyclerview . widget . RecyclerView . ViewHolder > Ġandroidx . recyclerview . widget . RecyclerView . prepare ( adapter : Ġandroidx . recyclerview . widget . RecyclerView . Adapter < T >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager : Ġandroidx . recyclerview . widget . RecyclerView . LayoutManager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Fixed Size : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠ Ġset Adapter ( adapter ) ĊĠĠĠ Ġset LayoutManager ( layout Manager ) ĊĠĠĠ Ġset Has Fixed Size ( has Fixed Size ) Ċ } Ċ Ċ fun Ġis Today ( time In Millis : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġs Calendar Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠ Ġcalendar . time In Millis Ġ= Ġtime In Millis ĊĠĠĠ Ġreturn Ġcalendar . get ( Calendar . YEAR ) Ġ== Ġs Calendar . get ( Calendar . YEAR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġcalendar . get ( Calendar . MONTH ) Ġ== Ġs Calendar . get ( Calendar . MONTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġcalendar . get ( Calendar . DAY _ OF _ MONTH ) Ġ== Ġs Calendar . get ( Calendar . DAY _ OF _ MONTH ) Ċ } Ċ Ċ inline Ġfun Ġ< T > ĠCall < T >. enqueue ( cross inline Ġon Response : Ġ( T ?) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġon Failure : Ġ( Throwable ) Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠ Ġenqueue ( object Ġ: ĠCallback < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < T > ?, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure ( t ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < T >, Ġresponse : ĠResponse < T >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Response ( response . body ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ}) Ċ Ċ } Ċ Ċ // ĠP aging ĠLibrary Ċ private Ġfun Ġget ErrorMessage ( report : ĠP aging Request Helper . Status Report ): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠP aging Request Helper . RequestType . values (). map NotNull Ġ{ ĊĠĠĠĠĠĠĠ Ġreport . getError For ( it )?. message ĊĠĠĠ Ġ}. first () Ċ } Ċ Ċ fun ĠP aging Request Helper . create Status LiveData (): ĠLive Data < Network State > Ġ{ ĊĠĠĠ Ġval Ġlive Data Ġ= ĠMutable LiveData < Network State >() ĊĠĠĠ Ġadd Listener Ġ{ Ġreport Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport . has Running () Ġ-> Ġlive Data . post Value ( Network State . LOADING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport . has Error () Ġ-> Ġlive Data . post Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . error ( get ErrorMessage ( report ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlive Data . post Value ( Network State . LOADED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġlive Data Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠParcel able > Ġcreate Parcel ( ĊĠĠĠĠĠĠĠ Ġcross inline Ġcreate From Parcel : Ġ( Parcel ) Ġ-> ĠT ?): ĠParcel able . Creator < T > Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠParcel able . Creator < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel ( source : ĠParcel ): ĠT ? Ġ= Ġcreate From Parcel ( source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < out ĠT ?> Ġ= ĠarrayOf Null s ( size ) ĊĠĠĠĠĠĠĠ Ġ}