/* Ċ Ġ* Ġ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 . fragments . terms Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġim . vector . R Ċ import Ġim . vector . util . state . Mx Async Ċ import Ġorg . matrix . android sdk . MX Session Ċ import Ġorg . matrix . android sdk . core . Log Ċ import Ġorg . matrix . android sdk . core . callback . Api Callback Ċ import Ġorg . matrix . android sdk . core . model . Matrix Error Ċ import Ġorg . matrix . android sdk . features . terms . Get Terms Response Ċ import Ġorg . matrix . android sdk . features . terms . Terms Manager Ċ Ċ class ĠAccept Terms ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġterms Args : ĠService Terms Args ĊĊĠĠĠ Ġval Ġterms List : ĠMutable LiveData < Mx Async < List < Term >>> Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġval Ġaccept Terms : ĠMutable LiveData < Mx Async < Unit >> Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġvar Ġmx Session : ĠMX Session ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġterms Manager : ĠTerms Manager ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġmark Term As Accepted ( url : ĠString , Ġaccepted : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġterms List . value ?. invoke ()?. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . url Ġ== Ġurl ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . copy ( accepted Ġ= Ġaccepted ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġit ĊĠĠĠĠĠĠĠ Ġ} ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterms List . post Value ( Mx Async . Success ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit Session ( session : ĠMX Session ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmx Session Ġ= Ġsession ĊĠĠĠĠĠĠĠ Ġterms Manager Ġ= Ġmx Session ?. terms Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaccept Terms () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccepted Terms Ġ= Ġterms List . value ?. invoke () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġaccept Terms . post Value ( Mx Async . Loading ()) ĊĠĠĠĠĠĠĠ Ġval Ġagreed Urls Ġ= Ġaccepted Terms . map Ġ{ Ġit . url Ġ} ĊĊĠĠĠĠĠĠĠ Ġterms Manager ?. agree To Terms ( terms Args . type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms Args . base URL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġagreed Urls , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms Args . token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠApi Callback < Unit > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( info : ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Terms . post Value ( Mx Async . Success ( Unit )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Unexpected Error ( e : Ġjava . lang . Exception ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Terms . post Value ( Mx Async . Error ( R . string . unknown _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( LOG _ TAG , Ġ" Failed Ġto Ġagree Ġto Ġterms Ġ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Network Error ( e : Ġjava . lang . Exception ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Terms . post Value ( Mx Async . Error ( R . string . unknown _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( LOG _ TAG , Ġ" Failed Ġto Ġagree Ġto Ġterms Ġ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Matrix Error ( e : ĠMatrix Error ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Terms . post Value ( Mx Async . Error ( R . string . unknown _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( LOG _ TAG , Ġ" Failed Ġto Ġagree Ġto Ġterms Ġ" Ġ+ Ġe ?. message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Terms ( preferred Language Code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġterms List . post Value ( Mx Async . Loading ()) ĊĊĠĠĠĠĠĠĠ Ġterms Manager ?. get ( terms Args . type , Ġterms Args . base URL , Ġobject Ġ: ĠApi Callback < Get Terms Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( info : ĠGet Terms Response ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġterms Ġ= Ġmutable ListOf < Term >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . server Response . get Localized Privacy Policies ( preferred Language Code )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTerm ( it . localized Url Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . localized Name Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccepted Ġ= Ġinfo . already Accepted Term Urls . contains ( it . localized Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . server Response . get Localized Term Of Services ( preferred Language Code )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTerm ( it . localized Url Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . localized Name Ġ?: Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . version , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccepted Ġ= Ġinfo . already Accepted Term Urls . contains ( it . localized Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms List . post Value ( Mx Async . Success ( terms )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Unexpected Error ( e : ĠException ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms List . post Value ( Mx Async . Error ( R . string . unknown _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Network Error ( e : ĠException ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms List . post Value ( Mx Async . Error ( R . string . unknown _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Matrix Error ( e : ĠMatrix Error ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms List . post Value ( Mx Async . Error ( R . string . unknown _ error )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG _ TAG Ġ= ĠAccept Terms ViewModel :: java Class . name ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ data Ġclass ĠTerm ( ĊĠĠĠĠĠĠĠ Ġval Ġurl : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġversion : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġaccepted : ĠBoolean Ġ= Ġfalse Ċ )