diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 163598d..4c2bddd 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -232,9 +232,6 @@
android:name=".locationupdates.LocationService"
android:foregroundServiceType="location" />
-
-
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 3c23cd1..025cb5e 100644
--- a/app/src/main/java/com/app/simplitend/apputils/AppUtil.java
+++ b/app/src/main/java/com/app/simplitend/apputils/AppUtil.java
@@ -36,10 +36,12 @@ import androidx.annotation.RawRes;
import com.app.simplitend.R;
import com.app.simplitend.appblocking.TopAppDetectionService;
import com.app.simplitend.articles.ArticleShowerActivity;
+import com.app.simplitend.caregiverdashboard.mvvm.CaregiverMainViewModel;
import com.app.simplitend.databinding.AlertDialogBinding;
import com.app.simplitend.databinding.DecisionBottomsheetBinding;
import com.app.simplitend.databinding.DoneBottomsheetBinding;
import com.app.simplitend.locationupdates.LocationService;
+import com.app.simplitend.patient_dashboard.PatientMainViewModel;
import com.app.simplitend.welcome.welcomepatient.fragments.contacts.mvvm.models.ContactData;
import com.app.simplitend.welcome.welcomepatient.mvvm.models.PatientData;
import com.bumptech.glide.Glide;
@@ -389,6 +391,8 @@ public abstract class AppUtil {
public static final String IS_CALL_BLOCKING_ENABLED = "is_call_blocking_enabled";
+ public static final String IS_BATTERY_LOW_NOTIFICATION_SENT = "battery_low_notification_sent";
+
public static void savePatientData(String token, int patient_uid, Context context, boolean isLoggedIn) {
SharedPreferences sp = context.getSharedPreferences(PATIENT_DETAILS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
@@ -418,6 +422,20 @@ public abstract class AppUtil {
return sp.getBoolean(IS_PATIENT_LOGGED_IN, false);
}
+ public static void setBatteryLowNotificationSent(Context context, boolean sent){
+ SharedPreferences sp = context.getSharedPreferences(PATIENT_DETAILS, Context.MODE_PRIVATE);
+ SharedPreferences.Editor editor = sp.edit();
+
+ editor.putBoolean(IS_BATTERY_LOW_NOTIFICATION_SENT, sent);
+
+ editor.apply();
+ }
+
+ public static boolean isBatteryLowNotificationSent(Context context){
+ SharedPreferences sp = context.getSharedPreferences(PATIENT_DETAILS, Context.MODE_PRIVATE);
+ return sp.getBoolean(IS_BATTERY_LOW_NOTIFICATION_SENT, false);
+ }
+
public static void patientSignOut(Context context) {
clearAllNotifications(context);
clearAllChatNotificationsCount(context);
@@ -428,6 +446,9 @@ public abstract class AppUtil {
PatientDataCache.setPatientData(null);
PatientDataCache.setContactList(null);
+ PatientMainViewModel.remindersList = null;
+ PatientMainViewModel.activityList = null;
+
// turning off app_blocking accessibility permission
Intent stop_accessibility_intent = new Intent(context, TopAppDetectionService.class);
stop_accessibility_intent.setAction(TopAppDetectionService.STOP_ACCESSIBILITY_SERVICE);
@@ -546,6 +567,9 @@ public abstract class AppUtil {
CaregiverDataCache.setCareGiverData(null);
+ CaregiverMainViewModel.activityList = null;
+ CaregiverMainViewModel.remindersList = null;
+
clearAllNotifications(context);
clearAllChatNotificationsCount(context);
OneSignal.getNotifications().clearAllNotifications();
diff --git a/app/src/main/java/com/app/simplitend/apputils/BottomNotificationActivity.java b/app/src/main/java/com/app/simplitend/apputils/BottomNotificationActivity.java
index 6e6b574..7342142 100644
--- a/app/src/main/java/com/app/simplitend/apputils/BottomNotificationActivity.java
+++ b/app/src/main/java/com/app/simplitend/apputils/BottomNotificationActivity.java
@@ -167,6 +167,20 @@ public class BottomNotificationActivity extends AppCompatActivity {
String body = intent.getStringExtra(NotificationService.NOTIFICATION_BODY_KEY);
switch (content_type) {
+ case Constants.BATTERY_LOW:
+
+ setUpCgBottomSheet(binding,
+ R.drawable.img_out_of_geo,
+ title, "Battery remaining",
+ "25%", "Text senior", view -> {
+ bsd.dismiss();
+ finish();
+ Intent chatsIntent = new Intent(this, ChatsActivity.class);
+ startActivity(chatsIntent);
+ });
+
+ bsd.show();
+ break;
case Constants.PATIENT_OUT_OF_GEOFENCE:
if (!getCgNotificationPref(context, GEOFENCE_NOTIFICATIONS)){
diff --git a/app/src/main/java/com/app/simplitend/apputils/Constants.java b/app/src/main/java/com/app/simplitend/apputils/Constants.java
index fcc9975..05b33fa 100644
--- a/app/src/main/java/com/app/simplitend/apputils/Constants.java
+++ b/app/src/main/java/com/app/simplitend/apputils/Constants.java
@@ -2,6 +2,8 @@ package com.app.simplitend.apputils;
public abstract class Constants {
public static final String NEW_SUBSCRIPTION = "new_subscription";
+
+ public static final String BATTERY_LOW = "battery_perentage";
public static final String ACTIVITY_TIME = "activity_time";
public static final String MEDICINE_TIME = "medicine_time";
public static final String GEOFENCING_RADIUS_UPDATED = "geofencing_radius_updated";
diff --git a/app/src/main/java/com/app/simplitend/apputils/NotificationService.java b/app/src/main/java/com/app/simplitend/apputils/NotificationService.java
index 7d93302..b969bc4 100644
--- a/app/src/main/java/com/app/simplitend/apputils/NotificationService.java
+++ b/app/src/main/java/com/app/simplitend/apputils/NotificationService.java
@@ -3,6 +3,7 @@ package com.app.simplitend.apputils;
import static android.content.Context.NOTIFICATION_SERVICE;
import static com.app.simplitend.apputils.AppUtil.NOTIFICATION_ACTION;
import static com.app.simplitend.apputils.Constants.ACTIVITY_TIME;
+import static com.app.simplitend.apputils.Constants.BATTERY_LOW;
import static com.app.simplitend.apputils.Constants.MEDICINE_TIME;
import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_TAG;
@@ -104,11 +105,12 @@ public class NotificationService implements INotificationServiceExtension {
// showing bottom sheet
try {
if (AppUtil.getCgToken(iNotificationReceivedEvent.getContext()) != null){
+
// when caregiver is logged in
iNotificationReceivedEvent.getContext().startActivity(intent);
}else{
// when patient is logged in
- if (MEDICINE_TIME.equals(content_type) || ACTIVITY_TIME.equals(content_type)){
+ if (MEDICINE_TIME.equals(content_type) || ACTIVITY_TIME.equals(content_type) || BATTERY_LOW.equals(content_type)){
// Only for meds and activity reminders
iNotificationReceivedEvent.getContext().startActivity(intent);
}
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 0e46f94..cd093d1 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
@@ -16,7 +16,6 @@ import com.app.simplitend.R;
import com.app.simplitend.apputils.AppUtil;
import com.app.simplitend.apputils.CaregiverDataCache;
import com.app.simplitend.apputils.RetrofitHelper;
-import com.app.simplitend.apputils.SocketService;
import com.app.simplitend.articles.ArticlesActivity;
import com.app.simplitend.caregiverdashboard.fragments.CgDashBoardFragment;
import com.app.simplitend.caregiverdashboard.fragments.MyPatientFragment;
@@ -41,6 +40,8 @@ public class CaregiverDashActivity extends AppCompatActivity implements
DragStateListener,
HomeBottomNav.OnBottomNavItemSelectListener, INotificationLifecycleListener {
+ private static final String TAG = "SOCKET_CaregiverDashActivity";
+
// view binding
protected CaregiverDashboardActivityBinding binding;
private CaregiverDashboardMenuBinding menuBinding;
@@ -53,9 +54,6 @@ public class CaregiverDashActivity extends AppCompatActivity implements
binding = CaregiverDashboardActivityBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
- Intent socketServiceIntent = new Intent(this, SocketService.class);
- startService(socketServiceIntent);
-
initViews();
clickEvents();
@@ -63,6 +61,13 @@ public class CaregiverDashActivity extends AppCompatActivity implements
CaregiverDataCache.getCaregiverData(this, (careGiverData) -> {
this.careGiverData = careGiverData;
+ if (careGiverData != null){
+ SocketHelper.getInstance().establishConnection(null);
+
+ String uniqueKey = careGiverData.patientId + "medActivity" + careGiverData.caregiver_xid;
+ SocketHelper.getInstance().initializeSocket(this, uniqueKey);
+ }
+
watchSubscription();
}, true);
@@ -109,6 +114,9 @@ public class CaregiverDashActivity extends AppCompatActivity implements
super.onDestroy();
SocketHelper.getInstance().closeConnection();
OneSignal.getNotifications().removeForegroundLifecycleListener(this);
+
+ CaregiverMainViewModel.remindersList = null;
+ CaregiverMainViewModel.activityList = null;
}
private void initViews() {
diff --git a/app/src/main/java/com/app/simplitend/caregiverdashboard/mvvm/NotificationApiService.java b/app/src/main/java/com/app/simplitend/caregiverdashboard/mvvm/NotificationApiService.java
index e8cc6ef..3426469 100644
--- a/app/src/main/java/com/app/simplitend/caregiverdashboard/mvvm/NotificationApiService.java
+++ b/app/src/main/java/com/app/simplitend/caregiverdashboard/mvvm/NotificationApiService.java
@@ -26,5 +26,8 @@ public interface NotificationApiService {
@Query("address") String address,
@Header("Authorization") String token);
+ @POST("api/battery-percentage")
+ Call> notifyBatteryLow(@Body Map body,
+ @Header("Authorization") String token);
}
diff --git a/app/src/main/java/com/app/simplitend/chats/SocketHelper.java b/app/src/main/java/com/app/simplitend/chats/SocketHelper.java
index c791f96..b049866 100644
--- a/app/src/main/java/com/app/simplitend/chats/SocketHelper.java
+++ b/app/src/main/java/com/app/simplitend/chats/SocketHelper.java
@@ -1,5 +1,10 @@
package com.app.simplitend.chats;
+import static com.app.simplitend.apputils.AppUtil.NOTIFICATION_ACTION;
+import static com.app.simplitend.apputils.NotificationService.CONTENT_TYPE_KEY;
+
+import android.content.Context;
+import android.content.Intent;
import android.location.Location;
import android.util.Log;
@@ -7,6 +12,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.app.simplitend.BuildConfig;
+import com.app.simplitend.apputils.Constants;
+import com.app.simplitend.caregiverdashboard.mvvm.CaregiverMainViewModel;
import com.app.simplitend.chats.mvvm.Author;
import com.app.simplitend.chats.mvvm.Message;
import com.app.simplitend.chats.mvvm.Receiver;
@@ -203,10 +210,42 @@ public class SocketHelper {
});
}
+ public void sendUpdates(String uniqueId, String contentType){
+ if (mSocket != null){
+ mSocket.emit("medActivity", contentType, uniqueId);
+ }
+ }
+
public void removeLocationUpdateListener(String patientId) {
mSocket.off(LOCATION_EVENT_PREFIX+patientId);
}
+ public void initializeSocket(Context context, String uniqueKey) {
+ mSocket.on(uniqueKey, args -> {
+ try {
+ if (args.length >= 1) {
+ String content_type = (String) args[0];
+ Log.d(TAG, "call: " + content_type);
+ Intent broadcastIntent = new Intent(NOTIFICATION_ACTION);
+ if ("0".equals(content_type)){
+ // medications
+ CaregiverMainViewModel.remindersList = null;
+ broadcastIntent.putExtra(CONTENT_TYPE_KEY, Constants.MEDICINE_TIME);
+ }else if ("1".equals(content_type)){
+ // activities
+ CaregiverMainViewModel.activityList = null;
+ broadcastIntent.putExtra(CONTENT_TYPE_KEY, Constants.ACTIVITY_TIME);
+ }
+
+ context.sendBroadcast(broadcastIntent);
+ }
+ } catch (Exception e) {
+ // do nothing
+ Log.d(TAG, "initializeSocket: ");
+ }
+ });
+ }
+
public interface Callback {
void onMessageReceived(T result);
void onMessageSentSuccessfully();
diff --git a/app/src/main/java/com/app/simplitend/locationupdates/LocationService.java b/app/src/main/java/com/app/simplitend/locationupdates/LocationService.java
index f08a024..5213034 100644
--- a/app/src/main/java/com/app/simplitend/locationupdates/LocationService.java
+++ b/app/src/main/java/com/app/simplitend/locationupdates/LocationService.java
@@ -75,6 +75,37 @@ public class LocationService extends Service implements LocationClient.DefaultLo
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
float batteryPct = level * 100 / (float)scale;
+
+ if (batteryPct <= 25){
+
+ if (AppUtil.isBatteryLowNotificationSent(context)) return;
+
+ int[] chatsCred = AppUtil.getPatientGeofenceChatCred(context);
+
+ Map body = new HashMap<>();
+ body.put("battery_perentage", batteryPct + "");
+ body.put("caregiver_xid", chatsCred[1] + "");
+
+ NotificationApiService apiService = RetrofitHelper.getRetrofit().create(NotificationApiService.class);
+ apiService.notifyBatteryLow(body, "Bearer " + AppUtil.getPatientToken(context))
+ .enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ if (response.code() == 200){
+ AppUtil.setBatteryLowNotificationSent(context, true);
+ }else{
+ AppUtil.setBatteryLowNotificationSent(context, false);
+ }
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ AppUtil.setBatteryLowNotificationSent(context, false);
+ }
+ });
+ }else{
+ AppUtil.setBatteryLowNotificationSent(context, false);
+ }
}
}
};
diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/DashBoardActivity.java b/app/src/main/java/com/app/simplitend/patient_dashboard/DashBoardActivity.java
index 3af0169..a26ab68 100644
--- a/app/src/main/java/com/app/simplitend/patient_dashboard/DashBoardActivity.java
+++ b/app/src/main/java/com/app/simplitend/patient_dashboard/DashBoardActivity.java
@@ -1,5 +1,7 @@
package com.app.simplitend.patient_dashboard;
+import static com.app.simplitend.apputils.AppUtil.NOTIFICATION_ACTION;
+import static com.app.simplitend.apputils.NotificationService.CONTENT_TYPE_KEY;
import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_TAG;
import android.Manifest;
@@ -20,18 +22,27 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.lifecycle.ViewModelProvider;
+import com.app.simplitend.BuildConfig;
import com.app.simplitend.R;
import com.app.simplitend.apputils.AppUtil;
+import com.app.simplitend.apputils.Constants;
import com.app.simplitend.apputils.PatientDataCache;
import com.app.simplitend.caregiverdashboard.mvvm.CgHomeContracts;
import com.app.simplitend.caregiverdashboard.mvvm.models.GeoFenceDetails;
+import io.socket.client.IO;
+import io.socket.client.Socket;
+
public class DashBoardActivity extends AppCompatActivity implements CgHomeContracts.GetGeoFenceCallback {
+ private static final String TAG = "DashBoardActivity_SOCKET";
+
protected PatientMainViewModel viewModel;
protected ActivityResultLauncher finePermissionLauncher;
+ private Socket mSocket;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -83,7 +94,12 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra
}
}).launch(Manifest.permission.READ_CONTACTS);
+ PatientDataCache.getPatientData(this, patientData -> {
+ if (patientData == null) return;
+ String uniqueKey = patientData.caregiverId + "medActivity" + patientData.patientId;
+ initSocket(uniqueKey);
+ }, false);
}
@Override
@@ -94,6 +110,70 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra
super.attachBaseContext(newBase);
}
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ if (mSocket != null){
+ mSocket.disconnect();
+ }
+
+ PatientMainViewModel.activityList = null;
+ PatientMainViewModel.remindersList = null;
+ }
+
+ private void initSocket(String uniqueKey) {
+ if (mSocket != null) return;
+
+ try {
+ IO.Options options = new IO.Options();
+ options.forceNew = true;
+ options.reconnection = true;
+ mSocket = IO.socket(BuildConfig.SIMPLITEND_SOKCET_HOST, options);
+
+ mSocket.on(uniqueKey, args -> {
+ try {
+ if (args.length >= 1) {
+ String content_type = (String) args[0];
+ Log.d(TAG, "call: " + content_type);
+ Intent broadcastIntent = new Intent(NOTIFICATION_ACTION);
+ if ("0".equals(content_type)){
+ // medications
+ PatientMainViewModel.remindersList = null;
+ broadcastIntent.putExtra(CONTENT_TYPE_KEY, Constants.MEDICINE_TIME);
+ }else if ("1".equals(content_type)){
+ // activities
+ PatientMainViewModel.activityList = null;
+ broadcastIntent.putExtra(CONTENT_TYPE_KEY, Constants.ACTIVITY_TIME);
+ }
+
+ sendBroadcast(broadcastIntent);
+ }
+ } catch (Exception e) {
+ // do nothing
+ Log.d(TAG, "initializeSocket: ");
+ }
+ });
+
+ mSocket.on(Socket.EVENT_CONNECT, args -> {
+ Log.d(TAG, "Socket connected ");
+ });
+
+ mSocket.on(Socket.EVENT_DISCONNECT, args -> {
+ Log.d(TAG, "Socket disconnected ");
+ });
+
+ mSocket.on(Socket.EVENT_CONNECT_ERROR, args -> {
+ Exception e = (Exception) args[0];
+ Log.e(TAG, "call: ", e);
+ });
+
+ mSocket.connect();
+ } catch (Exception e) {
+ e.printStackTrace();
+ Log.e(TAG, "SocketHelper: ", e);
+ }
+ }
+
// saves the geofence details
private void updateGeofenceDetails() {
// retrieving geofence
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 ec4f55e..61f5ccf 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
@@ -126,9 +126,17 @@ public class PatientDashboardFragment extends Fragment implements ProfileContrac
clickEvents();
- loadReminders();
+ if (PatientMainViewModel.remindersList == null){
+ loadReminders();
+ }else {
+ onRemindersListFetched(PatientMainViewModel.remindersList);
+ }
- loadActivities();
+ if (PatientMainViewModel.activityList == null){
+ loadActivities();
+ }else {
+ onRoutinesFetched(PatientMainViewModel.activityList);
+ }
notification_receiver = new BroadcastReceiver() {
@Override
diff --git a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/AddReminderFragment.java b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/AddReminderFragment.java
index a07118b..4119cd1 100644
--- a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/AddReminderFragment.java
+++ b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/AddReminderFragment.java
@@ -773,6 +773,12 @@ public class AddReminderFragment extends Fragment implements CompoundButton.OnCh
public void onReminderAdded(ReminderResult reminderDetails) {
progressDialog.dismiss();
+ try {
+ viewModel.sendReminderUpdatedMessage(requireContext());
+ } catch (Exception e) {
+ // do nothing
+ }
+
if (reminder == null) {
Toast.makeText(requireContext(), "Reminder added successfully.", Toast.LENGTH_SHORT).show();
diff --git a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/ReminderFragment.java b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/ReminderFragment.java
index 796009b..519ad5a 100644
--- a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/ReminderFragment.java
+++ b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/ReminderFragment.java
@@ -328,16 +328,15 @@ public class ReminderFragment extends Fragment implements RecyclerTouchListener.
public void onRemindersListFetched(List reminderResultList) {
progressDialog.dismiss();
+ // updating global list of reminders
+ if (reminderViewModel.selected_dow == 0){
+ // only updating global list of reminders with current day's reminder list
+ CaregiverMainViewModel.remindersList = reminderResultList;
+ PatientMainViewModel.remindersList = reminderResultList;
+ }
+
if (reminderResultList != null && reminderResultList.size() > 0) {
// reminders are present
-
- // updating global list of reminders
- if (reminderViewModel.selected_dow == 0){
- // only updating global list of reminders with current day's reminder list
- CaregiverMainViewModel.remindersList = reminderResultList;
- PatientMainViewModel.remindersList = reminderResultList;
- }
-
binding.remindersRv.setVisibility(View.VISIBLE);
binding.noData.setVisibility(View.GONE);
@@ -370,6 +369,11 @@ public class ReminderFragment extends Fragment implements RecyclerTouchListener.
Toast.makeText(requireContext(), "Reminder deleted.", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
loadReminderList(weekDayViewsList.get(reminderViewModel.selected_dow).day_of_week);
+ try {
+ reminderViewModel.sendReminderUpdatedMessage(requireContext());
+ } catch (Exception e) {
+ // do nothing
+ }
}
@Override
@@ -453,6 +457,11 @@ public class ReminderFragment extends Fragment implements RecyclerTouchListener.
public void onReminderAdded(ReminderResult reminderDetails) {
progressDialog.dismiss();
loadReminderList(weekDayViewsList.get(reminderViewModel.selected_dow).day_of_week);
+ try {
+ reminderViewModel.sendReminderUpdatedMessage(requireContext());
+ } catch (Exception e) {
+ // do nothing
+ }
}
@Override
diff --git a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/mvvm/ReminderViewModel.java b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/mvvm/ReminderViewModel.java
index 4c9dc5d..c7b7a0b 100644
--- a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/mvvm/ReminderViewModel.java
+++ b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/mvvm/ReminderViewModel.java
@@ -1,8 +1,14 @@
package com.app.simplitend.patientprofile.medreminder.mvvm;
+import android.content.Context;
+
import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModel;
+import com.app.simplitend.apputils.AppUtil;
+import com.app.simplitend.apputils.CaregiverDataCache;
+import com.app.simplitend.apputils.PatientDataCache;
+import com.app.simplitend.chats.SocketHelper;
import com.app.simplitend.patientprofile.ProfileContracts;
import com.app.simplitend.patientprofile.medreminder.mvvm.models.ReminderResult;
@@ -96,6 +102,60 @@ public class ReminderViewModel extends ViewModel {
return "";
}
+ // updating caregiver or senior about changes in reminders
+ public void sendReminderUpdatedMessage(Context context){
+ if (AppUtil.isPatientLoggedIn(context)){
+ // senior logged in
+ PatientDataCache.getPatientData(context, patientData -> {
+ if (patientData == null){
+ return;
+ }
+ String uniqueId = patientData.patientId + "medActivity" + patientData.caregiverId;
+ SocketHelper.getInstance().establishConnection(new SocketHelper.SockCallBack() {
+ @Override
+ public void onSocketConnected() {
+ SocketHelper.getInstance().sendUpdates(uniqueId, "0");
+ }
+
+ @Override
+ public void onConnectionError(Exception e) {
+
+ }
+
+ @Override
+ public void onDisconnected() {
+
+ }
+ });
+ }, false);
+
+ }else{
+ // caregiver logged in
+ CaregiverDataCache.getCaregiverData(context, careGiverData -> {
+ if (careGiverData == null){
+ return;
+ }
+
+ String uniqueId = careGiverData.caregiver_xid + "medActivity" + careGiverData.patientId;
+ SocketHelper.getInstance().establishConnection(new SocketHelper.SockCallBack() {
+ @Override
+ public void onSocketConnected() {
+ SocketHelper.getInstance().sendUpdates(uniqueId, "0");
+ }
+
+ @Override
+ public void onConnectionError(Exception e) {
+
+ }
+
+ @Override
+ public void onDisconnected() {
+
+ }
+ });
+ }, false);
+ }
+ }
}
diff --git a/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/AddRoutineFragment.java b/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/AddRoutineFragment.java
index 093aec2..cbcdb37 100644
--- a/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/AddRoutineFragment.java
+++ b/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/AddRoutineFragment.java
@@ -475,6 +475,12 @@ public class AddRoutineFragment extends Fragment implements CompoundButton.OnChe
public void onRoutineAdded(RoutineDetails medicationInfo) {
progressDialog.dismiss();
+ try {
+ routineViewModel.sendReminderUpdatedMessage(requireContext());
+ } catch (Exception e) {
+ // do nothing
+ }
+
if (this.routine == null) {
Toast.makeText(requireContext(), "Activity saved successfully.", Toast.LENGTH_SHORT).show();
diff --git a/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/RoutineFragment.java b/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/RoutineFragment.java
index b013f1e..e8ec275 100644
--- a/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/RoutineFragment.java
+++ b/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/RoutineFragment.java
@@ -321,6 +321,12 @@ public class RoutineFragment extends Fragment implements RoutineAdapter.ClickLis
Toast.makeText(requireContext(), "Reminder deleted.", Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
loadRoutineList(weekDayViewsList.get(routineViewModel.selected_dow).day_of_week);
+
+ try {
+ routineViewModel.sendReminderUpdatedMessage(requireContext());
+ } catch (Exception e) {
+ // do nothing
+ }
}
@Override
@@ -341,15 +347,15 @@ public class RoutineFragment extends Fragment implements RoutineAdapter.ClickLis
public void onRoutinesFetched(List routineList) {
progressDialog.dismiss();
+ // updating global list of activities for today's day
+ if (routineViewModel.selected_dow == 0) {
+ CaregiverMainViewModel.activityList = routineList;
+ PatientMainViewModel.activityList = routineList;
+ }
+
if (routineList != null && routineList.size() > 0) {
// reminders are present
- // updating global list of activities for today's day
- if (routineViewModel.selected_dow == 0) {
- CaregiverMainViewModel.activityList = routineList;
- PatientMainViewModel.activityList = routineList;
- }
-
binding.routineRv.setVisibility(View.VISIBLE);
binding.noData.setVisibility(View.GONE);
@@ -507,6 +513,11 @@ public class RoutineFragment extends Fragment implements RoutineAdapter.ClickLis
public void onRoutineAdded(RoutineDetails medicationInfo) {
progressDialog.dismiss();
loadRoutineList(weekDayViewsList.get(routineViewModel.selected_dow).day_of_week);
+ try {
+ routineViewModel.sendReminderUpdatedMessage(requireContext());
+ } catch (Exception e) {
+ // do nothing
+ }
}
@Override
diff --git a/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/mvvm/RoutineViewModel.java b/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/mvvm/RoutineViewModel.java
index d005c0a..24555a6 100644
--- a/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/mvvm/RoutineViewModel.java
+++ b/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/mvvm/RoutineViewModel.java
@@ -1,8 +1,14 @@
package com.app.simplitend.patientprofile.setuproutine.mvvm;
+import android.content.Context;
+
import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModel;
+import com.app.simplitend.apputils.AppUtil;
+import com.app.simplitend.apputils.CaregiverDataCache;
+import com.app.simplitend.apputils.PatientDataCache;
+import com.app.simplitend.chats.SocketHelper;
import com.app.simplitend.patientprofile.ProfileContracts;
public class RoutineViewModel extends ViewModel {
@@ -93,4 +99,60 @@ public class RoutineViewModel extends ViewModel {
return "";
}
+
+ // updating caregiver or senior about changes in reminders
+ public void sendReminderUpdatedMessage(Context context){
+ if (AppUtil.isPatientLoggedIn(context)){
+ // senior logged in
+ PatientDataCache.getPatientData(context, patientData -> {
+ if (patientData == null){
+ return;
+ }
+
+ String uniqueId = patientData.patientId + "medActivity" + patientData.caregiverId;
+ SocketHelper.getInstance().establishConnection(new SocketHelper.SockCallBack() {
+ @Override
+ public void onSocketConnected() {
+ SocketHelper.getInstance().sendUpdates(uniqueId, "1");
+ }
+
+ @Override
+ public void onConnectionError(Exception e) {
+
+ }
+
+ @Override
+ public void onDisconnected() {
+
+ }
+ });
+ }, false);
+
+ }else{
+ // caregiver logged in
+ CaregiverDataCache.getCaregiverData(context, careGiverData -> {
+ if (careGiverData == null){
+ return;
+ }
+
+ String uniqueId = careGiverData.caregiver_xid + "medActivity" + careGiverData.patientId;
+ SocketHelper.getInstance().establishConnection(new SocketHelper.SockCallBack() {
+ @Override
+ public void onSocketConnected() {
+ SocketHelper.getInstance().sendUpdates(uniqueId, "1");
+ }
+
+ @Override
+ public void onConnectionError(Exception e) {
+
+ }
+
+ @Override
+ public void onDisconnected() {
+
+ }
+ });
+ }, false);
+ }
+ }
}