package Ġcom . ke fas jw iry adi . bac aber ita . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . View Ċ import Ġandroidx . browser . custom tabs . Custom Tabs Intent Ċ import Ġandroidx . browser . custom tabs . Custom Tabs Service Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . databinding . Binding Adapter Ċ import Ġcom . ke fas jw iry adi . bac aber ita . R Ċ Ċ private Ġconst Ġval ĠCH ROME _ PACKAGE Ġ= Ġ" com . android . chrome " Ċ Ċ @ Binding Adapter (" website Link ", Ġ" hide When Empty ", Ġrequire All Ġ= Ġfalse ) Ċ fun Ġwebsite Link ( ĊĠĠĠ Ġbutton : ĠView , ĊĠĠĠ Ġurl : ĠString ?, ĊĠĠĠ Ġhide When Empty : ĠBoolean Ġ= Ġfalse Ċ ) Ġ{ ĊĠĠĠ Ġif Ġ( url . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( hide When Empty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbutton . is Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġbutton . isVisible Ġ= Ġtrue ĊĠĠĠ Ġbutton . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Website Url ( it . context , Ġurl ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġopen Website Url ( context : ĠContext , Ġurl : ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ( url . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġopen Website Uri ( context , ĠUri . parse ( url )) Ċ } Ċ Ċ fun Ġopen Website Uri ( context : ĠContext , Ġuri : ĠUri ) Ġ{ ĊĠĠĠ Ġif Ġ( context . is Chrome Custom Tabs Supported ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Tabs Intent Ġ= ĠCustom Tabs Intent . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show Title ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Toolbar Color ( Context Compat . getColor ( context , ĠR . color . color Primary )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġcustom Tabs Intent . intent . putExtra ( Custom Tabs Intent . EXTRA _ ENABLE _ URL BAR _ HID ING , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġcustom Tabs Intent . launch Url ( context , Ġuri ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent ( Intent . ACTION _ VIEW , Ġuri )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠContext . is Chrome Custom Tabs Supported (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġservice Intent Ġ= ĠIntent ( Custom Tabs Service . ACTION _ CUSTOM _ TAB S _ CONNECTION ) ĊĠĠĠ Ġservice Intent . set Package ( CH ROME _ PACKAGE ) ĊĠĠĠ Ġval Ġresolve Infos Ġ= Ġpackage Manager . query Intent Services ( service Intent , Ġ 0 ) ĊĠĠĠ Ġreturn Ġ! resolve Infos . isNull OrEmpty () Ċ }