From 966cd062d6e6e302dfb1a93aaa0aefe1db29381b Mon Sep 17 00:00:00 2001 From: Aditya_WDI Date: Tue, 8 Aug 2023 21:08:29 +0530 Subject: [PATCH] . --- .idea/deploymentTargetDropDown.xml | 27 --- app/build.gradle | 3 + app/src/main/AndroidManifest.xml | 9 + .../com/ssb/simplitend/apputils/AppUtil.java | 17 +- .../simplitend/apputils/RetrofitHelper.java | 2 +- .../fragments/PatientDashboardFragment.java | 16 ++ .../ProfileProgressFragment.java | 9 + .../welcome/activities/WelcomeActivity.java | 12 +- .../welcomecg/fragments/CgAuthActivity.java | 178 +++++++++++++++++ .../fragments/CgConnectFragment.java | 94 ++++++++- .../fragments/CgHowToSetUpFragment.java | 2 +- .../fragments/CgOnBoardFragment.java | 4 +- .../fragments/CgRegisterFragment.java | 1 - .../welcomecg/fragments/CgSignInFragment.java | 11 +- .../contacts/ContactListFragment.java | 7 +- .../fragments/register/SplashFragment.java | 91 ++++++++- app/src/main/res/layout/cg_auth_fragment.xml | 120 ++++++++++++ .../res/layout/connect_caregiver_fragment.xml | 136 ++++++------- .../res/layout/patient_dashboard_fragment.xml | 23 ++- .../res/layout/profile_progress_fragment.xml | 183 ++++++++++++++---- .../main/res/navigation/welcome_nav_graph.xml | 19 +- app/src/main/res/values/strings.xml | 4 + 22 files changed, 779 insertions(+), 189 deletions(-) delete mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 app/src/main/java/com/ssb/simplitend/welcome/welcomecg/fragments/CgAuthActivity.java create mode 100644 app/src/main/res/layout/cg_auth_fragment.xml 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