This commit is contained in:
14Sandee
2023-10-27 21:04:20 +05:30
parent f562fb4d74
commit 1f51017070
41 changed files with 424 additions and 140 deletions

View File

@@ -1,18 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="$USER_HOME$/.android/avd/Pixel_7_Pro_API_33.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-10-25T15:04:24.464923Z" />
<targetsSelectedWithDialog>
<Target>
<type value="QUICK_BOOT_TARGET" />

View File

@@ -6,6 +6,8 @@ import static com.app.simplitend.apputils.Constants.REMINDER_EXTRA_KEY;
import static com.app.simplitend.articles.ArticleShowerActivity.ARTICLE_TITLE;
import static com.app.simplitend.articles.ArticleShowerActivity.ARTICLE_URL_KEY;
import static com.app.simplitend.callwhitelisting.CallService.CONTACT_WHITE_LISTING_TAG;
import static com.app.simplitend.locationupdates.LocationService.LOCATION_INTERVAL_BASE_TIME;
import static com.app.simplitend.locationupdates.LocationService.LOCATION_UPDATE_MIN_INTERVAL;
import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_ID;
import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_TAG;
@@ -26,8 +28,10 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RawRes;
import com.app.simplitend.locationupdates.LocationService;
import com.app.simplitend.welcome.welcomepatient.fragments.contacts.mvvm.models.ContactData;
import com.bumptech.glide.Glide;
import com.google.android.gms.location.GeofencingClient;
@@ -277,12 +281,16 @@ public abstract class AppUtil {
public static void showBottomAlert(Context context,
String patient_name,
String content_type, Intent intent) throws Exception {
@Nullable String content_type, Intent intent) throws Exception {
if (content_type == null) return;
BottomSheetDialog bsd = new BottomSheetDialog(context, R.style.BottomSheetDialog);
BottomSheetAlertBinding binding = BottomSheetAlertBinding.inflate(LayoutInflater.from(context));
bsd.setContentView(binding.getRoot());
binding.close.setOnClickListener(v -> bsd.dismiss());
String title = intent.getStringExtra(NotificationService.NOTIFICATION_TITLE_KEY);
String body = intent.getStringExtra(NotificationService.NOTIFICATION_BODY_KEY);
@@ -324,25 +332,26 @@ public abstract class AppUtil {
try {
RoutineDetails routine = (RoutineDetails) intent.getSerializableExtra(ACTIVITY_EXTRA_KEY);
if (routine != null) {
title = patient_name + " has " + routine.routine_title + " activity";
title = "Remind " + patient_name;
String time;
String start_time, end_time;
try {
SimpleDateFormat input_sdf = new SimpleDateFormat("HH:mm:ss", Locale.getDefault());
SimpleDateFormat output_sdf = new SimpleDateFormat("hh:mm a", Locale.getDefault());
Date start_date = input_sdf.parse(routine.routine_start_time);
time = output_sdf.format(Objects.requireNonNull(start_date));
Date end_date = input_sdf.parse(routine.routine_end_time);
start_time = output_sdf.format(Objects.requireNonNull(start_date));
end_time = output_sdf.format(Objects.requireNonNull(end_date));
} catch (Exception e) {
time = routine.routine_start_time;
start_time = routine.routine_start_time;
end_time = routine.routine_end_time;
}
body = "Today at " + time;
body = routine.routine_title;
if (routine.routine_description == null) routine.routine_description = "None";
routine_description = "Description: " + routine.routine_description;
routine_description = start_time + " - " + end_time;
}
} catch (Exception e) {
// do nothing
@@ -379,13 +388,12 @@ public abstract class AppUtil {
if (reminder != null) {
title = "It's time for " + patient_name + "'s medicines";
body = reminder.medicine_name + " (" + reminder.medication_quantity;
body = "Medication Reminder:\n" + reminder.medicine_name + "\n" + reminder.medication_quantity;
try {
body += " " + reminder.medication_type.get(0).title;
}catch (Exception e){
// do nothing
}finally {
body += ")";
body += " unit";
}
if (reminder.medication_instruction == null) reminder.medication_instruction = "None";
@@ -586,6 +594,11 @@ public abstract class AppUtil {
// removing geofence of same tag
removeGeofence(context);
// clearing location updates
Intent intent = new Intent(context, LocationService.class);
intent.setAction(LocationService.ACTION_STOP_LOCATION_UPDATES);
context.startService(intent);
}
public static void removeGeofence(Context context) {

View File

@@ -18,8 +18,15 @@ public abstract class TextUtils {
@Override
public void afterTextChanged(Editable editable) {
if (editable.toString().trim().isEmpty()){
if (editable.toString().trim().isEmpty()) {
editable.delete(0, editable.length());
}else if (editable.length() > 1 && editable.charAt(editable.length() - 1) == ' ' &&
editable.charAt(editable.length() - 2) == ' '){
// leading 2 spaces
// only one allowed. Thus, removing last
editable.delete(editable.length() - 1, editable.length());
}else if (editable.length() > 0 && editable.charAt(0) == ' '){
editable.delete(0, 1);
}
}
};

View File

@@ -111,6 +111,7 @@ public class CaregiverDashActivity extends AppCompatActivity implements
}
}
};
registerReceiver(notification_receiver, new IntentFilter(AppUtil.NOTIFICATION_ACTION));
}

View File

@@ -95,6 +95,8 @@ public class CgChangePwdActivity extends AppCompatActivity implements CgHomeCont
}
});
binding.backBtn.setOnClickListener(view -> onBackPressed());
}
private boolean allOkay() {
@@ -112,6 +114,9 @@ public class CgChangePwdActivity extends AppCompatActivity implements CgHomeCont
} else if (!password.matches("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^a-zA-Z0-9]).{8,}$")) {
allOkay = false;
Toast.makeText(this, "Password doesn't match the required criteria.", Toast.LENGTH_SHORT).show();
} else if (binding.confirmPassword.getText().toString().isEmpty()){
allOkay = false;
Toast.makeText(this, "Please confirm your password.", Toast.LENGTH_SHORT).show();
} else if (!binding.confirmPassword.getText().toString().equals(password)) {
allOkay = false;
Toast.makeText(this, "Confirm password doesn't match.", Toast.LENGTH_SHORT).show();

View File

@@ -16,5 +16,11 @@ public class ChangePinActivity extends AppCompatActivity {
binding = ChangePinFragmentBinding.inflate(getLayoutInflater());
super.onCreate(savedInstanceState);
setContentView(binding.getRoot());
clickEvents();
}
private void clickEvents() {
binding.backBtn.setOnClickListener(view -> onBackPressed());
}
}

View File

@@ -22,6 +22,8 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProvider;
import com.app.simplitend.apputils.EditTextErrorRemover;
import com.app.simplitend.apputils.TextUtils;
import com.bumptech.glide.Glide;
import com.github.dhaval2404.imagepicker.ImagePicker;
import com.google.i18n.phonenumbers.NumberParseException;
@@ -263,6 +265,12 @@ public class EditProfileInfoActivity extends AppCompatActivity implements
}
});
binding.name.addTextChangedListener(TextUtils.LEADING_SPACE_WATCHER);
binding.email.addTextChangedListener(TextUtils.LEADING_SPACE_WATCHER);
binding.street.addTextChangedListener(TextUtils.LEADING_SPACE_WATCHER);
new EditTextErrorRemover(binding.name, binding.email, binding.contactNumber, binding.street);
}
private void clickEvents() {
@@ -305,6 +313,11 @@ public class EditProfileInfoActivity extends AppCompatActivity implements
});
});
binding.countryCodes.setOnClickListener(v -> {
AppUtil.closeKeyboard(this);
binding.countryCodes.showOrDismiss();
});
}
private boolean allCgOkay() {
@@ -319,6 +332,9 @@ public class EditProfileInfoActivity extends AppCompatActivity implements
if (binding.name.getText().toString().trim().isEmpty()) {
binding.name.setError("Required");
allOkay = false;
}else if (binding.name.getText().toString().trim().length() < 2){
binding.name.setError("Minimum 2 characters");
allOkay = false;
}
if (binding.dob.getText().toString().trim().isEmpty()) {
@@ -383,7 +399,7 @@ public class EditProfileInfoActivity extends AppCompatActivity implements
RequestBody contact_number_part = RequestBody.create(country_code+binding.contactNumber.getText().toString(), MediaType.parse("text/plain;charset=utf-8"));
body.put("contact_number", contact_number_part);
RequestBody email_part = RequestBody.create(binding.email.getText().toString(), MediaType.parse("text/plain;charset=utf-8"));
RequestBody email_part = RequestBody.create(binding.email.getText().toString().trim(), MediaType.parse("text/plain;charset=utf-8"));
body.put("email", email_part);
RequestBody dob_part = RequestBody.create(binding.dob.getText().toString(), MediaType.parse("text/plain;charset=utf-8"));
@@ -436,7 +452,7 @@ public class EditProfileInfoActivity extends AppCompatActivity implements
RequestBody contact_number_part = RequestBody.create(country_code+binding.contactNumber.getText().toString(), MediaType.parse("text/plain;charset=utf-8"));
body.put("contact_number", contact_number_part);
RequestBody email_part = RequestBody.create(binding.email.getText().toString(), MediaType.parse("text/plain;charset=utf-8"));
RequestBody email_part = RequestBody.create(binding.email.getText().toString().trim(), MediaType.parse("text/plain;charset=utf-8"));
body.put("email", email_part);
RequestBody dob_part = RequestBody.create(binding.dob.getText().toString(), MediaType.parse("text/plain;charset=utf-8"));

View File

@@ -16,7 +16,7 @@ import retrofit2.http.Path;
public interface AccountApiService {
@POST("api/deactivate-reactivate-account/{id}")
Call<CallResponse<Object>> de_re_ActivateAccount(@Body Map<String, Integer> body,
Call<CallResponse<Object>> de_re_ActivateAccount(@Body Map<String, String> body,
@Path("id") int caregiver_xid,
@Header("Authorization") String token);

View File

@@ -40,12 +40,16 @@ public class AccountPresenter {
public void accountReDeActivate(int active_status,
int caregiver_xid,
String reason,
String comment,
@NonNull String token,
@NonNull AccountReDeActivateCallback callback){
Map<String, Integer> body = new HashMap<>();
Map<String, String> body = new HashMap<>();
body.put("status", active_status);
body.put("status", active_status + "");
if (reason != null) body.put("reason", reason);
if (comment != null) body.put("description", comment);
apiService.de_re_ActivateAccount(body, caregiver_xid, token)
.enqueue(new Callback<CallResponse<Object>>() {

View File

@@ -1,16 +1,15 @@
package com.app.simplitend.caregiverdashboard.activities.deactivateacc;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RadioButton;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.app.simplitend.apputils.AppUtil;
import com.app.simplitend.apputils.CaregiverDataCache;
import com.app.simplitend.apputils.PatientDataCache;
@@ -81,6 +80,19 @@ public class DeActivateAccountActivity extends AppCompatActivity implements Acco
binding.confirmDeactivate.setOnClickListener(v -> {
int selected_radio_id = binding.reasonRadio.getCheckedRadioButtonId();
if (selected_radio_id <= 0){
Toast.makeText(this, "Kindly select a reason", Toast.LENGTH_SHORT).show();
return;
}
String reason;
try {
reason = ((MaterialRadioButton) findViewById(selected_radio_id)).getText().toString();
}catch (Exception e){
reason = "Other";
}
int id;
String token;
@@ -104,19 +116,6 @@ public class DeActivateAccountActivity extends AppCompatActivity implements Acco
return;
}
int selected_radio_id = binding.reasonRadio.getCheckedRadioButtonId();
if (selected_radio_id <= 0){
Toast.makeText(this, "Kindly select a reason", Toast.LENGTH_SHORT).show();
return;
}
String reason;
try {
reason = ((MaterialRadioButton) findViewById(selected_radio_id)).getText().toString();
}catch (Exception e){
reason = "Other";
}
// TODO: 25/10/23 use the reason
progressDialog.setTitle("Please wait....");
@@ -130,6 +129,8 @@ public class DeActivateAccountActivity extends AppCompatActivity implements Acco
accountPresenter.accountReDeActivate(AccountPresenter.ACC_DEACTIVATE_BY_USER,
id,
reason,
binding.commetInput.getText().toString(),
"Bearer " + token,
this);
});
@@ -140,8 +141,8 @@ public class DeActivateAccountActivity extends AppCompatActivity implements Acco
private void smoothEditTextScroll() {
// scrolling edit text
binding.reasonInput.setOnTouchListener((v, event) -> {
if (binding.reasonInput.hasFocus()) {
binding.commetInput.setOnTouchListener((v, event) -> {
if (binding.commetInput.hasFocus()) {
v.getParent().requestDisallowInterceptTouchEvent(true);
if ((event.getAction() & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_SCROLL) {
v.getParent().requestDisallowInterceptTouchEvent(false);

View File

@@ -260,27 +260,29 @@ public class CgSubscriptionActivity extends AppCompatActivity
// loading subscription plans
progressDialog = new ProgressDialog(this);
try {
String description = getString(R.string.subscribe_description);
String contact_email = getString(R.string.contact_email);
binding.description.setText(getString(R.string.subscribe_description));
// setting display text
SpannableString ss = new SpannableString(description);
ClickableSpan cs = new ClickableSpan() {
@Override
public void onClick(@NonNull View view) {
contactMail();
}
};
int start_index = description.indexOf(contact_email);
ss.setSpan(cs, start_index, start_index + contact_email.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
binding.description.setText(ss);
binding.description.setMovementMethod(LinkMovementMethod.getInstance());
} catch (Exception e) {
Log.e(TAG, "initViews: ", e);
binding.contactAdmin.setVisibility(View.VISIBLE);
}
// try {
// String description = getString(R.string.subscribe_description);
// String contact_email = getString(R.string.contact_email);
//
// // setting display text
// SpannableString ss = new SpannableString(description);
// ClickableSpan cs = new ClickableSpan() {
// @Override
// public void onClick(@NonNull View view) {
// contactMail();
// }
// };
// int start_index = description.indexOf(contact_email);
// ss.setSpan(cs, start_index, start_index + contact_email.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
//
// binding.description.setText(ss);
// binding.description.setMovementMethod(LinkMovementMethod.getInstance());
// } catch (Exception e) {
// Log.e(TAG, "initViews: ", e);
// binding.contactAdmin.setVisibility(View.VISIBLE);
// }
}
private void loadPlans() {
@@ -372,6 +374,8 @@ public class CgSubscriptionActivity extends AppCompatActivity
// subscription is cancelled
binding.makePayment.setVisibility(View.GONE);
binding.description.setText(getString(R.string.subscribe_cancelled_description));
String cancelled_date = AppUtil.formatDate("yyyy-mm-dd", "mm-dd-yyyy", currentPlan.ended_at);
if (cancelled_date != null){
binding.cancelledDate.setText(cancelled_date);

View File

@@ -14,6 +14,8 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.app.simplitend.apputils.EditTextErrorRemover;
import com.app.simplitend.apputils.TextUtils;
import com.google.i18n.phonenumbers.NumberParseException;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
import com.google.i18n.phonenumbers.Phonenumber;
@@ -23,6 +25,7 @@ import com.app.simplitend.databinding.AddMedicalInfoBinding;
import com.app.simplitend.patientprofile.ProfileContracts;
import com.app.simplitend.patientprofile.medicalinfo.mvvm.MedicalInfoViewModel;
import com.app.simplitend.patientprofile.medicalinfo.mvvm.MedicationInfo;
import com.skydoves.powerspinner.OnSpinnerItemSelectedListener;
import java.util.ArrayList;
import java.util.HashMap;
@@ -139,6 +142,13 @@ public class AddMedicalInfoFragment extends Fragment implements
setLayoutInfo();
}
binding.primaryDoc.addTextChangedListener(TextUtils.LEADING_SPACE_WATCHER);
new EditTextErrorRemover(binding.diagnosis,
binding.allergies,
binding.primaryDoc,
binding.phoneNumber,
binding.hospitalPref,
binding.dietRestrict);
}
private void setLayoutInfo() {
@@ -184,6 +194,11 @@ public class AddMedicalInfoFragment extends Fragment implements
}
}
});
binding.countryCodes.setOnClickListener(v -> {
AppUtil.closeKeyboard(requireActivity());
binding.countryCodes.showOrDismiss();
});
}
private void addMedicationInfo() {

View File

@@ -196,7 +196,7 @@ public class AddReminderFragment extends Fragment implements CompoundButton.OnCh
// Sending time zone
TimeZone timeZone = TimeZone.getDefault();
// Getting the GMT offset in milliseconds
int gmtOffsetMillis = timeZone.getRawOffset();
int gmtOffsetMillis = timeZone.getOffset(Calendar.getInstance().getTimeInMillis());
// Converting milliseconds to hours and minutes
int hours = gmtOffsetMillis / 3600000;
int minutes = (gmtOffsetMillis % 3600000) / 60000;
@@ -350,6 +350,16 @@ public class AddReminderFragment extends Fragment implements CompoundButton.OnCh
if (binding.dosage.getText().toString().trim().isEmpty()) {
allOkay = false;
binding.dosage.setError("Required");
}else{
try {
double dosage = Double.parseDouble(binding.dosage.getText().toString().trim());
if (dosage <= 0){
allOkay = false;
binding.dosage.setError("Must be greater than 0");
}
}catch (Exception e){
// do nothing
}
}
if (binding.frequencySpinner.getSelectedIndex() == -1) {
@@ -382,6 +392,16 @@ public class AddReminderFragment extends Fragment implements CompoundButton.OnCh
if (binding.quantity.getText().toString().trim().isEmpty()) {
allOkay = false;
binding.quantity.setError("Required");
}else{
try {
long quantity = Long.parseLong(binding.quantity.getText().toString().trim());
if (quantity <= 0){
allOkay = false;
binding.quantity.setError("Must be greater than 0");
}
}catch (Exception e){
// do nothing
}
}
// if (binding.getDate.getText().toString().trim().isEmpty()) {

View File

@@ -5,7 +5,6 @@ import android.app.Activity;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
@@ -190,6 +189,15 @@ public class AddRoutineFragment extends Fragment implements CompoundButton.OnChe
binding.addRoutine.setOnClickListener(v -> {
AppUtil.closeKeyboard(requireActivity());
// DateTimeZone dateTimeZone = DateTimeZone.getDefault();
//
// // Get the GMT offset in milliseconds
// int gmtOffsetMillis = dateTimeZone.getOffset(adakTime);
//
// // Calculate the GMT offset in hours and minutes
// int gmtOffsetHours = gmtOffsetMillis / 3600000;
// int gmtOffsetMinutes = (gmtOffsetMillis % 3600000) / 60000;
if (allOkay()) {
if (routine != null){
@@ -229,7 +237,7 @@ public class AddRoutineFragment extends Fragment implements CompoundButton.OnChe
// Sending time zone
TimeZone timeZone = TimeZone.getDefault();
// Getting the GMT offset in milliseconds
int gmtOffsetMillis = timeZone.getRawOffset();
int gmtOffsetMillis = timeZone.getOffset(Calendar.getInstance().getTimeInMillis());
// Converting milliseconds to hours and minutes
int hours = gmtOffsetMillis / 3600000;
int minutes = (gmtOffsetMillis % 3600000) / 60000;

View File

@@ -110,6 +110,9 @@ public class CgChangePwdFragment extends Fragment implements WelcomeContracts.Ch
} else if (!password.matches("^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[^a-zA-Z0-9]).{8,}$")) {
allOkay = false;
Toast.makeText(requireContext(), "Password doesn't match the required criteria.", Toast.LENGTH_SHORT).show();
} else if (binding.confirmPassword.getText().toString().isEmpty()){
allOkay = false;
Toast.makeText(requireContext(), "Please confirm your password.", Toast.LENGTH_SHORT).show();
} else if (!binding.confirmPassword.getText().toString().equals(password)) {
allOkay = false;
Toast.makeText(requireContext(), "Confirm password doesn't match.", Toast.LENGTH_SHORT).show();

View File

@@ -76,7 +76,11 @@ public class CgCheckEmailFragment extends Fragment implements WelcomeContracts.F
mUserXid = bundle.getString(CG_USER_XID);
binding.emailAt.setVisibility(View.VISIBLE);
binding.email.setText(mEmail);
try {
binding.email.setText(encodeEmail(mEmail));
} catch (Exception e) {
binding.email.setText(mEmail);
}
}
@@ -106,6 +110,21 @@ public class CgCheckEmailFragment extends Fragment implements WelcomeContracts.F
});
}
public String encodeEmail(String email) throws Exception{
String[] arr = email.split("@");
String email_name = arr[0];
StringBuilder encoded_email = new StringBuilder();
for (int i = 0; i<email_name.length()-1; i++){
encoded_email.append("*");
}
encoded_email.append(email_name.charAt(email_name.length()-1));
return encoded_email + "@" + arr[1];
}
private void verifyOTP() {
progressDialog.setTitle("Please wait");
progressDialog.setMessage("while we verify your OTP.");

View File

@@ -235,6 +235,11 @@ public class CgRegisterFragment extends Fragment implements WelcomeContracts.Reg
passwordWindow.showAsDropDown(binding.pwdTitle);
});
binding.countryCodes.setOnClickListener(v -> {
AppUtil.closeKeyboard(requireActivity());
binding.countryCodes.showOrDismiss();
});
}
private void setErrorRemovers() {
@@ -331,6 +336,9 @@ public class CgRegisterFragment extends Fragment implements WelcomeContracts.Reg
if (binding.name.getText().toString().trim().isEmpty()) {
binding.name.setError("Required");
allOkay = false;
}else if (binding.name.getText().toString().trim().length() < 2){
binding.name.setError("Minimum 2 characters");
allOkay = false;
}
if (binding.dob.getText().toString().trim().isEmpty()) {

View File

@@ -11,6 +11,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.text.InputFilter;
import android.util.Log;
import android.util.Patterns;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -48,6 +49,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
@@ -307,6 +309,9 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts.
if (mustBeeCaregiver && binding.email.getText().toString().trim().isEmpty()) {
allOkay = false;
binding.email.setError("Required");
}else if (mustBeeCaregiver && !Patterns.EMAIL_ADDRESS.matcher(binding.email.getText().toString()).matches()){
allOkay = false;
binding.email.setError("Invalid email");
}
// if (binding.countryCodes.getSelectedIndex() == -1 && allOkay) {
@@ -357,6 +362,8 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts.
//email is important
binding.emailTitle.setText(getString(R.string.email_address)); // with asterisk
binding.emailOptional.setVisibility(View.GONE);
binding.relationOptional.setVisibility(View.GONE);
binding.caregiverCheckView.setVisibility(View.VISIBLE);
this.mustBeeCaregiver = true;
@@ -513,6 +520,9 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts.
binding.caregiverCheck.setChecked(true);
binding.caregiverCheck.setEnabled(false);
binding.relationship.setEnabled(false);
binding.relationOptional.setVisibility(View.GONE);
binding.emailOptional.setVisibility(View.GONE);
}
// checking if this contact is doctor
@@ -520,6 +530,8 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts.
// this contact is doctor
binding.name.setEnabled(false);
binding.relationship.setEnabled(false);
binding.relationOptional.setVisibility(View.GONE);
}else{
binding.name.setEnabled(true);
binding.relationship.setEnabled(true);
@@ -713,7 +725,6 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts.
int last_index = Math.max(phone_numbers[1].length() - 1, 0);
phone_numbers[1] = phone_numbers[1].substring(0, last_index);
return phone_numbers;
}

View File

@@ -35,6 +35,8 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.Navigation;
import com.app.simplitend.apputils.EditTextErrorRemover;
import com.app.simplitend.apputils.TextUtils;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
@@ -311,7 +313,7 @@ public class LocationFragment extends Fragment implements OnMapReadyCallback,
PatientData patientData = viewModel.getPatientData();
patientData.address_line1 = binding.street.getText().toString();
patientData.address_line1 = binding.street.getText().toString().trim();
patientData.city = binding.town.getText().toString();
patientData.post_code = binding.zipCode.getText().toString();
@@ -347,6 +349,9 @@ public class LocationFragment extends Fragment implements OnMapReadyCallback,
startAutocompleteMapSearch.launch(intent);
});
binding.street.addTextChangedListener(TextUtils.LEADING_SPACE_WATCHER);
new EditTextErrorRemover(binding.street);
}
private boolean allOkay() {

View File

@@ -133,7 +133,7 @@ public class ReActivateFragment extends Fragment implements AccountPresenter.Acc
progressDialog.show();
accountPresenter.accountReDeActivate(AccountPresenter.ACC_ACTIVE,
caregiver_xid, "Bearer " + token, this);
caregiver_xid, null, null, "Bearer " + token, this);
});
}

View File

@@ -23,6 +23,7 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.Navigation;
import com.app.simplitend.apputils.EditTextErrorRemover;
import com.app.simplitend.apputils.TextUtils;
import com.google.i18n.phonenumbers.NumberParseException;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
@@ -131,6 +132,13 @@ public class RegisterFragment extends Fragment implements WelcomeContracts.Verif
// not allowing leading spaces
binding.name.addTextChangedListener(TextUtils.LEADING_SPACE_WATCHER);
binding.email.addTextChangedListener(TextUtils.LEADING_SPACE_WATCHER);
// error remover
new EditTextErrorRemover(
binding.name,
binding.email,
binding.contactNumber
);
}
private void setFocusManager() {
@@ -242,6 +250,11 @@ public class RegisterFragment extends Fragment implements WelcomeContracts.Verif
getString(R.string.terms_conditions_));
});
binding.countryCodes.setOnClickListener(v -> {
AppUtil.closeKeyboard(requireActivity());
binding.countryCodes.showOrDismiss();
});
}
private void removeExistingErrors() {
@@ -258,6 +271,9 @@ public class RegisterFragment extends Fragment implements WelcomeContracts.Verif
if (binding.name.getText().toString().trim().isEmpty()) {
binding.name.setError("Required");
allOkay = false;
}else if (binding.name.getText().toString().trim().length() < 2){
binding.name.setError("Minimum 2 characters");
allOkay = false;
}
if (binding.dob.getText().toString().trim().isEmpty()) {
@@ -336,11 +352,11 @@ public class RegisterFragment extends Fragment implements WelcomeContracts.Verif
public void goForward() {
PatientData patientData = viewModel.getPatientData();
patientData.first_name = patientData.user_name = binding.name.getText().toString();
patientData.first_name = patientData.user_name = binding.name.getText().toString().trim();
patientData.phone_number = countryCodeList.get(binding.countryCodes.getSelectedIndex())
+ " " + binding.contactNumber.getText().toString();
patientData.date_of_birth = binding.dob.getText().toString();
patientData.email = binding.email.getText().toString();
patientData.email = binding.email.getText().toString().trim();
Navigation.findNavController(binding.getRoot()).navigate(R.id.action_registerFragment_to_locationFragment);
}

View File

@@ -5,7 +5,4 @@
<solid android:color="@color/color_accent"
/>
<size android:height="30dp"
android:width="30dp"/>
</shape>

View File

@@ -5,8 +5,4 @@
<solid android:color="@color/color_primary"
/>
<size android:height="30dp"
android:width="30dp"/>
</shape>

View File

@@ -66,6 +66,9 @@
android:layout_marginHorizontal="15dp"
app:civ_border_color="@color/color_accent"
app:civ_border_width="0.5dp"
/>
<TextView

View File

@@ -132,7 +132,7 @@
<EditText
android:id="@+id/reason_input"
android:id="@+id/commet_input"
android:layout_width="match_parent"
android:layout_height="@dimen/_100sdp"
android:maxHeight="@dimen/_100sdp"

View File

@@ -86,6 +86,10 @@
android:autofillHints="name"
android:inputType="textCapWords"
android:maxLength="50"
android:digits="@string/allowed_alphabets_with_space"
/>
<TextView
@@ -212,6 +216,8 @@
android:autofillHints="phone"
android:inputType="number"
android:digits="@string/allowed_numbers"
/>
</LinearLayout>
@@ -271,6 +277,8 @@
android:autofillHints="emailAddress"
android:inputType="textEmailAddress"
android:maxLength="255"
/>
<LinearLayout
@@ -378,6 +386,8 @@
android:autofillHints="postalAddress"
android:inputType="text|textCapSentences"
android:maxLength="50"
/>
<EditText

View File

@@ -69,6 +69,8 @@
android:autofillHints="name"
android:inputType="text|textCapSentences"
android:maxLines="1"
android:maxLength="255"
/>
<TextView
@@ -106,6 +108,10 @@
android:autofillHints="name"
android:inputType="textCapWords"
android:maxLines="1"
android:maxLength="50"
android:digits="@string/allowed_alphabets_with_space"
/>
<TextView
@@ -237,6 +243,8 @@
android:autofillHints="name"
android:inputType="text|textCapWords"
android:maxLines="1"
android:maxLength="255"
/>
<TextView
@@ -274,6 +282,8 @@
android:autofillHints="name"
android:inputType="text|textCapSentences"
android:maxLines="1"
android:maxLength="255"
/>
<TextView
@@ -311,6 +321,8 @@
android:autofillHints="name"
android:inputType="textCapSentences"
android:maxLines="1"
android:maxLength="255"
/>
<com.google.android.material.button.MaterialButton

View File

@@ -58,7 +58,6 @@
android:layout_marginHorizontal="15dp"
android:layout_marginVertical="10dp"
android:autofillHints="name"
android:background="@drawable/edit_text_bg_2"
android:drawableStart="@drawable/ic_medicine"
@@ -75,6 +74,8 @@
android:textColor="@color/black"
android:textColorHint="@android:color/darker_gray"
android:maxLength="50"
/>
<TextView

View File

@@ -75,6 +75,8 @@
android:textColor="@color/black"
android:textColorHint="@android:color/darker_gray"
android:maxLength="50"
/>
<LinearLayout
@@ -137,6 +139,8 @@
android:overScrollMode="never"
android:scrollbars="vertical"
android:maxLength="60"
/>
<TextView

View File

@@ -87,20 +87,54 @@
</com.google.android.material.card.MaterialCardView>
<com.google.android.material.button.MaterialButton
android:id="@+id/btn"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Call patient"
android:fontFamily="@font/nunito_bold"
android:textColor="@color/white"
android:textAllCaps="false"
android:paddingVertical="10dp"
android:layout_marginTop="15dp"
app:cornerRadius="5dp"
android:weightSum="2"
android:orientation="horizontal">
/>
<com.google.android.material.button.MaterialButton
android:id="@+id/btn"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
tools:text="Call patient"
android:fontFamily="@font/nunito_bold"
android:textColor="@color/white"
android:textAllCaps="false"
android:paddingVertical="10dp"
app:cornerRadius="5dp"
android:maxLines="1"
android:ellipsize="end"
/>
<com.google.android.material.button.MaterialButton
android:id="@+id/close"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/close_"
android:fontFamily="@font/nunito_bold"
android:textColor="@color/black"
android:textAllCaps="false"
android:paddingVertical="10dp"
app:cornerRadius="5dp"
app:backgroundTint="@color/white"
android:layout_marginStart="15dp"
app:strokeColor="@color/color_accent"
app:strokeWidth="1dp"
/>
</LinearLayout>
</LinearLayout>

View File

@@ -93,6 +93,8 @@
android:autofillHints="emailAddress"
android:inputType="textEmailAddress"
android:maxLines="1"
android:maxLength="255"
/>
</LinearLayout>

View File

@@ -31,16 +31,15 @@
<me.relex.circleindicator.CircleIndicator3
android:id="@+id/indicators"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_height="16dp"
app:ci_drawable="@drawable/selected_dot_primary"
app:ci_drawable_unselected="@drawable/unselected_dot_accent"
app:ci_gravity="center"
app:ci_height="@dimen/_6sdp"
app:ci_width="@dimen/_6sdp"
app:ci_height="8dp"
app:ci_width="8dp"
android:layout_marginBottom="@dimen/_10sdp"

View File

@@ -210,6 +210,11 @@
android:autofillHints="phone"
android:inputType="number"
android:digits="@string/allowed_numbers"
android:nextFocusDown="@id/email"
android:imeOptions="actionNext"
/>
</LinearLayout>
@@ -256,6 +261,8 @@
android:autofillHints="emailAddress"
android:inputType="textEmailAddress"
android:maxLength="255"
/>
<LinearLayout
@@ -332,7 +339,7 @@
android:autofillHints="password"
android:inputType="textPassword"
android:maxLength="15"
android:maxLength="16"
/>
</com.google.android.material.textfield.TextInputLayout>
@@ -388,6 +395,8 @@
android:autofillHints="password"
android:inputType="textPassword"
android:maxLength="16"
/>
</com.google.android.material.textfield.TextInputLayout>

View File

@@ -72,6 +72,8 @@
android:autofillHints="emailAddress"
android:inputType="textEmailAddress"
android:maxLines="1"
android:maxLength="255"
/>
<TextView
@@ -127,6 +129,8 @@
android:autofillHints="password"
android:inputType="textPassword"
android:maxLines="1"
android:maxLength="16"
/>
</com.google.android.material.textfield.TextInputLayout>

View File

@@ -56,14 +56,6 @@
android:id="@+id/email_at"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/nunito_regular"
android:text="@string/at"
android:textSize="@dimen/_18ssp"
android:textColor="@color/black" />
<TextView
android:id="@+id/email"
android:layout_width="wrap_content"

View File

@@ -91,18 +91,42 @@
android:paddingVertical="15dp"
android:textColor="@color/black"
android:textColorHint="@android:color/darker_gray" />
android:textColorHint="@android:color/darker_gray"
<TextView
android:maxLength="50"
/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/relationship"
android:fontFamily="@font/nunito_medium"
android:textColor="@color/black"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:layout_gravity="start"
android:baselineAligned="true"
android:gravity="center_vertical"
android:layout_marginHorizontal="15dp"
/>
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/relationship"
android:fontFamily="@font/nunito_medium"
android:textColor="@color/black"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:layout_gravity="start"
/>
<TextView
android:id="@+id/relation_optional"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/optional"
android:fontFamily="@font/nunito_regular"
android:textColor="@android:color/darker_gray"
android:layout_marginStart="5dp"
/>
</LinearLayout>
<EditText
android:id="@+id/relationship"
@@ -126,7 +150,11 @@
android:paddingVertical="15dp"
android:textColor="@color/black"
android:textColorHint="@android:color/darker_gray" />
android:textColorHint="@android:color/darker_gray"
android:maxLength="50"
android:digits="@string/allowed_alphabets_with_space"
/>
<LinearLayout
android:layout_width="wrap_content"
@@ -280,16 +308,39 @@
<!-- </androidx.constraintlayout.widget.ConstraintLayout>-->
<TextView
android:id="@+id/email_title"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:baselineAligned="true"
android:gravity="center_vertical"
android:layout_marginHorizontal="15dp"
android:fontFamily="@font/nunito_medium"
android:text="@string/email_address_"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:textColor="@color/black" />
android:orientation="horizontal">
<TextView
android:id="@+id/email_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:fontFamily="@font/nunito_medium"
android:text="@string/email_address_"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:textColor="@color/black" />
<TextView
android:id="@+id/email_optional"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/optional"
android:fontFamily="@font/nunito_regular"
android:textColor="@android:color/darker_gray"
android:layout_marginStart="5dp"
/>
</LinearLayout>
<EditText
android:id="@+id/email"
@@ -313,7 +364,10 @@
android:paddingVertical="15dp"
android:textColor="@color/black"
android:textColorHint="@android:color/darker_gray" />
android:textColorHint="@android:color/darker_gray"
android:maxLength="255"
/>
<LinearLayout
android:id="@+id/caregiver_check_view"

View File

@@ -93,6 +93,8 @@
android:autofillHints="emailAddress"
android:inputType="textEmailAddress"
android:maxLines="1"
android:maxLength="255"
/>
</LinearLayout>

View File

@@ -200,6 +200,11 @@
android:paddingVertical="15dp"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:digits="@string/allowed_numbers"
android:nextFocusDown="@id/email"
android:imeOptions="actionNext"
android:textColor="@color/black"
android:textColorHint="@android:color/darker_gray" />
@@ -254,7 +259,10 @@
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:textColor="@color/black"
android:textColorHint="@android:color/darker_gray" />
android:textColorHint="@android:color/darker_gray"
android:maxLength="255"
/>
<LinearLayout
android:layout_width="wrap_content"

View File

@@ -72,6 +72,8 @@
android:autofillHints="emailAddress"
android:inputType="textEmailAddress"
android:maxLines="1"
android:maxLength="255"
/>
<TextView

View File

@@ -22,16 +22,17 @@
<me.relex.circleindicator.CircleIndicator3
android:id="@+id/circle_indicator"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:layout_height="16dp"
android:layout_marginBottom="15dp"
app:ci_drawable="@drawable/selected_dot_primary"
app:ci_drawable_unselected="@drawable/unselected_dot_accent"
app:ci_height="@dimen/_6sdp"
app:ci_gravity="center"
app:ci_height="8dp"
app:ci_width="8dp"
android:paddingVertical="@dimen/_15sdp"
app:ci_width="@dimen/_6sdp"
app:layout_constraintBottom_toTopOf="@+id/register"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -26,7 +26,7 @@
<string name="sign_in_to_continue">Sign in to continue.</string>
<string name="email_address">Email address*</string>
<string name="email_address_">Email address</string>
<string name="enter_your_email">Enter your email.</string>
<string name="enter_your_email">Enter your email</string>
<string name="enter_pin">Enter pin</string>
<string name="enter_your_pin">Enter your pin</string>
<string name="remember_me">Remember me</string>
@@ -37,7 +37,7 @@
<string name="enter_email_address">Enter email address</string>
<string name="submit">Submit</string>
<string name="check_your_mail">Check your mail</string>
<string name="please_enter_the_temporary_pin_recieved_at_email_address_at_k_gmail_com">Please enter the temporary pin received at email address</string>
<string name="please_enter_the_temporary_pin_recieved_at_email_address_at_k_gmail_com">Please enter the temporary pin received at</string>
<string name="didn_t_your_receive_any_code">Didn\'t your receive any code?</string>
<string name="resend">Resend</string>
<string name="change_your_pin">Change your Pin</string>
@@ -249,8 +249,8 @@
<string name="sync_with_caregiver_app_to_proceed">Install Caregiver app to proceed.</string>
<string name="your_setup_is_in_proceed">Your profile is being updated</string>
<string name="reinventing_connected_ncaregiving">Reinventing connected\nCaregiving</string>
<string name="check_your_loved_one_s_medication_schedule">Update your loved one\'s profile information.</string>
<string name="setup_a_geofence_to_protect_your_loved_one">Setup a geofence to\nprotect your loved one.</string>
<string name="check_your_loved_one_s_medication_schedule">Update your loved one\'s profile information</string>
<string name="setup_a_geofence_to_protect_your_loved_one">Setup a geofence to\nprotect your loved one</string>
<string name="you_are_always_connected_and_will_be_notified_when_your_loved_ones_need_you">Be notified if your loved one ventures too far from home or a designated safe area</string>
<string name="application_will_notify_you_when_it_is_time_for_your_loved_one_to_take_his_her_medication">For example, you may use your phone to verify and update your loved one\'s medication schedule.</string>
<string name="be_notified_if_your_loved_one_ventures_too_far_from_home_or_a_designated_safe_area">Be notified if your loved one ventures too far from home or a designated safe area.</string>
@@ -307,7 +307,7 @@
<string name="security">Security</string>
<string name="to_enhance_the_security_of_your_account_please_add_biometric_authentication_using_either_face_id_or_fingerprint">You can improve the privacy of this application by enabling a secondary security setting. Once enabled, secondary security must be entered each time the application is launched.</string>
<string name="setup_with_fingerprint_or_faceid">Use phone biometrics</string>
<string name="no_new_gadgets_monitor_your_loved_one_s_activity_using_his_or_her_smartphone">No new gadgets! monitor your loved one\'s activity using his or her smartphone</string>
<string name="no_new_gadgets_monitor_your_loved_one_s_activity_using_his_or_her_smartphone">No new gadgets! monitor your loved one\'s activity using his or her smartphone.</string>
<string name="default_price">595</string>
<string name="we_understand_your_privacy">We understand your privacy.</string>
<string name="to_help_you_connect_with_your_loved_ones_allow_simplitend_to_access_your_contacts">To help you connect with your loved one allow SimpliTend to access your contacts.</string>
@@ -390,7 +390,7 @@
<string name="update">Update</string>
<string name="patients_home_address">Patients Home Address</string>
<string name="when_updating_a_password_it_s_essential_to_create_a_strong_unique_password">When updating a password, it\'s essential to create a strong, unique password.</string>
<string name="subscribe_description">Your credit card will be charged 24 hours before your subscription period expires. The subscription will automatically renew at the same price. You can cancel your subscription 7 days before the renewal date by sending an email to contact.us@simplitent.com</string>
<string name="subscribe_description">Your credit card will be charged 24 hours before your subscription period expires. You can cancel your subscription at any time by visiting this page.</string>
<string name="contact_email">contact.us@simplitent.com</string>
<string name="instructions_title">Instructions:</string>
<string name="you_are_about_to_change_emergency_number_from_this_contact_to_911_please_confirm">You are about to change emergency number from this contact to 911. Please confirm</string>
@@ -465,5 +465,9 @@
<string name="i_don_t_have_a_need_for_this_app_anymore">I don\'t have a need for this app anymore</string>
<string name="let_s_get_started">Let\'s get started</string>
<string name="allowed_alphabets_with_space">abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ</string>
<string name="allowed_alphabets_n_numbers_with_space">abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890</string>
<string name="allowed_numbers">1234567890</string>
<string name="close_">Close</string>
<string name="subscribe_cancelled_description">Your subscription has been canceled. You will be able to use your application until the end of your current subscription. Your app will stop working at that point.</string>
</resources>