package Ġcom . block eq . stell ar wallet . mv vm . exchange Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . arch . lifecycle . Android ViewModel Ċ import Ġandroid . arch . lifecycle . LiveData Ċ import Ġandroid . arch . lifecycle . Mutable LiveData Ċ Ċ class ĠExchange ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġlocal List Ġ: ĠList < Exchange Entity > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġval Ġrepository Ġ: ĠExchange Repository Ġ= ĠExchange Repository ( application ) ĊĠĠĠ Ġprivate Ġval Ġmatching LiveData Ġ: ĠMutable LiveData < Exchange Entity > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġprivate Ġvar Ġobserved Address Ġ: ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . getAll Exchange Providers (). observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocal List Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify IfNeeded ( observed Address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// TODO : Ġmulti - address Ġeffects List Ġsupport Ġor Ġmove Ġview Ġmodel Ġto Ġonly Ġone Ġaddress Ġsupport Ġnow Ġis Ġhybrid ĊĠĠĠ Ġfun Ġexchange Matching ( address : ĠString ): ĠLive Data < Exchange Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġobserved Address Ġ= Ġaddress ĊĠĠĠĠĠĠĠ Ġnotify IfNeeded ( address ) ĊĠĠĠĠĠĠĠ Ġreturn Ġmatching LiveData ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmatch Exchange ( address Ġ: ĠString ) Ġ: ĠExchange Entity ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlocal List . find Ġ{ Ġit Ġ-> Ġit . address Ġ== Ġaddress Ġ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnotify IfNeeded ( address : ĠString ? ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( address Ġ!= Ġnull Ġ&& Ġlocal List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexchange Entity Ġ= Ġmatch Exchange ( address ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exchange Entity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatching LiveData . post Value ( exchange Entity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }