package Ġhu . hm . ic guide . ui . list Ċ Ċ import Ġcom . google . firebase . firestore . Query Document Snapshot Ċ import Ġcom . google . firebase . firestore . k tx . toObject Ċ import Ġhu . hm . ic guide . inter actors . Firebase Interactor Ċ import Ġhu . hm . ic guide . models . Shop Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠList Presenter Ġ@ Inject Ġconstructor ( private Ġval Ġfirebase Interactor : ĠFirebase Interactor ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNEW _ SH OP Ġ= Ġ" NEW _ DATA " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEDIT _ SH OP Ġ= Ġ" EDIT _ DATA " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREMOVE _ SH OP Ġ= Ġ" REMOVE _ DATA " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdata Changed ( ĊĠĠĠĠĠĠĠ Ġdc : ĠQuery Document Snapshot , ĊĠĠĠĠĠĠĠ Ġfunction : ĠString , ĊĠĠĠĠĠĠĠ Ġlist : ĠMutable List < Shop > ĊĠĠĠ Ġ): ĠMutable List < Shop > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobject Shop : ĠShop Ġ= Ġdc . toObject () ĊĠĠĠĠĠĠĠ Ġval Ġshop Ġ= ĠShop ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġdc . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġobject Shop . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaddress Ġ= Ġobject Shop . address , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgeo Point Ġ= Ġobject Shop . geo Point , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrate Ġ= Ġobject Shop . rate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġratings Ġ= Ġobject Shop . ratings , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Ġ= Ġobject Shop . photo ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( function ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNEW _ SH OP Ġ-> Ġlist . add ( shop ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEDIT _ SH OP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Ġ= Ġlist . find Ġ{ Ġit . id Ġ== Ġshop . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . remove ( old ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( shop ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠREMOVE _ SH OP Ġ-> Ġlist . remove ( shop ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Shop Listeners ( ĊĠĠĠĠĠĠĠ Ġlistener : ĠFirebase Interactor . Data Changed Listener , ĊĠĠĠĠĠĠĠ Ġfeed Back : Ġ( String ?) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfirebase Interactor . init Sh ops Listener ( listener , Ġfeed Back ) ĊĠĠĠ Ġ} Ċ Ċ }