package Ġcom . her man ow ic z . cv . screens . main Ċ Ċ import Ġcom . her man ow ic z . cv . di . common . presenter . Sub scri bing Presenter Ċ import Ġcom . her man ow ic z . cv . di . common . transformer . Rx Transformer Ċ import Ġcom . her man ow ic z . cv . model . Form Item Ċ import Ġcom . her man ow ic z . cv . use case . Firebase UseCase Ċ Ċ class ĠMain Presenter ( ĊĠĠĠ Ġtransformer : ĠRx Transformer , Ġprivate Ġval Ġfirebase UseCase : ĠFirebase UseCase Ċ ) Ġ: ĊĠĠĠ ĠSub scri bing Presenter < Main View >( transformer ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlist Ġ= Ġmutable ListOf < Form Item >() ĊĊĠĠĠ Ġfun ĠgetList () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. init View () ĊĠĠĠĠĠĠĠ Ġview ?. show ProgressBar () ĊĠĠĠĠĠĠĠ Ġfirebase UseCase . getData (). compose ( transformer . single ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. hide ProgressBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. display ToDo List ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( it ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. hide ProgressBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Error ( it . message ) ĊĠĠĠĠĠĠĠ Ġ}). remember () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcollection Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġfirebase UseCase . addListener (). compose ( transformer . single ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. display ToDo List ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. hide ProgressBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( it ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. hide ProgressBar () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Error ( it . message ) ĊĠĠĠĠĠĠĠ Ġ}). remember () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload More Items () Ġ{ ĊĠĠĠĠĠĠĠ Ġfirebase UseCase . load More (). compose ( transformer . single ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty () Ġ&& Ġ! list . contains All ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . addAll ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. display ToDo List ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Error ( it . message ) ĊĠĠĠĠĠĠĠ Ġ}). remember () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Fab Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. show Form () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Document ( item : ĠForm Item , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Id Ġ= Ġfirebase UseCase . document Id ( position ) ĊĠĠĠĠĠĠĠ Ġview ?. show Form ( item , Ġdocument Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Item ( adapter Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfirebase UseCase . removeItem ( adapter Position ). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. update Removed Item ( adapter Position ) ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. show Error ( it . message ) ĊĠĠĠĠĠĠĠ Ġ}). remember () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Confirmation Prompt ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview ?. show Confirmation Prompt ( position ) ĊĠĠĠ Ġ} Ċ } Ċ