/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠSn ey der ĠAng ulo Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . sn ey der . crypto tracker . data . sync Ċ Ċ import Ġcom . sn ey der . crypto tracker . data . model . Sync Status Ċ import Ġcom . sn ey der . crypto tracker . data . repository . UserRepository Ċ import Ġdebug Ċ import Ġerror Ċ import Ġshow Values Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠF avorites Synchron izer Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġuser Repository : ĠUser Repository ) Ġ{ ĊĊĠĠĠ Ġfun Ġsynchronize F avorites With Server (){ ĊĠĠĠĠĠĠĠ Ġ// ĠLaunch Ġcoroutine Ġto Ġwork Ġin Ġa Ġbackground Ġthread ĊĠĠĠĠĠĠĠ Ġ// ĠFind Ġall Ġfavor ites Ġfrom Ġthe Ġlocal Ġdatabase ĊĠĠĠĠĠĠĠ Ġdebug (" synchron ize F avorites With Server ĠSTART ") ĊĠĠĠĠĠĠĠ Ġval Ġfavor ites Ġ= Ġuser Repository . find F avorites (). blocking First () ĊĊĠĠĠĠĠĠĠ Ġ// ĠFind Ġfavor ites Ġwith Ġsync Status Ġpending Ġto Ġadd ĊĠĠĠĠĠĠĠ Ġfavor ites . filter Ġ{ Ġit . sync Status Ġ== ĠSync Status . PENDING _ TO _ ADD Ġ}. also Ġ{ Ġit . show Values (" favorites ĠP ENDING _ TO _ ADD ") Ġ}. forEach Ġ{ Ġfavorite ToAdd -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadd Favorite In Server Ġ= Ġ Ġuser Repository . add Favorite In Server ( favorite ToAdd ). blocking Get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug (" add Favorite In Server Ġ= Ġ$ add Favorite In Server ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( add Favorite In Server . successful ) Ġ{ Ġ// ĠIn Ġcase Ġthe Ġresponse Ġis Ġsuccessful , Ġinsert Ġfavorite Ġwith Ġstatus Ġsync Ġin Ġthe ĠDB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Repository . insert Favorite ( favorite ToAdd . apply Ġ{ Ġsync Status Ġ= ĠSync Status . SYN CH RON IZED Ġ}). blocking Await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ( e . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠFind Ġfavor ites Ġwith Ġsync Status Ġpending Ġto Ġdelete ĊĠĠĠĠĠĠĠ Ġfavor ites . filter Ġ{ Ġit . sync Status Ġ== ĠSync Status . PENDING _ TO _ DELETE Ġ}. also Ġ{ Ġit . show Values (" favorites ĠP ENDING _ TO _ DELETE ") Ġ}. forEach Ġ{ Ġfavorite ToDelete -> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete Favorite In Server Ġ= Ġuser Repository . delete Favorite In Server ( favorite ToDelete ). blocking Get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug (" delete Favorite In Server Ġ= Ġ$ delete Favorite In Server ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( delete Favorite In Server . successful ) Ġ{ Ġ// ĠIn Ġcase Ġthe Ġresponse Ġis Ġsuccessful , Ġdelete Ġthe Ġfavorite Ġfrom Ġthe ĠDB ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug (" delete Favorite By Currency Id Ġ${ favorite ToDelete . currency Id } ĠSTART ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Repository . delete Favorite By Currency Id ( favorite ToDelete . currency Id ). blocking Await () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdebug (" delete Favorite By Currency Id Ġ${ favorite ToDelete . currency Id } ĠEND ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ( e . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdebug (" synchron ize F avorites With Server ĠEND ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġrefresh F avorites (){ ĊĠĠĠĠĠĠĠ Ġuser Repository . refresh F avorites (). blocking Await () ĊĠĠĠ Ġ} Ċ Ċ }