package Ġtk . paul mb uru . tre emap . repository Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . firestore . Collection Reference Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Settings Ċ import Ġcom . google . firebase . firestore . Query Snapshot Ċ import Ġtk . paul mb uru . tre emap . models . Ar bor ist Ċ import Ġtk . paul mb uru . tre emap . models . Region Ċ import Ġtk . paul mb uru . tre emap . models . Tree Ċ import Ġtk . paul mb uru . tre emap . utils . UserInfo ĊĊ Ċ class ĠFire store Repository Ġ{ ĊĊĠĠĠ Ġval ĠTAG Ġ= Ġ" FIRE BASE _ REPOSITORY " ĊĠĠĠ Ġvar Ġfire store DB Ġ= ĠFirebase Fire store . getInstance () ĊĠĠĠ Ġprivate Ġval Ġsettings Ġ= ĠFirebase Fire store Settings . Builder () ĊĠĠĠĠĠĠĠ Ġ. set Persistence Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġ. build (); Ċ Ċ // ĠĠĠ Ġval Ġglobal Trees : ĠLive Data ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġfire store DB . firestore Settings Ġ= Ġsettings ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġupdate Ar bor ist Details ( username : ĠString , Ġuser Email : ĠString , Ġtrees : ĠString ): ĠTask < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdocument Reference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfire store DB . collection (" tre emap _ arbor ists "). document ( user Email ). collection (" my _ details ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ("$ username ") ĊĠĠĠĠĠĠĠ Ġreturn Ġdocument Reference . set ( Ar bor ist ( username , Ġuser Email , Ġtrees , Ġ" 1 5 0 ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġsave Ġtree Ġto Ġfirebase ĊĠĠĠ Ġfun Ġsave New Ar bor ist Tree ( ĊĠĠĠĠĠĠĠ Ġnew Tree : ĠTree , ĊĠĠĠĠĠĠĠ Ġusername : ĠString , ĊĠĠĠĠĠĠĠ Ġuser Email : ĠString , ĊĠĠĠĠĠĠĠ Ġtree Id : ĠString ĊĠĠĠ Ġ): ĠTask < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// var ĊĠĠĠĠĠĠĠ Ġvar Ġdocument Reference Ġ= Ġfire store DB . collection (" tre emap _ arbor ists "). document ( user Email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection (" trees _ pl anted "). document ( tree Id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdocument Reference . set ( new Tree ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave New Ar bor ist Tree Region ( ĊĠĠĠĠĠĠĠ Ġtree Region : ĠString , ĊĠĠĠĠĠĠĠ Ġusername : ĠString , ĊĠĠĠĠĠĠĠ Ġuser Email : ĠString , ĊĠĠĠĠĠĠĠ Ġtree Id : ĠString ĊĠĠĠ Ġ): ĠTask < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// var ĊĠĠĠĠĠĠĠ Ġvar Ġdocument Reference Ġ= Ġfire store DB . collection (" tre emap _ arbor ists "). document ( user Email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection (" trees _ regions "). document ( System . currentTimeMillis (). toString ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġdocument Reference . set ( Region ( tree Region )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġadd Ġtree Ġto Ġglobal Ġpl anted Ġtrees ĊĠĠĠ Ġfun Ġadd New Ar bor ist Tree To Global Trees ( new Tree : ĠTree ): ĠTask < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdocument Reference Ġ= Ġfire store DB . collection (" global _ pl anted _ trees ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( System . currentTimeMillis (). toString ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġdocument Reference . set ( new Tree ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Trees (): ĠCollection Reference Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfire store DB . collection (" global _ pl anted _ trees ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Current Ar bor ist Trees (): ĠCollection Reference Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfire store DB . collection (" tre emap _ arbor ists "). document ( UserInfo . auth _ email . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection (" trees _ pl anted ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Current Ar bor ist Trees Regions (): ĠCollection Reference Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfire store DB . collection (" tre emap _ arbor ists "). document ( UserInfo . auth _ email . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection (" trees _ regions ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll Global Trees (): ĠTask < Query Snapshot ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġfire store DB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection (" global _ pl anted _ trees ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġget Ġsaved Ġtrees Ġfrom Ġfirebase ĊĠĠĠ Ġfun Ġget Saved Address (): ĠCollection Reference Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcollection Reference Ġ= Ġfire store DB . collection (" trees / paul mb uru 5 3 @ gmail . com / my _ trees ") ĊĠĠĠĠĠĠĠ Ġreturn Ġcollection Reference ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Address ( tree : ĠTree ): ĠTask < Void > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdocument Reference Ġ= Ġfire store DB . collection (" users / paul mb uru 5 3 @ gmail / my _ trees ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( tree . tree _ id ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġdocument Reference . delete () ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ