package Ġcom . k ln v ch . green house viewer . firestore Ċ Ċ import Ġcom . google . firebase . firestore . Firebase Fire store Ċ import Ġcom . k ln v ch . green house common . firestore . Module State Helper Ċ import Ġcom . k ln v ch . green house common . firestore . Phone State Helper Ċ import Ġcom . k ln v ch . green house common . firestore . State Helper Ċ import Ġcom . k ln v ch . green house common . models . Module State Ċ import Ġcom . k ln v ch . green house common . models . Phone State Ċ import Ġio . reactivex . Single Ċ Ċ object ĠState Reader Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠLIMIT Ġ= Ġ 1 0 0 0 L ĊĠĠĠ Ġprivate Ġval Ġphone State Helper Ġ= ĠPhone State Helper () ĊĠĠĠ Ġprivate Ġval Ġmodule State Helper Ġ= ĠModule State Helper () ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġread Phone States ( deviceId : ĠString , ĠstartTime : ĠLong ): ĠSingle < List < Phone State >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread ( deviceId , ĠstartTime , Ġphone State Helper , ĠPhone State :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġread Module States ( deviceId : ĠString , ĠstartTime : ĠLong ): ĠSingle < List < Module State >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġread ( deviceId , ĠstartTime , Ġmodule State Helper , ĠModule State :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġread ( ĊĠĠĠĠĠĠĠ ĠdeviceId : ĠString , ĊĠĠĠĠĠĠĠ ĠstartTime : ĠLong , ĊĠĠĠĠĠĠĠ Ġhelper : ĠState Helper , ĊĠĠĠĠĠĠĠ Ġclass Of T : ĠClass < T > ĊĠĠĠ Ġ): ĠSingle < List < T >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . create Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Fire store . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collection ( helper . collection Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( State Helper . FIELD _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where EqualTo ( State Helper . FIELD _ DEVICE _ ID , ĠdeviceId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. where GreaterThan ( State Helper . FIELD _ TIME , ĠstartTime ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( LIMIT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġdocuments Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdocuments . map Ġ{ Ġhelper . from Map ( it . data , Ġclass Of T ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . on Success ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġe Ġ-> Ġemitter . try OnError ( e ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ