/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠD uck Duck Go Ċ Ġ* Ċ Ġ* Ġ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 . duck duck go . app . cta . ui Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Drawable Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . annotation . Worker Thread Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . duck duck go . app . browser . R Ċ import Ġcom . duck duck go . app . cta . db . Dis missed C ta Dao Ċ import Ġcom . duck duck go . app . cta . model . C ta Id Ċ import Ġcom . duck duck go . app . cta . model . Dis missed C ta Ċ import Ġcom . duck duck go . app . cta . ui . C ta Configuration .* Ċ import Ġcom . duck duck go . app . global . install . App Install Store Ċ import Ġcom . duck duck go . app . global . install . days Installed Ċ import Ġcom . duck duck go . app . statistics . pixels . Pixel Ċ import Ġcom . duck duck go . app . statistics . pixels . Pixel . Pixel Name .* Ċ import Ġcom . duck duck go . app . survey . db . Survey Dao Ċ import Ġcom . duck duck go . app . survey . model . Survey Ċ import Ġcom . duck duck go . app . widget . ui . Widget Capabilities Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . android . synt hetic . main . include _ cta _ buttons . view .* Ċ import Ġkotlinx . android . synt hetic . main . include _ cta _ content . view .* Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠC ta ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġapp Install Store : ĠApp Install Store , ĊĠĠĠ Ġprivate Ġval Ġpixel : ĠPixel , ĊĠĠĠ Ġprivate Ġval Ġsurvey Dao : ĠSurvey Dao , ĊĠĠĠ Ġprivate Ġval Ġwidget Capabilities : ĠWidget Capabilities , ĊĠĠĠ Ġprivate Ġval Ġdis missed C ta Dao : ĠDis missed C ta Dao Ċ ) Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠC ta ViewState ( ĊĠĠĠĠĠĠĠ Ġval Ġc ta : ĠC ta Configuration ? Ġ= Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġc ta ViewState : ĠMutable LiveData < C ta ViewState > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġsurvey LiveData : ĠLive Data < Survey > Ġ= Ġsurvey Dao . get Live Scheduled () ĊĊĠĠĠ Ġprivate Ġval Ġcurrent ViewState : ĠC ta ViewState ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġc ta ViewState . value !! ĊĊĠĠĠ Ġprivate Ġvar Ġactive Survey : ĠSurvey ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġc ta ViewState . value Ġ= ĠC ta ViewState () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Survey Changed ( survey : ĠSurvey ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Survey Ġ= Ġsurvey ĊĠĠĠĠĠĠĠ Ġrefresh C ta () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh C ta () Ġ{ ĊĠĠĠĠĠĠĠ Ġsurvey C ta ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ta ViewState . post Value ( current ViewState . copy ( cta Ġ= Ġit )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠS chedulers . io (). schedule Direct Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( can Show Widget C ta ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc ta Type Ġ= Ġif Ġ( widget Capabilities . supports Automatic Widget Add ) ĠAdd Widget Auto Ġelse ĠAdd Widget Instructions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ta ViewState . post Value ( current ViewState . copy ( cta Ġ= Ġc ta Type )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc ta ViewState . post Value ( current ViewState . copy ( cta Ġ= Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsurvey C ta (): ĠC ta Configuration . Survey ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsurvey Ġ= Ġactive Survey ĊĠĠĠĠĠĠĠ Ġif Ġ( survey ?. url Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow On Day Ġ= Ġsurvey . days Installed ?. to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdays Installed Ġ= Ġapp Install Store . days Installed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show On Day Ġ== Ġnull Ġ|| Ġshow On Day Ġ== Ġdays Installed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSurvey ( survey ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Worker Thread ĊĠĠĠ Ġprivate Ġfun Ġcan Show Widget C ta (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwidget Capabilities . supports Standard Widget Add Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! widget Capabilities . has Installed Widgets Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! dis missed C ta Dao . exists ( C ta Id . ADD _ WIDGET ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon C ta Shown () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent ViewState . cta ?. shown Pixel ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpixel . fire ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon C ta Dis missed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc ta Ġ= Ġcurrent ViewState . cta Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġc ta . cancel Pixel ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpixel . fire ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠS chedulers . io (). schedule Direct Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( cta ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠC ta Configuration . Survey Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactive Survey Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsurvey Dao . cancel Scheduled Sur veys () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis missed C ta Dao . insert ( Dis missed C ta ( cta . cta Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ta ViewState . post Value ( current ViewState . copy ( cta Ġ= Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh C ta () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon C ta La unched () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent ViewState . cta ?. ok Pixel ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpixel . fire ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ sealed Ġclass ĠC ta Configuration ( ĊĠĠĠ Ġopen Ġval Ġc ta Id : ĠC ta Id , ĊĠĠĠ Ġ@ Drawable Res Ġopen Ġval Ġimage : ĠInt , ĊĠĠĠ Ġ@ String Res Ġopen Ġval Ġtitle : ĠInt , ĊĠĠĠ Ġ@ String Res Ġopen Ġval Ġdescription : ĠInt , ĊĠĠĠ Ġ@ String Res Ġopen Ġval Ġok Button : ĠInt , ĊĠĠĠ Ġ@ String Res Ġopen Ġval Ġdismiss Button : ĠInt , ĊĠĠĠ Ġopen Ġval Ġshown Pixel : ĠPixel . Pixel Name ?, ĊĠĠĠ Ġopen Ġval Ġok Pixel : ĠPixel . Pixel Name ?, ĊĠĠĠ Ġopen Ġval Ġcancel Pixel : ĠPixel . Pixel Name ? Ċ ) Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠSurvey ( val Ġsurvey : Ġcom . duck duck go . app . survey . model . Survey ) Ġ: ĠC ta Configuration ( ĊĠĠĠĠĠĠĠ ĠC ta Id . SUR VE Y , ĊĠĠĠĠĠĠĠ ĠR . drawable . survey _ cta _ icon , ĊĠĠĠĠĠĠĠ ĠR . string . survey C ta Title , ĊĠĠĠĠĠĠĠ ĠR . string . survey C ta Description , ĊĠĠĠĠĠĠĠ ĠR . string . survey C ta Launch Button , ĊĠĠĠĠĠĠĠ ĠR . string . survey C ta Dismiss Button , ĊĠĠĠĠĠĠĠ ĠS UR VE Y _ CT A _ SHO WN , ĊĠĠĠĠĠĠĠ ĠS UR VE Y _ CT A _ LA UNCH ED , ĊĠĠĠĠĠĠĠ ĠS UR VE Y _ CT A _ DIS MIS SED ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠAdd Widget Auto Ġ: ĠC ta Configuration ( ĊĠĠĠĠĠĠĠ ĠC ta Id . ADD _ WIDGET , ĊĠĠĠĠĠĠĠ ĠR . drawable . add _ widget _ cta _ icon , ĊĠĠĠĠĠĠĠ ĠR . string . addWidget C ta Title , ĊĠĠĠĠĠĠĠ ĠR . string . addWidget C ta Description , ĊĠĠĠĠĠĠĠ ĠR . string . addWidget C ta Auto Launch Button , ĊĠĠĠĠĠĠĠ ĠR . string . addWidget C ta Dismiss Button , ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġobject ĠAdd Widget Instructions Ġ: ĠC ta Configuration ( ĊĠĠĠĠĠĠĠ ĠC ta Id . ADD _ WIDGET , ĊĠĠĠĠĠĠĠ ĠR . drawable . add _ widget _ cta _ icon , ĊĠĠĠĠĠĠĠ ĠR . string . addWidget C ta Title , ĊĠĠĠĠĠĠĠ ĠR . string . addWidget C ta Description , ĊĠĠĠĠĠĠĠ ĠR . string . addWidget C ta Instructions Launch Button , ĊĠĠĠĠĠĠĠ ĠR . string . addWidget C ta Dismiss Button , ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġapply ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . cta Icon . setImage Resource ( image ) ĊĠĠĠĠĠĠĠ Ġview . cta Title . text Ġ= Ġview . context . getString ( title ) ĊĠĠĠĠĠĠĠ Ġview . cta Subtitle . text Ġ= Ġview . context . getString ( description ) ĊĠĠĠĠĠĠĠ Ġview . cta Ok Button . text Ġ= Ġview . context . getString ( ok Button ) ĊĠĠĠĠĠĠĠ Ġview . cta Dismiss Button . text Ġ= Ġview . context . getString ( dismiss Button ) ĊĠĠĠ Ġ} Ċ }