/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 Ġ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 . settings Ċ Ċ import Ġandroid . arch . lifecycle . Mutable LiveData Ċ import Ġandroid . arch . lifecycle . ViewModel Ċ import Ġcom . duck duck go . app . browser . Build Config Ċ import Ġcom . duck duck go . app . browser . default B rowsing . Default Browser Detector Ċ import Ġcom . duck duck go . app . settings . db . Settings DataStore Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSettings ViewModel Ġ@ Inject Ġconstructor ( private Ġval Ġsettings DataStore : ĠSettings DataStore , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdefault Web Browser Capability : ĠDefault Browser Detector ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠView State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġloading : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġversion : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauto Complete Suggestions Enabled : ĠBoolean Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshow Default Browser Setting : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis App Default Browser : ĠBoolean Ġ= Ġfalse ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcurrent ViewState : ĠView State ĊĊĠĠĠ Ġsealed Ġclass ĠCommand Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠLaunch Feedback Ġ: ĠCommand () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġview State : ĠMutable LiveData < ViewState > Ġ= ĠMutable LiveData < ViewState >(). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent ViewState Ġ= ĠView State () ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġcurrent ViewState ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġcommand : ĠMutable LiveData < Command > Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġauto Complete Enabled Ġ= Ġsettings DataStore . auto Complete Suggestions Enabled ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Is Ġauto Ġcomplete Ġenabled ? Ġ$ auto Complete Enabled ") ĊĊĠĠĠĠĠĠĠ Ġval Ġdefault Browser Already Ġ= Ġdefault Web Browser Capability . is Currently Configured As Default Browser () ĊĠĠĠĠĠĠĠ ĠTim ber . i (" Is Ġalready Ġdefault Ġbrowser ? Ġ$ default Browser Already ") ĊĊĠĠĠĠĠĠĠ Ġview State . value Ġ= Ġcurrent ViewState . copy ( loading Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Complete Suggestions Enabled Ġ= Ġauto Complete Enabled , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis App Default Browser Ġ= Ġdefault Browser Already , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Default Browser Setting Ġ= Ġdefault Web Browser Capability . device Supports Default Browser Configuration (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġobtain Version ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġuser Requested ToSend Feedback () Ġ{ ĊĠĠĠĠĠĠĠ Ġcommand . value Ġ= ĠCommand . Launch Feedback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġuser Requested To Change Autocomplete Setting ( checked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . i (" User Ġchanged Ġautocomplete Ġsetting , Ġis Ġnow Ġenabled : Ġ$ checked ") ĊĠĠĠĠĠĠĠ Ġsettings DataStore . auto Complete Suggestions Enabled Ġ= Ġchecked ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġobtain Version (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ Build Config . VERSION _ NAME } Ġ(${ Build Config . VERSION _ CODE })" ĊĠĠĠ Ġ} Ċ }