package Ġcom . be yond the horizon . route . views . split . bill Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . be yond the horizon . route . R Ċ import Ġcom . be yond the horizon . route . adapters . Split Bill Groups Adapter Ċ import Ġcom . be yond the horizon . route . databinding . Activity Split Bill Binding Ċ import Ġcom . be yond the horizon . route . models . Bill Response Ċ import Ġcom . be yond the horizon . route . utils . Constants .* Ċ import Ġcom . be yond the horizon . route . views . Fund Amount Activity Ċ import Ġcom . google . gson . Json Element Ċ import Ġkotlinx . android . synt hetic . main . activity _ split _ bill .* Ċ import Ġorg . json . JSONObject Ċ Ċ class ĠSplit Bill Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġeditor : ĠSharedPreferences . Editor ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprefs : ĠSharedPreferences ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpayload : ĠMutable List < Bill Response > ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Adapter : ĠSplit Bill Groups Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlayout Manager : ĠRecyclerView . LayoutManager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Split Bill Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ split _ bill ) ĊĠĠĠĠĠĠĠ Ġeditor Ġ= Ġget SharedPreferences ( REG _ APP _ PREFER ENCES , Ġ 0 ). edit () ĊĠĠĠĠĠĠĠ Ġprefs Ġ= Ġget SharedPreferences ( REG _ APP _ PREFER ENCES , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġpayload Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġfetch B ills () ĊĊĠĠĠĠĠĠĠ Ġrl New Split Bill . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġintent Ġ= ĠIntent ( this , ĠFund Amount Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( REQUEST _ TYPE _ TO _ DE TERM INE _ PAYMENT _ ACTIVITY , ĠSPL IT _ B ILL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( REQUEST _ TYPE _ TO _ DE TERM INE _ PAYMENT _ TYPE , ĠS END _ M ONE Y _ TO _ ROUTE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġarrow _ back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch B ills () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġ" Bearer Ġ" Ġ+ Ġprefs . getString ( USER _ TOKEN , Ġ"") ĊĠĠĠĠĠĠĠ Ġget Split Bill Groups ( this , Ġ" sent ", Ġtoken ). set Callback Ġ{ Ġe , Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . has (" data ")) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item : ĠJson Element Ġin Ġresult . get (" data "). as JsonObject . get (" rows "). as JsonArray ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġissue Obj Ġ= ĠJSONObject ( item . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiterator : ĠIterator < String > Ġ= Ġissue Obj . keys () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( iterator . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" TAG ", Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Array Ġ= Ġissue Obj . get JSONArray ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtransaction Array . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem 2 Ġ= Ġtransaction Array . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Received Receipt Ġ 1 3 4 5 6 7 ", Ġitem 2 . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiterator 2 : ĠIterator < String > Ġ= Ġitem 2 . keys () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( iterator 2 . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey 2 Ġ= Ġiterator 2 . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġitem 2 . getJSONObject ( key 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbill Id Ġ= Ġdata . getString (" split _ bill _ id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġdata . getString (" reason ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġdata . getString (" total _ requested ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġdata . getString (" general _ status ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecipients Ġ= Ġdata . get JSONArray (" b ills ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayload . add ( Bill Response ( bill Id , Ġgroup , Ġamount , Ġstatus , Ġrecipients , Ġkey )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" RE CI PI ENTS ", Ġ" ID Ġ$ bill Id Ġ\ n Group Ġ$ group Ġ\ n Amount Ġ$ amount Ġ\ n Status Ġ$ status Ġ\ n Recipients Ġ$ recipients ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . groups RecyclerView . layout Manager Ġ= Ġthis . layout Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠSplit Bill Groups Adapter ( this , Ġpayload ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . groups RecyclerView . adapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" B IL LS : Ġ", Ġpayload . size . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Unable Ġto Ġfetch Ġsplit Ġgroups ", ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( ex : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġex . message , ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ