package Ġcom . v ictor rub ia . tf g . data . repository . pp g _ measure Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . compose . runtime . Mutable State Ċ import Ġandroidx . compose . runtime . mutable State Of Ċ import Ġcom . v ictor rub ia . tf g . data . model . pp g _ measure . PP G Measure Ċ import Ġcom . v ictor rub ia . tf g . data . repository . pp g _ measure . datasource . PP G Measure Cache DataSource Ċ import Ġcom . v ictor rub ia . tf g . data . repository . pp g _ measure . datasource . PP G Measure Local DataSource Ċ import Ġcom . v ictor rub ia . tf g . data . repository . pp g _ measure . datasource . PP G Measure Remote DataSource Ċ import Ġcom . v ictor rub ia . tf g . domain . repository . PP G Measure Repository Ċ import Ġkotlinx . serialization . encode ToString Ċ import Ġkotlinx . serialization . json . Json Ċ Ċ class ĠP PG Measure Repository Impl ( ĊĠĠĠ Ġprivate Ġval Ġp pg Measure Remote DataSource : ĠP PG Measure Remote DataSource , ĊĠĠĠ Ġprivate Ġval Ġp pg Measure Local DataSource : ĠP PG Measure Local DataSource , ĊĠĠĠ Ġprivate Ġval Ġp pg Measure Cache DataSource : ĠP PG Measure Cache DataSource , Ċ ) Ġ: ĠP PG Measure Repository Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġinternet Status Ġ= Ġmutable State Of ( true ) ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsave PP G Measure ( pp g Measure : ĠP PG Measure , Ġactivity Id : ĠInt ): ĠMutable State < Boolean > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp pg Measure Cache DataSource . add PP G Measure To Cache ( pp g Measure ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( count Ġ== Ġ 1 0 0 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend PP G Measure To API ( pp g Measure Cache DataSource . get PP G Measure From Cache (), Ġactivity Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( exception Ġ: ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" My Tag ", Ġexception . message . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġinternet Status ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġend PP G Measure ( activity Id Ġ: ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsend PP G Measure To API ( pp g Measure Cache DataSource . get PP G Measure From Cache (), Ġactivity Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( exception Ġ: ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" My Tag ", Ġexception . message . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsend PP G Measure To API ( pp g Measure Ġ: ĠList < PP G Measure >, Ġactivity Id Ġ: ĠInt ){ ĊĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Existing Measure ments ( activity Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġp pg Measure Remote DataSource . send PP G Measures ( Json . encode ToString ( pp g Measure ), Ġactivity Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( body Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp pg Measure Local DataSource . clear All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp pg Measure Cache DataSource . clear All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinternet Status . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave PP G Measures To DB ( pp g Measure ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( exception Ġ: ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternet Status . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" My Tag ", Ġ" Send PP G Measure To API Ġ- Ġ" Ġ+ Ġexception . message . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsave PP G Measures To DB ( pp g Measures : ĠList < PP G Measure > ){ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp pg Measures . forEach { pp g Measure Ġ-> Ġp pg Measure Local DataSource . add PP G Measure To DB ( pp g Measure )} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( exception Ġ: ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" My Tag ", Ġexception . message . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġcheck Existing Measure ments ( activity Id : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġp pg Measure Local DataSource . get PP G Measure From DB () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( list . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend PP G Measure To API ( list , Ġactivity Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( exception Ġ: ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" My Tag ", Ġexception . message . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }