/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠS yg ic Ġa . s . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠThis Ġproject Ġis Ġlicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . sy g ic . maps . u ikit . view models . common . permission . li ved ata Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . sy g ic . maps . u ikit . views . common . li ved ata . Single LiveData Ċ Ċ open Ġclass ĠPermission Check Live Event Ġ: ĠSingle LiveData < String >() Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġobserver : ĠObserver < Boolean > ĊĊĠĠĠ Ġfun Ġobserve ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . observe ( owner , ĠObserver Ġ{ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġobserve ( owner : ĠLifecycle Owner , Ġobserver : ĠObserver < in ĠString >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . observe ( owner , ĠObserver Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity : ĠActivity ? Ġ= Ġwhen Ġ( owner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠActivity Ġ-> Ġowner ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFragment Ġ-> Ġowner . activity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow Ġ ĠNotImplementedError (" Unexpected ĠLifecycle Owner Ġ${ owner :: class }! ĠOnly ĠActivity Ġand ĠFragment Ġare Ġsupported Ġas ĠLifecycle Owner Ġby Ġnow .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . observer . on Changed ( evaluate ( activity , Ġvalue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobserver . on Changed ( data ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġcheck ( permission : ĠString , Ġobserver : ĠObserver < Boolean >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . observer Ġ= Ġobserver ĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġpermission ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġevaluate ( activity : ĠActivity ?, Ġpermission : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull Ġ&& Ġpermission Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠContext Compat . check Self Permission ( activity , Ġpermission ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} Ċ }