diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index 0c0c338..66de1a5 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -3,7 +3,20 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4c9c65b..11ea82f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -260,7 +260,8 @@
android:resource="@xml/file_paths" />
-
+
+
\ No newline at end of file
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 046dec9..c52633d 100644
--- a/app/src/main/java/com/app/simplitend/apputils/AppUtil.java
+++ b/app/src/main/java/com/app/simplitend/apputils/AppUtil.java
@@ -29,6 +29,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
+import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.RawRes;
@@ -41,7 +42,7 @@ 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.FoodScheduler;
+import com.app.simplitend.patient_dashboard.foodreminders.FoodScheduler;
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;
@@ -315,7 +316,7 @@ public abstract class AppUtil {
}
}
- public static void dialPhone(Context activity, String phone_number) {
+ public static void dialPhone(Activity activity, String phone_number) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel",
phone_number, null));
if (activity != null) activity.startActivity(intent);
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 e2b1f3d..89b91ea 100644
--- a/app/src/main/java/com/app/simplitend/apputils/BottomNotificationActivity.java
+++ b/app/src/main/java/com/app/simplitend/apputils/BottomNotificationActivity.java
@@ -8,13 +8,16 @@ import static com.app.simplitend.apputils.AppUtil.MEDICATION_REFILL_NOTIFICATION
import static com.app.simplitend.apputils.AppUtil.SOS_NOTIFICATIONS;
import static com.app.simplitend.apputils.AppUtil.getCgNotificationPref;
import static com.app.simplitend.apputils.Constants.ACTIVITY_EXTRA_KEY;
+import static com.app.simplitend.apputils.Constants.MEAL_REMINDER;
import static com.app.simplitend.apputils.Constants.MEDICATION_REFILL;
import static com.app.simplitend.apputils.Constants.REMINDER_EXTRA_KEY;
import static com.app.simplitend.apputils.NotificationService.CONTENT_TYPE_KEY;
import static com.app.simplitend.apputils.NotificationService.NOTIFICATION_CONTENT_ID_KEY;
import static com.app.simplitend.apputils.NotificationService.NOTIFICATION_SENIOR_ADDRESS_KEY;
import static com.app.simplitend.locationupdates.LocationService.EXTRA_BATTERY_PERCENTAGE;
+import static com.app.simplitend.patient_dashboard.foodreminders.FoodReminderYesReceiver.WHICH_FOOD_REMINDER;
+import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
@@ -22,6 +25,8 @@ import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
@@ -30,18 +35,31 @@ import com.app.simplitend.caregiverdashboard.mvvm.CaregiverMainViewModel;
import com.app.simplitend.chats.ChatsActivity;
import com.app.simplitend.databinding.BottomSheetAlertBinding;
import com.app.simplitend.patient_dashboard.PatientMainViewModel;
+import com.app.simplitend.patient_dashboard.foodreminders.FoodReminderNotifyingService;
import com.app.simplitend.patientprofile.medreminder.mvvm.models.ReminderResult;
import com.app.simplitend.patientprofile.setuproutine.mvvm.RoutineDetails;
+import com.app.simplitend.welcome.welcomepatient.mvvm.models.CallResponse;
import com.bumptech.glide.Glide;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.HashMap;
import java.util.Locale;
+import java.util.Map;
import java.util.Objects;
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+
public class BottomNotificationActivity extends AppCompatActivity {
+ private ActivityResultLauncher callPermission;
+ private String selected_phone_number = null;
+
+ private BottomSheetDialog bsd = null;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -52,6 +70,14 @@ public class BottomNotificationActivity extends AppCompatActivity {
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// }
+ callPermission = registerForActivityResult(new ActivityResultContracts.RequestPermission(),
+ isGranted -> {
+ if (selected_phone_number == null) return;
+
+ if (bsd != null) bsd.dismiss();
+ AppUtil.callPhone(this, selected_phone_number);
+ });
+
if (AppUtil.getCgToken(this) != null){
// handle caregiver bottom sheets
handleCaregiverBottomSheets();
@@ -154,7 +180,7 @@ public class BottomNotificationActivity extends AppCompatActivity {
if (content_type == null) return;
- BottomSheetDialog bsd = new BottomSheetDialog(context, R.style.BottomSheetDialog);
+ bsd = new BottomSheetDialog(context, R.style.BottomSheetDialog);
BottomSheetAlertBinding binding = BottomSheetAlertBinding.inflate(LayoutInflater.from(context));
bsd.setContentView(binding.getRoot());
@@ -209,13 +235,13 @@ public class BottomNotificationActivity extends AppCompatActivity {
senior_distance, "Call senior",
v -> {
CaregiverDataCache.getCaregiverData(context, (careGiverData -> {
- bsd.dismiss();
if (careGiverData == null || careGiverData.patientDetails == null) {
Toast.makeText(context, "Couldn't load data", Toast.LENGTH_SHORT).show();
return;
}
- AppUtil.dialPhone(context, careGiverData.patientDetails.phone_number);
+ selected_phone_number = careGiverData.patientDetails.phone_number;
+ callPermission.launch(Manifest.permission.CALL_PHONE);
}), true);
});
@@ -336,13 +362,13 @@ public class BottomNotificationActivity extends AppCompatActivity {
doh_distance, "Call senior",
v -> {
CaregiverDataCache.getCaregiverData(context, (careGiverData -> {
- bsd.dismiss();
if (careGiverData == null || careGiverData.patientDetails == null) {
Toast.makeText(context, "Couldn't load data", Toast.LENGTH_SHORT).show();
return;
}
- AppUtil.dialPhone(context, careGiverData.patientDetails.phone_number);
+ selected_phone_number = careGiverData.patientDetails.phone_number;
+ callPermission.launch(Manifest.permission.CALL_PHONE);
}), true);
});
@@ -364,13 +390,13 @@ public class BottomNotificationActivity extends AppCompatActivity {
null, "Call senior",
v -> {
CaregiverDataCache.getCaregiverData(context, (careGiverData -> {
- bsd.dismiss();
if (careGiverData == null || careGiverData.patientDetails == null) {
Toast.makeText(context, "Couldn't load data", Toast.LENGTH_SHORT).show();
return;
}
- AppUtil.dialPhone(context, careGiverData.patientDetails.phone_number);
+ selected_phone_number = careGiverData.patientDetails.phone_number;
+ callPermission.launch(Manifest.permission.CALL_PHONE);
}), true);
});
@@ -417,6 +443,26 @@ public class BottomNotificationActivity extends AppCompatActivity {
bsd.show();
break;
+
+ case MEAL_REMINDER:
+ setUpCgBottomSheet(binding,
+ R.drawable.img_out_of_geo,
+ title, body,
+ null, "Call senior",
+ v -> {
+ CaregiverDataCache.getCaregiverData(context, (careGiverData -> {
+ if (careGiverData == null || careGiverData.patientDetails == null) {
+ Toast.makeText(context, "Couldn't load data", Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ selected_phone_number = careGiverData.patientDetails.phone_number;
+ callPermission.launch(Manifest.permission.CALL_PHONE);
+ }), true);
+ });
+
+ bsd.show();
+ break;
}
// already returning
@@ -442,7 +488,7 @@ public class BottomNotificationActivity extends AppCompatActivity {
if (content_type == null) return;
- BottomSheetDialog bsd = new BottomSheetDialog(context, R.style.BottomSheetDialog);
+ bsd = new BottomSheetDialog(context, R.style.BottomSheetDialog);
BottomSheetAlertBinding binding = BottomSheetAlertBinding.inflate(LayoutInflater.from(context));
bsd.setContentView(binding.getRoot());
@@ -466,7 +512,7 @@ public class BottomNotificationActivity extends AppCompatActivity {
null, "Close", view -> {
bsd.dismiss();
finish();
- });
+ }, null, null);
bsd.show();
break;
@@ -515,7 +561,7 @@ public class BottomNotificationActivity extends AppCompatActivity {
routine_description, "Close", view -> {
bsd.dismiss();
finish();
- });
+ }, null, null);
bsd.show();
break;
@@ -563,10 +609,36 @@ public class BottomNotificationActivity extends AppCompatActivity {
description, "Close", view -> {
bsd.dismiss();
finish();
- });
+ },null, null);
bsd.show();
break;
+ case MEAL_REMINDER:
+ setUpSeniorBottomSheet(binding,
+ R.drawable.img_medication_time,
+ "Meal reminder", title,
+ null, "No", view -> {
+ bsd.dismiss();
+ int which_meal = intent.getIntExtra(WHICH_FOOD_REMINDER, -1);
+ if (which_meal == -1) return;
+
+ FoodReminderNotifyingService.NotificationsApiService apiService = RetrofitHelper.getRetrofit().create(FoodReminderNotifyingService.NotificationsApiService.class);
+ Map requestBody = new HashMap<>();
+ requestBody.put("patient_id", AppUtil.getPatientUid(this));
+ requestBody.put("meal_type", which_meal);
+
+ apiService.sendMealNotification("Bearer " + AppUtil.getPatientToken(this), requestBody)
+ .enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {}
+ @Override
+ public void onFailure(Call> call, Throwable t) {}
+ });
+ }, "Yes",view -> {
+ bsd.dismiss();
+ });
+ bsd.show();
+ break;
}
}
@@ -574,7 +646,9 @@ public class BottomNotificationActivity extends AppCompatActivity {
int img_res,
String title, String description_title,
String description, String btn_text,
- View.OnClickListener btn_clickListener) {
+ View.OnClickListener btn_clickListener,
+ String close_txt,
+ View.OnClickListener close_clickListener) {
// binding.image.setImageResource(img_res);
Glide.with(binding.image)
.load(img_res)
@@ -583,7 +657,13 @@ public class BottomNotificationActivity extends AppCompatActivity {
binding.descriptionTitle.setText(description_title);
binding.description.setText(description);
- binding.close.setVisibility(View.GONE);
+ if (close_clickListener == null){
+ binding.close.setVisibility(View.GONE);
+ }else{
+ binding.close.setVisibility(View.VISIBLE);
+ binding.close.setText(close_txt);
+ binding.close.setOnClickListener(close_clickListener);
+ }
binding.btn.setText(btn_text);
binding.btn.setOnClickListener(btn_clickListener);
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 05b33fa..b6703e8 100644
--- a/app/src/main/java/com/app/simplitend/apputils/Constants.java
+++ b/app/src/main/java/com/app/simplitend/apputils/Constants.java
@@ -17,4 +17,6 @@ public abstract class Constants {
public static final String ACTIVITY_EXTRA_KEY = "activity_extra_key";
public static final String MEDICATION_REFILL = "medication_refill";
+
+ public static final String MEAL_REMINDER = "meals_time_reminder";
}
\ No newline at end of file
diff --git a/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/MyPatientFragment.java b/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/MyPatientFragment.java
index cab5062..692ac7c 100644
--- a/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/MyPatientFragment.java
+++ b/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/MyPatientFragment.java
@@ -164,7 +164,7 @@ public class MyPatientFragment extends Fragment implements CgHomeContracts.GetGe
binding.phoneNumber.setOnClickListener(v -> {
if (careGiverData != null && careGiverData.patientDetails != null) {
- AppUtil.dialPhone(requireActivity(), careGiverData.patientDetails.phone_number);
+ AppUtil.callPhone(requireActivity(), careGiverData.patientDetails.phone_number);
}
});
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 a4dd3e2..f2f7adc 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
@@ -29,6 +29,7 @@ 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 com.app.simplitend.patient_dashboard.foodreminders.FoodScheduler;
import io.socket.client.IO;
import io.socket.client.Socket;
diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/FoodReminderReceiver.java b/app/src/main/java/com/app/simplitend/patient_dashboard/FoodReminderReceiver.java
deleted file mode 100644
index 6fe1e3e..0000000
--- a/app/src/main/java/com/app/simplitend/patient_dashboard/FoodReminderReceiver.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.app.simplitend.patient_dashboard;
-
-import static com.app.simplitend.patient_dashboard.FoodScheduler.FOOD_REMINDER_NOTIFICATION_ID;
-
-import android.app.NotificationManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.util.Log;
-import android.widget.Toast;
-
-public class FoodReminderReceiver extends BroadcastReceiver {
-
- private static final String TAG = "FoodScheduler";
-
- public static final String REMINDER_ACTION = "reminder_action";
- public static final String WHICH_FOOD_REMINDER = "which_food_reminder";
-
- @Override
- public void onReceive(Context context, Intent intent) {
- int which_meal = intent.getIntExtra(WHICH_FOOD_REMINDER, -1);
- int action = intent.getIntExtra(REMINDER_ACTION, -1);
-
- Log.d(TAG, "onReceive: " + which_meal + " " + action);
-
- if (which_meal != -1 && action != -1){
- if (action == 1){
- // user clicked on yes
- Toast.makeText(context, "Yes", Toast.LENGTH_SHORT).show();
- }else{
- // user clicked on no
- Toast.makeText(context, "No", Toast.LENGTH_SHORT).show();
- }
- }
- }
-}
diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/foodreminders/FoodReminderNotifyingService.java b/app/src/main/java/com/app/simplitend/patient_dashboard/foodreminders/FoodReminderNotifyingService.java
new file mode 100644
index 0000000..2288c35
--- /dev/null
+++ b/app/src/main/java/com/app/simplitend/patient_dashboard/foodreminders/FoodReminderNotifyingService.java
@@ -0,0 +1,76 @@
+package com.app.simplitend.patient_dashboard.foodreminders;
+
+import static com.app.simplitend.patient_dashboard.foodreminders.FoodReminderYesReceiver.WHICH_FOOD_REMINDER;
+import static com.app.simplitend.patient_dashboard.foodreminders.FoodScheduler.FOOD_REMINDER_NOTIFICATION_ID;
+
+import android.app.NotificationManager;
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.IBinder;
+import android.util.Log;
+
+import androidx.annotation.Nullable;
+
+import com.app.simplitend.apputils.AppUtil;
+import com.app.simplitend.apputils.RetrofitHelper;
+import com.app.simplitend.welcome.welcomepatient.mvvm.models.CallResponse;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.http.Body;
+import retrofit2.http.Header;
+import retrofit2.http.POST;
+
+public class FoodReminderNotifyingService extends Service {
+
+ private static final String TAG = "FoodScheduler";
+
+ @Nullable
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ int which_meal = intent.getIntExtra(WHICH_FOOD_REMINDER, -1);
+
+ if (which_meal != -1){
+ Log.d(TAG, "NO clicked for " + which_meal);
+ NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ notificationManager.cancel(FOOD_REMINDER_NOTIFICATION_ID + which_meal);
+
+ NotificationsApiService apiService = RetrofitHelper.getRetrofit().create(NotificationsApiService.class);
+
+ Map body = new HashMap<>();
+ body.put("patient_id", AppUtil.getPatientUid(this));
+ body.put("meal_type", which_meal);
+
+ apiService.sendMealNotification("Bearer " + AppUtil.getPatientToken(this), body)
+ .enqueue(new Callback>() {
+ @Override
+ public void onResponse(Call> call, Response> response) {
+ Log.d(TAG, "onResponse: " + response);
+ }
+
+ @Override
+ public void onFailure(Call> call, Throwable t) {
+ Log.d(TAG, "onFailure: " + t);
+ }
+ });
+
+ }
+ return super.onStartCommand(intent, flags, startId);
+ }
+
+ public interface NotificationsApiService{
+
+ @POST("api/send-notification-to-caregiver-meals-time")
+ Call> sendMealNotification(@Header("Authorization") String token, @Body Map body);
+ }
+}
diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/foodreminders/FoodReminderYesReceiver.java b/app/src/main/java/com/app/simplitend/patient_dashboard/foodreminders/FoodReminderYesReceiver.java
new file mode 100644
index 0000000..f9325da
--- /dev/null
+++ b/app/src/main/java/com/app/simplitend/patient_dashboard/foodreminders/FoodReminderYesReceiver.java
@@ -0,0 +1,25 @@
+package com.app.simplitend.patient_dashboard.foodreminders;
+
+import static com.app.simplitend.patient_dashboard.foodreminders.FoodScheduler.FOOD_REMINDER_NOTIFICATION_ID;
+
+import android.app.NotificationManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.util.Log;
+
+public class FoodReminderYesReceiver extends BroadcastReceiver {
+
+ private static final String TAG = "FoodScheduler";
+ public static final String WHICH_FOOD_REMINDER = "which_food_reminder";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ int which = intent.getIntExtra(WHICH_FOOD_REMINDER, -1);
+ if (which != -1){
+ Log.d(TAG, "YES clicked for : " + which);
+ NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+ notificationManager.cancel(FOOD_REMINDER_NOTIFICATION_ID + which);
+ }
+ }
+}
diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/FoodScheduler.java b/app/src/main/java/com/app/simplitend/patient_dashboard/foodreminders/FoodScheduler.java
similarity index 67%
rename from app/src/main/java/com/app/simplitend/patient_dashboard/FoodScheduler.java
rename to app/src/main/java/com/app/simplitend/patient_dashboard/foodreminders/FoodScheduler.java
index 2c535fa..f4faeb2 100644
--- a/app/src/main/java/com/app/simplitend/patient_dashboard/FoodScheduler.java
+++ b/app/src/main/java/com/app/simplitend/patient_dashboard/foodreminders/FoodScheduler.java
@@ -1,9 +1,11 @@
-package com.app.simplitend.patient_dashboard;
+package com.app.simplitend.patient_dashboard.foodreminders;
import static android.content.Context.NOTIFICATION_SERVICE;
+import static com.app.simplitend.apputils.Constants.MEAL_REMINDER;
+import static com.app.simplitend.apputils.NotificationService.CONTENT_TYPE_KEY;
+import static com.app.simplitend.apputils.NotificationService.NOTIFICATION_TITLE_KEY;
import static com.app.simplitend.locationupdates.LocationService.FOOD_REMINDER_NOTIFICATION_CHANNEL_ID;
-import static com.app.simplitend.patient_dashboard.FoodReminderReceiver.REMINDER_ACTION;
-import static com.app.simplitend.patient_dashboard.FoodReminderReceiver.WHICH_FOOD_REMINDER;
+import static com.app.simplitend.patient_dashboard.foodreminders.FoodReminderYesReceiver.WHICH_FOOD_REMINDER;
import android.app.Notification;
import android.app.NotificationManager;
@@ -21,6 +23,8 @@ import androidx.work.Worker;
import androidx.work.WorkerParameters;
import com.app.simplitend.R;
+import com.app.simplitend.apputils.BottomNotificationActivity;
+import com.app.simplitend.patient_dashboard.PatientMainViewModel;
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
@@ -39,9 +43,9 @@ public abstract class FoodScheduler {
, lunchMeal, dinnerMeal;
static {
- breakFastMeal = new Meal(FOOD_TIME.BREAK_FAST, 21, 8);
- lunchMeal = new Meal(FOOD_TIME.LUNCH, 20, 23);
- dinnerMeal = new Meal(FOOD_TIME.DINNER, 20, 24);
+ breakFastMeal = new Meal(FOOD_TIME.BREAK_FAST, 18, 56);
+ lunchMeal = new Meal(FOOD_TIME.LUNCH, 18, 57);
+ dinnerMeal = new Meal(FOOD_TIME.DINNER, 19, 17);
}
public static void scheduleFoodReminders(Context context){
@@ -112,18 +116,17 @@ public abstract class FoodScheduler {
}
private static void showNotification(Context context, String title, int which){
- Intent yesIntent = new Intent(context, FoodReminderReceiver.class);
- yesIntent.putExtra(REMINDER_ACTION, 1);
+ Intent yesIntent = new Intent(context, FoodReminderYesReceiver.class);
yesIntent.putExtra(WHICH_FOOD_REMINDER, which);
- Intent noIntent = new Intent(context, FoodReminderReceiver.class);
- noIntent.putExtra(REMINDER_ACTION, 0);
+
+ Intent noIntent = new Intent(context, FoodReminderNotifyingService.class);
noIntent.putExtra(WHICH_FOOD_REMINDER, which);
Notification notification = new Notification.Builder(context, FOOD_REMINDER_NOTIFICATION_CHANNEL_ID)
.setContentTitle(title)
.setSmallIcon(R.mipmap.ic_launcher_round)
- .addAction(new Notification.Action.Builder(null, "Yes", PendingIntent.getBroadcast(context, FOOD_REMINDER_NOTIFICATION_ID, yesIntent, PendingIntent.FLAG_IMMUTABLE)).build())
- .addAction(new Notification.Action.Builder(null, "No", PendingIntent.getBroadcast(context, FOOD_REMINDER_NOTIFICATION_ID, noIntent, PendingIntent.FLAG_IMMUTABLE)).build())
+ .addAction(new Notification.Action.Builder(null, "Yes", PendingIntent.getBroadcast(context, which, yesIntent, PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT)).build())
+ .addAction(new Notification.Action.Builder(null, "No", PendingIntent.getService(context, which, noIntent, PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT)).build())
.setPriority(Notification.PRIORITY_HIGH)
.build();
@@ -143,8 +146,18 @@ public abstract class FoodScheduler {
@NonNull
@Override
public Result doWork() {
- showNotification(context, "Have you done your breakfast?", 0);
scheduleAt(context, breakFastMeal.hours, breakFastMeal.minutes, FOOD_TIME.BREAK_FAST);
+ if (PatientMainViewModel.remindersList == null){
+ // app is not open
+ showNotification(context, "Have you done your breakfast?", 0);
+ }else {
+ Intent intent = new Intent(context, BottomNotificationActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.putExtra(CONTENT_TYPE_KEY, MEAL_REMINDER);
+ intent.putExtra(WHICH_FOOD_REMINDER, 0);
+ intent.putExtra(NOTIFICATION_TITLE_KEY, "Did you have your breakfast?");
+ context.startActivity(intent);
+ }
return Result.success();
}
}
@@ -161,8 +174,18 @@ public abstract class FoodScheduler {
@NonNull
@Override
public Result doWork() {
- showNotification(context, "Have you done your lunch?", 1);
scheduleAt(context, lunchMeal.hours, lunchMeal.minutes, FOOD_TIME.LUNCH);
+ if (PatientMainViewModel.remindersList == null){
+ // app is not open
+ showNotification(context, "Have you done your lunch?", 1);
+ }else {
+ Intent intent = new Intent(context, BottomNotificationActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.putExtra(CONTENT_TYPE_KEY, MEAL_REMINDER);
+ intent.putExtra(WHICH_FOOD_REMINDER, 1);
+ intent.putExtra(NOTIFICATION_TITLE_KEY, "Did you have your lunch?");
+ context.startActivity(intent);
+ }
return Result.success();
}
}
@@ -179,8 +202,18 @@ public abstract class FoodScheduler {
@NonNull
@Override
public Result doWork() {
- showNotification(context, "Have you done your dinner?", 2);
scheduleAt(context, dinnerMeal.hours, dinnerMeal.minutes, FOOD_TIME.DINNER);
+ if (PatientMainViewModel.remindersList == null){
+ // app is not open
+ showNotification(context, "Have you done your dinner?", 2);
+ }else {
+ Intent intent = new Intent(context, BottomNotificationActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ intent.putExtra(CONTENT_TYPE_KEY, MEAL_REMINDER);
+ intent.putExtra(WHICH_FOOD_REMINDER, 2);
+ intent.putExtra(NOTIFICATION_TITLE_KEY, "Did you have your dinner?");
+ context.startActivity(intent);
+ }
return Result.success();
}
}
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 78ee188..dd87597 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
@@ -11,6 +11,7 @@ import static com.app.simplitend.patient_dashboard.NotificationsActivity.USER_TO
import static com.app.simplitend.patient_dashboard.fragments.CallsActivity.CALL_CONTACT_LIST_KEY;
import static com.app.simplitend.patient_dashboard.fragments.CallsActivity.IS_50_CONTACTS_VIEW;
+import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
@@ -26,6 +27,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
+import androidx.activity.result.ActivityResultLauncher;
+import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
@@ -88,6 +91,8 @@ public class PatientDashboardFragment extends Fragment implements ProfileContrac
private BroadcastReceiver notification_receiver;
+ private ActivityResultLauncher callPermissionLauncher;
+
// date suffixes
String[] suffixes =
// 0 1 2 3 4 5 6 7 8 9
@@ -124,6 +129,13 @@ public class PatientDashboardFragment extends Fragment implements ProfileContrac
reminderViewModel = new ViewModelProvider(requireActivity()).get(ReminderViewModel.class);
routineViewModel = new ViewModelProvider(requireActivity()).get(RoutineViewModel.class);
+ callPermissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(),
+ isGranted -> {
+ if (patientData == null) return;
+
+ AppUtil.callPhone(requireActivity(), patientData.phone_number);
+ });
+
initViews();
clickEvents();
@@ -369,8 +381,7 @@ public class PatientDashboardFragment extends Fragment implements ProfileContrac
Log.d(CALL_BLOCKING_WORk, "CALL BLOCKING DISABLED");
}
- AppUtil.callPhone(requireActivity(), phone_number);
-
+ callPermissionLauncher.launch(Manifest.permission.CALL_PHONE);
}), true);
});