From 80eb92f1df8948d1404aeb099dacbb1b8e6677b5 Mon Sep 17 00:00:00 2001 From: BoykoDmytro Date: Fri, 7 Jul 2017 14:35:17 +0300 Subject: [PATCH] fixed code input UI bugs, fixed logic for auth with server. --- .../mobile/communicator/data/DataManager.java | 38 +++++++++------- .../communicator/data/models/mqtt/Auth.java | 18 +++++--- .../communicator/data/models/mqtt/Io.java | 11 +++++ .../data/models/mqtt/ResendSms.java | 36 --------------- .../communicator/data/models/mqtt/Verify.java | 37 ---------------- .../data/models/mqtt/VerifyAccount.java | 43 ------------------ .../communicator/data/server/PahoService.java | 44 +++---------------- .../communicator/data/server/Topics.java | 8 ++-- .../mvp/presenters/LoginPresenter.java | 25 ++++++----- .../ui/activities/RegistrationActivity.java | 9 ++-- .../fragments/signin/CodeInputFragment.java | 21 +++++++-- .../communicator/ui/views/HintEditText.java | 3 +- .../communicator/utils/ValidationUtils.java | 2 +- .../main/res/layout/fragment_input_code.xml | 26 ++++++----- 14 files changed, 109 insertions(+), 212 deletions(-) delete mode 100644 app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/ResendSms.java delete mode 100644 app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Verify.java delete mode 100644 app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/VerifyAccount.java diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java b/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java index 5585445a35..936260077a 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/DataManager.java @@ -1,6 +1,7 @@ package com.ninja.mobile.communicator.data; import android.content.Context; +import android.provider.Settings; import com.github.pwittchen.reactivenetwork.library.rx2.ReactiveNetwork; import com.ninja.mobile.communicator.data.db.PreferenceHelper; @@ -12,11 +13,8 @@ import com.ninja.mobile.communicator.data.models.events.ServerData; import com.ninja.mobile.communicator.data.models.mqtt.Auth; import com.ninja.mobile.communicator.data.models.mqtt.DeleteUser; import com.ninja.mobile.communicator.data.models.mqtt.Person; -import com.ninja.mobile.communicator.data.models.mqtt.ResendSms; import com.ninja.mobile.communicator.data.models.mqtt.Token; import com.ninja.mobile.communicator.data.models.mqtt.TokenResponse; -import com.ninja.mobile.communicator.data.models.mqtt.Verify; -import com.ninja.mobile.communicator.data.models.mqtt.VerifyAccount; import com.ninja.mobile.communicator.data.server.bert.BertDecoder; import com.ninja.mobile.communicator.data.server.bert.BertTuple; import com.ninja.mobile.communicator.injection.ApplicationContext; @@ -49,6 +47,7 @@ public class DataManager { private final RxBus mBus; private Token mToken; private String DEFAULT_CLIENT_ID; + private String devKey; private PreferenceHelper mPreferenceHelper; public boolean isNetworkAvailable; @@ -61,7 +60,7 @@ public class DataManager { //TODO debug empty client id DEFAULT_CLIENT_ID = "emqttd_" + System.currentTimeMillis(); - //DEFAULT_CLIENT_ID = "emqttd_" + Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID); + devKey = Settings.Secure.getString(mContext.getContentResolver(), Settings.Secure.ANDROID_ID); ReactiveNetwork.observeInternetConnectivity() .subscribeOn(Schedulers.io()) @@ -103,10 +102,13 @@ public class DataManager { private void tryToSaveToken(ServerData serverData) { try { BertDecoder bertDecoder = BertDecoder.setupDecoder().withDecodeAtomAsString(true); - BertTuple bertTuple = (BertTuple) bertDecoder.decodeAny(serverData.getData().getPayload()); - TokenResponse tokenResponse = new TokenResponse().decode(bertTuple); - mPreferenceHelper.saveToken(tokenResponse.mToken); - mToken = tokenResponse.mToken; + Object object = bertDecoder.decodeAny(serverData.getData().getPayload()); + if (object instanceof BertTuple) { + BertTuple bertTuple = (BertTuple) object; + TokenResponse tokenResponse = new TokenResponse().decode(bertTuple); + mPreferenceHelper.saveToken(tokenResponse.mToken); + mToken = tokenResponse.mToken; + } } catch (Exception e) { Timber.e(e); } @@ -123,24 +125,30 @@ public class DataManager { //AUTH public void requestSms(String phone) { Auth auth = new Auth(); - auth.phone = phone; + auth.phone = phone.replaceAll(" ", ""); + auth.clientId = DEFAULT_CLIENT_ID; + auth.dev_key = devKey; mBus.postToServer(new SendMessage(EventTopics.LOGIN, auth)); } public void resendSms() { Token token = mPreferenceHelper.getToken(); if (token.isValid()) { - ResendSms resendSms = new ResendSms(token); - mBus.postToServer(new SendMessage(EventTopics.RESEND_MESSAGE, resendSms)); + Auth auth = new Auth(); + auth.token = getToken(); + auth.type = Auth.Types.RESEND_SMS; + mBus.postToServer(new SendMessage(EventTopics.RESEND_MESSAGE, auth)); } } public void confirmSms(String smsCode) { Token token = mPreferenceHelper.getToken(); if (token.isValid()) { - Verify verify = new Verify(smsCode); - VerifyAccount verifyAccount = new VerifyAccount(verify, token); - mBus.postToServer(new SendMessage(EventTopics.CONFIRM_ACCOUNT, verifyAccount)); + Auth auth = new Auth(); + auth.token = getToken(); + auth.type = Auth.Types.VERIFY; + auth.sms_code = smsCode; + mBus.postToServer(new SendMessage(EventTopics.CONFIRM_ACCOUNT, auth)); } } @@ -154,7 +162,7 @@ public class DataManager { } //Contacts - public List getContactsFromPhone(){ + public List getContactsFromPhone() { return ContactsUtil.getContacts(mContext); } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java index e54e061a06..0ff0daaa9b 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Auth.java @@ -7,13 +7,14 @@ import java.util.List; public class Auth extends BaseModelMQQT { - public String token; + public String dev_key; public String user_id; public String phone; - public String dev_key; + public String token; + public String clientId; public String type; public String sms_code; - public long attempts; + public Long attempts; public String services; @Override public Auth decode(BertTuple mqttMessage) { @@ -23,14 +24,21 @@ public class Auth extends BaseModelMQQT { @Override public List encode() { List list = new BertTuple(); list.add(name); - list.add(token); + list.add(dev_key); list.add(user_id); list.add(phone); - list.add(dev_key); + list.add(token); + list.add(clientId); list.add(type); list.add(sms_code); list.add(attempts); list.add(services); return list; } + + public interface Types { + + String RESEND_SMS = "resend_sms"; + String VERIFY = "verify"; + } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java index 7fe2028680..d725d6a995 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Io.java @@ -53,5 +53,16 @@ public class Io extends BaseModelMQQT { return ""; } + public interface Types { + String LOGIN = "login"; + String SMS_SEND = "sms_send"; + String NOT_VERIFIED = "not_verified"; + String MISMATCH_USER_DATA = "mismatch_user_data"; + String ERROR = "Error"; + String ATTEMPTS_EXPIRED = "attempts_expired"; + String ROSTER_NOT_FOUND = "roster_not_found"; + String INVALID_SMS_CODE = "invalid_sms_code"; + String SESSION_NOT_FOUND = "session_not_found"; + } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/ResendSms.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/ResendSms.java deleted file mode 100644 index afca70f131..0000000000 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/ResendSms.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.ninja.mobile.communicator.data.models.mqtt; - - -import com.ninja.mobile.communicator.data.server.bert.BertTuple; - -import java.util.List; - -/** - * Created by dmitro.boiko on 04/07/2017. - */ - -public class ResendSms extends BaseModelMQQT { - - public Token token; - - public ResendSms(Token token) { - this.token = token; - } - - @Override protected String name() { - return "resend_sms"; - } - - @Override public ResendSms decode(BertTuple bertTuple) { - return null; - } - - @Override public List encode() { - return new BertTuple() {{ - add(name); - BertTuple objects = new BertTuple(); - objects.addAll(token.encode()); - add(objects); - }}; - } -} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Verify.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Verify.java deleted file mode 100644 index d074676b11..0000000000 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/Verify.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.ninja.mobile.communicator.data.models.mqtt; - - -import com.ninja.mobile.communicator.data.server.bert.BertTuple; - -import java.util.ArrayList; -import java.util.List; - -/** - * Created by dmitro.boiko on 04/07/2017. - */ - -public class Verify extends BaseModelMQQT { - - public String smsCode; - - public Verify(String smsCode) { - this.smsCode = smsCode; - } - - @Override protected String name() { - return "verify"; - } - - @Override public Verify decode(BertTuple bertTuple) { - return null; - } - - @Override public List encode() { - return new ArrayList() { - { - add(name); - add(smsCode); - } - }; - } -} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/VerifyAccount.java b/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/VerifyAccount.java deleted file mode 100644 index fa88aaf8ad..0000000000 --- a/app/src/main/java/com/ninja/mobile/communicator/data/models/mqtt/VerifyAccount.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.ninja.mobile.communicator.data.models.mqtt; - - -import com.ninja.mobile.communicator.data.server.bert.BertTuple; - -import java.util.List; - -/** - * Created by dmitro.boiko on 04/07/2017. - */ - -public class VerifyAccount extends BaseModelMQQT { - - public Verify verify; - public Token token; - - public VerifyAccount(Verify verify, Token token) { - this.verify = verify; - this.token = token; - } - - @Override protected String name() { - return super.name(); - } - - @Override public VerifyAccount decode(BertTuple bertTuple) { - return null; - } - - @Override public List encode() { - BertTuple account = new BertTuple(); - - BertTuple verifyTuple = new BertTuple(); - verifyTuple.addAll(verify.encode()); - account.add(verifyTuple); - - BertTuple tokenTuple = new BertTuple(); - tokenTuple.addAll(token.encode()); - account.add(tokenTuple); - - return account; - } -} diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java index c8401d07bc..883f05ff33 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/PahoService.java @@ -17,13 +17,7 @@ import com.ninja.mobile.communicator.data.models.events.SendMessage; import com.ninja.mobile.communicator.data.models.events.ServerData; import com.ninja.mobile.communicator.data.models.events.SubscribeData; import com.ninja.mobile.communicator.data.models.events.SubscribeMessage; -import com.ninja.mobile.communicator.data.models.mqtt.Auth; -import com.ninja.mobile.communicator.data.models.mqtt.DeleteUser; import com.ninja.mobile.communicator.data.models.mqtt.InitModel; -import com.ninja.mobile.communicator.data.models.mqtt.ResendSms; -import com.ninja.mobile.communicator.data.models.mqtt.Token; -import com.ninja.mobile.communicator.data.models.mqtt.Verify; -import com.ninja.mobile.communicator.data.models.mqtt.VerifyAccount; import com.ninja.mobile.communicator.data.server.bert.BertDecoder; import com.ninja.mobile.communicator.data.server.bert.BertEncoder; import com.ninja.mobile.communicator.data.server.bert.BertTuple; @@ -51,7 +45,7 @@ import timber.log.Timber; public class PahoService extends Service { - private static final String SERVER_URL = "tcp://ns.synrc.com:1883"; //1883 default port for mqtt + private static final String SERVER_URL = "tcp://ns.synrc.com:8083"; //1883 default port for mqtt private static final String USERNAME_TO_API = "api"; private MqttAndroidClient mServerClient; @@ -98,12 +92,12 @@ public class PahoService extends Service { private void listenOutputMessage() { mDisposable = mBus.subscribeToOutput(data -> { - //// FIXME: 05/07/2017 add subscribe if (mDataManager.isNetworkAvailable) { if (data instanceof SendMessage) { SendMessage sendMessage = (SendMessage) data; PostData postData = sendMessage.getData(); - PahoService.this.publishMessage(sendMessage.getData().eventTopic.ordinal()+1, getAuthTopic(), postData.data.encode()); + publishMessageTest(sendMessage.getData().eventTopic.name(), postData.data.encode()); + PahoService.this.publishMessage(sendMessage.getData().eventTopic.ordinal(), getAuthTopic(), postData.data.encode()); } else if (data instanceof SubscribeMessage) { SubscribeMessage subscribeMessage = (SubscribeMessage) data; SubscribeData subscribeData = subscribeMessage.getData(); @@ -115,7 +109,7 @@ public class PahoService extends Service { }); } - private String getAuthTopic() {return Topics.getAuthTopic(maxNode, mDataManager.getClientId(), mDataManager.getToken());} + private String getAuthTopic() {return Topics.getAuthTopic(mDataManager.getClientId(), mDataManager.getToken());} private void connectToServer() { try { @@ -222,37 +216,9 @@ public class PahoService extends Service { } //TEST - public void testAllAuthReuqest() { - String smsCode = "1234"; - Token token = new Token(); - String phone = "380632889890"; - token.data = "123324t5y6tu7iyul,mvghcfg"; - if (maxNode == -1) { - maxNode = 4; - } - - //requestSms - Auth auth = new Auth(); - auth.phone = phone; - publishMessageTest(getAuthTopic(), auth.encode()); - - //resendSms - ResendSms resendSms = new ResendSms(token); - publishMessageTest(getAuthTopic(), resendSms.encode()); - - //confirmSms - Verify verify = new Verify(smsCode); - VerifyAccount verifyAccount = new VerifyAccount(verify, token); - publishMessageTest(getAuthTopic(), verifyAccount.encode()); - - // deleteUser - DeleteUser deleteUser = new DeleteUser(phone); - publishMessageTest(getAuthTopic(), deleteUser.encode()); - } - private void publishMessageTest(String topic, Object object) { MqttMessage message = new MqttMessage(encode(object)); byte[] payload = message.getPayload(); - Log.d("Test", ServerTestHelper.convertToString(payload)); + Log.e("Test", topic + " erl: " + ServerTestHelper.convertToString(payload)); } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/data/server/Topics.java b/app/src/main/java/com/ninja/mobile/communicator/data/server/Topics.java index 41375b72b0..be78a7b570 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/data/server/Topics.java +++ b/app/src/main/java/com/ninja/mobile/communicator/data/server/Topics.java @@ -3,15 +3,13 @@ package com.ninja.mobile.communicator.data.server; import android.support.annotation.NonNull; import java.util.Locale; -import java.util.Random; public class Topics { - private final static String AUTH_TOPIC = "events/%d/api/anon/%s/%s"; + private final static String AUTH_TOPIC = "events//api/anon/%s/%s"; private final static String ACTIONS_API_CLIENT_ID = "actions/api/%s"; - public static String getAuthTopic(int node, @NonNull String clientId, @NonNull String token) { - int nextInt = new Random().nextInt(node); - return String.format(Locale.getDefault(), AUTH_TOPIC, nextInt + 1, clientId, token); + public static String getAuthTopic( @NonNull String clientId, @NonNull String token) { + return String.format(Locale.getDefault(), AUTH_TOPIC, clientId, token); } public static String getAction(String clientId) { diff --git a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java index e10e99dc09..5ed0289909 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java +++ b/app/src/main/java/com/ninja/mobile/communicator/mvp/presenters/LoginPresenter.java @@ -1,8 +1,11 @@ package com.ninja.mobile.communicator.mvp.presenters; +import android.os.Bundle; + import com.arellomobile.mvp.InjectViewState; import com.ninja.mobile.communicator.data.CountryHelper; import com.ninja.mobile.communicator.data.models.events.ServerData; +import com.ninja.mobile.communicator.data.models.mqtt.Io; import com.ninja.mobile.communicator.data.models.mqtt.TokenResponse; import com.ninja.mobile.communicator.data.server.Topics; import com.ninja.mobile.communicator.data.server.bert.BertDecoder; @@ -69,7 +72,11 @@ public class LoginPresenter extends BasePresenter { mDataManager.requestSms(String.format("%s%s", mCode, mPhone)); } - private void navigateToCodeScreen() {mRouter.replaceScreen(CodeInputFragment.class.getSimpleName());} + private void navigateToCodeScreen() { + Bundle bundle = new Bundle(); + bundle.putString(CodeInputFragment.PHONE_TAG, String.format("+%s%s", mCode, mPhone)); + mRouter.replaceScreen(CodeInputFragment.class.getSimpleName(), bundle); + } public void setCodeObservable(Observable observable) { addDisposable(observable.subscribe(code -> { @@ -157,12 +164,11 @@ public class LoginPresenter extends BasePresenter { TokenResponse tokenResponse = new TokenResponse().decode(bertTuple); if (tokenResponse.mIo.isSuccess()) { switch (tokenResponse.mIo.getStatus()) { - case "login": + case Io.Types.LOGIN: navigateToMainScreen(); break; - case "send_sms": - case "sms_sent_successfully": + case Io.Types.SMS_SEND: navigateToCodeScreen(); break; default: @@ -170,17 +176,12 @@ public class LoginPresenter extends BasePresenter { } } else { switch (tokenResponse.mIo.getStatus()) { - case "not_verified": + case Io.Types.NOT_VERIFIED: mDataManager.resendSms(); break; - case "sms_send": - break; - - case "mismatch_user_data": - break; - - case "Error": + case Io.Types.MISMATCH_USER_DATA: + case Io.Types.ERROR: break; } } diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/activities/RegistrationActivity.java b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/RegistrationActivity.java index f720ff1ed5..ba2f0f629d 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/activities/RegistrationActivity.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/activities/RegistrationActivity.java @@ -44,17 +44,18 @@ public class RegistrationActivity extends BaseActivity { private void handleCommand(Command command) { if (command instanceof Replace) { BaseFragment fragment; - if (LoginFragment.class.getSimpleName().equalsIgnoreCase(((Replace) command).getScreenKey())) { + Replace replace = (Replace) command; + if (LoginFragment.class.getSimpleName().equalsIgnoreCase(replace.getScreenKey())) { fragment = LoginFragment.newInstance(); } else { - fragment = CodeInputFragment.newInstance(); + Object transitionData = replace.getTransitionData(); + fragment = CodeInputFragment.newInstance((Bundle) transitionData); } getSupportFragmentManager() .beginTransaction() .replace(android.R.id.content, fragment) .commit(); - } - else if (command instanceof Forward){ + } else if (command instanceof Forward) { startActivity(MainActivity.getLaunchIntent(this)); } } 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 8de389b7d1..44d8593e5b 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 @@ -31,13 +31,18 @@ import butterknife.OnClick; public class CodeInputFragment extends BaseFragment implements CodeInputView { + public static final String PHONE_TAG = "phone"; + @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; @InjectPresenter CodeInputPresenter mCodeInputPresenter; - public static CodeInputFragment newInstance() { - return new CodeInputFragment(); + public static CodeInputFragment newInstance(Bundle bundle) { + CodeInputFragment codeInputFragment = new CodeInputFragment(); + codeInputFragment.setArguments(bundle); + return codeInputFragment; } @Nullable @Override @@ -48,11 +53,19 @@ public class CodeInputFragment extends BaseFragment implements CodeInputView { @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - mCodeText.addTextChangedListener(new PhoneWatcher(mCodeText)); - mCodeText.setHintText("XXX XXX XXX".replace('X', '-')); + setupUI(); initSpannableTerms(); } + private void setupUI() { + Bundle arguments = getArguments(); + if (arguments != null) { + mPhoneNumber.setText(arguments.getString(PHONE_TAG)); + } + mCodeText.addTextChangedListener(new PhoneWatcher(mCodeText)); + mCodeText.setHintText("___ ___"); + } + private void initSpannableTerms() { View.OnClickListener onClickListener = v -> mCodeInputPresenter.onResendClick(); SpannableUtils.setSpannable(getActivity(), mNotReceivedText, R.string.signin_text_have_not_received, R.string.signin_text_have_not_received, onClickListener); diff --git a/app/src/main/java/com/ninja/mobile/communicator/ui/views/HintEditText.java b/app/src/main/java/com/ninja/mobile/communicator/ui/views/HintEditText.java index 4b0ca4fbe1..383fec64a9 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/ui/views/HintEditText.java +++ b/app/src/main/java/com/ninja/mobile/communicator/ui/views/HintEditText.java @@ -6,6 +6,7 @@ import android.graphics.Paint; import android.graphics.Rect; import android.os.Build; import android.support.annotation.RequiresApi; +import android.support.v4.content.ContextCompat; import android.util.AttributeSet; import android.widget.EditText; @@ -49,7 +50,7 @@ public class HintEditText extends EditText { private void init() { mPaint = new Paint(); - mPaint.setColor(getContext().getResources().getColor(R.color.colorAccent)); + mPaint.setColor(ContextCompat.getColor(getContext(), R.color.colorAccent)); } public String getHintText() { diff --git a/app/src/main/java/com/ninja/mobile/communicator/utils/ValidationUtils.java b/app/src/main/java/com/ninja/mobile/communicator/utils/ValidationUtils.java index a2f6f072e9..3de8506314 100644 --- a/app/src/main/java/com/ninja/mobile/communicator/utils/ValidationUtils.java +++ b/app/src/main/java/com/ninja/mobile/communicator/utils/ValidationUtils.java @@ -21,6 +21,6 @@ public class ValidationUtils { } public static boolean isCodeValid(String code) { - return StringUtils.isNotEmpty(code) && code.length() == 6; + return StringUtils.isNotEmpty(code) && code.length() == 7; } } diff --git a/app/src/main/res/layout/fragment_input_code.xml b/app/src/main/res/layout/fragment_input_code.xml index 0344a9ec92..5026f8070f 100644 --- a/app/src/main/res/layout/fragment_input_code.xml +++ b/app/src/main/res/layout/fragment_input_code.xml @@ -74,26 +74,32 @@ app:layout_constraintVertical_bias="0.5" tools:text="+380 50 500 5050" /> - + app:layout_constraintHorizontal_bias="0.5" + app:layout_constraintBottom_toBottomOf="@+id/f_code_img_lock" + android:layout_marginBottom="0dp" />