package Ġcom . k yle cor ry . trail _ sense . astr onomy . infrastructure . commands Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . k yle cor ry . and rome da . notify . Notify Ċ import Ġcom . k yle cor ry . sol . time . Time . to Z onedDateTime Ċ import Ġcom . k yle cor ry . sol . units . Coordinate Ċ import Ġcom . k yle cor ry . trail _ sense . Notification Channels Ċ import Ġcom . k yle cor ry . trail _ sense . R Ċ import Ġcom . k yle cor ry . trail _ sense . astr onomy . domain . A str onomy Service Ċ import Ġcom . k yle cor ry . trail _ sense . astr onomy . domain . L un ar Ec lipse Ċ import Ġcom . k yle cor ry . trail _ sense . shared . Format Service Ċ import Ġcom . k yle cor ry . trail _ sense . shared . Navigation Utils Ċ import Ġcom . k yle cor ry . trail _ sense . shared . User Preferences Ċ import Ġcom . k yle cor ry . trail _ sense . shared . commands . Location Command Ċ import Ġjava . time . Duration Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ Ċ class ĠL un ar Ec lipse Alert Command ( private Ġval Ġcontext : ĠContext ) Ġ: ĠLocation Command Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġexecute ( location : ĠCoordinate ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠUser Preferences ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġshould Send Ġ= Ġprefs . astr onomy . send L un ar Ec lipse Alerts ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! should Send ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġa str onomy Service Ġ= ĠA str onomy Service () ĊĠĠĠĠĠĠĠ Ġval Ġtoday Ġ= ĠLocalDate . now () ĊĠĠĠĠĠĠĠ Ġval Ġtoday Ec lipse Ġ= Ġa str onomy Service . get L un ar Ec lipse ( location , Ġtoday ) ĊĠĠĠĠĠĠĠ Ġval Ġtomorrow Ec lipse Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa str onomy Service . get L un ar Ec lipse ( location , Ġtoday . plus Days ( 1 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġec lipse Ġ= ĠlistOf NotNull ( today Ec lipse , Ġtomorrow Ec lipse ). first OrNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Until Peak Ġ= ĠDuration . between ( LocalDateTime . now (), Ġit . peak ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Until Peak Ġ>= ĠDuration . ZERO Ġ&& Ġtime Until Peak Ġ<= ĠDuration . of Days ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( eclipse Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" No Ġec lipse Ġfound Ġfor Ġ$ today ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĠNotify . status ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Channels . CHANNEL _ A STR ON OM Y _ AL ER TS , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . lun ar _ eclipse ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Ec lipse Description ( context , Ġec lipse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . ic _ astr onomy , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= ĠNotification Channels . GROUP _ A STR ON OM Y _ AL ER TS , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= ĠNavigation Utils . pending Intent ( context , ĠR . id . action _ astr onomy ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠNotify . send ( context , Ġ 7 3 2 0 9 4 , Ġnotification ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Ec lipse Description ( context : ĠContext , Ġec lipse : ĠL un ar Ec lipse ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġformat Service Ġ= ĠFormat Service ( context ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtime Span Ġ= Ġformat Service . format TimeSpan ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġec lipse . start . to Z onedDateTime (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġec lipse . end . to Z onedDateTime (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmagnitude Ġ= Ġif Ġ( eclipse . is Total ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . total ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . partial , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Service . format Percentage ( eclipse . magnitude Ġ* Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ time Span \ n $ magnitude " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" L un ar Ec lipse Alert Command " ĊĠĠĠ Ġ} Ċ Ċ }