package Ġcom . base . rick and mort y . ui . pages . main . repository Ċ Ċ import Ġcom . base . core . extensions .* Ċ import Ġcom . base . core . networking . Data Fetch Result Ċ import Ġcom . base . core . networking . Scheduler Ċ import Ġcom . base . data . database . model . Favorite R ick And M ort y DTO Ċ import Ġcom . base . data . response . Character Response Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠMainActivity Repository ( ĊĠĠĠ Ġprivate Ġval Ġremote : ĠMainActivity Remote Data , ĊĠĠĠ Ġprivate Ġval Ġlocale : ĠMainActivity Locale Data , ĊĠĠĠ Ġprivate Ġval Ġscheduler : ĠScheduler , ĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable : ĠComposite Disposable Ċ ) Ġ: ĠMainActivity Contract . Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġget Character Publish Subject Ġ= ĠPublish Subject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create < Data Fetch Result < Character Response >>() ĊĊĠĠĠ Ġoverride Ġfun Ġget Characters () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Character Publish Subject . loading ( true ) ĊĠĠĠĠĠĠĠ Ġremote . get Characters () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform On Back Out On Main ( scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Character Publish Subject . success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Error ( get Character Publish Subject , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). addTo ( composite Disposable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġget Characters With Filters Publish Subject Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublish Subject . create < Data Fetch Result < Character Response >> Ġ() ĊĊĠĠĠ Ġoverride Ġfun Ġget Characters With Filters ( name : ĠString ?, Ġstatus : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Characters With Filters Publish Subject . loading ( true ) ĊĠĠĠĠĠĠĠ Ġremote . get Characters With Filters ( name , Ġstatus ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. perform On Back Out On Main ( scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Characters With Filters Publish Subject . success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Error ( get Characters With Filters Publish Subject , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). addTo ( composite Disposable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinsert Fav ( favorite R ick And M ort y Dto : ĠF avorite R ick And M ort y DTO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlocale . insert Fav ( favorite R ick And M ort y Dto ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete F avorites ById ( favorite Person Id : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlocale . delete F avorites ById ( favorite Person Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T > Ġhandle Error ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Fetch Result : ĠPublish Subject < Data Fetch Result < T >>, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror : ĠThrowable ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Fetch Result . failed ( error ) ĊĠĠĠĠĠĠĠ ĠTim ber . e ( error . localized Message ) ĊĠĠĠ Ġ} Ċ } Ċ