From 3f02f646053b3cb3b6cb5db51cc176beec66afd6 Mon Sep 17 00:00:00 2001 From: seungjikim <43927910+seungjikim@users.noreply.github.com> Date: Tue, 4 Aug 2020 01:40:59 +0900 Subject: [PATCH 1/4] changed UI structure --- .../main/java/com/mp/test_cv/HistoryView.java | 4 + .../mp/test_cv/ui/login/LoggedInUserView.java | 17 ----- .../mp/test_cv/ui/login/LoginFormState.java | 40 ---------- .../com/mp/test_cv/ui/login/LoginResult.java | 31 -------- .../mp/test_cv/ui/login/LoginViewModel.java | 70 ------------------ .../ui/login/LoginViewModelFactory.java | 26 ------- app/src/main/res/layout/activity_main.xml | 69 ++++++----------- .../debug/obj/x86/libopencv_jni_shared.a | Bin 784 -> 784 bytes .../debug-mergeNativeLibs/merge-state | Bin 1146 -> 1373 bytes 9 files changed, 27 insertions(+), 230 deletions(-) create mode 100644 app/src/main/java/com/mp/test_cv/HistoryView.java delete mode 100644 app/src/main/java/com/mp/test_cv/ui/login/LoggedInUserView.java delete mode 100644 app/src/main/java/com/mp/test_cv/ui/login/LoginFormState.java delete mode 100644 app/src/main/java/com/mp/test_cv/ui/login/LoginResult.java delete mode 100644 app/src/main/java/com/mp/test_cv/ui/login/LoginViewModel.java delete mode 100644 app/src/main/java/com/mp/test_cv/ui/login/LoginViewModelFactory.java diff --git a/app/src/main/java/com/mp/test_cv/HistoryView.java b/app/src/main/java/com/mp/test_cv/HistoryView.java new file mode 100644 index 0000000..df9e6c9 --- /dev/null +++ b/app/src/main/java/com/mp/test_cv/HistoryView.java @@ -0,0 +1,4 @@ +package com.mp.test_cv; + +public class HistoryView { +} diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoggedInUserView.java b/app/src/main/java/com/mp/test_cv/ui/login/LoggedInUserView.java deleted file mode 100644 index e394fbe..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoggedInUserView.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.mp.test_cv.ui.login; - -/** - * Class exposing authenticated user details to the UI. - */ -class LoggedInUserView { - private String displayName; - //... other data fields that may be accessible to the UI - - LoggedInUserView(String displayName) { - this.displayName = displayName; - } - - String getDisplayName() { - return displayName; - } -} diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoginFormState.java b/app/src/main/java/com/mp/test_cv/ui/login/LoginFormState.java deleted file mode 100644 index 8c7ee1e..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoginFormState.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.mp.test_cv.ui.login; - -import androidx.annotation.Nullable; - -/** - * Data validation state of the login form. - */ -class LoginFormState { - @Nullable - private Integer usernameError; - @Nullable - private Integer passwordError; - private boolean isDataValid; - - LoginFormState(@Nullable Integer usernameError, @Nullable Integer passwordError) { - this.usernameError = usernameError; - this.passwordError = passwordError; - this.isDataValid = false; - } - - LoginFormState(boolean isDataValid) { - this.usernameError = null; - this.passwordError = null; - this.isDataValid = isDataValid; - } - - @Nullable - Integer getUsernameError() { - return usernameError; - } - - @Nullable - Integer getPasswordError() { - return passwordError; - } - - boolean isDataValid() { - return isDataValid; - } -} diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoginResult.java b/app/src/main/java/com/mp/test_cv/ui/login/LoginResult.java deleted file mode 100644 index 1968b5c..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoginResult.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.mp.test_cv.ui.login; - -import androidx.annotation.Nullable; - -/** - * Authentication result : success (user details) or error message. - */ -class LoginResult { - @Nullable - private LoggedInUserView success; - @Nullable - private Integer error; - - LoginResult(@Nullable Integer error) { - this.error = error; - } - - LoginResult(@Nullable LoggedInUserView success) { - this.success = success; - } - - @Nullable - LoggedInUserView getSuccess() { - return success; - } - - @Nullable - Integer getError() { - return error; - } -} diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModel.java b/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModel.java deleted file mode 100644 index 9873d80..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModel.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.mp.test_cv.ui.login; - -import androidx.lifecycle.LiveData; -import androidx.lifecycle.MutableLiveData; -import androidx.lifecycle.ViewModel; - -import android.util.Patterns; - -import com.mp.test_cv.data.LoginRepository; -import com.mp.test_cv.data.Result; -import com.mp.test_cv.data.model.LoggedInUser; -import com.mp.test_cv.R; - -public class LoginViewModel extends ViewModel { - - private MutableLiveData loginFormState = new MutableLiveData<>(); - private MutableLiveData loginResult = new MutableLiveData<>(); - private LoginRepository loginRepository; - - LoginViewModel(LoginRepository loginRepository) { - this.loginRepository = loginRepository; - } - - LiveData getLoginFormState() { - return loginFormState; - } - - LiveData getLoginResult() { - return loginResult; - } - - public void login(String username, String password) { - // can be launched in a separate asynchronous job - Result result = loginRepository.login(username, password); - - if (result instanceof Result.Success) { - LoggedInUser data = ((Result.Success) result).getData(); - loginResult.setValue(new LoginResult(new LoggedInUserView(data.getDisplayName()))); - } else { - loginResult.setValue(new LoginResult(R.string.login_failed)); - } - } - - public void loginDataChanged(String username, String password) { - if (!isUserNameValid(username)) { - loginFormState.setValue(new LoginFormState(R.string.invalid_username, null)); - } else if (!isPasswordValid(password)) { - loginFormState.setValue(new LoginFormState(null, R.string.invalid_password)); - } else { - loginFormState.setValue(new LoginFormState(true)); - } - } - - // A placeholder username validation check - private boolean isUserNameValid(String username) { - if (username == null) { - return false; - } - if (username.contains("@")) { - return Patterns.EMAIL_ADDRESS.matcher(username).matches(); - } else { - return !username.trim().isEmpty(); - } - } - - // A placeholder password validation check - private boolean isPasswordValid(String password) { - return password != null && password.trim().length() > 5; - } -} diff --git a/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModelFactory.java b/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModelFactory.java deleted file mode 100644 index 19a0983..0000000 --- a/app/src/main/java/com/mp/test_cv/ui/login/LoginViewModelFactory.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.mp.test_cv.ui.login; - -import androidx.lifecycle.ViewModel; -import androidx.lifecycle.ViewModelProvider; -import androidx.annotation.NonNull; - -import com.mp.test_cv.data.LoginDataSource; -import com.mp.test_cv.data.LoginRepository; - -/** - * ViewModel provider factory to instantiate LoginViewModel. - * Required given LoginViewModel has a non-empty constructor - */ -public class LoginViewModelFactory implements ViewModelProvider.Factory { - - @NonNull - @Override - @SuppressWarnings("unchecked") - public T create(@NonNull Class modelClass) { - if (modelClass.isAssignableFrom(LoginViewModel.class)) { - return (T) new LoginViewModel(LoginRepository.getInstance(new LoginDataSource())); - } else { - throw new IllegalArgumentException("Unknown ViewModel class"); - } - } -} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index cc70ef1..b8cf764 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -87,45 +87,26 @@ android:background="@null" android:textAlignment="center" /> - - - - - - - - - -