package Ġcom . bracket co ve . po str ainer . reminder ĊĊ Ċ import Ġcom . bracket co ve . po str ainer . Base Logic Ċ import Ġcom . bracket co ve . po str ainer . ERROR _ GENERIC Ċ import Ġcom . bracket co ve . po str ainer . REM IND ER _ DELETED Ċ import Ġcom . bracket co ve . po str ainer . REM IND ER _ UPDATED Ċ import Ġcom . bracket co ve . po str ainer . dependency injection . Android Reminder Provider Ċ import Ġcom . wise ass blog . common . Result Wrapper Ċ import Ġcom . wise ass blog . common . get Formatted Date Ċ import Ġcom . wise ass blog . domain . domain model . Reminder Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ class ĠRem inder Detail Logic ( ĊĠĠĠ Ġprivate Ġval Ġview : ĠRem inder Detail Contract . View , ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠRem inder Detail Contract . ViewModel , ĊĠĠĠ Ġprivate Ġval Ġprovider : ĠAndroid Reminder Provider , ĊĠĠĠ Ġdispatcher : ĠCor outine Dispatcher Ċ ) Ġ: ĠBase Logic < Reminder Detail Event >( dispatcher ) Ġ{ ĊĊĠĠĠ Ġ// Note : Ġthese Ġcome Ġfrom ĠBase Logic Ġbase Ġabstract Ġclass ĊĠĠĠ Ġoverride Ġval Ġcoroutine Context : ĠCor outine Context ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmain Ġ+ Ġjob Tracker ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Event ( eventType : ĠRem inder Detail Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( eventType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRem inder Detail Event . On Start Ġ-> ĠonStart () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRem inder Detail Event . On Done Icon Press Ġ-> Ġon Done () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRem inder Detail Event . On Back Icon Press Ġ-> Ġon Back () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRem inder Detail Event . On Delete Icon Press Ġ-> ĠonDelete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRem inder Detail Event . On Delete Confirmed Ġ-> ĠonDelete Confirmed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonDelete Confirmed () Ġ= Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovider . delete Reminder . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get Reminder () !! ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult Wrapper . Success Ġ-> Ġon Deleted () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Deleted () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . showMessage ( REM IND ER _ DELETED ) ĊĠĠĠĠĠĠĠ Ġview . start Reminder List Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonDelete () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . show Delete Confirm () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Back () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . start Reminder List Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Done () Ġ= Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalarm Update Ġ= Ġview . getState (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreminder Id Ġ= ĠviewModel . get Reminder () !!. reminder Id ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovider . update OrCreate Reminder . execute ( alarm Update ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult Wrapper . Success Ġ-> ĠonUpdate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult Wrapper . Error Ġ-> Ġhandle Error () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonUpdate () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . showMessage ( REM IND ER _ UPDATED ) ĊĠĠĠĠĠĠĠ Ġview . start Reminder List Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonStart () Ġ= Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalarm Id Ġ= ĠviewModel . get Reminder ()?. reminder Id ĊĠĠĠĠĠĠĠ Ġif Ġ( alarm Id Ġ!= Ġnull Ġ&& Ġalarm Id Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġprovider . get Reminder . execute ( alarm Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult Wrapper . Success Ġ-> Ġupdate View ( result . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult Wrapper . Error Ġ-> Ġhandle Error () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( alarm Id Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . set Reminder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get Reminder () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy ( reminder Id Ġ= Ġget Formatted Date ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate View ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Error () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . showMessage ( ERROR _ GENERIC ) ĊĠĠĠĠĠĠĠ Ġview . start Reminder List Activity () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate View ( reminder : ĠRem inder ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . set Reminder ( reminder ) ĊĠĠĠĠĠĠĠ Ġview . set Reminder Title ( reminder . reminder Title ) ĊĠĠĠĠĠĠĠ Ġview . set Picker Time ( reminder . hour OfDay , Ġreminder . minute ) ĊĠĠĠĠĠĠĠ Ġview . set V ibrate Only ( reminder . is V ibrate Only ) ĊĠĠĠĠĠĠĠ Ġview . set Renew Autom atically ( reminder . is Renew Autom atically ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ