diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index a54893b..cfdcd92 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -6,13 +6,13 @@ - - + + - + diff --git a/app/src/main/java/com/app/simplitend/apputils/AppUtil.java b/app/src/main/java/com/app/simplitend/apputils/AppUtil.java index f9c31d5..5550be7 100644 --- a/app/src/main/java/com/app/simplitend/apputils/AppUtil.java +++ b/app/src/main/java/com/app/simplitend/apputils/AppUtil.java @@ -378,13 +378,22 @@ public abstract class AppUtil { return; } - title = patient_name + " is out of Geofence!"; - String senior_address_gf = intent.getStringExtra(NOTIFICATION_SENIOR_ADDRESS_KEY); + title = patient_name + " is outside of geofence zone!"; + String senior_distance = intent.getStringExtra(NOTIFICATION_SENIOR_ADDRESS_KEY); + + try { + double distance = Double.parseDouble(senior_distance); + if (distance == 0) throw new Exception(); + + senior_distance = distance + " miles away from home"; + }catch (Exception e){ + senior_distance = "Unable to locate"; + } setupBottomSheet(binding, R.drawable.img_medication_time, title, "Current location", - senior_address_gf, "Call senior", + senior_distance, "Call senior", v -> { CaregiverDataCache.getCaregiverData(context, (careGiverData -> { bsd.dismiss(); @@ -520,7 +529,8 @@ public abstract class AppUtil { return; } - title = patient_name + " contacted help"; + title = patient_name + " called the emergency number"; + body = "Please contact " + patient_name; setupBottomSheet(binding, R.drawable.img_sos_requested, diff --git a/app/src/main/java/com/app/simplitend/apputils/SimpliTendApp.java b/app/src/main/java/com/app/simplitend/apputils/SimpliTendApp.java index 1cc5d0e..a500eb5 100644 --- a/app/src/main/java/com/app/simplitend/apputils/SimpliTendApp.java +++ b/app/src/main/java/com/app/simplitend/apputils/SimpliTendApp.java @@ -2,9 +2,11 @@ package com.app.simplitend.apputils; import static com.app.simplitend.locationupdates.LocationService.LOCATION_NOTIFICATION_CHANNEL_ID; +import android.app.ActivityManager; import android.app.Application; import android.app.NotificationChannel; import android.app.NotificationManager; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; @@ -14,11 +16,15 @@ import android.provider.MediaStore; import android.provider.Telephony; import android.util.Log; +import androidx.annotation.NonNull; + import com.app.simplitend.patient_dashboard.chats.SocketHelper; import com.onesignal.Continue; import com.onesignal.OneSignal; import com.onesignal.debug.LogLevel; import com.app.simplitend.R; +import com.onesignal.notifications.INotificationClickEvent; +import com.onesignal.notifications.INotificationClickListener; import com.stripe.android.PaymentConfiguration; import java.util.List; @@ -46,6 +52,11 @@ public class SimpliTendApp extends Application { } })); + // click listener to notification + OneSignal.getNotifications().addClickListener(iNotificationClickEvent -> { + + }); + // creating notification channel for location share location updates from patient side // using a foreground service if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ diff --git a/app/src/main/java/com/app/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java b/app/src/main/java/com/app/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java index 5b347a8..b2acb23 100644 --- a/app/src/main/java/com/app/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java +++ b/app/src/main/java/com/app/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java @@ -343,6 +343,10 @@ public class CaregiverDashActivity extends AppCompatActivity implements binding.toolbar.setNavigationIcon(AppCompatResources.getDrawable(this, R.drawable.ic_menu)); binding.toolbar.setNavigationIconTint(getResources().getColor(R.color.white)); } else if (selectedItem == MenuItem.CHATS) { + if (careGiverData.link_id == null){ + CaregiverDataCache.setCareGiverData(null); // to fetch new data with link id + } + CaregiverDataCache.getCaregiverData(this, (careGiverData1 -> { if (careGiverData1 != null && careGiverData1.patientDetails != null){ this.careGiverData = careGiverData1; diff --git a/app/src/main/java/com/app/simplitend/cg_geofencing/CgGeoFencingActivity.java b/app/src/main/java/com/app/simplitend/cg_geofencing/CgGeoFencingActivity.java index 728bd57..19ce07f 100644 --- a/app/src/main/java/com/app/simplitend/cg_geofencing/CgGeoFencingActivity.java +++ b/app/src/main/java/com/app/simplitend/cg_geofencing/CgGeoFencingActivity.java @@ -6,7 +6,6 @@ import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.content.res.Configuration; import android.graphics.Color; @@ -257,7 +256,6 @@ public class CgGeoFencingActivity extends AppCompatActivity implements OnMapRead } registerMapSearchResultLauncher(); - } private void clickEvents() { @@ -283,6 +281,12 @@ public class CgGeoFencingActivity extends AppCompatActivity implements OnMapRead saveGeoFence(); }); + geofence_bs_binding.cancelSetGf.setOnClickListener(v -> { + if (bottomSheetDialog != null){ + bottomSheetDialog.dismiss(); + } + }); + binding.search.setOnClickListener(v -> { List fields = Arrays.asList(Place.Field.ID, Place.Field.NAME, Place.Field.LAT_LNG); @@ -359,6 +363,7 @@ public class CgGeoFencingActivity extends AppCompatActivity implements OnMapRead // do nothing } + StringBuilder senior_address = new StringBuilder(""); if (patientData.address_line1 != null){ @@ -398,8 +403,21 @@ public class CgGeoFencingActivity extends AppCompatActivity implements OnMapRead Map body = new HashMap<>(); + String addressLine; + addressLine = (address.getThoroughfare() != null ? address.getThoroughfare() : address.getSubThoroughfare()); + + if (addressLine == null || addressLine.isEmpty()){ + addressLine = ""; + if (address.getMaxAddressLineIndex() >= 0 && address.getAddressLine(0) != null){ + String[] addressLines = address.getAddressLine(0).split(","); + for (int i = 0; i < Math.min(2, addressLines.length); i++) { + addressLine = addressLine.concat(addressLines[i]); + } + } + } + body.put("town", (address.getSubLocality() != null ? address.getSubLocality() : address.getLocality())); - body.put("street", (address.getSubThoroughfare() != null ? address.getSubThoroughfare() : address.getThoroughfare())); + body.put("street", addressLine); body.put("state", address.getAdminArea()); body.put("country", address.getCountryName()); body.put("zip_code", address.getPostalCode()); @@ -657,7 +675,7 @@ public class CgGeoFencingActivity extends AppCompatActivity implements OnMapRead CaregiverDataCache.setCareGiverData(this.careGiverData); progressDialog.dismiss(); updatePatientCurrentLocationDetails(); - Toast.makeText(this, "Patient's location updated.", Toast.LENGTH_SHORT).show(); + Toast.makeText(this, "Senior geofence updated successfully", Toast.LENGTH_SHORT).show(); } @Override diff --git a/app/src/main/java/com/app/simplitend/locationupdates/DefaultLocationClient.java b/app/src/main/java/com/app/simplitend/locationupdates/DefaultLocationClient.java index dc92668..1a5abe1 100644 --- a/app/src/main/java/com/app/simplitend/locationupdates/DefaultLocationClient.java +++ b/app/src/main/java/com/app/simplitend/locationupdates/DefaultLocationClient.java @@ -51,6 +51,7 @@ public class DefaultLocationClient implements LocationClient{ } locationRequest = new LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, interval) + .setMinUpdateIntervalMillis(2000) // get fasted updates if available every 2 sec .build(); locationCallback = new LocationCallback() { diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/fragments/PatientDashboardFragment.java b/app/src/main/java/com/app/simplitend/patient_dashboard/fragments/PatientDashboardFragment.java index d48ad06..f5a466e 100644 --- a/app/src/main/java/com/app/simplitend/patient_dashboard/fragments/PatientDashboardFragment.java +++ b/app/src/main/java/com/app/simplitend/patient_dashboard/fragments/PatientDashboardFragment.java @@ -32,6 +32,7 @@ import androidx.navigation.Navigation; import com.app.simplitend.R; import com.app.simplitend.appblocking.FUAActivity; import com.app.simplitend.apputils.AppUtil; +import com.app.simplitend.apputils.CaregiverDataCache; import com.app.simplitend.apputils.Constants; import com.app.simplitend.apputils.PatientDataCache; import com.app.simplitend.caregiverdashboard.mvvm.CaregiverMainViewModel; @@ -216,6 +217,10 @@ public class PatientDashboardFragment extends Fragment implements ProfileContrac }); binding.chats.setOnClickListener(v -> { + if (patientData.link_id == null){ + PatientDataCache.setPatientData(null); // to fetch new data with link id + } + PatientDataCache.getPatientData(requireContext(), (patientData1 -> { if (patientData1 != null){ this.patientData = patientData1; diff --git a/app/src/main/java/com/app/simplitend/patientgeofencing/GeoFenceBroadcastReceiver.java b/app/src/main/java/com/app/simplitend/patientgeofencing/GeoFenceBroadcastReceiver.java index 2cb85bb..186c019 100644 --- a/app/src/main/java/com/app/simplitend/patientgeofencing/GeoFenceBroadcastReceiver.java +++ b/app/src/main/java/com/app/simplitend/patientgeofencing/GeoFenceBroadcastReceiver.java @@ -19,6 +19,7 @@ import static com.app.simplitend.locationupdates.LocationService.LOCATION_UPDATE import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_TAG; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import retrofit2.Call; @@ -41,13 +42,29 @@ public class GeoFenceBroadcastReceiver extends BroadcastReceiver { int transition_type = geofencingEvent.getGeofenceTransition(); Location location = geofencingEvent.getTriggeringLocation(); - String senior_address = null; - if (location != null){ - senior_address = AppUtil.getCompleteAddress(context, location.getLatitude(), location.getLongitude()); - } +// String senior_address = null; +// if (location != null){ +// senior_address = AppUtil.getCompleteAddress(context, location.getLatitude(), location.getLongitude()); +// } +// +// if (senior_address == null) { +// senior_address = "Unable to locate"; +// } - if (senior_address == null) { - senior_address = "Unable to locate"; + double distance; + try { + String[] homeLatLng = AppUtil.getPatientLatLng(context); + + Location homeLocation = new Location("homeLatLng"); + homeLocation.setLatitude(Double.parseDouble(homeLatLng[0])); + homeLocation.setLongitude(Double.parseDouble(homeLatLng[1])); + + if (location == null) throw new Exception(); + + distance = homeLocation.distanceTo(location); + distance /= 1609; // converting to miles + }catch (Exception e){ + distance = 0; } switch (transition_type) { @@ -64,7 +81,7 @@ public class GeoFenceBroadcastReceiver extends BroadcastReceiver { break; case Geofence.GEOFENCE_TRANSITION_EXIT: Log.d(GEOFENCE_TAG, "onReceive: EXIT"); - notifyOutOfGeofence(context, senior_address); + notifyOutOfGeofence(context, String.format(Locale.getDefault(),"%.2f", distance)); break; } } diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/contacts/CreateContactFragment.java b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/contacts/CreateContactFragment.java index fb8b594..1d60d7e 100644 --- a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/contacts/CreateContactFragment.java +++ b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/contacts/CreateContactFragment.java @@ -136,7 +136,7 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts. if (to_edit) { setLayoutDetails(getString(R.string.edit_contact), getString(R.string.change_photo), getString(R.string.save)); } else { - setLayoutDetails(getString(R.string.create_contact), getString(R.string.add_photo), getString(R.string.create_contact)); + setLayoutDetails(getString(R.string.create_contact), getString(R.string.add_photo), getString(R.string.save)); } if (bundle.getSerializable(CONTACT_KEY) != null) { @@ -383,7 +383,7 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts. binding.caregiverCheck.setChecked(true); // setting up title - setLayoutDetails(getString(R.string.create_caregiver_contact), getString(R.string.add_photo), getString(R.string.create_contact)); + setLayoutDetails(getString(R.string.create_caregiver_contact), getString(R.string.add_photo), getString(R.string.save)); addContactView("", true); } diff --git a/app/src/main/res/layout/create_edit_contact_fragment.xml b/app/src/main/res/layout/create_edit_contact_fragment.xml index ee89d73..057e9ed 100644 --- a/app/src/main/res/layout/create_edit_contact_fragment.xml +++ b/app/src/main/res/layout/create_edit_contact_fragment.xml @@ -483,7 +483,7 @@ android:layout_weight="1" android:layout_height="wrap_content" android:backgroundTint="@color/color_primary" - tools:text="@string/create_contact" + android:text="@string/save" android:textColor="@color/white_bg" android:textAppearance="@style/TextAppearance.Material3.TitleMedium" android:textAllCaps="false" diff --git a/app/src/main/res/layout/geofence_bottom_sheet.xml b/app/src/main/res/layout/geofence_bottom_sheet.xml index 2a653ae..960c742 100644 --- a/app/src/main/res/layout/geofence_bottom_sheet.xml +++ b/app/src/main/res/layout/geofence_bottom_sheet.xml @@ -124,21 +124,51 @@ android:maxLength="255" /> - - /> + + + + + \ No newline at end of file