package Ġcom . enes ky . ev im iss . utils Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . res . string Resource Ċ import Ġcom . enes ky . ev im iss . R Ċ import Ġcom . enes ky . ev im iss . ui . custom . Alert Ċ import Ġcom . google . ac comp an ist . permissions . Experimental Permissions Api Ċ import Ġcom . google . ac comp an ist . permissions . Permissions Required Ċ import Ġcom . google . ac comp an ist . permissions . remember Multiple Permissions State Ċ import Ġdagger . h ilt . android . qual ifiers . Activity Context Ċ import Ġdagger . h ilt . android . scopes . Activity Scoped Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠEn es ĠK amil ĠY IL MA Z Ġon Ġ 1 9 / 0 9 / 2 0 2 1 Ċ Ġ*/ Ċ Ċ @ Activity Scoped Ċ class ĠPermissions Util Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġ@ Activity Context Ġprivate Ġval Ġcontext : ĠContext Ċ ){ ĊĊĠĠĠ Ġprivate Ġval Ġread Calendar : ĠString Ġ= Ġandroid . Manifest . permission . READ _ CAL END AR ĊĠĠĠ Ġprivate Ġval Ġwrite Calendar : ĠString Ġ= Ġandroid . Manifest . permission . WRITE _ CAL END AR ĊĠĠĠ Ġprivate Ġval Ġfine Location : ĠString Ġ= Ġandroid . Manifest . permission . ACCESS _ F INE _ LOCATION ĊĠĠĠ Ġprivate Ġval Ġco arse Location : ĠString Ġ= Ġandroid . Manifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠRequest Calendar Permissions ( on Permissions Granted : Ġ@ Composable Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRequest Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions Ġ= ĠlistOf ( read Calendar , Ġwrite Calendar ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Permissions Granted Ġ= Ġon Permissions Granted , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Permissions Not Available Ġ= Ġ{ Ġcontext . open Settings () Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġfun ĠRequest Locations Permissions ( on Permissions Granted : Ġ@ Composable Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRequest Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions Ġ= ĠlistOf ( fine Location , Ġco arse Location ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Permissions Granted Ġ= Ġon Permissions Granted , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Permissions Not Available Ġ= Ġ{ Ġcontext . open Settings () Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Opt In ( Experimental Permissions Api :: class ) ĊĠĠĠ Ġ@ Composable ĊĠĠĠ Ġprivate Ġfun ĠRequest Permissions ( ĊĠĠĠĠĠĠĠ Ġpermissions : ĠList < String > Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠ Ġon Permissions Granted : Ġ@ Composable Ġ() Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġon Permissions Not Available : Ġ() Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpermissions State Ġ= Ġremember Multiple Permissions State ( permissions ) ĊĠĠĠĠĠĠĠ Ġval Ġpermission Name Ġ= Ġif Ġ( permissions . contains ( read Calendar )) Ġ" Calendar " Ġelse Ġ" Location " ĊĊĠĠĠĠĠĠĠ ĠPermissions Required ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmultiple Permissions State Ġ= Ġpermissions State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions Not Granted Content Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġstring Resource ( R . string . label _ permission _ needed , Ġpermission Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġstring Resource ( R . string . label _ permission _ needed _ desc , Ġpermission Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Confirm Ġ= Ġ{ Ġpermissions State . launch Multiple Permission Request () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermissions Not Available Content Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlert ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġstring Resource ( R . string . label _ permission _ den ied , Ġpermission Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġstring Resource ( R . string . label _ permission _ den ied _ desc , Ġpermission Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirm ButtonText Ġ= Ġstring Resource ( R . string . label _ open _ settings ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Confirm Ġ= Ġ{ Ġon Permissions Not Available () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Permissions Granted () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }