/* Ċ Ġ* ĠCreated Ġby ĠAnd ri i ĠK oval ch uk Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 . Ġro ove Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġhttps :// www . gnu . org / licenses Ċ Ġ*/ Ċ Ċ package Ġcom . mm dev . ro ove . ui . con versations Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . mm dev . domain . Pagination Direction .* Ċ import Ġcom . mm dev . domain . con versations . Conversation Item Ċ import Ġcom . mm dev . domain . con versations . Con versations Repository Ċ import Ġcom . mm dev . ro ove . core . log . log Error Ċ import Ġcom . mm dev . ro ove . ui . MainActivity Ċ import Ġcom . mm dev . ro ove . ui . common . base . Base ViewModel Ċ import Ġcom . mm dev . ro ove . ui . common . errors . ErrorType Ċ import Ġcom . mm dev . ro ove . ui . common . errors . My Error Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠCon versations ViewModel Ġ@ Inject Ġconstructor ( Ċ ĉ private Ġval Ġrepo : ĠCon versations Repository Ċ ): ĠBase ViewModel () Ġ{ ĊĉĊ ĉ private Ġval Ġdelete Conversation Status : ĠMutable LiveData < Boolean > Ġ= ĠMutable LiveData () ĊĊ ĉ val Ġinit Con versations Ġ= ĠMutable LiveData < List < Conversation Item >>() Ċ ĉ val Ġnext Con versations Ġ= ĠMutable LiveData < List < Conversation Item >>() Ċ ĉ val Ġprev Con versations Ġ= ĠMutable LiveData < List < Conversation Item >>() ĊĊ ĉ val Ġshow Text Helper Ġ= ĠMutable LiveData < Boolean >() ĊĊ ĉ init Ġ{ Ċĉ ĉ load Init Con versations () Ċ ĉ } ĊĊ ĉ fun Ġdelete Conversation ( conversation Item : ĠCon versation Item ){ Ċĉ ĉ dis pos ables . add ( repo . delete Conversation ( MainActivity . currentUser !! , Ġconversation Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĉĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġdelete Conversation Status . value Ġ= Ġtrue Ġ}, ĊĉĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĉĉĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error ( TAG , Ġ"$ it ") ĊĉĉĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Conversation Status . value Ġ= Ġfalse ĊĉĉĠĠĠĠĠĠĠĠĠĠĠ Ġerror . value Ġ= ĠMy Error ( ErrorType . DE LET ING , Ġit ) ĊĉĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċĉ ĉ ) Ċ ĉ } ĊĊĊ ĉ private Ġfun Ġload Init Con versations () Ġ{ Ċĉ ĉ dis pos ables . add ( repo . get Con versations ( MainActivity . currentUser !! , ĠDate (), Ġ 0 , ĠINITIAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĉĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġconversations Ġ-> ĊĉĉĠĠĠĠĠĠĠĠĠĠĠ Ġinit Con versations . post Value ( con versations ) ĊĉĉĠĠĠĠĠĠĠĠĠĠĠ Ġshow Text Helper . post Value ( con versations . isEmpty ()) ĊĉĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĉĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror . value Ġ= ĠMy Error ( ErrorType . LOADING , Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċĉ ĉ ) Ċ ĉ } ĊĉĊ ĉ fun Ġload Prev Con versations ( page : ĠInt ) Ġ{ Ċĉ ĉ dis pos ables . add ( repo . get Con versations ( MainActivity . currentUser !! , ĠDate (), Ġpage , ĠPRE V IOUS ) Ċĉĉ ĉ . observe On ( main Thread ()) Ċĉĉ ĉ . subscribe ( Ċĉĉĉ ĉ { Ġprev Con versations . post Value ( it ) Ġ}, Ċĉĉĉ ĉ { Ġerror . value Ġ= ĠMy Error ( ErrorType . LOADING , Ġit ) Ġ} Ċĉĉ ĉ ) Ċĉ ĉ ) Ċ ĉ } ĊĉĊ ĉ fun Ġload Next Con versations ( conversation Timestamp : ĠDate , Ġpage : ĠInt ) Ġ{ Ċĉ ĉ dis pos ables . add ( repo . get Con versations ( MainActivity . currentUser !! , Ġconversation Timestamp , Ġpage , ĠNEXT ) Ċĉĉ ĉ . observe On ( main Thread ()) Ċĉĉ ĉ . subscribe ( Ċĉĉĉ ĉ { Ġnext Con versations . post Value ( it ) Ġ}, Ċĉĉĉ ĉ { Ġerror . value Ġ= ĠMy Error ( ErrorType . LOADING , Ġit ) Ġ} Ċĉĉ ĉ ) Ċĉ ĉ ) Ċ ĉ } ĊĊ ĉ fun Ġget Delete Conversation Status () Ġ= Ġdelete Conversation Status Ċĉ Ċ }