package Ġcom . example . kit aab . ViewModel Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database .* Ċ Ċ class ĠRead ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Ref : ĠFirebase Database Ġ= ĠFirebase Database . getInstance () ĊĠĠĠ Ġprivate Ġval Ġm Auth : ĠFirebase Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠ Ġval ĠuserId Ġ= Ġm Auth . currentUser !!. uid ĊĠĠĠ Ġprivate Ġvar Ġdata Ref : ĠDatabase Reference ĊĠĠĠ Ġprivate Ġvar Ġkey : ĠString Ġ= Ġ"" ĊĠĠĠ Ġlateinit Ġvar Ġgenre : ĠString ĊĠĠĠ Ġlateinit Ġvar Ġbook Id : ĠString ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ref Ġ= Ġdatabase Ref . getReference (" users /$ userId / user _ library ") ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġobject : ĠValue EventListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( error : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( snap Ġin Ġsnapshot . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// to Ġget Ġkey Ġof Ġthe Ġbook Ġfrom Ġthe Ġdatabase Ġthat Ġthe Ġuser Ġwants Ġto Ġread ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( snap . child (" genre "). value Ġ== Ġgenre Ġ&& Ġsnap . child (" book Id "). value Ġ== Ġbook Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġsnap . key . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdata Ref . add Value EventListener ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// to Ġget Ġgenre Ġand Ġbook ĠId Ġfrom ĠView ĊĠĠĠ Ġfun Ġset Variables ( gen : ĠString , Ġid : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgenre Ġ= Ġgen ĊĠĠĠĠĠĠĠ Ġbook Id Ġ= Ġid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// to Ġmark Ġuser 's Ġlast Ġvisited Ġpage Ġin Ġthe Ġdatabase ĊĠĠĠ Ġfun Ġmark Page ( page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ref 2 Ġ= Ġdatabase Ref . getReference (" users /$ userId / user _ library /$ key ") ĊĠĠĠĠĠĠĠ Ġdata Ref 2 . child (" bookmark "). setValue ( page . toString ()) ĊĠĠĠ Ġ} Ċ Ċ }