package Ġge . nn asar id ze . messenger app . scenes . menu . presentation Ċ Ċ import Ġandroid . net . Uri Ċ import Ġge . nn asar id ze . messenger app . scenes . menu . data . use cases .* Ċ import Ġge . nn asar id ze . messenger app . scenes . menu . presentation . fragments . con versations . recycler . Recycler Chat Entity Ċ import Ġge . nn asar id ze . messenger app . shared . data . entities . User Entity Ċ Ċ class ĠMenu Presenter Impl ( ĊĠĠĠ Ġprivate Ġval Ġview : ĠMenu View , ĊĠĠĠ Ġprivate Ġval Ġsubscribe Ch ats Use case : ĠSubscribe Ch ats Use case Ġ= ĠDefault Subscribe Ch ats Use case (), ĊĠĠĠ Ġprivate Ġval Ġsubscribe CurrentUser Use case : ĠSubscribe CurrentUser Use case Ġ= ĠDefault Subscribe CurrentUser Use case (), ĊĠĠĠ Ġprivate Ġval ĠgetImage Use case : ĠGet Image Use case Ġ= ĠDefault Get Image Use case (), ĊĠĠĠ Ġprivate Ġval Ġupload Image Use case : ĠUpload Image Use case Ġ= ĠDefault Upload Image Use case (), ĊĠĠĠ Ġprivate Ġval Ġupdate UserData Use case : ĠUpdate UserData Use case Ġ= ĠDefault Update UserData Use case (), ĊĠĠĠ Ġprivate Ġval Ġsign out Use case : ĠSign out Use case Ġ= ĠDefault Sign out Use case (), Ċ ) Ġ: ĠMenu Presenter Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdata Ġ= Ġmutable Map Of < String , ĠRe cycler Chat Entity >() ĊĠĠĠ Ġprivate Ġvar Ġsearch Query Ġ= Ġ"" ĊĠĠĠ Ġprivate Ġvar Ġfiltered Data Ġ= Ġmutable ListOf < Recycler Chat Entity >() ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġuser : ĠUser Entity ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnew Image : ĠUri ĊĊĠĠĠ Ġoverride Ġfun Ġview Initialized () Ġ{ ĊĠĠĠĠĠĠĠ Ġsubscribe Ch ats Use case . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Chat Handler Ġ= Ġ:: new Chat Handler , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler Ġ= Ġ:: error Handler , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfragment Initialized () Ġ{ ĊĠĠĠĠĠĠĠ Ġrefresh ViewData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfab Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . goto Search () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhome Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . set Con versations Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġchat Pressed ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġchat Ġ= Ġfiltered Data [ position ] ĊĠĠĠĠĠĠĠ Ġview . goto Chat ( chat . chat ID , Ġchat . user . userID ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsearch Edited ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch Query Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġrefresh ViewData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsettings Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! :: user . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscribe CurrentUser Use case . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete Handler Ġ= Ġ:: setup UserData , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler Ġ= Ġ:: error Handler ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview . set Settings Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(:: new Image . isInitialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupload Image () ĊĊĠĠĠĠĠĠĠ Ġval Ġlocal Name Ġ= Ġview . getName () ĊĠĠĠĠĠĠĠ Ġval Ġlocal Prof Ġ= Ġview . get Prof ession () ĊĠĠĠĠĠĠĠ Ġif Ġ(:: user . isInitialized Ġ&& Ġ( user . nickname Ġ!= Ġlocal Name Ġ|| Ġuser . prof ession Ġ!= Ġlocal Prof )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UserData ( local Name , Ġlocal Prof ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsign out Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsign out Use case . execute () ĊĠĠĠĠĠĠĠ Ġview . goto Login () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġimage Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . pick Image () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġimage Pick ed ( uri : ĠUri ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġnew Image Ġ= Ġuri ĊĠĠĠĠĠĠĠ Ġview . setImage ( uri ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnew Chat Handler ( chat : ĠRe cycler Chat Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata [ chat . chat ID ] Ġ= Ġchat ĊĠĠĠĠĠĠĠ Ġif Ġ( data . size Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . hide Loading () ĊĠĠĠĠĠĠĠ Ġrefresh ViewData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠerrorHandler ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . hide Loading () ĊĠĠĠĠĠĠĠ Ġview . display Error ( text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh ViewData () Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter Data () ĊĠĠĠĠĠĠĠ Ġview . update Con versations ( filtered Data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Filtered Data Ġ= Ġmutable ListOf < Recycler Chat Entity >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( chat Ġin Ġdata . values ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( chat . user . nickname . contains ( search Query )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Filtered Data . add ( chat ) ĊĊĠĠĠĠĠĠĠ Ġnew Filtered Data . sortBy Descending Ġ{ Ġit . last Message . timestamp Ġ} ĊĠĠĠĠĠĠĠ Ġfiltered Data Ġ= Ġnew Filtered Data ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup UserData ( user Entity : ĠUser Entity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . setName ( user Entity . nickname ) ĊĠĠĠĠĠĠĠ Ġview . set Prof ession ( user Entity . prof ession ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! :: user . isInitialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . hide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetImage Use case . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġuser Entity . userID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Handler Ġ= Ġ{ Ġview . setImage ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler Ġ= Ġ:: error Handler , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġuser Ġ= Ġuser Entity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupload Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . show Loading () ĊĠĠĠĠĠĠĠ Ġupload Image Use case . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ= Ġnew Image , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete Handler Ġ= Ġ{ Ġview . hide Loading () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler Ġ= Ġ:: error Handler ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UserData ( name : ĠString , Ġprof : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew User Ġ= ĠUser Entity ( user . userID , Ġname , Ġprof ) ĊĠĠĠĠĠĠĠ Ġview . show Loading () ĊĠĠĠĠĠĠĠ Ġupdate UserData Use case . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ= Ġnew User , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete Handler Ġ= Ġ{ Ġview . hide Loading () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠerrorHandler Ġ= Ġ:: error Handler ) ĊĠĠĠ Ġ} Ċ } Ċ