package Ġcom . sdk . domain . use case . account Ċ Ċ import Ġcom . sdk . domain . entity . account . In Player Domain User Ċ import Ġcom . sdk . domain . gateway . In Player Account Repository Ċ import Ġcom . sdk . domain . schedul ers . In Player Schedulers Ċ import Ġcom . sdk . domain . use case . base . Single UseCase Ċ import Ġio . reactivex . Single ĊĊ Ċ class ĠUpdate User UseCase Ġconstructor ( private Ġval Ġapp Schedulers : ĠIn Player Schedulers , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġin Player Account Repository : ĠIn Player Account Repository ) ĊĠĠĠ Ġ: ĠSingle UseCase < In Player Domain User , ĠUpdate User UseCase . Params >( app Schedulers ) Ġ{ ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġbuild UseCase Observable ( params : ĠParams ?): ĠSingle < In Player Domain User > Ġ{ ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġparams ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġin Player Account Repository . update User ( it . fullName , Ġit . metadata ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Params ĠCan 't Ġbe Ġnull Ġfor ĠUpdate User UseCase ") ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠĠĊĠĠĠ Ġdata Ġclass ĠParams ( val ĠfullName : ĠString , Ġval Ġmetadata : ĠHashMap < String , ĠString >? Ġ= Ġnull ) Ċ }