package Ġhu . sz to mek . wh eres my buddy . domain . use case čĊč Ċ import Ġhu . sz to mek . wh eres my buddy . domain . ID at as ource č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . Image Uploader č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . action . Action č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . common . App Schedulers č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . common . Result č Ċ import Ġhu . sz to mek . wh eres my buddy . domain . model . User Model č Ċ import Ġio . reactivex . Single č Ċ import Ġjavax . inject . Inject čĊč Ċ class ĠUpdate Profile UseCase Ġ@ Inject Ġconstructor ( private Ġval Ġapp Schedulers : ĠApp Schedulers , Ġprivate Ġval Ġdatasource : ĠID at as ource , Ġprivate Ġval Ġimage Upload : ĠImage Uploader ) Ġ{ čĊčĊĠĠĠ Ġfun Ġexecute ( action : ĠAction . Update Profile Action ): ĠSingle < Result > Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( action . photo Path !!. startsWith (" http ")) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Model Ġ= ĠUser Model ( action . userId , Ġaction . displayName , Ġnull , Ġaction . photo Path ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatasource . update Profile ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Model čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). to Single Default ( Result . complete ( action , Ġuser Model )) čĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Upload . upload Image FromFile ( action . userId , Ġaction . photo Path ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( app Schedulers . io ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Model Ġ= ĠUser Model ( action . userId , Ġaction . displayName , Ġnull , Ġit ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatasource . update Profile ( čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Model čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). to Single Default ( Result . complete ( action , Ġuser Model )) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊč Ċ }