/** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 Ġby ĠQ if an ĠY ANG Ġ(@ under wind fall ) Ċ Ġ* Ċ Ġ* Ġ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 . q if an . power permission . data Ċ Ċ import Ġandroidx . annotation . Check Result Ċ import Ġcom . q if an . power permission . Permission Ċ import Ġcom . q if an . power permission . core . Permission Fragment Ċ import Ġcom . q if an . power permission . core . extension . is Granted Ċ import Ġcom . q if an . power permission . core . extension . is Permanent Denied Ċ import Ġcom . q if an . power permission . core . extension . is Rational Ċ Ċ /** Ċ Ġ* Ġpermission Ġresult Ġwrapped Ġcallback Ġessential Ġdata Ċ Ġ* Ġ@ param Ġresults Set Ġset Ġof Ġpermissions Ċ Ġ*/ Ċ data Ġclass ĠPermission Result Ġinternal Ġconstructor ( ĊĠĠĠ Ġinternal Ġval Ġresults Set : ĠSet < Permission Data > Ċ ) Ġ{ ĊĠĠĠ Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġfragment : ĠPermission Fragment , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠSet < Permission >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġpermissions . map Indexed Ġ{ Ġindex , Ġpermission Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrant Result : ĠInt Ġ= Ġgrant Results [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPermission Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġpermission , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Result Ġ= Ġfragment . as Grant Result ( grant Result , Ġpermission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠWr apped Ġessential Ġpermission Ġdata Ġinformation Ċ Ġ* Ġ@ param Ġdata Ġsimple Ġdeclaration Ġpermission Ġsuch Ġas Ġ[ android . Manifest . permission . CAMERA ]. Ċ Ġ* Ġ@ param Ġgrant Result Ġ[ Grant Result ] Ġsuch Ġas Ġ[ Grant Result . GRAN TED ] Ġetc . Ċ Ġ*/ Ċ data Ġclass ĠPermission Data ( ĊĠĠĠ Ġval Ġdata : ĠPermission , ĊĠĠĠ Ġval Ġgrant Result : ĠGrant Result Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġother Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġis ĠPermission Data Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . data Ġ== Ġother . data ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ġ@ return Ġ` true ` Ġif Ġgiven Ġpermissions Ġwere Ġgranted . Ġ*/ Ċ @ Check Result Ċ fun ĠPermission Result . has All Granted (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġresults Set ĊĠĠĠĠĠĠĠ Ġ. all Ġ{ Ġit . is Granted () Ġ} Ċ } Ċ Ċ /** Ġ@ return Ġ` true ` Ġif Ġgiven Ġpermissions Ġhave Ġr ational Ġpermissions . Ġ*/ Ċ @ Check Result Ċ fun ĠPermission Result . has Rational (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġresults Set ĊĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġit . is Rational () Ġ} Ċ } Ċ Ċ /** Ġ@ return Ġ` true ` Ġif Ġgiven Ġpermissions Ġhave Ġpermanent Ġdenied Ġpermissions . Ġ*/ Ċ @ Check Result Ċ fun ĠPermission Result . has Permanent Denied (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġresults Set ĊĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġit . is Permanent Denied () Ġ} Ċ } Ċ Ċ /** Ġ@ return Ġa Ġlist Ġof Ġall Ġrequired Ġpermissions . Ġ*/ Ċ @ Check Result Ċ fun ĠPermission Result . required Permissions (): ĠList < Permission > Ġ{ ĊĠĠĠ Ġreturn Ġresults Set ĊĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . data Ġ} ĊĠĠĠĠĠĠĠ Ġ. toList () Ċ } Ċ Ċ /** Ġ@ return Ġa Ġlist Ġof Ġall Ġgranted Ġpermissions . Ġ*/ Ċ @ Check Result Ċ fun ĠPermission Result . gr anted (): ĠList < Permission > Ġ{ ĊĠĠĠ Ġreturn Ġresults Set . filter Ġ{ Ġit . is Granted () Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . data Ġ} Ċ } Ċ Ċ /** Ġ@ return Ġa Ġlist Ġof Ġall Ġr ational Ġpermissions . Ġ*/ Ċ @ Check Result Ċ fun ĠPermission Result . ration al (): ĠList < Permission > Ġ{ ĊĠĠĠ Ġreturn Ġresults Set . filter Ġ{ Ġit . is Rational () Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . data Ġ} Ċ } Ċ Ċ /** Ġ@ return Ġa Ġlist Ġof Ġall Ġdenied Ġpermissions . Ġ*/ Ċ @ Check Result Ċ fun ĠPermission Result . permanent Denied (): ĠList < Permission > Ġ{ ĊĠĠĠ Ġreturn Ġresults Set . filter Ġ{ Ġit . is Permanent Denied () Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . data Ġ} Ċ } Ċ