package Ġcom . k ag an . chat app . ui . fragments Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . k ag an . chat app . R Ċ import Ġcom . k ag an . chat app . databinding . Fragment Create Room Binding Ċ import Ġcom . k ag an . chat app . models . chat rooms . Add VM Ċ import Ġcom . k ag an . chat app . utils . States Ċ import Ġcom . k ag an . chat app . utils . ErrorCode s . getDescription Ċ import Ġcom . k ag an . chat app . utils . Utils . hide Keyboard Ċ import Ġcom . k ag an . chat app . view models . Chat Rooms ViewModel Ċ import Ġcom . k ag an . chat app . view models . Token Preference ViewModel Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ @ Android EntryPoint Ċ class ĠCreate Room Fragment Ġ: ĠFragment ( R . layout . fragment _ create _ room ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Create Room Binding ĊĠĠĠ Ġprivate Ġval Ġchat Rooms ViewModel : ĠChat Rooms ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġval Ġtoken Preference ViewModel : ĠToken Preference ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġprivate Ġvar ĠaccessToken Ġ= Ġ"" ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Create Room Binding . bind ( view ) ĊĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠ Ġsubscribe () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . create Room . btn Create Edit . text Ġ= ĠgetString ( R . string . create ) ĊĠĠĠĠĠĠĠ Ġbinding . create Room . top AppBar . title Ġ= ĠgetString ( R . string . create ) ĊĊĠĠĠĠĠĠĠ Ġbinding . create Room . btn Create Edit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Keyboard ( require Context (), Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Room () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . create Room . top AppBar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Up () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnav Controller () Ġ= Ġfind Nav Controller () ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Controller (). navigate Up () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoken Preference ViewModel . accessToken . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġchat Rooms ViewModel . post State . observe ( view Lifecycle Owner , Ġ{ Ġpost State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( post State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠStates . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ProgressBar ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠStates . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate Up () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠStates . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ProgressBar ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost State . error . errors ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . field ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Name " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . create Room . ev Name . error Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetDescription ( it . errorCode , Ġrequire Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Room (): ĠAdd VM Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġbinding . create Room . ev Name . edit Text ?. text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġdescription Ġ= Ġbinding . create Room . ev Description . edit Text ?. text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġis Private Ġ= Ġbinding . create Room . switch Private . isChecked ĊĠĠĠĠĠĠĠ Ġval Ġusers Ġ= ĠlistOf < String >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtodo Ġwill Ġchoose Ġfrom Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 4 e 1 8 9 8 6 7 - cf 6 1 - 4 5 a 0 - 8 ca 3 - 8 5 1 0 4 9 9 ccf cb ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 1 0 da 6 fd - fd 2 5 - 4 0 4 2 - bd 5 6 - 8 9 9 1 3 5 8 1 af 4 7 " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDI Ġand ĠIs Main , ĠIs One ToOne ĊĠĠĠĠĠĠĠ Ġreturn ĠAdd VM ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Main Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Private Ġ= Ġis Private , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusers Ġ= Ġusers , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis One ToOne Chat Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Room () Ġ{ ĊĠĠĠĠĠĠĠ Ġchat Rooms ViewModel . post Chat Rooms ( accessToken , Ġget Room ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay ProgressBar ( b : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( b ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Create Room . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . create Room . root . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Create Room . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . create Room . root . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }