package Ġio . ro ver . campaign s . core . permissions Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġio . ro ver . campaign s . core . logging . log Ċ import Ġio . ro ver . campaign s . core . streams . Publish Subject Ċ import Ġio . ro ver . campaign s . core . streams . Publish ers Ċ import Ġorg . reactiv est ream s . Publisher Ċ import Ġio . ro ver . campaign s . core . streams . do On Next Ċ import Ġio . ro ver . campaign s . core . streams . filter Ċ import Ġio . ro ver . campaign s . core . streams . filter Null s Ċ import Ġio . ro ver . campaign s . core . streams . first Ċ import Ġio . ro ver . campaign s . core . streams . share Ċ Ċ class ĠPermissions Notifier ( ĊĠĠĠ Ġprivate Ġval Ġapplication Context : ĠContext Ċ ) Ġ: ĠPermissions Notifier Interface Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġpermission Granted ( permission Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgranted Permissions . onNext ( permission Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify For Any Of Permission ( permissions : ĠSet < String >): ĠPublisher < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġalready Granted Ġ= Ġpermissions . filter Ġ{ Ġpermission Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( already Granted . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . v (" Permissions Ġ${ already Granted . join ToString (", Ġ" )} Ġalready Ġgranted .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPublish ers . concat ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish ers . just ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( already Granted . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalready Granted . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdates . filter Ġ{ Ġpermissions . contains ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ). filter Null s (). first () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnotify For Permission ( permission Id : ĠString ): ĠPublisher < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnotify For Any Of Permission ( set Of ( permission Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġgranted Permissions Ġ= ĠPublish Subject < String >() ĊĊĠĠĠ Ġprivate Ġval Ġupdates Ġ= Ġgranted Permissions . do On Next Ġ{ Ġpermission Ġ-> ĊĠĠĠĠĠĠĠ Ġlog . v (" Permission Ġgranted : Ġ$ permission ") ĊĠĠĠ Ġ}. share () Ċ } Ċ