From c2e14f42e91bcfce693319dde65e7644329cd34f Mon Sep 17 00:00:00 2001 From: houxg Date: Wed, 23 Nov 2016 14:08:59 +0800 Subject: [PATCH] support sign up; extract strings --- app/src/main/AndroidManifest.xml | 15 ++- .../leamonax/service/AccountService.java | 4 + .../org/houxg/leamonax/ui/SignInActivity.java | 116 +++++++++++++++-- app/src/main/res/layout/activity_signin.xml | 120 ++++++++++-------- app/src/main/res/menu/preview.xml | 2 +- app/src/main/res/values/strings.xml | 3 +- app/src/main/res/values/styles.xml | 12 ++ 7 files changed, 202 insertions(+), 70 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 48d6fa8..3a1dcf5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,25 +28,26 @@ + android:label="@string/edit" /> + android:label="@string/preview" /> + android:label="@string/recent_notes" /> + android:label="@string/settings" /> + + - - + android:label="NoteSyncService" /> \ No newline at end of file diff --git a/app/src/main/java/org/houxg/leamonax/service/AccountService.java b/app/src/main/java/org/houxg/leamonax/service/AccountService.java index d362fe8..917de6b 100644 --- a/app/src/main/java/org/houxg/leamonax/service/AccountService.java +++ b/app/src/main/java/org/houxg/leamonax/service/AccountService.java @@ -12,6 +12,10 @@ import rx.Observable; public class AccountService { + public static Observable register(String email, String password) { + return RetrofitUtils.create(ApiProvider.getInstance().getAuthApi().register(email, password)); + } + public static Observable login(String email, String password) { return RetrofitUtils.create(ApiProvider.getInstance().getAuthApi().login(email, password)); } diff --git a/app/src/main/java/org/houxg/leamonax/ui/SignInActivity.java b/app/src/main/java/org/houxg/leamonax/ui/SignInActivity.java index 9530d69..d41106d 100644 --- a/app/src/main/java/org/houxg/leamonax/ui/SignInActivity.java +++ b/app/src/main/java/org/houxg/leamonax/ui/SignInActivity.java @@ -16,16 +16,20 @@ import android.widget.TextView; import org.houxg.leamonax.R; import org.houxg.leamonax.model.Authentication; +import org.houxg.leamonax.model.BaseResponse; import org.houxg.leamonax.network.ApiProvider; +import org.houxg.leamonax.network.LeaFailure; import org.houxg.leamonax.service.AccountService; import org.houxg.leamonax.utils.ToastUtils; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; +import rx.Observable; import rx.Observer; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action0; +import rx.functions.Func1; import rx.schedulers.Schedulers; public class SignInActivity extends BaseActivity implements TextWatcher { @@ -43,14 +47,37 @@ public class SignInActivity extends BaseActivity implements TextWatcher { EditText mPasswordEt; @BindView(R.id.tv_sign_in) View mSignInBtn; + @BindView(R.id.tv_sign_up) + View mSignUpBtn; @BindView(R.id.tv_custom_host) TextView mCustomHostBtn; @BindView(R.id.et_custom_host) EditText mHostEt; @BindView(R.id.ll_action) View mActionPanel; - @BindView(R.id.progress) - ProgressBar mProgress; + @BindView(R.id.progress_sign_in) + ProgressBar mSignInProgress; + @BindView(R.id.progress_sign_up) + ProgressBar mSignUpProgress; + @BindView(R.id.rl_sign_up) + View mSignUpPanel; + + private Observer mSignInObserver = new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + + } + + @Override + public void onNext(Authentication authentication) { + + } + }; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -142,7 +169,7 @@ public class SignInActivity extends BaseActivity implements TextWatcher { mSignInBtn.post(new Runnable() { @Override public void run() { - animateSignInProgress(); + animateProgress(mSignInBtn, mSignInProgress); } }); } @@ -152,14 +179,14 @@ public class SignInActivity extends BaseActivity implements TextWatcher { .subscribe(new Observer() { @Override public void onCompleted() { - animateSignFinish(); + animateFinish(mSignInBtn, mSignInProgress); } @Override public void onError(Throwable e) { e.printStackTrace(); ToastUtils.showNetworkError(SignInActivity.this); - animateSignFinish(); + animateFinish(mSignInBtn, mSignInProgress); } @Override @@ -177,15 +204,82 @@ public class SignInActivity extends BaseActivity implements TextWatcher { }); } - private void animateSignInProgress() { - mSignInBtn.animate() + @OnClick(R.id.tv_sign_up) + void clickedSignup() { + final String email = mEmailEt.getText().toString(); + final String password = mPasswordEt.getText().toString(); + final String host = getHost(); + ApiProvider.getInstance().init(host); + AccountService.register(email, password) + .doOnSubscribe(new Action0() { + @Override + public void call() { + mSignUpBtn.post(new Runnable() { + @Override + public void run() { + animateProgress(mSignUpBtn, mSignUpProgress); + } + }); + } + }) + .flatMap(new Func1>() { + @Override + public Observable call(BaseResponse baseResponse) { + if (baseResponse.isOk()) { + return AccountService.login(email, password); + } else { + throw new LeaFailure(baseResponse); + } + } + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onCompleted() { + animateFinish(mSignUpBtn, mSignUpProgress); + } + + @Override + public void onError(Throwable e) { + e.printStackTrace(); + ToastUtils.showNetworkError(SignInActivity.this); + animateFinish(mSignUpBtn, mSignUpProgress); + } + + @Override + public void onNext(Authentication authentication) { + if (authentication.isOk()) { + AccountService.saveToAccount(authentication, host); + Intent intent = MainActivity.getOpenIntent(SignInActivity.this, true); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + finish(); + } else { + ToastUtils.show(SignInActivity.this, R.string.email_or_password_incorrect); + } + } + }); + } + + @OnClick(R.id.tv_sign_up) + void clickedSignUp() { + mSignUpPanel.animate() + .scaleX(1) + .setDuration(200) + .setInterpolator(new AccelerateDecelerateInterpolator()) + .start(); + } + + private void animateProgress(View button, final View progressBar) { + button.animate() .scaleX(0) .setDuration(200) .setInterpolator(new AccelerateDecelerateInterpolator()) .withEndAction(new Runnable() { @Override public void run() { - mProgress.animate() + progressBar.animate() .alpha(1) .setDuration(100) .setInterpolator(new AccelerateDecelerateInterpolator()) @@ -195,15 +289,15 @@ public class SignInActivity extends BaseActivity implements TextWatcher { .start(); } - private void animateSignFinish() { - mProgress.animate() + private void animateFinish(final View button, final View progressBar) { + progressBar.animate() .alpha(0) .setDuration(100) .setInterpolator(new AccelerateDecelerateInterpolator()) .withEndAction(new Runnable() { @Override public void run() { - mSignInBtn.animate() + button.animate() .scaleX(1) .setDuration(200) .setInterpolator(new AccelerateDecelerateInterpolator()) diff --git a/app/src/main/res/layout/activity_signin.xml b/app/src/main/res/layout/activity_signin.xml index 344b7f5..60e5e07 100644 --- a/app/src/main/res/layout/activity_signin.xml +++ b/app/src/main/res/layout/activity_signin.xml @@ -15,87 +15,108 @@ + style="@style/SignInEditText" + android:hint="@string/email" /> + android:inputType="textPassword" /> + android:scaleY="0" /> - - + android:orientation="horizontal" + android:paddingEnd="16dp" + android:paddingStart="16dp"> - + + + + + + + + + + + + + + + + + - + - + android:title="@string/edit"/> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ec16831..ef980d6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,7 +7,7 @@ save to server Revert Reverting - Edit + Edit Link Confirm Cancel @@ -59,4 +59,5 @@ License Version About + Preview diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2883830..6c43fcd 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -37,4 +37,16 @@ 8dp + +