/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 . google . android . fhir . reference Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġandroidx . work . Constraints Ċ import Ġcom . google . android . fhir . reference . data . Fhir Periodic Sync Worker Ċ import Ġcom . google . android . fhir . sync . Periodic Sync Configuration Ċ import Ġcom . google . android . fhir . sync . Repeat Interval Ċ import Ġcom . google . android . fhir . sync . State Ċ import Ġcom . google . android . fhir . sync . Sync Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . util . concurrent . TimeUnit Ċ import Ġkotlinx . coroutines . flow . Flow Ċ Ċ /** ĠView Ġmodel Ġfor Ġ[ MainActivity ]. Ġ*/ Ċ class ĠMainActivity ViewModel ( application : ĠApplication , Ġprivate Ġval Ġstate : ĠSaved State Handle ) Ġ: ĊĠ ĠAndroid ViewModel ( application ) Ġ{ ĊĠ Ġval Ġlast Sync LiveData Ġ= ĠMutable LiveData < String >() ĊĊĠ Ġprivate Ġval Ġjob Ġ= ĠSync . basic Sync Job ( application . application Context ) ĊĊĠ Ġ/** ĠRequests Ġperiodic Ġsync . Ġ*/ ĊĠ Ġfun Ġpoll (): ĠFlow < State > Ġ{ ĊĠĠĠ Ġreturn Ġjob . poll ( ĊĠĠĠĠĠ ĠPeriod ic Sync Configuration ( ĊĠĠĠĠĠĠĠ Ġsync Constraints Ġ= ĠConstraints . Builder (). build (), ĊĠĠĠĠĠĠĠ Ġrepeat Ġ= ĠRepeat Interval ( interval Ġ= Ġ 1 5 , Ġtime Unit Ġ= ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ ĠF hir Periodic Sync Worker :: class . java ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġ/** ĠEmit s Ġlast Ġsync Ġtime . Ġ*/ ĊĠ Ġfun ĠgetLast Sync Time () Ġ{ ĊĠĠĠ Ġval Ġformatter Ġ= ĠDateTime Formatter . of Pattern (" yyyy - MM - dd ĠHH : mm : ss ") ĊĠĠĠ Ġlast Sync LiveData . value Ġ= Ġjob . last Sync Timestamp ()?. to LocalDateTime ()?. format ( formatter ) Ġ?: Ġ"" ĊĠ Ġ} Ċ } Ċ