/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠNew ĠVector ĠLtd Ċ Ġ* Ċ Ġ* Ġ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 Ġim . vector . widgets Ċ Ċ import Ġandroid . content . Context Ċ import Ġim . vector . R Ċ import Ġorg . matrix . android sdk . MX Session Ċ import Ġorg . matrix . android sdk . features . integration manager . Integration Manager Ċ import Ġjava . net . Malformed URLException Ċ import Ġjava . net . URL Ċ Ċ class ĠWidget Manager Provider ( private Ġval Ġsession : ĠMX Session ) Ġ: ĠIntegration Manager . Integration Manager Manager Listener Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Integration Manager Change ( manager Config : ĠIntegration Manager ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Clear Ġcaches ĊĠĠĠĠĠĠĠ Ġcurrent Config Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġwidgets Manager Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsession . integration Manager . addListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġwidgets Manager : ĠWidget s Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcurrent Config : ĠIntegration Manager Config ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġget Widget Manager ( context : ĠContext ): ĠWidget s Manager ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! session . integration Manager . integration Allowed ) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Defined Config Ġ= Ġsession . integration Manager . integration Server Config ĊĠĠĠĠĠĠĠ Ġval Ġsdk Config : ĠIntegration Manager Config ? ĊĠĠĠĠĠĠĠ Ġval Ġdefault Whitelist Ġ= Ġcontext . resources . getString Array ( R . array . integrations _ widgets _ urls ). asList () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( user Defined Config Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwhite List Ġ= Ġdefault Whitelist Ġ+ Ġuser Defined Config . api Url ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsdk Config Ġ= ĠIntegration Manager Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Url Ġ= Ġuser Defined Config . ui Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Url Ġ= Ġuser Defined Config . api Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj its i Url Ġ= Ġ"${ user Defined Config . api Url }/ widgets / j its i . html ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhite List ed Urls Ġ= Ġwhite List ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Use Ġthe Ġdefault ĠIM ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġa Ġconfig Ġis Ġdefined Ġin Ġwell known ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwell Known IM Ġ= Ġsession . integration Manager . get Well Known Integration Manager Configs (). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsdk Config Ġ= Ġif Ġ( well Known IM Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntegration Manager Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Url Ġ= Ġwell Known IM . ui Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Url Ġ= Ġwell Known IM . api Url , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj its i Url Ġ= Ġ"${ well Known IM . api Url }/ widgets / j its i . html ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhite List ed Urls Ġ= ĠlistOf ( well Known IM . api Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntegration Manager Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui Url Ġ= Ġcontext . getString ( R . string . integrations _ ui _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Url Ġ= Ġcontext . getString ( R . string . integrations _ rest _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj its i Url Ġ= Ġcontext . getString ( R . string . integrations _ j its i _ widget _ url ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhite List ed Urls Ġ= Ġdefault Whitelist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġif Ġ( current Config Ġ== Ġsdk Config Ġ&& Ġwidgets Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwidgets Manager ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( sdk Config . ui Url . isBlank () Ġ|| Ġsdk Config . api Url . isBlank () Ġ|| Ġsdk Config . j its i Url . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Config Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidgets Manager Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Very Ġbasic Ġvalidity Ġcheck Ġ( well Ġformed Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠURL ( sdk Config . ui Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠURL ( sdk Config . api Url ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠURL ( sdk Config . j its i Url ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Config Ġ= Ġsdk Config ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠWidget s Manager ( sdk Config ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . widgets Manager Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMal formed URLException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }