package Ġcom . example . kotlin _ chat _ v 2 _ sample . guest Ċ Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . live Data Ċ import Ġcom . k ustom er . core . models . K us Result Ċ import Ġcom . k ustom er . core . models . K us Widget Type Ċ import Ġcom . k ustom er . core . models . chat . K us Conversation Ċ import Ġcom . k ustom er . ui . K ustom er Ċ Ċ class ĠGuest ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġunread Count Ġ= Ġlive Data Ġ{ ĊĠĠĠĠĠĠĠ Ġemit Source ( K ustom er . getInstance (). observe Un read Count ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġactive Conversation Ids Ġ= Ġlive Data Ġ{ ĊĠĠĠĠĠĠĠ Ġemit Source ( K ustom er . getInstance (). observe Active Conversation Ids ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ sn ackbar Event Ġ= ĠMutable LiveData < String ?> () ĊĠĠĠ Ġval Ġsn ackbar Event ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ sn ackbar Event ĊĊĠĠĠ Ġprivate Ġfun Ġshow Snackbar ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ sn ackbar Event . value Ġ= Ġmessage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsn ackbar Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ sn ackbar Event . value Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Sdk () Ġ{ ĊĠĠĠĠĠĠĠ ĠK ustom er . getInstance (). open () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen New Chat () Ġ{ ĊĠĠĠĠĠĠĠ ĠK ustom er . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open New Conversation Ġ{ Ġresult : ĠK us Result < K us Conversation > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK us Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Snackbar (" New Ġconversation Ġcreated ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠK us Result . Error Ġ-> Ġshow Snackbar (" New Ġconversation Ġcreation Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Chat Only () Ġ{ ĊĠĠĠĠĠĠĠ ĠK ustom er . getInstance (). open ( K us Widget Type . CHAT _ ONLY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Kb Only () Ġ{ ĊĠĠĠĠĠĠĠ ĠK ustom er . getInstance (). open ( K us Widget Type . KB _ ONLY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoggle Dark Mode ( isChecked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ YES ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠGuest ViewModel Factory Ġ: ĠViewModel Provider . New Instance Factory () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel > Ġcreate ( model Class : ĠClass < T >) Ġ= ĊĠĠĠĠĠĠĠ Ġ( Guest ViewModel () Ġas ĠT ) Ċ } Ċ