package Ġio . github . wy kop mob il ny . domain . navigation . android Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġio . github . wy kop mob il ny . domain . navigation . Y outube App Ċ import Ġio . github . wy kop mob il ny . domain . navigation . Y outube App Detector Ċ import Ġio . github . wy kop mob il ny . ui . base . App Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjavax . inject . Inject Ċ Ċ internal Ġclass ĠAndroid Y outube App Detector Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġapplication : ĠApplication , Ċ ) Ġ: ĠY outube App Detector Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Installed Y outube Apps (): ĠSet < Y outube App > Ġ= Ġwith Context ( App Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . google . android . youtube " Ġto ĠY outube App . Official , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . vanced . android . youtube " Ġto ĠY outube App . V anced , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Keys ( application :: is Package Installed ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toSet () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠContext . is Package Installed ( packageName : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġpackage Manager . get Package Info ( packageName , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ