package Ġjp . gree . tech con . common . repository Ċ Ċ import Ġjp . gree . tech con . common . Platform Ċ import Ġjp . gree . tech con . common . datasource . db . Session Dao Ċ import Ġjp . gree . tech con . common . datasource . network . Api Ċ import Ġjp . gree . tech con . common . model . Session Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠSession Repository ( private Ġval Ġdao : ĠSession Dao , Ġprivate Ġval Ġapi : ĠApi ) Ġ{ ĊĠĠĠ Ġfun Ġget Sessions (): ĠFlow < List < Session >> Ġ= Ġchannel Flow Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠRemove Ġthis Ġworkaround Ġafter Ġsupporting ĠiOS Ġmult ith read ĊĠĠĠĠĠĠĠ Ġif Ġ( Platform . is I os ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend ( dao . load Sessions Work around For I os ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsessions Ġ= Ġapi . getS essions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao . save ( sessions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend ( sessions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ channel Flow ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdao . load Sessions (). collect Ġ{ Ġsend ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsessions Ġ= Ġapi . getS essions () ĊĠĠĠĠĠĠĠ Ġdao . save ( sessions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Session ( id : ĠLong ): ĠFlow < Session > Ġ= Ġflow Ġ{ Ġemit ( api . getSession ( id )) Ġ} ĊĠĠĠ Ġfun Ġget Book marks (): ĠFlow < List < Session >> Ġ= Ġflow Ġ{ Ġemit ( api . get Book marks ()) Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġupdate Bookmark ( sessionId : ĠLong , Ġenable : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( enable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi . add Bookmark ( sessionId ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi . remove Bookmark ( sessionId ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ