package Ġdev . va ib hav . qu izz ify . ui . screens . game Scre ens . invite Code Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Input Filter Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . core . widget . do After TextChanged Ċ import Ġandroidx . fragment . app . Dialog Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġdev . va ib hav . qu izz ify . databinding . Fragment Invite Code Dialog Binding Ċ import Ġdev . va ib hav . qu izz ify . util . Constants . GAME _ KEY _ LENGTH Ċ import Ġdev . va ib hav . qu izz ify . util . launch And Collect Latest Ċ import Ġdev . va ib hav . qu izz ify . util . show Error Dialog Ċ import Ġdev . va ib hav . qu izz ify . util . show Toast Ċ Ċ @ Android EntryPoint Ċ class ĠInv ite Code Dialog Fragment ( ĊĠĠĠ Ġprivate Ġval Ġon Invite Code Success : Ġ( String ) Ġ-> ĠUnit Ċ ) Ġ: ĠDialog Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Invite Code Dialog Binding ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Invite Code ViewModel >() ĊĠĠĠ Ġprivate Ġvar Ġis Error Dialog Visible Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Invite Code Dialog Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġdialog ?. window ?. setBackground Drawable ( Color Drawable ( Color . TRANSP ARENT )) ĊĠĠĠĠĠĠĠ Ġdialog ?. window ?. setLayout ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . MATCH _ PARENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠĠĠĠĠ Ġinit Listeners () ĊĠĠĠĠĠĠĠ Ġcollect Ui State () ĊĠĠĠĠĠĠĠ Ġcollect Ui Events () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollect Ui State () Ġ= ĠviewModel . ui State . launch And Collect Latest ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnect Btn . isEnabled Ġ= Ġit . is Button Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Container . isVisible Ġ= Ġit . isLoading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvite Code T IL . error Ġ= Ġit . invite Code Error ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollect Ui Events () Ġ= ĠviewModel . events . launch And Collect Latest ( view Lifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInv ite Code Screen Events . Navigate Back Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Invite Code Success ( it . game Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInv ite Code Screen Events . Show Toast Ġ-> Ġrequire Context (). show Toast ( it . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInv ite Code Screen Events . Show Error Dialog Ġ-> Ġshow Error Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . error Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Invite Code Dialog Fragment :: isError Dialog Visible ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Listeners () Ġ= Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġinvite Code TI ET . do After TextChanged Ġ{ ĠviewModel . on Invite Code Changed ( it . toString (). trim ()) Ġ} ĊĠĠĠĠĠĠĠ Ġconnect Btn . setOnClickListener Ġ{ ĠviewModel . on Connect Button Pressed () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ= Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġinvite Code TI ET . filters Ġ= ĠarrayOf ( Input Filter . Length Filter ( GAME _ KEY _ LENGTH )) ĊĠĠĠ Ġ} Ċ }