diff --git a/app/build.gradle b/app/build.gradle index 0bd8e5a..5f81937 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,6 +57,7 @@ compile "android.arch.lifecycle:extensions:1.0.0" annotationProcessor "android.arch.lifecycle:compiler:1.0.0" + // Rx implementation "io.reactivex.rxjava2:rxjava:$rx_java_version" implementation "io.reactivex.rxjava2:rxandroid:$rx_android_version" diff --git a/app/src/main/java/com/example/sprout/refactor/model/RegistrationModel.java b/app/src/main/java/com/example/sprout/refactor/model/RegistrationModel.java index 5ecc0e9..f3fc860 100644 --- a/app/src/main/java/com/example/sprout/refactor/model/RegistrationModel.java +++ b/app/src/main/java/com/example/sprout/refactor/model/RegistrationModel.java @@ -3,47 +3,55 @@ import com.example.sprout.refactor.model.entity.Account; import com.example.sprout.refactor.repository.RegistrationRepository; +import io.reactivex.Observable; import io.reactivex.schedulers.Schedulers; +import io.reactivex.subjects.BehaviorSubject; +import io.reactivex.subjects.PublishSubject; /** * Accountを管理するクラス * Created by matsumoto_k on 2017/12/14. */ -public class RegistrationModel extends BaseModel { +public class RegistrationModel { + private BehaviorSubject accountSubject = BehaviorSubject.create(); + private PublishSubject errorSubject = PublishSubject.create(); private RegistrationRepository registrationRepository = null; public RegistrationModel(RegistrationRepository registrationRepository) { this.registrationRepository = registrationRepository; } - @Override - public void create(Account account) { - registrationRepository.registration(account.getUserName()) + public void create(String userName) { + registrationRepository.registration(userName) .subscribeOn(Schedulers.computation()) .subscribe( - response -> entitySubject.onNext(response), + response -> accountSubject.onNext(response), error -> errorSubject.onNext(error) ); } - @Override - public void read(Account account) { - registrationRepository.getAccount(account.getUserID()) + public void get(int userId) { + registrationRepository.getAccount(userId) .subscribeOn(Schedulers.computation()) .subscribe( - response -> entitySubject.onNext(account), - error -> errorSubject.onNext(error) + account -> accountSubject.onNext(account), + error -> { + if (accountSubject.getValue() != null) { + accountSubject.onNext(accountSubject.getValue()); + } + errorSubject.onNext(error); + + } ); } - @Override - public void update(Account account) { + public Observable getAccountObservable() { + return accountSubject; } - @Override - public void delete(Account account) { - + public Observable getErrorObservable() { + return errorSubject; } } diff --git a/app/src/main/java/com/example/sprout/refactor/viewmodel/RegistrationViewModel.java b/app/src/main/java/com/example/sprout/refactor/viewmodel/RegistrationViewModel.java index 1a367c0..2d94e8f 100644 --- a/app/src/main/java/com/example/sprout/refactor/viewmodel/RegistrationViewModel.java +++ b/app/src/main/java/com/example/sprout/refactor/viewmodel/RegistrationViewModel.java @@ -11,7 +11,6 @@ import com.example.sprout.refactor.messengers.ToastMessenger; import com.example.sprout.refactor.model.ModelLocator; import com.example.sprout.refactor.model.RegistrationModel; -import com.example.sprout.refactor.model.entity.Account; import com.example.sprout.refactor.util.PreferenceUtil; import io.reactivex.Observable; @@ -44,7 +43,7 @@ public void onResume() { super.onResume(); subscriptions.add( - registrationModel.getEntityObservable() + registrationModel.getAccountObservable() .observeOn(AndroidSchedulers.mainThread()) .subscribe(account -> { preferenceUtil.saveInt(PreferenceUtil.Key.USER_ID, account.getUserID()); @@ -80,9 +79,7 @@ toastMessanger.showToast(new ToastMessage(Sprout.get().getResources().getString(R.string.empty_name), ToastMessage.Length.SHORT)); return; } - Account params = new Account(); - params.setUserName(userName); - registrationModel.create(params); + registrationModel.create(userName); }