/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġe Al va . com Ċ Ġ* Ċ Ġ* Ġ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 . e al va . to que . app Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . app . Key guard Manager Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Ui Mode Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . media . Audio Manager Ċ import Ġandroid . os . Power Manager Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġandroid . view . WindowManager Ċ import Ġco il . Image Loader Ċ import Ġco il . Image Loader Factory Ċ import Ġco il . util . Co il Utils Ċ import Ġcom . e al va . e al val og . LogLevel Ċ import Ġcom . e al va . e al val og . Log gers Ċ import Ġcom . e al va . e al val og . Marker Ċ import Ġcom . e al va . e al val og . Markers Ċ import Ġcom . e al va . e al val og . android . Android Logger Ċ import Ġcom . e al va . e al val og . android . Android LoggerFactory Ċ import Ġcom . e al va . e al val og . core . Basic Marker Factory Ċ import Ġcom . e al va . e al val og . logger Ċ import Ġcom . e al va . to que . android . content . require System Service Ċ import Ġcom . e al va . to que . audio out . Audio Module Ċ import Ġcom . e al va . to que . common . debug Ċ import Ġcom . e al va . to que . db . Db Module Ċ import Ġcom . e al va . to que . file . Files Module Ċ import Ġcom . e al va . to que . prefs . Prefs Module Ċ import Ġcom . e al va . to que . service . Service Module Ċ import Ġcom . e al va . to que . service . v lc . Lib V lc Module Ċ import Ġcom . e al va . to que . tag . Tag Module Ċ import Ġcom . e al va . w elite . db . log . We Lite Log Ċ import Ġcom . jak ew h art on . proces sp ho enix . Process Ph o enix Ċ import Ġcom . zh u inden . simple stack . Global Services Ċ import Ġcom . zh u inden . simple stack extensions . services k tx . add Ċ import Ġe al v atag . logging . E al va Tag Log Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġorg . k oin . android . ext . k oin . android Context Ċ import Ġorg . k oin . core . context . start K oin Ċ import Ġorg . k oin . dsl . module Ċ Ċ interface ĠTo que Ġ{ ĊĠ Ġfun Ġrestart App ( intent : ĠIntent , Ġcontext : ĠContext ) ĊĊĠ Ġval Ġglobal Services Builder : ĠGlobal Services . Builder ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ/** ĠNot Ġvalid Ġuntil Ġthe Ġ[ Application . onCreate ] Ġfunction Ġis Ġcalled Ġ*/ ĊĠĠĠ Ġval Ġapp Context : ĠContext ĊĠĠĠĠĠ Ġget () Ġ= ĠcheckNotNull ( To que Impl . app Context ) ĊĠ Ġ} Ċ } Ċ Ċ class ĠTo que Impl Ġ: ĠApplication (), ĠTo que , ĠImage Loader Factory Ġ{ ĊĠ Ġ/** ĊĠĠ Ġ* ĠGet Ġthe ĠDB Ġcheck Ġ( early Ġcreate ) Ġoff Ġof ĠMain Ġas Ġit 's Ġbusy Ġduring Ġstart Ġup . ĠSimple , Ġcr ude ĊĠĠ Ġ* Ġtiming Ġtests Ġshow Ġmore Ġthan Ġtwice Ġas Ġfast Ġto Ġcompletion Ġon Ġnew Ġinstall Ġmoving ĠDB Ġcreation ĊĠĠ Ġ* Ġto Ġbackground . ĠCurrently Ġwe Ġimmediately Ġask Ġfor Ġread Ġexternal Ġpermission Ġat Ġstart , Ġso Ġgood ĊĠĠ Ġ* Ġopportunity Ġto Ġcreate ĠDB Ġ( on Ġfirst Ġquery ) ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġlateinit Ġvar Ġ_ global Services Builder : ĠGlobal Services . Builder ĊĠ Ġoverride Ġval Ġglobal Services Builder : ĠGlobal Services . Builder ĊĠĠĠ Ġget () Ġ= Ġ_ global Services Builder ĊĊĠ Ġprivate Ġval Ġapp Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġsingle < To que > Ġ{ Ġthis @ To que Impl Ġ} ĊĠĠĠ Ġsingle < Audio Manager > Ġ{ Ġrequire System Service () Ġ} ĊĠĠĠ Ġsingle < Notification Manager > Ġ{ Ġrequire System Service () Ġ} ĊĠĠĠ Ġsingle < Power Manager > Ġ{ Ġrequire System Service () Ġ} ĊĠĠĠ Ġsingle < Tele phony Manager > Ġ{ Ġrequire System Service () Ġ} ĊĠĠĠ Ġsingle < Key guard Manager > Ġ{ Ġrequire System Service () Ġ} ĊĠĠĠ Ġsingle < WindowManager > Ġ{ Ġrequire System Service () Ġ} ĊĠĠĠ Ġsingle < Ui Mode Manager > Ġ{ Ġrequire System Service () Ġ} ĊĠĠĠ Ġsingle < PackageManager > Ġ{ Ġrequire System Service () Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠ Ġsuper . onCreate () ĊĠĠĠ Ġapp Context Ġ= Ġapplication Context ĊĠĠĠ Ġ_ global Services Builder Ġ= ĠGlobal Services . builder () ĊĊĠĠĠ Ġsetup Logging () ĊĠĠĠ Ġ// val Ġlogger Ġ= Ġlogger ( To que Impl :: class ) ĊĠĠĠ Ġ// debug Ġ{ ĊĠĠĠ Ġ// Ġ ĠWe Lite Log . log Query Plans Ġ= Ġtrue ĊĠĠĠ Ġ// Ġ ĠWe Lite Log . log Sql Ġ= Ġtrue ĊĠĠĠ Ġ//} Ċ Ċ // ĠĠĠ Ġval Ġpolicy : ĠStrict Mode . Vm Policy Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . P ) Ġ{ Ċ // ĠĠĠĠĠ ĠStrict Mode . Vm Policy . Builder () Ċ // ĠĠĠĠĠĠĠ Ġ. detect Non Sdk Api Usage () Ċ // ĠĠĠĠĠĠĠ Ġ. penalty Listener ( Ċ // ĠĠĠĠĠĠĠĠĠ ĠExec utors . new Single Thread Executor (), Ċ // ĠĠĠĠĠĠĠĠĠ Ġ{ Ġv Ġ-> Ġv ?. let Ġ{ Ġviolation Ġ-> Ġlogger ._ e ( violation ) Ġ{ Ġit (" strict Ġviolation ") Ġ} Ġ} Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠ Ġ. build () Ċ // ĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠ ĠStrict Mode . Vm Policy . Builder (). build () Ċ // ĠĠĠ Ġ} Ċ // ĠĠĠ ĠStrict Mode . set Vm Policy ( policy ) ĊĊĠĠĠ Ġstart K oin Ġ{ Ċ // ĠĠĠĠĠ Ġandroid Logger ( Level . NONE ) ĊĠĠĠĠĠ Ġandroid Context ( android Context Ġ= Ġthis @ To que Impl ) ĊĊĠĠĠĠĠ Ġmodules ( ĊĠĠĠĠĠĠĠ Ġapp Module , ĊĠĠĠĠĠĠĠ ĠP refs Module . k oin Module , ĊĠĠĠĠĠĠĠ ĠAudio Module . k oin Module , ĊĠĠĠĠĠĠĠ ĠFiles Module . k oin Module , ĊĠĠĠĠĠĠĠ ĠTag Module . k oin Module , ĊĠĠĠĠĠĠĠ ĠLib V lc Module . k oin Module , ĊĠĠĠĠĠĠĠ ĠDb Module . k oin Module , ĊĠĠĠĠĠĠĠ ĠService Module . k oin Module , Ċ // ĠĠĠĠĠĠĠ ĠMain Module . k oin Module Ċ // ĠĠĠĠĠĠĠ Ġbrain z Module , Ċ // ĠĠĠĠĠĠĠ Ġspot ify Module , Ċ // ĠĠĠĠĠĠĠ Ġart Module , ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// val Ġlib V lc Prefs Singleton : ĠLib V lc Prefs Singleton Ġ= Ġk oin App . k oin . get ( named (" Lib V lc Prefs ")) ĊĠĠĠ Ġ// val Ġlib V lc Singleton : ĠLib V lc Singleton Ġ= Ġk oin App . k oin . get () ĊĠĠĠ Ġ// run Blocking Ġ{ ĊĠĠĠ Ġ// Ġ Ġval Ġlib V lc Prefs Ġ= Ġlib V lc Prefs Singleton . instance () ĊĠĠĠ Ġ// Ġ Ġlib V lc Prefs . enable Verbose Mode . set ( true ) ĊĠĠĠ Ġ// Ġ Ġval Ġlib V lc Ġ= Ġlib V lc Singleton . instance () ĊĠĠĠ Ġ// Ġ Ġlogger . i Ġ{ Ġit (" Lib VL C Ġversion : Ġ% s ", Ġlib V lc . lib V lc Version ()) Ġ} ĊĠĠĠ Ġ//} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġsetup Logging () Ġ{ ĊĠĠĠ ĠMark ers . set Factory ( Basic Marker Factory ()) ĊĠĠĠ ĠAndroid Logger . set Handler ( To que Log Handler ()) ĊĠĠĠ ĠLog gers . set Factory ( Android LoggerFactory ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġrestart App ( intent : ĠIntent , Ġcontext : ĠContext ) Ġ{ Ċ // ĠĠĠ Ġfile Handler ?. close () ĊĠĠĠ ĠProcess Ph o enix . trigger Re birth ( context , Ġintent ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġnew Image Loader (): ĠImage Loader Ġ{ ĊĠĠĠ Ġreturn ĠImage Loader . Builder ( application Context ) ĊĠĠĠĠĠ Ġ. cross fade ( true ) ĊĠĠĠĠĠ Ġ. ok HttpClient Ġ{ ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠ Ġ. cache ( Co il Utils . create Default Cache ( application Context )) ĊĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ. build () ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ/** ĠSet Ġin ĠTo que Ġ[ onCreate ] Ġ*/ ĊĠĠĠ Ġvar Ġapp Context : ĠContext ? Ġ= Ġnull ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠFilter Ġout ĠE Al va Tag Ġlogging Ġand Ġdon 't Ġlog Ġless Ġthan ĠINFO Ċ Ġ*/ Ċ private Ġclass ĠTo que Log Handler Ġ: Ġcom . e al va . e al val og . android . Base Log Handler () Ġ{ ĊĠ Ġoverride Ġfun Ġis Log gable ( ĊĠĠĠ Ġtag : ĠString , ĊĠĠĠ Ġlog Level : ĠLogLevel , ĊĠĠĠ Ġmarker : ĠMarker ?, ĊĠĠĠ Ġthrowable : ĠThrowable ? ĊĠ Ġ): ĠBoolean Ġ= Ġlog Level . is At Least ( LogLevel . INFO ) Ġ&& ĠE al va Tag Log . MARKER Ġ!= Ġmarker ĊĊĠ Ġoverride Ġfun Ġshould Include Location ( ĊĠĠĠ Ġtag : ĠString , ĊĠĠĠ Ġandroid Level : ĠInt , ĊĠĠĠ Ġmarker : ĠMarker ?, ĊĠĠĠ Ġthrowable : ĠThrowable ? ĊĠ Ġ): ĠBoolean Ġ= Ġfalse Ġ// Ġinclude Ġlocation Ġper Ġlogger Ġand Ġnot Ġvia Ġhandler Ċ } Ċ