package Ġcom . black _ dragon 7 4 . mu j buddy Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . view pager . widget . ViewPager Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . adapters . Contacts Adapter Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . adapters . Mess Menu ViewPager Adapter Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . fragments . Break fast Fragment Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . fragments . D inner Fragment Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . fragments . H ight ea Fragment Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . fragments . L unch Fragment Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . models . Contacts Model Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . models . Error Model Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . models . Mess Menu Model Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . utils . API _ URL Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . utils . Helper Functions Ċ import Ġcom . black _ dragon 7 4 . mu j buddy . utils . LOGIN _ FAILED Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġkotlinx . android . synt hetic . main . activity _ contacts .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ mess _ menu .* Ċ import Ġokhttp 3 .* Ċ import Ġjava . io . IOException Ċ import Ġjava . lang . Exception Ċ Ċ class ĠMess Menu Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠMess Menu Data : ĠMess Menu Model ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġneeds Refresh : ĠBoolean Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġprogress Dialog : ĠProgress Dialog ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ mess _ menu ) ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġ" Mess ĠMenu " ĊĊĠĠĠĠĠĠĠ Ġthis . progress Dialog Ġ= ĠProgress Dialog ( this , ĠR . style . Dark Progress Dialog ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog ?. setMessage (" Loading ...") ĊĠĠĠĠĠĠĠ Ġprogress Dialog ?. set Canceled On Touch Outside ( false ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( needs Refresh ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Menu From The API () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Mess Menu Data ?. last _ updated _ at . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Ġ= ĠMess Menu Data !!. last _ updated _ at !!. split (" Ġ" )[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ updated _ on . text Ġ= Ġ" Last Ġupdated Ġ- Ġ$ updated " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSetup Ġview Ġpager ĊĠĠĠĠĠĠĠ Ġval Ġview Pager Ġ= Ġmess _ view _ pager ĊĠĠĠĠĠĠĠ Ġsetup ViewPager ( view Pager ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmess s Tabs Ġ= Ġmess _ tabs ĊĠĠĠĠĠĠĠ Ġmess s Tabs . setup With ViewPager ( view Pager ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . generic _ refresh _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . generic _ refresh Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. setMessage (" Refresh ing ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Menu From The API () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġnot Ġdo Ġa Ġthing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ViewPager ( view Pager : ĠView Pager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠMess Menu ViewPager Adapter ( support FragmentManager ) ĊĠĠĠĠĠĠĠ Ġadapter . add Fragment ( Break fast Fragment (), Ġ" Break fast ") ĊĠĠĠĠĠĠĠ Ġadapter . add Fragment ( L unch Fragment (), Ġ" L unch ") ĊĠĠĠĠĠĠĠ Ġadapter . add Fragment ( H ight ea Fragment (), Ġ" High ĠT ea ") ĊĠĠĠĠĠĠĠ Ġadapter . add Fragment ( D inner Fragment (), Ġ" D inner ") ĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Menu From The API () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhelper Ġ= ĠHelper Functions ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠGson Builder (). create () ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient () ĊĊĠĠĠĠĠĠĠ Ġval Ġsession ID Ġ= Ġhelper . getSession ID () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( session ID . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . show Toast ( this , Ġ" Invalid Ġrequest , Ġaccess Ġdenied .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder (). url ("${ API _ URL } mess _ menu ? session id =$ session ID "). build () ĊĠĠĠĠĠĠĠ Ġclient . new Call ( request ). enqueue ( object : ĠCallback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . show Toast ( this @ Mess Menu Activity , Ġ" Failed Ġto Ġfetch Ġcontacts ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġresponse : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresp Body Ġ= Ġresponse . body ?. string () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTry Ġto Ġparse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Ġ= Ġjson . fromJson ( resp Body , ĠMess Menu Model :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġneeds Refresh Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMess Menu Data Ġ= Ġparsed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! parsed . last _ updated _ at . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Ġ= Ġparsed . last _ updated _ at . split (" Ġ" )[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ updated _ on . text Ġ= Ġ" Last Ġupdated Ġ- Ġ$ updated " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfetched Ġ= ĠIntent (" com . mu j buddy . MESS _ MENU _ FETCH ED ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Broadcast ( f etched ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTry Ġand Ġsee Ġif Ġthe Ġre ponse Ġcon forms Ġto Ġerror Ġmodel Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Ġ= Ġjson . fromJson ( resp Body , ĠError Model :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( parsed . error Ġ== ĠLOGIN _ FAILED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġsomething Ġto Ġre ne ew Ġthe Ġlogin Ġcredentials ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog ?. dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Mess Menu Activity , ĠLogin Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" re auth ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠJust Ġshow Ġthe Ġerror Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . show Toast ( this @ Mess Menu Activity , Ġparsed . error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelper . show Toast ( this @ Mess Menu Activity , Ġe . message Ġ?: Ġ" Unable Ġto Ġshow Ġex pc et ion ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ