diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
deleted file mode 100644
index de51dd0..0000000
--- a/.idea/deploymentTargetDropDown.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index dd91b45..10c8a2c 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -99,6 +99,9 @@ dependencies {
implementation 'com.daimajia.easing:library:2.4@aar'
implementation 'com.daimajia.androidanimations:library:2.4@aar'
+ // biometrics
+ implementation "androidx.biometric:biometric:1.1.0"
+
implementation 'androidx.appcompat:appcompat:1.6.0'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d3fdff2..57e9678 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,6 +58,15 @@
android:value="" />
+
+
+
+
+
Navigation.findNavController(v).navigate(R.id.action_CPDashboardFragment_to_chatListFragment)
);
+
+ binding.sosBtn.setOnClickListener(v -> {
+ // fake sign out
+ // TODO: 08-08-2023 remove this
+
+ AppUtil.saveUserCache(null, -1, requireContext());
+
+ Intent intent = new Intent(requireActivity(), WelcomeActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ startActivity(intent);
+ requireActivity().finish();
+ });
}
}
diff --git a/app/src/main/java/com/ssb/simplitend/patientprofile/ProfileProgressFragment.java b/app/src/main/java/com/ssb/simplitend/patientprofile/ProfileProgressFragment.java
index ff9524a..c1a88dc 100644
--- a/app/src/main/java/com/ssb/simplitend/patientprofile/ProfileProgressFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/patientprofile/ProfileProgressFragment.java
@@ -146,6 +146,15 @@ public class ProfileProgressFragment extends Fragment implements ProfileContract
binding.setupRoutineImg.setPadding(15, 15, 15, 15);
}
+ String btn_text;
+ if (profile_progress == 4){
+ btn_text = "Proceed";
+ }else{
+ btn_text = "Skip";
+ }
+
+ binding.proceed.setText(btn_text);
+
progressDialog.dismiss();
}
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/activities/WelcomeActivity.java b/app/src/main/java/com/ssb/simplitend/welcome/activities/WelcomeActivity.java
index 2fb5c04..90d2878 100644
--- a/app/src/main/java/com/ssb/simplitend/welcome/activities/WelcomeActivity.java
+++ b/app/src/main/java/com/ssb/simplitend/welcome/activities/WelcomeActivity.java
@@ -1,9 +1,9 @@
package com.ssb.simplitend.welcome.activities;
-import androidx.appcompat.app.AppCompatActivity;
-
import android.os.Bundle;
+import androidx.appcompat.app.AppCompatActivity;
+
import com.ssb.simplitend.databinding.ActivityWelcomeBinding;
public class WelcomeActivity extends AppCompatActivity {
@@ -11,12 +11,16 @@ public class WelcomeActivity extends AppCompatActivity {
// View binding
protected ActivityWelcomeBinding binding;
- private static final String TAG = "aditya";
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ // setting screen layout
binding = ActivityWelcomeBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
}
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgAuthActivity.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgAuthActivity.java
new file mode 100644
index 0000000..b91189d
--- /dev/null
+++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgAuthActivity.java
@@ -0,0 +1,178 @@
+package com.ssb.simplitend.welcome.welcomecg.fragments;
+
+import static android.hardware.biometrics.BiometricManager.Authenticators.BIOMETRIC_WEAK;
+import static android.hardware.biometrics.BiometricManager.Authenticators.DEVICE_CREDENTIAL;
+import static androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.provider.Settings;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.biometric.BiometricManager;
+import androidx.biometric.BiometricPrompt;
+import androidx.core.content.ContextCompat;
+
+import com.daimajia.androidanimations.library.Techniques;
+import com.daimajia.androidanimations.library.YoYo;
+import com.ssb.simplitend.apputils.AppUtil;
+import com.ssb.simplitend.caregiverdashboard.CaregiverDashActivity;
+import com.ssb.simplitend.databinding.CgAuthFragmentBinding;
+
+public class CgAuthActivity extends AppCompatActivity {
+
+ protected CgAuthFragmentBinding binding;
+
+ private BiometricManager biometricManager;
+ private BiometricPrompt biometricPrompt;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = CgAuthFragmentBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+
+ initViews();
+
+ clickEvents();
+
+ }
+
+ private void clickEvents() {
+ binding.fingerprintView.setOnClickListener(v -> {
+
+ authenticateBiometrics();
+
+ });
+ }
+
+ private void initViews() {
+
+ biometricManager = BiometricManager.from(this);
+
+ biometricPrompt = new BiometricPrompt(this, ContextCompat.getMainExecutor(this),
+ new BiometricPrompt.AuthenticationCallback() {
+ @Override
+ public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {
+ super.onAuthenticationError(errorCode, errString);
+ }
+
+ @Override
+ public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
+ super.onAuthenticationSucceeded(result);
+ gotoCgDash();
+ }
+
+ @Override
+ public void onAuthenticationFailed() {
+ super.onAuthenticationFailed();
+ }
+ });
+
+ configureBiometrics();
+
+ // four digit pin catch
+ binding.pin.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ if (editable.length() == 4) {
+ AppUtil.closeKeyboard(CgAuthActivity.this);
+
+ if (editable.toString().equals("0000")) {
+ gotoCgDash();
+ } else {
+ YoYo.with(Techniques.Wobble)
+ .playOn(binding.pin);
+
+ binding.pin.setError("Invalid pin.");
+ binding.pin.setText(null);
+ }
+
+ }
+ }
+ });
+
+ }
+
+ private void authenticateBiometrics() {
+ if (biometricManager == null) return;
+
+ int biometric_status = biometricManager.canAuthenticate(BIOMETRIC_STRONG | BiometricManager.Authenticators.BIOMETRIC_WEAK);
+
+ if (biometric_status == BiometricManager.BIOMETRIC_SUCCESS) {
+ // go ahead and do it.
+ biometricPrompt.authenticate(new BiometricPrompt.PromptInfo.Builder()
+ .setTitle("Unlock Simplitend")
+ .setConfirmationRequired(false)
+ .setNegativeButtonText("Cancel")
+ .build());
+ } else if (biometric_status == BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED){
+ // no fingerprints enrolled
+
+ AppUtil.showAlert(this,
+ "No biometrics added.",
+ "No fingerprints are registered on your device.\nKindly add biometrics to authenticate.",
+ "Go to settings",
+ ((dialogInterface, i) -> {
+
+ final Intent enrollIntent;
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
+ enrollIntent = new Intent(Settings.ACTION_BIOMETRIC_ENROLL);
+ enrollIntent.putExtra(Settings.EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED, BIOMETRIC_STRONG);
+ }else{
+ enrollIntent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
+ }
+
+ startActivity(enrollIntent);
+
+ }),
+ "No thanks",
+ ((dialogInterface, i) -> {
+ }));
+
+ }
+
+ }
+
+ public void configureBiometrics() {
+
+ if (biometricManager == null) return;
+
+ switch (biometricManager.canAuthenticate(BIOMETRIC_STRONG)) {
+ case BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE:
+ case BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE:
+ binding.fingerprintOr.setVisibility(View.GONE);
+ binding.fingerprintView.setVisibility(View.GONE);
+ break;
+ case BiometricManager.BIOMETRIC_SUCCESS:
+ case BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED:
+ binding.fingerprintOr.setVisibility(View.VISIBLE);
+ binding.fingerprintView.setVisibility(View.VISIBLE);
+ break;
+ }
+ }
+
+ private void gotoCgDash() {
+ Intent intent = new Intent(CgAuthActivity.this, CaregiverDashActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
+ startActivity(intent);
+ CgAuthActivity.this.finish();
+ }
+}
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgConnectFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgConnectFragment.java
index c828163..52c7e5b 100644
--- a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgConnectFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgConnectFragment.java
@@ -1,6 +1,9 @@
package com.ssb.simplitend.welcome.welcomecg.fragments;
+import android.app.ProgressDialog;
import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -9,21 +12,32 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
+import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.Navigation;
import com.bumptech.glide.Glide;
import com.ssb.simplitend.R;
+import com.ssb.simplitend.apputils.AppUtil;
import com.ssb.simplitend.databinding.ConnectCaregiverFragmentBinding;
import com.ssb.simplitend.welcome.welcomecg.WelcomeContracts;
+import com.ssb.simplitend.welcome.welcomecg.mvvm.CgWelcomeViewModel;
+import com.ssb.simplitend.welcome.welcomecg.mvvm.ConnectCgResult;
-public class CgConnectFragment extends Fragment {
+import java.util.HashMap;
+import java.util.Map;
+
+public class CgConnectFragment extends Fragment implements WelcomeContracts.ConnectCgCallback{
protected ConnectCaregiverFragmentBinding binding;
public static final String CAREGIVER_EMAIL = "cg_email";
public static final String CAREGIVER_PASSWORD = "caregiver_pwd";
- private String cg_email, cg_password;
+ private String cg_email;
+
+ private CgWelcomeViewModel viewModel;
+
+ private ProgressDialog progressDialog;
public CgConnectFragment() {
// required
@@ -34,13 +48,49 @@ public class CgConnectFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = ConnectCaregiverFragmentBinding.inflate(inflater, container, false);
+ viewModel = new ViewModelProvider(requireActivity()).get(CgWelcomeViewModel.class);
+
initViews();
+ clickEvents();
+
return binding.getRoot();
}
+ private void clickEvents() {
+ binding.connectBtn.setOnClickListener(v -> {
+ if (binding.code.getText().toString().length() != 4){
+ binding.code.setError("Invalid code.");
+ return;
+ }
+
+ connectCG();
+ });
+ }
+
+ private void connectCG() {
+ if (cg_email == null){
+ Toast.makeText(requireContext(), "Something went wrong", Toast.LENGTH_SHORT).show();
+ return;
+ };
+
+ progressDialog.setTitle("Please wait...");
+ progressDialog.setMessage("while we verify your code.");
+ progressDialog.setCancelable(false);
+ progressDialog.show();
+
+ Map body = new HashMap<>();
+
+ body.put("email", cg_email);
+ body.put("code", binding.code.getText().toString());
+
+ viewModel.connectCg(body, this);
+ }
+
private void initViews() {
+ progressDialog = new ProgressDialog(requireContext());
+
// showing gif
Glide.with(binding.image)
.asGif()
@@ -48,6 +98,25 @@ public class CgConnectFragment extends Fragment {
.placeholder(R.drawable.forgot_pin_email_img)
.into(binding.image);
+ binding.code.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ if (editable.length() == 4){
+ AppUtil.closeKeyboard(requireActivity());
+ }
+ }
+ });
+
}
@Override
@@ -57,20 +126,29 @@ public class CgConnectFragment extends Fragment {
Bundle bundle = getArguments();
if (bundle == null ||
- bundle.getString(CAREGIVER_EMAIL, null) == null ||
- bundle.getString(CAREGIVER_PASSWORD, null) == null) {
+ bundle.getString(CAREGIVER_EMAIL, null) == null) {
// no data received
// Thus, asking cg_user to sign in again
Navigation.findNavController(binding.getRoot())
.popBackStack(R.id.cgSignInFragment, false);
-
- return;
}else{
cg_email = bundle.getString(CAREGIVER_EMAIL);
- cg_password = bundle.getString(CAREGIVER_PASSWORD);
binding.emailAddress.setText(cg_email);
- Toast.makeText(requireContext(), "" + cg_password, Toast.LENGTH_SHORT).show();
}
}
+
+ @Override
+ public void onCgConnected(ConnectCgResult result) {
+ progressDialog.dismiss();
+
+ Toast.makeText(requireContext(), "Caregiver connected.", Toast.LENGTH_SHORT).show();
+ }
+
+ @Override
+ public void onCgConnectFailed(Throwable throwable, String message) {
+ progressDialog.dismiss();
+
+ Toast.makeText(requireContext(), "" + message, Toast.LENGTH_SHORT).show();
+ }
}
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgHowToSetUpFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgHowToSetUpFragment.java
index 0329e3b..00ff01f 100644
--- a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgHowToSetUpFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgHowToSetUpFragment.java
@@ -27,7 +27,7 @@ public class CgHowToSetUpFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = CgHowToSetUpFragmentBinding.inflate(inflater, container, false);
- binding.nextBtn.setOnClickListener(v -> Navigation.findNavController(v).navigate(R.id.action_cgHowToSetUpFragment_to_cgSignInFragment));
+ binding.nextBtn.setOnClickListener(v -> Navigation.findNavController(v).navigate(R.id.action_cgHowToSetUpFragment_to_cgRegisterFragment));
return binding.getRoot();
}
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgOnBoardFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgOnBoardFragment.java
index a373484..0de863e 100644
--- a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgOnBoardFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgOnBoardFragment.java
@@ -48,11 +48,11 @@ public class CgOnBoardFragment extends Fragment {
});
binding.getsStarted.setOnClickListener(v -> {
- Navigation.findNavController(v).navigate(R.id.action_cgOnBoardFragment_to_cgHowToSetUpFragment);
+ Navigation.findNavController(v).navigate(R.id.action_cgOnBoardFragment_to_cgSignInFragment);
});
binding.skip.setOnClickListener(v -> {
- Navigation.findNavController(v).navigate(R.id.action_cgOnBoardFragment_to_cgHowToSetUpFragment);
+ Navigation.findNavController(v).navigate(R.id.action_cgOnBoardFragment_to_cgSignInFragment);
});
}
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgRegisterFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgRegisterFragment.java
index 2fe06b9..2e4d500 100644
--- a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgRegisterFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgRegisterFragment.java
@@ -427,7 +427,6 @@ public class CgRegisterFragment extends Fragment implements WelcomeContracts.Reg
Bundle bundle = new Bundle();
bundle.putString(CAREGIVER_EMAIL, careGiverData.email);
- bundle.putString(CAREGIVER_PASSWORD, mPassword);
progressDialog.dismiss();
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgSignInFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgSignInFragment.java
index 014fd6b..daf3c88 100644
--- a/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgSignInFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgSignInFragment.java
@@ -1,6 +1,7 @@
package com.ssb.simplitend.welcome.welcomecg.fragments;
import android.app.ProgressDialog;
+import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -85,7 +86,7 @@ public class CgSignInFragment extends Fragment implements WelcomeContracts.CgLog
});
binding.registerBtn.setOnClickListener(v -> {
- Navigation.findNavController(v).navigate(R.id.action_cgSignInFragment_to_cgRegisterFragment);
+ Navigation.findNavController(v).navigate(R.id.action_cgSignInFragment_to_cgHowToSetUpFragment);
});
binding.forgotPassword.setOnClickListener(v -> {
@@ -114,6 +115,14 @@ public class CgSignInFragment extends Fragment implements WelcomeContracts.CgLog
public void onLoginSuccess(CareGiverData careGiverData, String token) {
progressDialog.dismiss();
Toast.makeText(requireContext(), "Log in success.", Toast.LENGTH_SHORT).show();
+
+ AppUtil.saveCgData(token, requireContext());
+
+ Intent intent = new Intent(requireActivity(), CgAuthActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
+
+ requireActivity().finish();
}
@Override
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/contacts/ContactListFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/contacts/ContactListFragment.java
index b4e3585..0882a30 100644
--- a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/contacts/ContactListFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/contacts/ContactListFragment.java
@@ -68,7 +68,12 @@ public class ContactListFragment extends Fragment {
private void clickEvents() {
- binding.backBtn.setOnClickListener(v -> Navigation.findNavController(v).popBackStack());
+ binding.backBtn.setOnClickListener(v -> {
+ if (Navigation.findNavController(v).getPreviousBackStackEntry() != null){
+ Navigation.findNavController(v).popBackStack();
+ Toast.makeText(requireContext(), "Back done", Toast.LENGTH_SHORT).show();
+ }
+ });
binding.createContact.setOnClickListener(v ->
{
diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java
index c7c735c..2ed6073 100644
--- a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java
+++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java
@@ -1,10 +1,12 @@
package com.ssb.simplitend.welcome.welcomepatient.fragments.register;
+import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -13,9 +15,20 @@ import androidx.navigation.NavOptions;
import androidx.navigation.Navigation;
import com.ssb.simplitend.R;
+import com.ssb.simplitend.apputils.AppUtil;
+import com.ssb.simplitend.apputils.RetrofitHelper;
import com.ssb.simplitend.databinding.SplashFragmentBinding;
+import com.ssb.simplitend.patient_dashboard.DashBoardActivity;
+import com.ssb.simplitend.patientprofile.PatientProfileAPIService;
+import com.ssb.simplitend.patientprofile.ProfileContracts;
+import com.ssb.simplitend.welcome.welcomepatient.mvvm.models.CallResponse;
+import com.ssb.simplitend.welcome.welcomepatient.mvvm.models.PatientData;
-public class SplashFragment extends Fragment {
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
+public class SplashFragment extends Fragment implements ProfileContracts.ProfileProgressCallback{
// view binding
protected SplashFragmentBinding binding;
@@ -25,6 +38,59 @@ public class SplashFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = SplashFragmentBinding.inflate(inflater, container, false);
+ return binding.getRoot();
+ }
+
+ @Override
+ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+ super.onViewCreated(view, savedInstanceState);
+ checkIfAhyUser();
+ }
+
+ private void checkIfAhyUser() {
+ String token = AppUtil.getUserToken(requireContext());
+ if (token != null && !token.isEmpty()){
+ // user is already logged in as PATIENT
+ // thus, checking if the logged in PATIENT has already added CAREGIVER
+
+ PatientProfileAPIService apiService = RetrofitHelper.getRetrofit().create(PatientProfileAPIService.class);
+
+ apiService.getUsrProfileProgress("Bearer " + token)
+ .enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if (response.body() != null) {
+ if (response.body().status != 200 || response.body().result == null) {
+ onProfileProgressFetchFailed(new Exception(), response.body().message);
+ return;
+ }
+
+ onProfileProgressFetched(response.body().result);
+ } else {
+ onProfileProgressFetchFailed(new Exception(), "Please try again later.");
+ }
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ onProfileProgressFetchFailed(new Exception(), "Please try again later.");
+ }
+ });
+
+ }else{
+ // no user has logged in
+ gotoWelcomeFragment();
+ }
+ }
+
+ private void gotoDashBoard(){
+ Intent intent = new Intent(requireActivity(), DashBoardActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
+ startActivity(intent);
+ requireActivity().finish();
+ }
+
+ public void gotoWelcomeFragment(){
new Handler().postDelayed(() -> {
NavOptions navOptions = new NavOptions.Builder()
@@ -35,7 +101,28 @@ public class SplashFragment extends Fragment {
.navigate(R.id.action_splashFragment_to_welcomeFragment, null, navOptions);
}, 1000);
+ }
- return binding.getRoot();
+ @Override
+ public void onProfileProgressFetched(PatientData patientData) {
+ if (patientData.isCareGiverLink == 1){
+ // user has already added caregiver as a contact
+ // thus, sending it to dashboard
+ gotoDashBoard();
+ }else{
+ // user has not added caregiver contact.
+ // thus, sending it to contact list to add caregiver contact.
+ NavOptions navOptions = new NavOptions.Builder()
+ .setPopUpTo(R.id.splashFragment, true)
+ .build();
+
+ Navigation.findNavController(binding.mainIcon)
+ .navigate(R.id.action_splashFragment_to_contactListFragment, null, navOptions);
+ }
+ }
+
+ @Override
+ public void onProfileProgressFetchFailed(Throwable t, String message) {
+ Toast.makeText(requireContext(), "Couldn't connect.", Toast.LENGTH_SHORT).show();
}
}
\ No newline at end of file
diff --git a/app/src/main/res/layout/cg_auth_fragment.xml b/app/src/main/res/layout/cg_auth_fragment.xml
new file mode 100644
index 0000000..23ab5ff
--- /dev/null
+++ b/app/src/main/res/layout/cg_auth_fragment.xml
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/connect_caregiver_fragment.xml b/app/src/main/res/layout/connect_caregiver_fragment.xml
index cb68620..6fe8cd2 100644
--- a/app/src/main/res/layout/connect_caregiver_fragment.xml
+++ b/app/src/main/res/layout/connect_caregiver_fragment.xml
@@ -1,14 +1,14 @@
+ android:layout_height="match_parent"
+ android:layout_above="@id/ll">
+ android:layout_marginBottom="15dp"
+ android:contentDescription="@string/forget_pin" />
+ android:fontFamily="@font/nunito_medium"
+ android:text="@string/enter_your_email_or_phone_number"
+ android:textColor="@color/black"
+ android:textSize="@dimen/_16ssp" />
+ android:fontFamily="@font/nunito_regular"
+ android:hint="@string/enter_your_email"
+ android:inputType="textEmailAddress"
+
+ android:maxLines="1"
+ android:paddingHorizontal="15dp"
+
+ android:paddingVertical="15sp"
+ android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
+ android:textColor="@color/black"
+
+ android:textColorHint="#5B5B5B" />
+ android:fontFamily="@font/nunito_medium"
+ android:text="@string/enter_code_sent_on_your_email"
+ android:textColor="@color/black"
+ android:textSize="@dimen/_16ssp" />
-
- >
-
-
-
-
@@ -147,21 +128,20 @@
android:orientation="vertical">
+ android:textColor="@color/white_bg"
+ app:backgroundTint="@color/color_primary"
+ app:cornerRadius="25dp" />
diff --git a/app/src/main/res/layout/patient_dashboard_fragment.xml b/app/src/main/res/layout/patient_dashboard_fragment.xml
index f82c1ae..d209ca1 100644
--- a/app/src/main/res/layout/patient_dashboard_fragment.xml
+++ b/app/src/main/res/layout/patient_dashboard_fragment.xml
@@ -440,23 +440,22 @@
android:layout_weight="1">
+ app:backgroundTint="@color/color_primary"
+
+ app:cornerRadius="15dp" />
diff --git a/app/src/main/res/layout/profile_progress_fragment.xml b/app/src/main/res/layout/profile_progress_fragment.xml
index 0a92c98..ef2c266 100644
--- a/app/src/main/res/layout/profile_progress_fragment.xml
+++ b/app/src/main/res/layout/profile_progress_fragment.xml
@@ -120,18 +120,41 @@
-
- android:text="@string/family_and_friends_contacts"
- android:fontFamily="@font/nunito_semibold"
- android:textSize="@dimen/_16ssp"
- android:textColor="@color/black"
+
+ android:layout_marginVertical="17dp"
+
+ android:layout_toStartOf="@id/btn_1"
+
+ android:maxLines="1"
+ android:ellipsize="end"
+
+ />
+
+
+
+
@@ -179,18 +202,38 @@
-
- android:text="@string/medication_reminder"
- android:fontFamily="@font/nunito_semibold"
- android:textSize="@dimen/_16ssp"
- android:textColor="@color/black"
+
+ android:layout_marginVertical="17dp"
+
+ android:layout_toStartOf="@id/btn_2"
+
+ />
+
+
+
+
@@ -238,18 +281,38 @@
-
- android:text="@string/medical_information"
- android:fontFamily="@font/nunito_semibold"
- android:textSize="@dimen/_16ssp"
- android:textColor="@color/black"
+
+ android:layout_marginVertical="17dp"
+
+ android:layout_toStartOf="@id/btn_3"
+
+ />
+
+
+
+
@@ -297,18 +360,38 @@
-
- android:text="@string/setup_routine"
- android:fontFamily="@font/nunito_semibold"
- android:textSize="@dimen/_16ssp"
- android:textColor="@color/black"
+
+ android:layout_marginVertical="17dp"
+
+ android:layout_toStartOf="@id/btn_4"
+
+ />
+
+
+
+
@@ -346,18 +429,38 @@
-
- android:text="@string/frequently_used_apps"
- android:fontFamily="@font/nunito_semibold"
- android:textSize="@dimen/_16ssp"
- android:textColor="@color/black"
+
+ android:layout_marginVertical="17dp"
+
+ android:layout_toStartOf="@id/btn_5"
+
+ />
+
+
+
+
diff --git a/app/src/main/res/navigation/welcome_nav_graph.xml b/app/src/main/res/navigation/welcome_nav_graph.xml
index 45bc19d..0804fba 100644
--- a/app/src/main/res/navigation/welcome_nav_graph.xml
+++ b/app/src/main/res/navigation/welcome_nav_graph.xml
@@ -2,7 +2,7 @@
+ app:startDestination="@id/splashFragment">
+
+ android:id="@+id/action_cgOnBoardFragment_to_cgSignInFragment"
+ app:destination="@id/cgSignInFragment" />
+ android:id="@+id/action_cgHowToSetUpFragment_to_cgRegisterFragment"
+ app:destination="@id/cgRegisterFragment" />
-
+
info
Create Geo Fence
+ Unlock with FaceID
+ OR
+ Unlock with Fingerprint or FaceID
+ Enter Login pin
\ No newline at end of file