package Ġuk . co . v ict oria jan ed avis . chat app . presentation . common . ext Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroid . content . Context Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . view . View Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . EditText Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . android . material . text field . TextInput Layout ĊĊ Ċ /** ĠSyntax Ġhelper Ġto Ġconvert Ċ Ġ* Ġdata . observe ( this , ĠObserver < Int > Ġ{ Ġ... Ġ}) Ċ Ġ* Ġto Ċ Ġ* Ġdata . observe ( this ) Ġ{ Ġ... Ġ} Ċ Ġ*/ Ċ fun Ġ< T > ĠLive Data < T >. observe ( owner : ĠLifecycle Owner , Ġobserver : Ġ( T ?) Ġ-> ĠUnit ) Ġ= Ġobserve ( owner , ĠObserver ( observer )) Ċ Ċ fun ĠView . visible () Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= ĠView . VISIBLE Ċ } Ċ Ċ fun ĠView . invisible () Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= ĠView . IN VISIBLE Ċ } Ċ Ċ fun ĠView . g one () Ġ{ ĊĠĠĠ Ġthis . visibility Ġ= ĠView . GONE Ċ } Ċ Ċ fun ĠView . disable () Ġ{ ĊĠĠĠ Ġthis . isEnabled Ġ= Ġfalse Ċ } Ċ Ċ fun ĠView . enable () Ġ{ ĊĠĠĠ Ġthis . isEnabled Ġ= Ġtrue Ċ } ĊĊ Ċ /* ĠText Input Layout / EditText ĠExtensions Ġ*/ Ċ fun ĠEditText . isEmpty (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġthis . text . toString (). isEmpty () Ċ } Ċ Ċ fun ĠEditText . after TextChanged ( after TextChanged : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġthis . add TextChanged Listener ( object : ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġafter TextChanged . invoke ( s . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ fun ĠText Input Layout . after TextChanged ( after TextChanged : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġthis . edit Text ?. add TextChanged Listener ( object : ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġafter TextChanged . invoke ( s . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ fun ĠEditText . validate ( errorMessage : ĠString , Ġvalidator : Ġ( String ) Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠ Ġthis . after TextChanged Ġ{ Ġs Ġ-> ĊĠĠĠĠĠĠĠ Ġthis . error Ġ= Ġif ( validator ( s )) Ġnull Ġelse ĠerrorMessage ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// this . error Ġ= Ġif ( validator ( this . text . toString ())) Ġnull Ġelse ĠerrorMessage Ċ } Ċ Ċ fun ĠText Input Layout . validate ( errorMessage : ĠString , Ġvalidator : Ġ( String ) Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠ Ġthis . edit Text ?. after TextChanged Ġ{ Ġs Ġ-> ĊĠĠĠĠĠĠĠ Ġthis . error Ġ= Ġif ( validator ( s )) Ġnull Ġelse ĠerrorMessage ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// this . error Ġ= Ġif ( validator ( this . text . toString ())) Ġnull Ġelse ĠerrorMessage Ċ } ĊĊ Ċ fun ĠFragment . set Support ActionBar ( toolbar : ĠToolbar ) Ġ{ ĊĠĠĠ Ġval Ġactivity : ĠFragment Activity ? Ġ= Ġthis . activity ĊĠĠĠ Ġif Ġ( activity Ġis ĠAppCompatActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity . set Support ActionBar ( toolbar ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFragment . get Support ActionBar (): ĠAction Bar ? Ġ{ ĊĠĠĠ Ġval Ġactivity : ĠFragment Activity ? Ġ= Ġthis . activity ĊĠĠĠ Ġif Ġ( activity Ġis ĠAppCompatActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġactivity . support ActionBar ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ fun ĠActivity . hide Keyboard () Ġ{ ĊĠĠĠ Ġval Ġimm Ġ= Ġthis . getSystem Service ( Context . INPUT _ METHOD _ SERVICE ) Ġas ĠInput Method Manager ĊĠĠĠ Ġimm . hide Soft Input From Window ( this . window . decor View . window Token , Ġ 0 ) Ċ } Ċ Ċ fun ĠFragment . hide Keyboard () Ġ{ ĊĠĠĠ Ġthis . activity ?. hide Keyboard () Ċ } Ċ Ċ fun ĠFragment . make Snackbar ( text : ĠString , Ġduration : ĠInt ) Ġ: ĠSn ackbar ? Ġ{ ĊĠĠĠ Ġthis . view ?. let Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠ Ġreturn ĠSn ackbar . make ( view , Ġtext , Ġduration ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ Ċ fun ĠFragment . show Snackbar ( text : ĠString , Ġduration : ĠInt ) Ġ{ ĊĠĠĠ Ġmake Snackbar ( text , Ġduration )?. show () Ċ }