package Ġcom . o ak raw . th ail and _ covid . repository Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . core . content . edit Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . o ak raw . th ail and _ covid . model . Case Info Ċ import Ġcom . o ak raw . th ail and _ covid . network . ApiService Ċ import Ġcom . o ak raw . th ail and _ covid . network . Resource Ċ import Ġcom . o ak raw . th ail and _ covid . network . network Bound Resource Ċ import Ġkotlinx . coroutines . flow . Flow Ċ Ċ class ĠApi Repository Impl ( ĊĠĠĠ Ġprivate Ġval Ġservice : ĠApi Service , ĊĠĠĠ Ġprivate Ġval Ġpref : ĠSharedPreferences Ċ ) Ġ: ĠApi Repository Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Today Case Info (): ĠFlow < Resource < Case Info >> Ġ= Ġnetwork Bound Resource ( ĊĠĠĠĠĠĠĠ Ġload From Db Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Ġ= Ġpref . getString ( CACHE _ KEY , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( raw Ġ== Ġnull ) Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠGson (). fromJson ( raw , ĠCase Info :: class . java ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġcreate Call Ġ= Ġ{ Ġservice . get Today Case Info () Ġ}, ĊĠĠĠĠĠĠĠ Ġsave Call Result Ġ= Ġ{ Ġpref . edit Ġ{ Ġput String ( CACHE _ KEY , ĠGson (). toJson ( it )) Ġ} Ġ}, ĊĠĠĠĠĠĠĠ Ġshould Fetch Ġ= Ġ{ Ġtrue Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCACHE _ KEY Ġ= Ġ" cache _ key " ĊĠĠĠ Ġ} Ċ }