From f382ea5982d2916dd0cf2ece612872a63cea8a05 Mon Sep 17 00:00:00 2001 From: Denys Podymskyy Date: Tue, 21 Jul 2020 09:24:13 +0300 Subject: [PATCH] Added sign up button --- .../android/activity/LoginActivity.java | 26 ++++++++++++++++++- .../android/repository/DataRepository.java | 25 ++++++++++++++++++ .../android/viewmodel/LoginViewModel.java | 7 ++--- ui/src/main/res/layout/activity_login.xml | 24 +++++++++++++++++ ui/src/main/res/values/strings.xml | 1 + 5 files changed, 79 insertions(+), 4 deletions(-) diff --git a/ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java b/ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java index a9fe251..4982197 100644 --- a/ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java +++ b/ui/src/main/java/com/getbubblenow/android/activity/LoginActivity.java @@ -6,6 +6,7 @@ import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; @@ -22,7 +23,6 @@ import android.widget.Toast; import com.getbubblenow.android.R; import com.getbubblenow.android.api.ApiConstants; -import com.getbubblenow.android.repository.DataRepository; import com.getbubblenow.android.resource.StatusResource; import com.getbubblenow.android.viewmodel.LoginViewModel; @@ -33,6 +33,7 @@ public class LoginActivity extends BaseActivityBubble { private EditText userName; private EditText password; private AppCompatButton sign; + private TextView signUpButton; private boolean userNameStateFlag = false; private boolean passwordStateFlag = false; @@ -40,6 +41,7 @@ public class LoginActivity extends BaseActivityBubble { private static final String PASSWORD_KEY = "password"; private static final String NO_INTERNET_CONNECTION = "no internet connection"; private static final String LOGIN_FAILED = "Login Failed"; + private static final String REGISTER_POSTFIX = "/register"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -63,12 +65,34 @@ public class LoginActivity extends BaseActivityBubble { userNameStateListener(); passwordStateListener(); sendListener(); + signUpButton.setOnClickListener(v -> signUp()); + } + + private void signUp() { + showLoadingDialog(); + loginViewModel.getSignUpSage(this).observe(this, statusResource -> { + switch (statusResource.status) { + case SUCCESS: + closeLoadingDialog(); + final String sage = statusResource.data; + final String url = sage + REGISTER_POSTFIX; + final Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(url)); + startActivity(intent); + break; + case ERROR: + closeLoadingDialog(); + showErrorDialog(statusResource.message); + break; + } + }); } private void initViews() { userName = findViewById(R.id.userName); password = findViewById(R.id.password); sign = findViewById(R.id.signButton); + signUpButton = findViewById(R.id.signUpButton); } diff --git a/ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java b/ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java index f8778b7..983b690 100644 --- a/ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java +++ b/ui/src/main/java/com/getbubblenow/android/repository/DataRepository.java @@ -78,6 +78,7 @@ public class DataRepository { private static final String RUNNING = "running"; private static final String BASE_URL_PREFIX = "https://"; private static final String BASE_URL_SUFFIX = ":1443/api/"; + private static final String SAGE_LIST_IS_EMPTY = "Sage list is empty"; private static String deviceName; private static String deviceID; private List nodes; @@ -251,6 +252,30 @@ public class DataRepository { } + public MutableLiveData> getSignUpSage(final Context context) { + return new NetworkBoundStatusResource() { + @Override protected void createCall() { + final Disposable sagesDisposable = clientApi.getSages() + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(sages -> { + nodes = sages.getSages(); + if (nodes != null && !nodes.isEmpty()) { + postMutableLiveData(StatusResource.success(nodes.get(0))); + } else { + Log.e("ERR", "There are no available sages at bootstrap URL."); + postMutableLiveData(StatusResource.error(SAGE_LIST_IS_EMPTY)); + } + }, throwable -> { + Log.e("ERR", "Bootstrap URL cannot be reached."); + setErrorMessage(throwable, this); + }); + compositeDisposable.add(sagesDisposable); + } + }.getMutableLiveData(); + } + + public MutableLiveData> login(Context context, String username, String password) { return new NetworkBoundStatusResource() { diff --git a/ui/src/main/java/com/getbubblenow/android/viewmodel/LoginViewModel.java b/ui/src/main/java/com/getbubblenow/android/viewmodel/LoginViewModel.java index 1acf772..9fc9ad0 100644 --- a/ui/src/main/java/com/getbubblenow/android/viewmodel/LoginViewModel.java +++ b/ui/src/main/java/com/getbubblenow/android/viewmodel/LoginViewModel.java @@ -5,9 +5,6 @@ import android.content.Context; import com.getbubblenow.android.repository.DataRepository; import com.getbubblenow.android.resource.StatusResource; -import java.util.List; - -import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModel; @@ -49,4 +46,8 @@ public class LoginViewModel extends ViewModel { public boolean checkRepositoryInstance(){ return DataRepository.getRepositoryInstance() == null; } + + public MutableLiveData> getSignUpSage(Context context){ + return DataRepository.getRepositoryInstance().getSignUpSage(context); + } } diff --git a/ui/src/main/res/layout/activity_login.xml b/ui/src/main/res/layout/activity_login.xml index e608f98..f63b604 100644 --- a/ui/src/main/res/layout/activity_login.xml +++ b/ui/src/main/res/layout/activity_login.xml @@ -154,4 +154,28 @@ android:textSize="@dimen/text_title" /> + + + + diff --git a/ui/src/main/res/values/strings.xml b/ui/src/main/res/values/strings.xml index d7ce381..3436518 100644 --- a/ui/src/main/res/values/strings.xml +++ b/ui/src/main/res/values/strings.xml @@ -264,4 +264,5 @@ "Email and password should not be empty" We Are Building Your Private Bubble! + No account yet? Create one.