Browse Source

Login and register module revamped

master
preyearegmi 6 years ago
parent
commit
796daa81e2
  1. BIN
      .idea/caches/build_file_checksums.ser
  2. 9
      app/src/main/AndroidManifest.xml
  3. 12
      app/src/main/java/com/gmeremit/online/gmeremittance_native/GmeApplication.java
  4. 11
      app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java
  5. 4
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/gateway/RegisterV2Gateway.java
  6. 53
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/model/RegisterApiResponse.java
  7. 3
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2InteractorInterface.java
  8. 32
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2Presenter.java
  9. 15
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2PresenterInterface.java
  10. 55
      app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/view/RegisterV2Activity.java
  11. 32
      app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/gateway/ResetPassV2Gateway.java
  12. 53
      app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/model/ResetApiResponse.java
  13. 16
      app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/presenter/ResetPassV2InteractorInterface.java
  14. 82
      app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/presenter/ResetPassV2Presenter.java
  15. 19
      app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/presenter/ResetPassV2PresenterInterface.java
  16. 114
      app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/view/ResetPassV2Activity.java
  17. 6
      app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/SplashScreen.java
  18. 1
      app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java
  19. 8
      app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java
  20. 6
      app/src/main/res/layout/activity_login_v2.xml
  21. 50
      app/src/main/res/layout/activity_register_v2.xml
  22. 137
      app/src/main/res/layout/activity_reset_pass_v2.xml

BIN
.idea/caches/build_file_checksums.ser

9
app/src/main/AndroidManifest.xml

@ -502,11 +502,16 @@
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar" android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden" /> android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".registerV2.view.RegisterV2Activity"
<activity
android:name=".registerV2.view.RegisterV2Activity"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".resetpassV2.view.ResetPassV2Activity"
android:screenOrientation="portrait" android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar" android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden" android:windowSoftInputMode="stateAlwaysHidden"
></activity>
/>
</application> </application>
</manifest> </manifest>

12
app/src/main/java/com/gmeremit/online/gmeremittance_native/GmeApplication.java

@ -19,9 +19,6 @@ import com.zxy.tiny.Tiny;
import io.fabric.sdk.android.Fabric; import io.fabric.sdk.android.Fabric;
/**
* Created by frantic on 2/22/18.
*/
public class GmeApplication extends Application { public class GmeApplication extends Application {
@ -46,14 +43,7 @@ public class GmeApplication extends Application {
gmeSharedPreferences= this.getSharedPreferences("GME", Context.MODE_PRIVATE); gmeSharedPreferences= this.getSharedPreferences("GME", Context.MODE_PRIVATE);
/* if(Build.VERSION.SDK_INT>=24){
try{
Method m = StrictMode.class.getMethod("disableDeathOnFileUriExposure");
m.invoke(null);
}catch(Exception e){
e.printStackTrace();
}
}*/
} }
@Override @Override

11
app/src/main/java/com/gmeremit/online/gmeremittance_native/loginV2/view/LoginV2Activity.java

@ -15,6 +15,7 @@ import com.gmeremit.online.gmeremittance_native.home.view.HomeActivity;
import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2Presenter; import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2Presenter;
import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2PresenterInterface; import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2PresenterInterface;
import com.gmeremit.online.gmeremittance_native.registerV2.view.RegisterV2Activity; import com.gmeremit.online.gmeremittance_native.registerV2.view.RegisterV2Activity;
import com.gmeremit.online.gmeremittance_native.resetpassV2.view.ResetPassV2Activity;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
@ -82,20 +83,20 @@ public class LoginV2Activity extends BaseActivity implements View.OnClickListene
public void onClick(View v) { public void onClick(View v) {
switch (v.getId()) { switch (v.getId()) {
case R.id.register: case R.id.register:
Intent intent = new Intent(this, RegisterV2Activity.class);
startActivity(intent);
Intent registerIntent = new Intent(this, RegisterV2Activity.class);
startActivity(registerIntent);
finish(); finish();
break; break;
case R.id.btn_submit: case R.id.btn_submit:
if(presenter.validateUserId(usernameId.getText().toString())) if(presenter.validateUserId(usernameId.getText().toString()))
{
presenter.loginUser(usernameId.getText().toString(),passwordId.getText().toString()); presenter.loginUser(usernameId.getText().toString(),passwordId.getText().toString());
}
break; break;
case R.id.tv_forgotpass: case R.id.tv_forgotpass:
Intent forgetPassIntent = new Intent(this, ResetPassV2Activity.class);
startActivity(forgetPassIntent);
finish();
break; break;
} }

4
app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/gateway/RegisterV2Gateway.java

@ -5,6 +5,7 @@ import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2Interac
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.AddRecipientApiResponse; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.AddRecipientApiResponse;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.GetAllRecipientApiResponse; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.GetAllRecipientApiResponse;
import com.gmeremit.online.gmeremittance_native.recipientV2.presenter.recipientlisting.RecipientListingV2InteractorInterface; import com.gmeremit.online.gmeremittance_native.recipientV2.presenter.recipientlisting.RecipientListingV2InteractorInterface;
import com.gmeremit.online.gmeremittance_native.registerV2.model.RegisterApiResponse;
import com.gmeremit.online.gmeremittance_native.registerV2.presenter.RegisterV2InteractorInterface; import com.gmeremit.online.gmeremittance_native.registerV2.presenter.RegisterV2InteractorInterface;
import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2; import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@ -24,12 +25,13 @@ public class RegisterV2Gateway extends PrivilegedGateway implements RegisterV2In
} }
@Override @Override
public Observable<ResponseBody> registerUser(String auth, String userName, String password, String clientId, String fcmId, String appVersion, String phoneBrand, String phoneOs, String deviceId, String osVersion) {
public Observable<RegisterApiResponse> registerUser(String auth, String userName, String password,String dob, String clientId, String fcmId, String appVersion, String phoneBrand, String phoneOs, String deviceId, String osVersion) {
JsonObject jsonObject=new JsonObject(); JsonObject jsonObject=new JsonObject();
jsonObject.addProperty("username",userName); jsonObject.addProperty("username",userName);
jsonObject.addProperty("password",password); jsonObject.addProperty("password",password);
jsonObject.addProperty("dob",dob);
jsonObject.addProperty("clientId",clientId); jsonObject.addProperty("clientId",clientId);
jsonObject.addProperty("uuid",deviceId); jsonObject.addProperty("uuid",deviceId);
jsonObject.addProperty("appVersion",appVersion); jsonObject.addProperty("appVersion",appVersion);

53
app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/model/RegisterApiResponse.java

@ -0,0 +1,53 @@
package com.gmeremit.online.gmeremittance_native.registerV2.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class RegisterApiResponse {
@SerializedName("ErrorCode")
@Expose
private String errorCode;
@SerializedName("Msg")
@Expose
private String msg;
@SerializedName("Id")
@Expose
private String id;
@SerializedName("Data")
@Expose
private Object data;
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}

3
app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2InteractorInterface.java

@ -4,6 +4,7 @@ import com.gmeremit.online.gmeremittance_native.base.BaseInteractorInterface;
import com.gmeremit.online.gmeremittance_native.base.PrivilegedGatewayInterface; import com.gmeremit.online.gmeremittance_native.base.PrivilegedGatewayInterface;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.AddRecipientApiResponse; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.AddRecipientApiResponse;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RecipientRelatedDataApiResponse; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RecipientRelatedDataApiResponse;
import com.gmeremit.online.gmeremittance_native.registerV2.model.RegisterApiResponse;
import io.reactivex.Observable; import io.reactivex.Observable;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
@ -14,6 +15,6 @@ public interface RegisterV2InteractorInterface extends BaseInteractorInterface {
interface Register2GatewayInterface extends PrivilegedGatewayInterface interface Register2GatewayInterface extends PrivilegedGatewayInterface
{ {
Observable<ResponseBody> registerUser(String auth,String userName, String password, String clientId,String fcmId, String appVersion,String phoneBrand,String phoneOs,String deviceId,String osVersion);
Observable<RegisterApiResponse> registerUser(String auth, String userName, String password,String dob, String clientId, String fcmId, String appVersion, String phoneBrand, String phoneOs, String deviceId, String osVersion);
} }
} }

32
app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2Presenter.java

@ -2,7 +2,10 @@ package com.gmeremit.online.gmeremittance_native.registerV2.presenter;
import com.gmeremit.online.gmeremittance_native.GmeApplication; import com.gmeremit.online.gmeremittance_native.GmeApplication;
import com.gmeremit.online.gmeremittance_native.base.BasePresenter; import com.gmeremit.online.gmeremittance_native.base.BasePresenter;
import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog;
import com.gmeremit.online.gmeremittance_native.registerV2.gateway.RegisterV2Gateway; import com.gmeremit.online.gmeremittance_native.registerV2.gateway.RegisterV2Gateway;
import com.gmeremit.online.gmeremittance_native.registerV2.model.RegisterApiResponse;
import com.gmeremit.online.gmeremittance_native.utils.Constants;
import com.gmeremit.online.gmeremittance_native.utils.Utils; import com.gmeremit.online.gmeremittance_native.utils.Utils;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse; import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse;
import com.google.firebase.iid.FirebaseInstanceId; import com.google.firebase.iid.FirebaseInstanceId;
@ -10,7 +13,6 @@ import com.google.firebase.iid.FirebaseInstanceId;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody;
public class RegisterV2Presenter extends BasePresenter implements RegisterV2PresenterInterface, RegisterV2InteractorInterface { public class RegisterV2Presenter extends BasePresenter implements RegisterV2PresenterInterface, RegisterV2InteractorInterface {
@ -32,11 +34,14 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres
this.view.setConfirmPasswordError("Confirm password doesnot match."); this.view.setConfirmPasswordError("Confirm password doesnot match.");
return false; return false;
} }
view.setConfirmPasswordError(null);
view.setPasswordError(null);
view.setUserIdError(null);
return true; return true;
} }
@Override @Override
public void registerUser(String userId, String password) {
public void registerUser(String userId, String password, String dob) {
String auth = "Basic " + Utils.toBase64("172017F9EC11222E8107142733:QRK2UM0Q:" + GmeApplication.getAppRelatedMetaData().getDeviceId()); String auth = "Basic " + Utils.toBase64("172017F9EC11222E8107142733:QRK2UM0Q:" + GmeApplication.getAppRelatedMetaData().getDeviceId());
String fcmID = FirebaseInstanceId.getInstance().getToken(); String fcmID = FirebaseInstanceId.getInstance().getToken();
if (fcmID == null) if (fcmID == null)
@ -46,6 +51,7 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres
auth, auth,
userId, userId,
password, password,
dob,
"172017F9EC11222E8107142733", "172017F9EC11222E8107142733",
fcmID, fcmID,
GmeApplication.getAppRelatedMetaData().getAppVersion(), GmeApplication.getAppRelatedMetaData().getAppVersion(),
@ -53,12 +59,21 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres
GmeApplication.getAppRelatedMetaData().getOsName(), GmeApplication.getAppRelatedMetaData().getOsName(),
GmeApplication.getAppRelatedMetaData().getDeviceId(), GmeApplication.getAppRelatedMetaData().getDeviceId(),
GmeApplication.getAppRelatedMetaData().getOsVersion()) GmeApplication.getAppRelatedMetaData().getOsVersion())
.doOnSubscribe(d->view.showProgressBar(true,"Registering user..."))
.doFinally(()->view.showProgressBar(false,""))
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new RegistrationObserver()) .subscribeWith(new RegistrationObserver())
); );
} }
@Override
public boolean validateDob(String dobString) {
view.setDobError(null);
return true;
}
@Override @Override
public void onViewDestroyed() { public void onViewDestroyed() {
super.onViewDestroyed(); super.onViewDestroyed();
@ -68,21 +83,24 @@ public class RegisterV2Presenter extends BasePresenter implements RegisterV2Pres
} }
} }
public class RegistrationObserver extends GenericApiObserverResponse<ResponseBody> {
public class RegistrationObserver extends GenericApiObserverResponse<RegisterApiResponse> {
@Override @Override
protected void onSuccess(ResponseBody responseBody) {
protected void onSuccess(RegisterApiResponse responseBody) {
if(responseBody.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2))
view.showPopUpMessage(responseBody.getMsg(), CustomAlertDialog.AlertType.SUCCESS,alertType->view.redirectToLogin());
else
view.showPopUpMessage(responseBody.getMsg(), CustomAlertDialog.AlertType.FAILED,null);
} }
@Override @Override
public void onFailed(String message) { public void onFailed(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED,null);
} }
@Override @Override
protected void onConnectionNotEstablished(String message) { protected void onConnectionNotEstablished(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED,null);
} }
} }
} }

15
app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/presenter/RegisterV2PresenterInterface.java

@ -2,26 +2,25 @@ package com.gmeremit.online.gmeremittance_native.registerV2.presenter;
import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface; import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface;
import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface; import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.CountryDetailModel;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.DistrictDetailModel;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.ProvinceDetailModel;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RecipientRelatedModel;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RelationDetailModel;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.TransferDetailModel;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.RecipientInfoModel;
public interface RegisterV2PresenterInterface extends BasePresenterInterface { public interface RegisterV2PresenterInterface extends BasePresenterInterface {
boolean validatePasswords(String pwdString, String pwdConfrimString); boolean validatePasswords(String pwdString, String pwdConfrimString);
void registerUser(String userId, String password);
void registerUser(String userId, String password, String dob);
boolean validateDob(String dobString);
interface RegisterV2ContractInterface extends BaseContractInterface { interface RegisterV2ContractInterface extends BaseContractInterface {
void setConfirmPasswordError(String error); void setConfirmPasswordError(String error);
void setPasswordError(String error); void setPasswordError(String error);
void setDobError(String error);
void setUserIdError(String error); void setUserIdError(String error);
void redirectToLogin();
} }
} }

55
app/src/main/java/com/gmeremit/online/gmeremittance_native/registerV2/view/RegisterV2Activity.java

@ -1,9 +1,11 @@
package com.gmeremit.online.gmeremittance_native.registerV2.view; package com.gmeremit.online.gmeremittance_native.registerV2.view;
import android.app.DatePickerDialog;
import android.content.Intent; import android.content.Intent;
import android.support.design.widget.TextInputLayout; import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
@ -17,6 +19,10 @@ import com.gmeremit.online.gmeremittance_native.registerV2.presenter.RegisterV2P
import com.gmeremit.online.gmeremittance_native.registerV2.presenter.RegisterV2PresenterInterface; import com.gmeremit.online.gmeremittance_native.registerV2.presenter.RegisterV2PresenterInterface;
import com.gmeremit.online.gmeremittance_native.sign_in.view.LoginView; import com.gmeremit.online.gmeremittance_native.sign_in.view.LoginView;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
@ -32,6 +38,9 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
@BindView(R.id.confirm_password) @BindView(R.id.confirm_password)
EditText confirmPasswordTextView; EditText confirmPasswordTextView;
@BindView(R.id.ed_dob)
EditText ed_dob;
@BindView(R.id.btn_submit) @BindView(R.id.btn_submit)
Button btn_submit; Button btn_submit;
@ -44,10 +53,15 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
@BindView(R.id.confirmpassWrapper) @BindView(R.id.confirmpassWrapper)
TextInputLayout confirmpassWrapper; TextInputLayout confirmpassWrapper;
@BindView(R.id.dobWrapper)
TextInputLayout dobWrapper;
@BindView(R.id.tv_login) @BindView(R.id.tv_login)
TextView tv_login; TextView tv_login;
RegisterV2PresenterInterface presenter; RegisterV2PresenterInterface presenter;
private DatePickerDialog datePickerDialog;
private Calendar newCalendar;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -61,6 +75,7 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
private void initialize() { private void initialize() {
this.presenter=new RegisterV2Presenter(this); this.presenter=new RegisterV2Presenter(this);
newCalendar = Calendar.getInstance();
} }
private void performDefaultAction(Bundle savedInstanceState) { private void performDefaultAction(Bundle savedInstanceState) {
@ -72,6 +87,7 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
super.onStart(); super.onStart();
tv_login.setOnClickListener(this); tv_login.setOnClickListener(this);
btn_submit.setOnClickListener(this); btn_submit.setOnClickListener(this);
ed_dob.setOnClickListener(this);
} }
@Override @Override
@ -79,6 +95,7 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
super.onStop(); super.onStop();
tv_login.setOnClickListener(null); tv_login.setOnClickListener(null);
btn_submit.setOnClickListener(null); btn_submit.setOnClickListener(null);
ed_dob.setOnClickListener(null);
} }
@Override @Override
@ -86,18 +103,33 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
switch(v.getId()) switch(v.getId())
{ {
case R.id.tv_login: case R.id.tv_login:
Intent i = new Intent(this, LoginV2Activity.class);
startActivity(i);
finish();
redirectToLogin();
break;
case R.id.ed_dob:
promptDatePicker();
break; break;
case R.id.btn_submit: case R.id.btn_submit:
if(presenter.validatePasswords(passwordTextView.getText().toString(),confirmPasswordTextView.getText().toString()))
presenter.registerUser(emailMobileTextView.getText().toString(),passwordTextView.getText().toString());
if(presenter.validatePasswords(passwordTextView.getText().toString(),confirmPasswordTextView.getText().toString())&&presenter.validateDob(ed_dob.getText().toString()))
presenter.registerUser(emailMobileTextView.getText().toString(),passwordTextView.getText().toString(),ed_dob.getText().toString());
break; break;
} }
} }
public void promptDatePicker() {
datePickerDialog = new DatePickerDialog(this, (DatePickerDialog.OnDateSetListener) (view, year, monthOfYear, dayOfMonth) -> {
Calendar newDate = Calendar.getInstance();
newDate.set(year, monthOfYear, dayOfMonth);
Log.d("year", year + monthOfYear + dayOfMonth + " ---");
ed_dob.setText(new SimpleDateFormat("yyyy/dd/MM", Locale.US).format(newDate.getTime()));
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
datePickerDialog.getDatePicker().updateDate(1990, 1, 1);
datePickerDialog.show();
}
@Override @Override
public void setConfirmPasswordError(String error) { public void setConfirmPasswordError(String error) {
confirmpassWrapper.setError(error); confirmpassWrapper.setError(error);
@ -108,10 +140,23 @@ public class RegisterV2Activity extends BaseActivity implements RegisterV2Presen
passwordWrapper.setError(error); passwordWrapper.setError(error);
} }
@Override
public void setDobError(String error) {
dobWrapper.setError(error);
}
@Override @Override
public void setUserIdError(String error) { public void setUserIdError(String error) {
useridWrapper.setError(error); useridWrapper.setError(error);
} }
@Override
public void redirectToLogin() {
Intent redirectIntent=new Intent(this,LoginV2Activity.class);
redirectIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(redirectIntent);
finish();
}
} }

32
app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/gateway/ResetPassV2Gateway.java

@ -0,0 +1,32 @@
package com.gmeremit.online.gmeremittance_native.resetpassV2.gateway;
import com.gmeremit.online.gmeremittance_native.base.PrivilegedGateway;
import com.gmeremit.online.gmeremittance_native.kycV2.presenter.KYCV2InteractorInterface;
import com.gmeremit.online.gmeremittance_native.loginV2.presenter.LoginV2InteractorInterface;
import com.gmeremit.online.gmeremittance_native.resetpassV2.model.ResetApiResponse;
import com.gmeremit.online.gmeremittance_native.resetpassV2.presenter.ResetPassV2InteractorInterface;
import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2;
import com.google.gson.JsonObject;
import io.reactivex.Observable;
public class ResetPassV2Gateway extends PrivilegedGateway implements ResetPassV2InteractorInterface.ResetPassV2GatewayInterface {
private final ResetPassV2InteractorInterface interactor;
public ResetPassV2Gateway(ResetPassV2InteractorInterface interactorInterface) {
this.interactor=interactorInterface;
}
@Override
public Observable<ResetApiResponse> resetPassV2(String auth, String userId, String dob) {
JsonObject jsonObject=new JsonObject();
jsonObject.addProperty("userId",userId);
jsonObject.addProperty("dob",dob);
return HttpClientV2.getInstance().resetPassV2(auth,jsonObject);
}
}

53
app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/model/ResetApiResponse.java

@ -0,0 +1,53 @@
package com.gmeremit.online.gmeremittance_native.resetpassV2.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class ResetApiResponse {
@SerializedName("ErrorCode")
@Expose
private String errorCode;
@SerializedName("Msg")
@Expose
private String msg;
@SerializedName("Id")
@Expose
private String id;
@SerializedName("Data")
@Expose
private Object data;
public String getErrorCode() {
return errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}

16
app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/presenter/ResetPassV2InteractorInterface.java

@ -0,0 +1,16 @@
package com.gmeremit.online.gmeremittance_native.resetpassV2.presenter;
import com.gmeremit.online.gmeremittance_native.base.BaseInteractorInterface;
import com.gmeremit.online.gmeremittance_native.base.PrivilegedGatewayInterface;
import com.gmeremit.online.gmeremittance_native.resetpassV2.model.ResetApiResponse;
import io.reactivex.Observable;
public interface ResetPassV2InteractorInterface extends BaseInteractorInterface {
interface ResetPassV2GatewayInterface extends PrivilegedGatewayInterface
{
Observable<ResetApiResponse> resetPassV2(String auth,String userId,String dob);
}
}

82
app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/presenter/ResetPassV2Presenter.java

@ -0,0 +1,82 @@
package com.gmeremit.online.gmeremittance_native.resetpassV2.presenter;
import com.gmeremit.online.gmeremittance_native.GmeApplication;
import com.gmeremit.online.gmeremittance_native.base.BasePresenter;
import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog;
import com.gmeremit.online.gmeremittance_native.registerV2.presenter.RegisterV2PresenterInterface;
import com.gmeremit.online.gmeremittance_native.resetpassV2.gateway.ResetPassV2Gateway;
import com.gmeremit.online.gmeremittance_native.resetpassV2.model.ResetApiResponse;
import com.gmeremit.online.gmeremittance_native.utils.Constants;
import com.gmeremit.online.gmeremittance_native.utils.Utils;
import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponse;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
public class ResetPassV2Presenter extends BasePresenter implements ResetPassV2PresenterInterface, ResetPassV2InteractorInterface {
private final ResetPassV2Gateway gateway;
private final ResetPassV2ContractInterface view;
CompositeDisposable compositeDisposable;
public ResetPassV2Presenter(ResetPassV2PresenterInterface.ResetPassV2ContractInterface view) {
this.gateway= new ResetPassV2Gateway(this);
compositeDisposable=new CompositeDisposable();
this.view=view;
}
@Override
public boolean validate(String emailId, String dob) {
return true;
}
@Override
public void resetPassword(String emailId, String dob) {
String auth = "Basic " + Utils.toBase64("172017F9EC11222E8107142733:QRK2UM0Q:" + GmeApplication.getAppRelatedMetaData().getDeviceId());
compositeDisposable.add(
gateway.resetPassV2(auth,emailId,dob)
.doOnSubscribe(d->view.showProgressBar(true,"Requesting..."))
.doFinally(()->view.showProgressBar(false,""))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new ResetPassObserver())
);
}
@Override
public void onViewDestroyed() {
super.onViewDestroyed();
if (compositeDisposable != null & !compositeDisposable.isDisposed()) {
compositeDisposable.dispose();
compositeDisposable.clear();
}
}
public class ResetPassObserver extends GenericApiObserverResponse<ResetApiResponse>
{
@Override
protected void onSuccess(ResetApiResponse resetApiResponse) {
if(resetApiResponse.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2))
view.showPopUpMessage(resetApiResponse.getMsg(), CustomAlertDialog.AlertType.SUCCESS,alertType->view.exitView());
else
view.showPopUpMessage(resetApiResponse.getMsg(), CustomAlertDialog.AlertType.FAILED,null);
}
@Override
public void onFailed(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED,null);
}
@Override
protected void onConnectionNotEstablished(String message) {
view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED,null);
}
}
}

19
app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/presenter/ResetPassV2PresenterInterface.java

@ -0,0 +1,19 @@
package com.gmeremit.online.gmeremittance_native.resetpassV2.presenter;
import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface;
import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface;
public interface ResetPassV2PresenterInterface extends BasePresenterInterface {
boolean validate(String emailId, String dob);
void resetPassword(String emailId, String dob);
interface ResetPassV2ContractInterface extends BaseContractInterface
{
void showIncorrectEmail(String message);
void showIncorrectDob(String message);
}}

114
app/src/main/java/com/gmeremit/online/gmeremittance_native/resetpassV2/view/ResetPassV2Activity.java

@ -0,0 +1,114 @@
package com.gmeremit.online.gmeremittance_native.resetpassV2.view;
import android.app.DatePickerDialog;
import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.base.BaseActivity;
import com.gmeremit.online.gmeremittance_native.resetpassV2.presenter.ResetPassV2Presenter;
import com.gmeremit.online.gmeremittance_native.resetpassV2.presenter.ResetPassV2PresenterInterface;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import butterknife.BindView;
import butterknife.ButterKnife;
public class ResetPassV2Activity extends BaseActivity implements View.OnClickListener, ResetPassV2PresenterInterface.ResetPassV2ContractInterface {
@BindView(R.id.email_mobile)
EditText emailId;
@BindView(R.id.ed_dob)
EditText ed_dob;
@BindView(R.id.useridWrapper)
TextInputLayout useridWrapper;
@BindView(R.id.dobWrapper)
TextInputLayout dobWrapper;
@BindView(R.id.btn_submit)
View btn_submit;
private DatePickerDialog datePickerDialog;
private ResetPassV2PresenterInterface presenterInterface;
private Calendar newCalendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reset_pass_v2);
ButterKnife.bind(this);
initialize();
performDefaultAction(savedInstanceState);
}
private void initialize() {
presenterInterface = new ResetPassV2Presenter(this);
newCalendar = Calendar.getInstance();
}
private void performDefaultAction(Bundle savedInstanceState) {
}
@Override
protected void onStart() {
super.onStart();
ed_dob.setOnClickListener(this);
btn_submit.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.ed_dob:
promptDatePicker();
break;
case R.id.btn_submit:
if (presenterInterface.validate(emailId.getText().toString(), ed_dob.getText().toString())) {
presenterInterface.resetPassword(emailId.getText().toString(), ed_dob.getText().toString());
}
break;
}
}
public void promptDatePicker() {
datePickerDialog = new DatePickerDialog(this, (DatePickerDialog.OnDateSetListener) (view, year, monthOfYear, dayOfMonth) -> {
Calendar newDate = Calendar.getInstance();
newDate.set(year, monthOfYear, dayOfMonth);
Log.d("year", year + monthOfYear + dayOfMonth + " ---");
ed_dob.setText(new SimpleDateFormat("yyyy/dd/MM", Locale.US).format(newDate.getTime()));
}, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
datePickerDialog.getDatePicker().updateDate(1990, 1, 1);
datePickerDialog.show();
}
@Override
public void showIncorrectEmail(String message) {
useridWrapper.setError(message);
}
@Override
public void showIncorrectDob(String message) {
dobWrapper.setError(message);
}
}

6
app/src/main/java/com/gmeremit/online/gmeremittance_native/splash_screen/view/SplashScreen.java

@ -21,6 +21,8 @@ import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.home.view.HomeActivity; import com.gmeremit.online.gmeremittance_native.home.view.HomeActivity;
import com.gmeremit.online.gmeremittance_native.invite.view.InviteActivity; import com.gmeremit.online.gmeremittance_native.invite.view.InviteActivity;
import com.gmeremit.online.gmeremittance_native.kycform.view.KycFormActivity; import com.gmeremit.online.gmeremittance_native.kycform.view.KycFormActivity;
import com.gmeremit.online.gmeremittance_native.loginV2.view.LoginV2Activity;
import com.gmeremit.online.gmeremittance_native.registerV2.view.RegisterV2Activity;
import com.gmeremit.online.gmeremittance_native.reward_points.view.RewardPointsActivity; import com.gmeremit.online.gmeremittance_native.reward_points.view.RewardPointsActivity;
import com.gmeremit.online.gmeremittance_native.sign_in.view.LoginView; import com.gmeremit.online.gmeremittance_native.sign_in.view.LoginView;
import com.gmeremit.online.gmeremittance_native.signup.view.SignUpActivity; import com.gmeremit.online.gmeremittance_native.signup.view.SignUpActivity;
@ -136,10 +138,10 @@ public class SplashScreen extends AppCompatActivity {
public void onClick(View view) { public void onClick(View view) {
switch (view.getId()) { switch (view.getId()) {
case R.id.btn_login: case R.id.btn_login:
startActivity(new Intent(this, LoginView.class));
startActivity(new Intent(this, LoginV2Activity.class));
break; break;
case R.id.btn_new_user: case R.id.btn_new_user:
startActivity(new Intent(this, SignUpActivity.class));
startActivity(new Intent(this, RegisterV2Activity.class));
break; break;
} }
} }

1
app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java

@ -135,5 +135,6 @@ public class API_URL {
public static final String SIGN_IN_V2 = BuildConfig.BASE_URL + "users/access-code"; public static final String SIGN_IN_V2 = BuildConfig.BASE_URL + "users/access-code";
public static final String SIGN_UP_V2 = "mobile/customerRegister"; public static final String SIGN_UP_V2 = "mobile/customerRegister";
public static final String RESET_PASSWORD_V2 = "mobile/passwordReset";
} }

8
app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java

@ -36,12 +36,14 @@ import com.gmeremit.online.gmeremittance_native.recipient.model.response_data.Al
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.AddRecipientApiResponse; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.AddRecipientApiResponse;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RecipientRelatedDataApiResponse; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientadd.RecipientRelatedDataApiResponse;
import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.GetAllRecipientApiResponse; import com.gmeremit.online.gmeremittance_native.recipientV2.model.recipientlisting.GetAllRecipientApiResponse;
import com.gmeremit.online.gmeremittance_native.registerV2.model.RegisterApiResponse;
import com.gmeremit.online.gmeremittance_native.reset_password.model.data.ResendCodeBodyRequest; import com.gmeremit.online.gmeremittance_native.reset_password.model.data.ResendCodeBodyRequest;
import com.gmeremit.online.gmeremittance_native.reset_password.model.data.ResetPasswordRequestBody; import com.gmeremit.online.gmeremittance_native.reset_password.model.data.ResetPasswordRequestBody;
import com.gmeremit.online.gmeremittance_native.reset_password.model.data.SecretAnswerRequestBody; import com.gmeremit.online.gmeremittance_native.reset_password.model.data.SecretAnswerRequestBody;
import com.gmeremit.online.gmeremittance_native.reset_password.model.data.UserIdRequestBody; import com.gmeremit.online.gmeremittance_native.reset_password.model.data.UserIdRequestBody;
import com.gmeremit.online.gmeremittance_native.reset_password.model.data.UserIdResponseBody; import com.gmeremit.online.gmeremittance_native.reset_password.model.data.UserIdResponseBody;
import com.gmeremit.online.gmeremittance_native.reset_password.model.data.VerifyCodeRequestBody; import com.gmeremit.online.gmeremittance_native.reset_password.model.data.VerifyCodeRequestBody;
import com.gmeremit.online.gmeremittance_native.resetpassV2.model.ResetApiResponse;
import com.gmeremit.online.gmeremittance_native.reward_points.model.Reward; import com.gmeremit.online.gmeremittance_native.reward_points.model.Reward;
import com.gmeremit.online.gmeremittance_native.reward_points.model.RewardAddress; import com.gmeremit.online.gmeremittance_native.reward_points.model.RewardAddress;
import com.gmeremit.online.gmeremittance_native.reward_points.model.RewardAddressResponse; import com.gmeremit.online.gmeremittance_native.reward_points.model.RewardAddressResponse;
@ -587,6 +589,10 @@ public interface ApiEndpoints {
@POST(API_URL.SIGN_UP_V2) @POST(API_URL.SIGN_UP_V2)
@Headers("Content-Type: application/json") @Headers("Content-Type: application/json")
Observable<ResponseBody> signUpV2(@Header("Authorization") String token, @Body JsonObject signInJsonBody);
Observable<RegisterApiResponse> signUpV2(@Header("Authorization") String token, @Body JsonObject signInJsonBody);
@POST(API_URL.RESET_PASSWORD_V2)
@Headers("Content-Type: application/json")
Observable<ResetApiResponse> resetPassV2(@Header("Authorization") String token, @Body JsonObject signInJsonBody);
} }

6
app/src/main/res/layout/activity_login_v2.xml

@ -43,11 +43,11 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="10dp" android:layout_marginLeft="10dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Login with your email address or mobile number" android:text="Login with your email address or mobile number"
android:textSize="14sp" android:textSize="14sp"
app:txtfontName="@string/regular"
/>
app:txtfontName="@string/regular" />
<android.support.design.widget.TextInputLayout <android.support.design.widget.TextInputLayout

50
app/src/main/res/layout/activity_register_v2.xml

@ -23,6 +23,7 @@
android:scrollbars="none"> android:scrollbars="none">
<LinearLayout <LinearLayout
android:layout_marginLeft="10dp"
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -31,8 +32,8 @@
android:id="@+id/welcome_label" android:id="@+id/welcome_label"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingTop="6dp"
android:text="Register to\nGlobal Money Express"
android:paddingTop="10dp"
android:paddingBottom="5dp" android:text="Register to\nGlobal Money Express"
android:textColor="@color/colorAccent" android:textColor="@color/colorAccent"
android:textSize="24sp" android:textSize="24sp"
app:txtfontName="@string/bold"/> app:txtfontName="@string/bold"/>
@ -43,6 +44,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="Register with your email address or mobile number" android:text="Register with your email address or mobile number"
android:textSize="14sp" android:textSize="14sp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:txtfontName="@string/regular" app:txtfontName="@string/regular"
/> />
@ -63,6 +66,46 @@
/> />
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<FrameLayout
android:layout_marginEnd="5dp"
android:visibility="visible"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginRight="5dp">
<android.support.design.widget.TextInputLayout
android:id="@+id/dobWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Date of Birth"
app:hintEnabled="true"
android:paddingTop="1dp"
android:paddingBottom="1dp"
android:textColorHint="@color/darkgray">
<EditText
android:id="@+id/ed_dob"
style="@style/editetxtsingleline"
android:enabled="true"
android:focusable="false"
android:layout_marginRight="12dp"
android:layout_marginEnd="12dp"
android:imeOptions="actionDone"
android:layout_width="match_parent"
android:singleLine="false"
android:layout_height="wrap_content"
/>
</android.support.design.widget.TextInputLayout>
<ImageView
android:layout_gravity="center_vertical|end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_arrow_down"
/>
</FrameLayout>
<android.support.design.widget.TextInputLayout <android.support.design.widget.TextInputLayout
android:id="@+id/passwordWrapper" android:id="@+id/passwordWrapper"
android:layout_width="match_parent" android:layout_width="match_parent"
@ -98,6 +141,8 @@
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<LinearLayout <LinearLayout
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:id="@+id/registerLayout" android:id="@+id/registerLayout"
@ -105,6 +150,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/passwordWrapper" android:layout_below="@id/passwordWrapper"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:gravity="center" android:gravity="center"
> >

137
app/src/main/res/layout/activity_reset_pass_v2.xml

@ -0,0 +1,137 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#fff">
<include layout="@layout/layout_kyc_toolbar"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#fff"
android:paddingLeft="10dp"
android:paddingRight="10dp"
tools:context="com.gmeremit.online.gmeremittance_native.sign_in.view.LoginView">
<ScrollView
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none">
<LinearLayout
android:layout_marginLeft="10dp"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/welcome_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:paddingBottom="5dp"
android:text="Need Help with your\nPassword?"
android:textColor="@color/colorAccent"
android:textSize="24sp"
app:txtfontName="@string/bold"/>
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeTextView
android:id="@+id/loginText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Reset your password using your email address linked to your GME account."
android:textSize="14sp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
app:txtfontName="@string/regular"
/>
<android.support.design.widget.TextInputLayout
android:paddingTop="1dp"
android:paddingBottom="1dp"
android:id="@+id/useridWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email Address"
android:textColorHint="@color/darkgray">
<EditText
android:id="@+id/email_mobile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/editetxtsingleline"
android:inputType="textEmailAddress"
/>
</android.support.design.widget.TextInputLayout>
<FrameLayout
android:layout_marginEnd="5dp"
android:visibility="visible"
android:layout_marginTop="4dp"
android:layout_marginBottom="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginRight="5dp">
<android.support.design.widget.TextInputLayout
android:id="@+id/dobWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Date of Birth"
app:hintEnabled="true"
android:paddingTop="1dp"
android:paddingBottom="1dp"
android:textColorHint="@color/darkgray">
<EditText
android:id="@+id/ed_dob"
style="@style/editetxtsingleline"
android:enabled="true"
android:focusable="false"
android:layout_marginRight="12dp"
android:layout_marginEnd="12dp"
android:imeOptions="actionDone"
android:layout_width="match_parent"
android:singleLine="false"
android:layout_height="wrap_content"
/>
</android.support.design.widget.TextInputLayout>
<ImageView
android:layout_gravity="center_vertical|end"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_arrow_down"
/>
</FrameLayout>
<com.gmeremit.online.gmeremittance_native.customwidgets.GmeButton
android:id="@+id/btn_submit"
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:layout_marginBottom="4dp"
android:layout_marginTop="10dp"
android:background="@drawable/ic_rounded_background_coloured"
android:text="Reset"
android:textAllCaps="false"
android:textColor="@color/white"
android:textSize="18sp"/>
</LinearLayout>
</ScrollView>
<ImageView
android:id="@+id/bottomImage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:src="@drawable/login_footer_image"/>
</RelativeLayout>
</LinearLayout>
Loading…
Cancel
Save