package Ġcom . hand stand sam . shopping app . repository ĊĊ Ċ import Ġcom . hand stand sam . shopping app . cart . Shopping Cart Ċ import Ġcom . hand stand sam . shopping app . models . User Ċ import Ġcom . hand stand sam . shopping app . preferences . User Preferences Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠSession Manager ( ĊĠĠĠ Ġprivate Ġval Ġcart : ĠShop ping Cart , ĊĠĠĠ Ġprivate Ġval Ġuser Preferences : ĠUser Preferences Ċ ) Ġ{ ĊĊĠĠĠ Ġval ĠcurrentUser Ġ= ĠMutable State Flow ( user Preferences . get Remember ed User ()) ĊĊĠĠĠ Ġfun Ġupdate CurrentUser ( user : ĠUser ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" setCurrent User : Ġ$ user ") ĊĠĠĠĠĠĠĠ Ġif Ġ( user Preferences . remember Me ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSave Ġto Ġdisk Ġif Ġwe Ġwant Ġto Ġremember Ġthem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Preferences . update Remember ed User ( user ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠcurrentUser . value Ġ= Ġuser ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis LoggedIn : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogged In Ġ= ĠcurrentUser . value Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" is LoggedIn : Ġ$ logged In ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlogged In ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ ĠcurrentUser . value Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġuser Preferences . update Remember ed User ( null ) ĊĠĠĠĠĠĠĠ Ġcart . empty () ĊĠĠĠ Ġ} Ċ } Ċ