diff --git a/app/build.gradle b/app/build.gradle
index 60b95e6..b582055 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -20,6 +20,9 @@
targetCompatibility 1.8
sourceCompatibility 1.8
}
+ dataBinding {
+ enabled = true;
+ }
}
dependencies {
@@ -43,4 +46,9 @@
// OKHttp
implementation 'com.squareup.okhttp3:okhttp:3.8.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0'
+
+ // Android Architecture Components for Lifecycles, LiveData, and ViewModel
+ compile "android.arch.lifecycle:runtime:1.0.3"
+ compile "android.arch.lifecycle:extensions:1.0.0"
+ annotationProcessor "android.arch.lifecycle:compiler:1.0.0"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2d97e40..01402e6 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,20 +2,25 @@
+
+
-
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/j4ckall/rxflux/App.java b/app/src/main/java/j4ckall/rxflux/App.java
index 381edd7..f8d00e9 100644
--- a/app/src/main/java/j4ckall/rxflux/App.java
+++ b/app/src/main/java/j4ckall/rxflux/App.java
@@ -3,6 +3,7 @@
import android.app.Application;
import j4ckall.rxflux.lib.flux.Dispatcher;
+import j4ckall.rxflux.repository.RegistrationRepository;
/**
* Application Class
@@ -13,6 +14,7 @@
private static App instance = null;
private static final Dispatcher dispatcher = new Dispatcher();
+ private static final RegistrationRepository registrationRepository = new RegistrationRepository();
@Override
public void onCreate() {
@@ -27,4 +29,8 @@
public static Dispatcher getDispatcher() {
return dispatcher;
}
+
+ public static RegistrationRepository getRegistrationRepository() {
+ return registrationRepository;
+ }
}
diff --git a/app/src/main/java/j4ckall/rxflux/api/RegistrationService.java b/app/src/main/java/j4ckall/rxflux/api/RegistrationService.java
new file mode 100644
index 0000000..e6d72bd
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/api/RegistrationService.java
@@ -0,0 +1,19 @@
+package j4ckall.rxflux.api;
+
+import io.reactivex.Single;
+import j4ckall.rxflux.ui.registration.Account;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+/**
+ * アカウント登録のAPI
+ *
+ * @author matsumoto_k
+ */
+public interface RegistrationService {
+
+ @FormUrlEncoded
+ @POST("accounts")
+ Single postAccounts(@Field("userName") String userName);
+}
diff --git a/app/src/main/java/j4ckall/rxflux/lib/architecture/BaseViewModel.java b/app/src/main/java/j4ckall/rxflux/lib/architecture/BaseViewModel.java
new file mode 100644
index 0000000..7f2bd01
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/lib/architecture/BaseViewModel.java
@@ -0,0 +1,36 @@
+package j4ckall.rxflux.lib.architecture;
+
+import android.arch.lifecycle.Lifecycle;
+import android.arch.lifecycle.LifecycleObserver;
+import android.arch.lifecycle.OnLifecycleEvent;
+
+/**
+ * BaseViewModel
+ *
+ * @author matsumoto_k
+ */
+public class BaseViewModel implements LifecycleObserver {
+ @OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
+ public void onCreate() {
+ }
+
+ @OnLifecycleEvent(Lifecycle.Event.ON_START)
+ public void onStart() {
+ }
+
+ @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
+ public void onResume() {
+ }
+
+ @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
+ public void onPause() {
+ }
+
+ @OnLifecycleEvent(Lifecycle.Event.ON_STOP)
+ public void onStop() {
+ }
+
+ @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
+ public void onDestroy() {
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/lib/flux/ActionCreater.java b/app/src/main/java/j4ckall/rxflux/lib/flux/ActionCreater.java
index a24e978..c853ace 100644
--- a/app/src/main/java/j4ckall/rxflux/lib/flux/ActionCreater.java
+++ b/app/src/main/java/j4ckall/rxflux/lib/flux/ActionCreater.java
@@ -3,6 +3,8 @@
import android.support.annotation.NonNull;
+import j4ckall.rxflux.App;
+
/**
* Actionを作成するHelper
* DispatcherにActionを流す
@@ -13,8 +15,8 @@
private final Dispatcher dispatcher;
- public ActionCreater(Dispatcher dispatcher) {
- this.dispatcher = dispatcher;
+ public ActionCreater() {
+ this.dispatcher = App.getDispatcher();
}
/**
diff --git a/app/src/main/java/j4ckall/rxflux/lib/flux/Store.java b/app/src/main/java/j4ckall/rxflux/lib/flux/Store.java
index 202a101..4b82ecc 100644
--- a/app/src/main/java/j4ckall/rxflux/lib/flux/Store.java
+++ b/app/src/main/java/j4ckall/rxflux/lib/flux/Store.java
@@ -8,6 +8,7 @@
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subjects.PublishSubject;
import io.reactivex.subjects.Subject;
+import j4ckall.rxflux.App;
/**
@@ -26,8 +27,8 @@
private final Dispatcher dispatcher;
private final CompositeDisposable subscriptions = new CompositeDisposable();
- public Store(Dispatcher dispatcher) {
- this.dispatcher = dispatcher;
+ public Store() {
+ this.dispatcher = App.getDispatcher();
}
private void observe(Scheduler scheduler, Consumer subscriber) {
diff --git a/app/src/main/java/j4ckall/rxflux/repository/RegistrationRepository.java b/app/src/main/java/j4ckall/rxflux/repository/RegistrationRepository.java
new file mode 100644
index 0000000..61fda6d
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/repository/RegistrationRepository.java
@@ -0,0 +1,31 @@
+package j4ckall.rxflux.repository;
+
+import io.reactivex.Single;
+import j4ckall.rxflux.api.RegistrationService;
+import j4ckall.rxflux.ui.registration.Account;
+import retrofit2.Retrofit;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+/**
+ * Created by matsumoto_k on 2017/12/03.
+ */
+
+public class RegistrationRepository extends Repository {
+ private final RegistrationService registrationService;
+
+ public RegistrationRepository() {
+ registrationService = new Retrofit
+ .Builder()
+ .baseUrl("http://nitta-lab-www2.is.konan-u.ac.jp:8080/SproutServer/")
+ .client(okHttpClient)
+ .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+ .addConverterFactory(GsonConverterFactory.create())
+ .build()
+ .create(RegistrationService.class);
+ }
+
+ public Single registration(String userName) {
+ return registrationService.postAccounts(userName);
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/repository/Repository.java b/app/src/main/java/j4ckall/rxflux/repository/Repository.java
new file mode 100644
index 0000000..018637f
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/repository/Repository.java
@@ -0,0 +1,15 @@
+package j4ckall.rxflux.repository;
+
+import okhttp3.OkHttpClient;
+
+/**
+ * Created by matsumoto_k on 2017/12/03.
+ */
+
+public abstract class Repository {
+ protected final OkHttpClient okHttpClient;
+
+ public Repository() {
+ okHttpClient = new OkHttpClient.Builder().build();
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainAction.java b/app/src/main/java/j4ckall/rxflux/ui/MainAction.java
deleted file mode 100644
index 0345719..0000000
--- a/app/src/main/java/j4ckall/rxflux/ui/MainAction.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package j4ckall.rxflux.ui;
-
-import j4ckall.rxflux.lib.flux.Action;
-
-/**
- * MainActivityのAction
- *
- * @author matsumoto_k
- */
-public enum MainAction implements Action.Key {
- COUNT_UP,
- COUNT_DOWN,
- INITIALIZE
-}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainActionCreater.java b/app/src/main/java/j4ckall/rxflux/ui/MainActionCreater.java
deleted file mode 100644
index 03a7095..0000000
--- a/app/src/main/java/j4ckall/rxflux/ui/MainActionCreater.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package j4ckall.rxflux.ui;
-
-import j4ckall.rxflux.App;
-import j4ckall.rxflux.lib.flux.ActionCreater;
-
-/**
- * MainActivityのActionを生成するクラス
- *
- * @author matsumoto_k
- */
-public class MainActionCreater extends ActionCreater {
-
- public MainActionCreater() {
- super(App.getDispatcher());
- }
-
- public void countUp(int num) {
- dispatch(MainAction.COUNT_UP, num);
- }
-
- public void countDown(int num) {
- dispatch(MainAction.COUNT_DOWN, -num);
- }
-
- public void initialize(int num) {
- dispatch(MainAction.INITIALIZE, num);
- }
-}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainActivity.java b/app/src/main/java/j4ckall/rxflux/ui/MainActivity.java
deleted file mode 100644
index 7e1747e..0000000
--- a/app/src/main/java/j4ckall/rxflux/ui/MainActivity.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package j4ckall.rxflux.ui;
-
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.widget.TextView;
-
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.disposables.CompositeDisposable;
-import j4ckall.rxflux.R;
-
-public class MainActivity extends AppCompatActivity {
-
- private MainStore mainStore = new MainStore();
- private MainActionCreater mainActionCreater = new MainActionCreater();
- private CompositeDisposable compositeDisposable = new CompositeDisposable();
- private TextView countText = null;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- countText = findViewById(R.id.text_count);
-
- findViewById(R.id.btn_plus).setOnClickListener(__ -> {
- mainActionCreater.countUp(1);
- });
-
- findViewById(R.id.btn_minus).setOnClickListener(__ -> {
- mainActionCreater.countDown(1);
- });
- }
-
- @Override
- protected void onResume() {
- super.onResume();
- compositeDisposable.add(
- mainStore.getCount().observeOn(AndroidSchedulers.mainThread()).subscribe(count -> countText.setText(count.toString()))
- );
- mainActionCreater.initialize(0);
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
- compositeDisposable.dispose();
- }
-}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/MainStore.java b/app/src/main/java/j4ckall/rxflux/ui/MainStore.java
deleted file mode 100644
index 1701f4c..0000000
--- a/app/src/main/java/j4ckall/rxflux/ui/MainStore.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package j4ckall.rxflux.ui;
-
-import io.reactivex.Observable;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.schedulers.Schedulers;
-import io.reactivex.subjects.BehaviorSubject;
-import io.reactivex.subjects.Subject;
-import j4ckall.rxflux.App;
-import j4ckall.rxflux.lib.flux.Store;
-
-/**
- * MainActivityの状態を保持するクラス
- *
- * @author matsumoto_k
- */
-public class MainStore extends Store {
-
- private Subject countSubject = BehaviorSubject.create().toSerialized();
- private Observable count = countSubject.hide().scan((sum, num) -> sum += num);
- private boolean initialize = false;
-
- public MainStore() {
- super(App.getDispatcher());
-
- getDispatchObservable(MainAction.COUNT_UP)
- .subscribeOn(Schedulers.computation())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(action -> {
- countSubject.onNext((Integer) action.value);
- });
-
- getDispatchObservable(MainAction.COUNT_DOWN)
- .subscribeOn(Schedulers.computation())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(action -> {
- countSubject.onNext((Integer) action.value);
- });
-
- getDispatchObservable(MainAction.INITIALIZE)
- .subscribeOn(Schedulers.computation())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(action -> {
- if (!initialize) {
- countSubject.onNext((Integer) action.value);
- initialize = true;
- }
- });
-
- // TODO:DispatchからObservableを受け取るのかDispatchに対してSubscriberを設定するのかどちらが良いのか調べる
-// on(MainAction.COUNT_UP, action -> {
-// countSubject.onNext((Integer) action.value);
-// });
-//
-// on(MainAction.COUNT_DOWN, action -> {
-// countSubject.onNext((Integer) action.value);
-// });
-//
-// on(MainAction.INITIALIZE, action -> {
-// countSubject.onNext((Integer) action.value);
-// });
- }
-
- public Observable getCount() {
- return count;
- }
-}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/counter/MainAction.java b/app/src/main/java/j4ckall/rxflux/ui/counter/MainAction.java
new file mode 100644
index 0000000..b0efd67
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/counter/MainAction.java
@@ -0,0 +1,14 @@
+package j4ckall.rxflux.ui.counter;
+
+import j4ckall.rxflux.lib.flux.Action;
+
+/**
+ * MainActivityのAction
+ *
+ * @author matsumoto_k
+ */
+public enum MainAction implements Action.Key {
+ COUNT_UP,
+ COUNT_DOWN,
+ INITIALIZE
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/counter/MainActionCreater.java b/app/src/main/java/j4ckall/rxflux/ui/counter/MainActionCreater.java
new file mode 100644
index 0000000..021bdd6
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/counter/MainActionCreater.java
@@ -0,0 +1,27 @@
+package j4ckall.rxflux.ui.counter;
+
+import j4ckall.rxflux.lib.flux.ActionCreater;
+
+/**
+ * MainActivityのActionを生成するクラス
+ *
+ * @author matsumoto_k
+ */
+public class MainActionCreater extends ActionCreater {
+
+ public MainActionCreater() {
+ super();
+ }
+
+ public void countUp(int num) {
+ dispatch(MainAction.COUNT_UP, num);
+ }
+
+ public void countDown(int num) {
+ dispatch(MainAction.COUNT_DOWN, -num);
+ }
+
+ public void initialize(int num) {
+ dispatch(MainAction.INITIALIZE, num);
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/counter/MainActivity.java b/app/src/main/java/j4ckall/rxflux/ui/counter/MainActivity.java
new file mode 100644
index 0000000..209f31a
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/counter/MainActivity.java
@@ -0,0 +1,47 @@
+package j4ckall.rxflux.ui.counter;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.widget.TextView;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.CompositeDisposable;
+import j4ckall.rxflux.R;
+
+public class MainActivity extends AppCompatActivity {
+
+ private MainStore mainStore = new MainStore();
+ private MainActionCreater mainActionCreater = new MainActionCreater();
+ private CompositeDisposable compositeDisposable = new CompositeDisposable();
+ private TextView countText = null;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ countText = findViewById(R.id.text_count);
+
+ findViewById(R.id.btn_plus).setOnClickListener(__ -> {
+ mainActionCreater.countUp(1);
+ });
+
+ findViewById(R.id.btn_minus).setOnClickListener(__ -> {
+ mainActionCreater.countDown(1);
+ });
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ compositeDisposable.add(
+ mainStore.getCount().observeOn(AndroidSchedulers.mainThread()).subscribe(count -> countText.setText(count.toString()))
+ );
+ mainActionCreater.initialize(0);
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ compositeDisposable.dispose();
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/counter/MainStore.java b/app/src/main/java/j4ckall/rxflux/ui/counter/MainStore.java
new file mode 100644
index 0000000..4cd1e15
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/counter/MainStore.java
@@ -0,0 +1,65 @@
+package j4ckall.rxflux.ui.counter;
+
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import io.reactivex.subjects.BehaviorSubject;
+import io.reactivex.subjects.Subject;
+import j4ckall.rxflux.lib.flux.Store;
+
+/**
+ * MainActivityの状態を保持するクラス
+ *
+ * @author matsumoto_k
+ */
+public class MainStore extends Store {
+
+ private Subject countSubject = BehaviorSubject.create().toSerialized();
+ private Observable count = countSubject.hide().scan((sum, num) -> sum += num);
+ private boolean initialize = false;
+
+ public MainStore() {
+ super();
+
+ getDispatchObservable(MainAction.COUNT_UP)
+ .subscribeOn(Schedulers.computation())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(action -> {
+ countSubject.onNext((Integer) action.value);
+ });
+
+ getDispatchObservable(MainAction.COUNT_DOWN)
+ .subscribeOn(Schedulers.computation())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(action -> {
+ countSubject.onNext((Integer) action.value);
+ });
+
+ getDispatchObservable(MainAction.INITIALIZE)
+ .subscribeOn(Schedulers.computation())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(action -> {
+ if (!initialize) {
+ countSubject.onNext((Integer) action.value);
+ initialize = true;
+ }
+ });
+
+ // TODO:DispatchからObservableを受け取るのかDispatchに対してSubscriberを設定するのかどちらが良いのか調べる
+// on(MainAction.COUNT_UP, action -> {
+// countSubject.onNext((Integer) action.value);
+// });
+//
+// on(MainAction.COUNT_DOWN, action -> {
+// countSubject.onNext((Integer) action.value);
+// });
+//
+// on(MainAction.INITIALIZE, action -> {
+// countSubject.onNext((Integer) action.value);
+// });
+ }
+
+ public Observable getCount() {
+ return count;
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/Account.java b/app/src/main/java/j4ckall/rxflux/ui/registration/Account.java
new file mode 100644
index 0000000..3a605f7
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/registration/Account.java
@@ -0,0 +1,41 @@
+package j4ckall.rxflux.ui.registration;
+
+/**
+ * RegistrationのEntity
+ *
+ * @author matsumoto_k
+ */
+public class Account {
+
+ private int userID = -1;
+ private String userName = "";
+ private String mode = "";
+
+ public Account() {
+ }
+
+ public int getUserID() {
+ return userID;
+ }
+
+ public void setUserID(int userID) {
+ this.userID = userID;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public String getMode() {
+ return mode;
+ }
+
+ public void setMode(String mode) {
+ this.mode = mode;
+ }
+}
+
diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationAction.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationAction.java
new file mode 100644
index 0000000..6dd5d04
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationAction.java
@@ -0,0 +1,11 @@
+package j4ckall.rxflux.ui.registration;
+
+import j4ckall.rxflux.lib.flux.Action;
+
+/**
+ * Created by matsumoto_k on 2017/12/03.
+ */
+
+public enum RegistrationAction implements Action.Key {
+ REGISTRATION
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActionCreater.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActionCreater.java
new file mode 100644
index 0000000..b7b2496
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActionCreater.java
@@ -0,0 +1,22 @@
+package j4ckall.rxflux.ui.registration;
+
+import io.reactivex.schedulers.Schedulers;
+import j4ckall.rxflux.App;
+import j4ckall.rxflux.lib.flux.ActionCreater;
+import j4ckall.rxflux.repository.RegistrationRepository;
+
+
+public class RegistrationActionCreater extends ActionCreater {
+ private final RegistrationRepository registrationRepository;
+
+ public RegistrationActionCreater() {
+ super();
+ this.registrationRepository = App.getRegistrationRepository();
+ }
+
+ public void registration(String userName) {
+ registrationRepository.registration(userName).subscribeOn(Schedulers.computation()).subscribe(account -> {
+ dispatch(RegistrationAction.REGISTRATION, account);
+ });
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActivity.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActivity.java
new file mode 100644
index 0000000..dedfaee
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationActivity.java
@@ -0,0 +1,20 @@
+package j4ckall.rxflux.ui.registration;
+
+import android.databinding.DataBindingUtil;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+
+import j4ckall.rxflux.R;
+import j4ckall.rxflux.databinding.ActivityRegistrationBinding;
+
+public class RegistrationActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ ActivityRegistrationBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_registration);
+ RegistrationViewModel viewModel = new RegistrationViewModel();
+ binding.setViewModel(viewModel);
+ getLifecycle().addObserver(viewModel);
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationStore.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationStore.java
new file mode 100644
index 0000000..718e403
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationStore.java
@@ -0,0 +1,34 @@
+package j4ckall.rxflux.ui.registration;
+
+import io.reactivex.Observable;
+import io.reactivex.subjects.BehaviorSubject;
+import io.reactivex.subjects.Subject;
+import j4ckall.rxflux.lib.flux.Store;
+
+/**
+ * Created by matsumoto_k on 2017/12/03.
+ */
+
+public class RegistrationStore extends Store {
+ private static final RegistrationStore outInstance = new RegistrationStore();
+ private final Subject accountSubject = BehaviorSubject.create();
+ private final Observable account = accountSubject.hide();
+
+ public RegistrationStore() {
+ super();
+
+ getDispatchObservable(RegistrationAction.REGISTRATION).subscribe(
+ action -> {
+ accountSubject.onNext((Account) action.value);
+ }
+ );
+ }
+
+ public Observable getAccountObservbale() {
+ return account;
+ }
+
+ public static RegistrationStore get() {
+ return outInstance;
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationViewModel.java b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationViewModel.java
new file mode 100644
index 0000000..850aacc
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/registration/RegistrationViewModel.java
@@ -0,0 +1,49 @@
+package j4ckall.rxflux.ui.registration;
+
+import android.content.Intent;
+import android.databinding.ObservableField;
+
+import io.reactivex.disposables.CompositeDisposable;
+import j4ckall.rxflux.App;
+import j4ckall.rxflux.lib.architecture.BaseViewModel;
+import j4ckall.rxflux.ui.roomlist.RoomListActivity;
+
+public class RegistrationViewModel extends BaseViewModel {
+ private final RegistrationStore registrationStore = RegistrationStore.get();
+ private final RegistrationActionCreater registrationActionCreater = new RegistrationActionCreater();
+ private final CompositeDisposable subscriptions = new CompositeDisposable();
+ private ObservableField editUserName = new ObservableField<>("");
+
+ public RegistrationViewModel() {
+ }
+
+ @Override
+ public void onResume() {
+ subscriptions.add(
+ registrationStore.getAccountObservbale().subscribe(account -> {
+ // TODO:仮の呼び出しなので呼び出し方法を変える finishをしてないのでbackした時にここの処理が現状走ることになる
+ Intent intent = new Intent(App.get(), RoomListActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ App.get().startActivity(intent);
+ })
+ );
+ }
+
+ @Override
+ public void onPause() {
+ subscriptions.dispose();
+ }
+
+ /**
+ * 登録ボタンを押した時
+ *
+ * @param userName
+ */
+ public void registration(String userName) {
+ registrationActionCreater.registration(userName);
+ }
+
+ public ObservableField getEditUserName() {
+ return editUserName;
+ }
+}
diff --git a/app/src/main/java/j4ckall/rxflux/ui/roomlist/RoomListActivity.java b/app/src/main/java/j4ckall/rxflux/ui/roomlist/RoomListActivity.java
new file mode 100644
index 0000000..3efed0e
--- /dev/null
+++ b/app/src/main/java/j4ckall/rxflux/ui/roomlist/RoomListActivity.java
@@ -0,0 +1,18 @@
+package j4ckall.rxflux.ui.roomlist;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+
+import j4ckall.rxflux.R;
+import j4ckall.rxflux.ui.registration.RegistrationStore;
+
+public class RoomListActivity extends AppCompatActivity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_room_list);
+ System.out.println("Valueの共有テスト");
+ RegistrationStore.get().getAccountObservbale().subscribe(account -> System.out.println(account.getUserName()));
+ }
+}
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 8d342f8..7d7b1db 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="j4ckall.rxflux.ui.MainActivity">
+ tools:context="j4ckall.rxflux.ui.counter.MainActivity">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_room_list.xml b/app/src/main/res/layout/activity_room_list.xml
new file mode 100644
index 0000000..d8f5840
--- /dev/null
+++ b/app/src/main/res/layout/activity_room_list.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index be20bc4..ae8c3fa 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
RxFlux
+ 登録