From 9cafc18ad6f64eb82d2ae594fdd933cae8851879 Mon Sep 17 00:00:00 2001 From: Krocks Date: Mon, 17 Jul 2017 18:30:18 +0300 Subject: [PATCH] added timer for receiving and requesting sms --- .../fragments/signin/CodeInputFragment.java | 38 ++++++++++++++++--- .../main/res/layout/fragment_input_code.xml | 16 +++++++- app/src/main/res/values/strings.xml | 1 + 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/CodeInputFragment.java b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/CodeInputFragment.java index 24c2a9433c..72d2a88c71 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/CodeInputFragment.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/fragments/signin/CodeInputFragment.java @@ -1,9 +1,8 @@ package com.ninja.mobile.communicator.ui.fragments.signin; -import android.content.DialogInterface; import android.os.Bundle; +import android.os.CountDownTimer; import android.support.annotation.Nullable; -import android.support.v7.app.AlertDialog; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,7 +13,6 @@ import com.arellomobile.mvp.presenter.InjectPresenter; import com.ninja.mobile.communicator.R; import com.ninja.mobile.communicator.mvp.presenters.CodeInputPresenter; import com.ninja.mobile.communicator.mvp.view.CodeInputView; -import com.ninja.mobile.communicator.ui.activities.ProfileActivity; import com.ninja.mobile.communicator.ui.base.BaseFragment; import com.ninja.mobile.communicator.ui.views.HintEditText; import com.ninja.mobile.communicator.utils.PhoneWatcher; @@ -30,6 +28,9 @@ import butterknife.OnClick; */ public class CodeInputFragment extends BaseFragment implements CodeInputView { + private static final int SECOND = 1000; + private static final int TIME = 60 * SECOND; + private int timer; public static final String PHONE_TAG = "phone"; private final static String HINT_TEXT = "--- ---"; @@ -37,6 +38,7 @@ public class CodeInputFragment extends BaseFragment implements CodeInputView { @BindView(R.id.f_code_tv_repeat) TextView mNotReceivedText; @BindView(R.id.f_code_tv_phone) TextView mPhoneNumber; @BindView(R.id.f_code_edt_code) HintEditText mCodeText; + @BindView(R.id.f_code_tv_should_receive) TextView shouldReceive; @InjectPresenter CodeInputPresenter mCodeInputPresenter; @@ -55,7 +57,8 @@ public class CodeInputFragment extends BaseFragment implements CodeInputView { public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); setupUI(); - initSpannableTerms(); + initSpannableResend(); + initTimer(); } private void setupUI() { @@ -67,11 +70,34 @@ public class CodeInputFragment extends BaseFragment implements CodeInputView { mCodeText.setHintText(HINT_TEXT); } - private void initSpannableTerms() { - View.OnClickListener onClickListener = v -> mCodeInputPresenter.onResendClick(); + private void initSpannableResend() { + View.OnClickListener onClickListener = v -> { + mCodeInputPresenter.onResendClick(); + initTimer(); + }; SpannableUtils.setSpannable(getActivity(), mNotReceivedText, R.string.signin_text_have_not_received, R.string.signin_text_have_not_received, onClickListener); } + private void initTimer(){ + mNotReceivedText.setEnabled(false); + mNotReceivedText.setText(R.string.signin_text_have_not_received); + shouldReceive.setVisibility(View.VISIBLE); + timer = TIME; + new CountDownTimer(TIME, 1000) { + + public void onTick(long millisUntilFinished) { + timer = timer - SECOND; + shouldReceive.setText(getString(R.string.signin_text_should_receive, timer/SECOND)); + } + + public void onFinish() { + shouldReceive.setVisibility(View.GONE); + mNotReceivedText.setEnabled(true); + initSpannableResend(); + } + }.start(); + } + @OnClick(R.id.f_code_btn_next) public void onNextClick() { mCodeInputPresenter.onConfirmClick(StringUtils.getText(mPhoneNumber), StringUtils.getText(mCodeText)); diff --git a/app/src/main/res/layout/fragment_input_code.xml b/app/src/main/res/layout/fragment_input_code.xml index 31f23e7807..a0ac0566c0 100644 --- a/app/src/main/res/layout/fragment_input_code.xml +++ b/app/src/main/res/layout/fragment_input_code.xml @@ -115,6 +115,20 @@ app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/f_code_view_2" /> + + + app:layout_constraintTop_toBottomOf="@+id/f_code_tv_should_receive" /> terms of service Haven`t received the code? We`ve sent a code to your phone. + You should receive it within %d seconds How would you like to be called? First Name\u002A Last Name -- GitLab