package Ġcom . k vl . cy clo track Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . util . Log Ċ import Ġandroidx . h ilt . work . H ilt Worker Ċ import Ġandroidx . work .* Ċ import Ġdagger . ass isted . Ass isted Ċ import Ġdagger . ass isted . Ass isted Inject Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt Worker Ċ class ĠGoogle Fit Sync Tri ps Worker Ġ@ Ass isted Inject Ġconstructor ( ĊĠĠĠ Ġ@ Ass isted Ġapp Context : ĠContext , ĊĠĠĠ Ġ@ Ass isted Ġparams : ĠWorker Parameters , Ċ ) Ġ: ĠCor outine Worker ( app Context , Ġparams ) Ġ{ ĊĠĠĠ Ġval Ġlog Tag Ġ= Ġ" Google Fit Sync Trip Worker " ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġtri ps Repository : ĠTri ps Repository ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġmeasurements Repository : ĠMeasure ments Repository ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġtime State Repository : ĠTime State Repository ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġshared Preferences : ĠSharedPreferences ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġgoogle Fit ApiService : ĠGoogle Fit ApiService ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( log Tag , Ġ" Sync ing Ġsessions ") ĊĠĠĠĠĠĠĠ Ġif Ġ( has Fitness Permissions ( application Context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtri ps Repository . get Google Fit Un sync ed (). forEach Ġ{ Ġtrip Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( log Tag , Ġ" Sync ing Ġtrip ; ĠID : Ġ${ trip . id } Ġname : Ġ${ trip . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Manager . getInstance ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enqueue ( One Time Work RequestBuilder < Google Fit Create Session Worker >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set InputData ( work Data Of (" trip Id " Ġto Ġtrip . id )). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( log Tag , Ġ" Trip Ġcontains Ġinvalid Ġdata , Ġdon 't Ġsync ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtri ps Repository . set Google Fit Sync Status ( trip . id !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGoogle Fit Sync Status Enum . FAILED ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtri ps Repository . get Google Fit Dirty (). forEach Ġ{ Ġtrip Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( log Tag , Ġ" Updating Ġtrip ; ĠID : Ġ${ trip . id } Ġname : Ġ${ trip . name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Manager . getInstance ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enqueue ( One Time Work RequestBuilder < Google Fit Update Session Worker >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set InputData ( work Data Of (" trip Id " Ġto Ġtrip . id )). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( log Tag , Ġ" Trip Ġcontains Ġinvalid Ġdata , Ġdon 't Ġsync ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtri ps Repository . set Google Fit Sync Status ( trip . id !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGoogle Fit Sync Status Enum . FAILED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠResult . success () ĊĠĠĠ Ġ} Ċ } Ċ