package Ġpl . net igen . core . splash Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . cancel Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . isActive Ċ import Ġpl . net igen . core api . ads . I Ads Ċ import Ġpl . net igen . core api . gd pr . Ad Consent Status Ċ import Ġpl . net igen . core api . gd pr . Ad Consent Status .* Ċ import Ġpl . net igen . core api . gd pr . Check GD PR Location Status Ċ import Ġpl . net igen . core api . gd pr . IG DPR Consent Ċ import Ġpl . net igen . core api . main . I AppConfig Ċ import Ġpl . net igen . core api . network . IN etwork Status Ċ import Ġpl . net igen . core api . payments . IN o Ads Ċ import Ġpl . net igen . core api . splash . IS pl ash Timer Ċ import Ġpl . net igen . core api . splash . Splash State Ċ import Ġpl . net igen . core api . splash . Splash VM Ċ import Ġpl . net igen . extensions . launch Ċ import Ġtim ber . log . Tim ber . d Ċ Ċ /** Ċ Ġ* Ġ[ Splash VM ] Ġimplementation Ċ Ġ* Ċ Ġ* Ġ@ property Ġgd pr Consent Ġ[ IG DPR Consent ] Ġinstance Ċ Ġ* Ġ@ property Ġads Ġ[ I Ads ] Ġinstance Ċ Ġ* Ġ@ property Ġno Ads P urchases Ġ[ IN o Ads ] Ġinstance Ċ Ġ* Ġ@ property Ġnetwork Status Ġ[ IN etwork Status ] Ġinstance Ċ Ġ* Ġ@ property Ġapp Config Ġ[ I AppConfig ] Ġinstance Ċ Ġ* Ġ@ property Ġsplash Timer ĠIS pl ash Timer Ġinstance , Ġfor Ġdefault Ġit 's Ġ[ Splash Timer Impl ] Ċ Ġ* Ċ Ġ* Ġ@ param Ġapplication Ġprovides Ġ[ Application ] Ġcontext Ġfor Ġthis Ġ[ Android ViewModel ] Ċ Ġ*/ Ċ class ĠCore Splash VM Impl ( ĊĠĠĠ Ġapplication : ĠApplication , ĊĠĠĠ Ġoverride Ġval Ġgd pr Consent : ĠI GD PR Consent , ĊĠĠĠ Ġprivate Ġval Ġads : ĠI Ads , ĊĠĠĠ Ġprivate Ġval Ġno Ads P urchases : ĠIN o Ads , ĊĠĠĠ Ġprivate Ġval Ġnetwork Status : ĠIN etwork Status , ĊĠĠĠ Ġprivate Ġval Ġapp Config : ĠI AppConfig , ĊĠĠĠ Ġprivate Ġval Ġsplash Timer : ĠIS pl ash Timer Ġ= ĠSpl ash Timer Impl ( app Config . max Inter stitial Wait Time ), ĊĠĠĠ Ġval Ġcoroutine Dispatcher Io : ĠCor outine Dispatcher Ġ= ĠDispatch ers . IO Ċ ) Ġ: ĠSpl ash VM ( application ), ĠIN o Ads Ġby Ġno Ads P urchases , ĠI AppConfig Ġby Ġapp Config Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġcurrent State Ġ= ĠSpl ash State . UN INITIAL IZED ĊĠĠĠ Ġoverride Ġval Ġsplash State : ĠMutable LiveData < Splash State > Ġ= ĠMutable LiveData ( currentState ) ĊĠĠĠ Ġoverride Ġval Ġis First Launch : ĠMutable LiveData < Boolean > Ġ= ĠMutable LiveData ( false ) ĊĠĠĠ Ġprivate Ġvar Ġis Running Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġfinished Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Purchase d Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! isRunning ) Ġinit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġis Running Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġlaunch ( coroutine Dispatcher Io ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno Ads P urchases . no Ads Active . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ads Flow Changed ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! network Status . isConnected Or Connecting Ġ|| Ġfinished ) Ġreturn Ġfinish () ĊĠĠĠĠĠĠĠ Ġload Gd pr Status () ĊĠĠĠĠĠĠĠ Ġload Inter stitial () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Gd pr Status () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġgd pr Consent . request GD PR Location Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCheck GD PR Location Status . UE Ġ-> Ġload Form () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCheck GD PR Location Status . NON _ UE Ġ-> Ġset Personal ized Ads ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCheck GD PR Location Status . ERROR Ġ-> Ġset Personal ized Ads ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Ads Flow Changed ( purchase d : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" purchase d Ġ= Ġ[$ purchase d ]") ĊĠĠĠĠĠĠĠ Ġis Purchase d Ġ= Ġpurch ased ĊĠĠĠĠĠĠĠ Ġif Ġ( purchase d ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfinish () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġcancel Jobs () ĊĠĠĠĠĠĠĠ Ġsplash Timer . cancel Inter stitial Timer () ĊĠĠĠĠĠĠĠ Ġfinished Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġupdate State ( Splash State . FINISHED ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġupdate State ( splash State : ĠSpl ash State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent State Ġ= Ġsplash State ĊĠĠĠĠĠĠĠ Ġthis . splash State . post Value ( currentState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Form () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġif Ġ( is Purchase d ) Ġreturn ĊĠĠĠĠĠĠĠ Ġgd pr Consent . load Gd pr Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġupdate State ( Splash State . LOADING ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġshow Form () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Form () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġif Ġ( is Purchase d ) Ġreturn ĊĠĠĠĠĠĠĠ Ġupdate State ( Splash State . SHOW _ GD PR _ POP _ UP ) ĊĠĠĠĠĠĠĠ Ġgd pr Consent . show Gd pr Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER SON AL IZED _ NON _ UE Ġ-> Ġset Personal ized Ads ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER SON AL IZED _ SHOW ED Ġ-> Ġset Personal ized Ads ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNON _ PERSON AL IZED _ SHOW ED Ġ-> Ġset Personal ized Ads ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUN INITIAL IZED Ġ-> Ġset Personal ized Ads ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNON _ PERSON AL IZED _ ERROR Ġ-> Ġset Personal ized Ads ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġads . inter stitial Ad . show If Can Be Show ed ( true ) Ġ{ Ġfinish () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Inter stitial () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġsplash Timer . start Inter stitial Timer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( currentState Ġ!= ĠSpl ash State . SHOW _ GD PR _ POP _ UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Inter stitial Result ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġads . inter stitial Ad . load Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsplash Timer . cancel Inter stitial Timer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! finished Ġ&& Ġcurrent State Ġ!= ĠSpl ash State . SHOW _ GD PR _ POP _ UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad Inter stitial Result ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonLoad Inter stitial Result ( success : ĠBoolean ) Ġ= Ġif Ġ( success ) Ġon Inter stitial Loaded () Ġelse Ġfinish () ĊĊĠĠĠ Ġprivate Ġfun Ġon Inter stitial Loaded () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġads . inter stitial Ad . show If Can Be Show ed ( true ) Ġ{ Ġfinish () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcancel Jobs () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġif Ġ( viewModel Scope . isActive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . cancel (" Cancel Jobs ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Personal ized Ads ( personal ized Ads Approved : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" personal ized Ads Approved Ġ= Ġ[$ personal ized Ads Approved ]") ĊĠĠĠĠĠĠĠ Ġval Ġad Consent Status : ĠAd Consent Status Ġ= Ġif Ġ( personal ized Ads Approved ) ĠPER SON AL IZED _ SHOW ED Ġelse ĠNON _ PERSON AL IZED _ SHOW ED ĊĠĠĠĠĠĠĠ Ġgd pr Consent . save Ad Consent Status ( ad Consent Status ) ĊĠĠĠĠĠĠĠ Ġads . personal ized Ads Enabled Ġ= Ġpersonal ized Ads Approved ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġd (" () ") ĊĠĠĠĠĠĠĠ Ġif Ġ( isRunning ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate State ( Splash State . UN INITIAL IZED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Running Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinished Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }