diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 801ddc0..d106568 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -32,9 +32,13 @@
android:theme="@style/Theme.SimpliTend"
tools:targetApi="31">
+
-
diff --git a/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java b/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java
index 7961c3d..cb66de0 100644
--- a/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java
+++ b/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java
@@ -4,6 +4,8 @@ import static com.app.simplitend.apputils.NotificationService.CONTENT_TYPE_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.cg_geofencing.CgGeoFencingActivity.GEOFENCE_DETAILS_KEY;
+import static com.app.simplitend.patient_dashboard.NotificationsActivity.USER_ID;
+import static com.app.simplitend.patient_dashboard.NotificationsActivity.USER_TOKEN;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
@@ -22,13 +24,6 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
-import com.bumptech.glide.Glide;
-import com.google.android.gms.maps.CameraUpdateFactory;
-import com.google.android.gms.maps.GoogleMap;
-import com.google.android.gms.maps.OnMapReadyCallback;
-import com.google.android.gms.maps.SupportMapFragment;
-import com.google.android.gms.maps.model.LatLng;
-import com.google.android.gms.maps.model.MarkerOptions;
import com.app.simplitend.R;
import com.app.simplitend.apputils.AppUtil;
import com.app.simplitend.apputils.CaregiverDataCache;
@@ -42,6 +37,7 @@ import com.app.simplitend.caregiverdashboard.mvvm.CgHomeContracts;
import com.app.simplitend.caregiverdashboard.mvvm.models.GeoFenceDetails;
import com.app.simplitend.cg_geofencing.CgGeoFencingActivity;
import com.app.simplitend.databinding.CaregiverDashFragmentBinding;
+import com.app.simplitend.patient_dashboard.NotificationsActivity;
import com.app.simplitend.patientprofile.ProfileContracts;
import com.app.simplitend.patientprofile.medreminder.mvvm.ReminderViewModel;
import com.app.simplitend.patientprofile.medreminder.mvvm.models.NearestActivity;
@@ -51,6 +47,13 @@ import com.app.simplitend.patientprofile.setuproutine.mvvm.RoutineDetails;
import com.app.simplitend.patientprofile.setuproutine.mvvm.RoutineViewModel;
import com.app.simplitend.welcome.welcomecg.mvvm.CareGiverData;
import com.app.simplitend.welcome.welcomepatient.mvvm.models.PatientData;
+import com.bumptech.glide.Glide;
+import com.google.android.gms.maps.CameraUpdateFactory;
+import com.google.android.gms.maps.GoogleMap;
+import com.google.android.gms.maps.OnMapReadyCallback;
+import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.LatLng;
+import com.google.android.gms.maps.model.MarkerOptions;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -226,6 +229,17 @@ public class CgDashBoardFragment extends Fragment implements
loadReminders();
loadActivities();
});
+
+ binding.notifications.setOnClickListener(view -> {
+ CaregiverDataCache.getCaregiverData(requireActivity(), (careGiverData1 -> {
+ this.careGiverData = careGiverData1;
+
+ Intent intent = new Intent(requireActivity(), NotificationsActivity.class);
+ intent.putExtra(USER_ID, careGiverData.caregiver_xid + "");
+ intent.putExtra(USER_TOKEN, AppUtil.getCgToken(requireContext()));
+ startActivity(intent);
+ }), true);
+ });
}
public void setArticleDetails(ArticleResult articleResult){
diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/NotificationsActivity.java b/app/src/main/java/com/app/simplitend/patient_dashboard/NotificationsActivity.java
new file mode 100644
index 0000000..bc7407e
--- /dev/null
+++ b/app/src/main/java/com/app/simplitend/patient_dashboard/NotificationsActivity.java
@@ -0,0 +1,167 @@
+package com.app.simplitend.patient_dashboard;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.DiffUtil;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.ListAdapter;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.app.simplitend.R;
+import com.app.simplitend.apputils.RetrofitHelper;
+import com.app.simplitend.databinding.ActivityNotificationsBinding;
+import com.app.simplitend.databinding.NotificationViewholderBinding;
+import com.app.simplitend.welcome.welcomepatient.mvvm.models.CallResponse;
+
+import java.util.ArrayList;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.http.GET;
+import retrofit2.http.Header;
+import retrofit2.http.Query;
+
+public class NotificationsActivity extends AppCompatActivity implements Callback>> {
+
+ private ActivityNotificationsBinding binding;
+
+ protected NotificationsApiService apiService;
+
+ protected String user_id;
+ public static final String USER_ID = "user_id";
+
+ protected String token;
+ public static final String USER_TOKEN = "user_token";
+
+ private NotificationsAdapter notificationsAdapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = ActivityNotificationsBinding.inflate(getLayoutInflater());
+ setContentView(binding.getRoot());
+
+ apiService = RetrofitHelper.getRetrofit().create(NotificationsApiService.class);
+
+ user_id = getIntent().getStringExtra(USER_ID);
+ token = getIntent().getStringExtra(USER_TOKEN);
+
+ binding.notificationRv.setLayoutManager(new LinearLayoutManager(this));
+ notificationsAdapter = new NotificationsAdapter();
+ binding.notificationRv.setAdapter(notificationsAdapter);
+
+ if (user_id != null){
+ binding.progress.setVisibility(View.VISIBLE);
+ apiService.getNotifications(user_id, user_id,
+ "Bearer " + token).enqueue(this);
+ }else{
+ binding.errorMsg.setText(R.string.couldn_t_load_notifications);
+ binding.errorView.setVisibility(View.VISIBLE);
+ }
+
+ }
+
+ @Override
+ public void onResponse(Call>> call, Response>> response) {
+ binding.progress.setVisibility(View.GONE);
+ if (response.body() != null){
+ if (response.code() != 200){
+ binding.errorMsg.setText(response.body().message);
+ binding.errorView.setVisibility(View.VISIBLE);
+ return;
+ }
+
+ if (response.body().result == null || response.body().result.isEmpty()){
+ binding.errorMsg.setText(R.string.no_notifications);
+ binding.errorView.setVisibility(View.VISIBLE);
+ return;
+ }
+
+ binding.errorView.setVisibility(View.GONE);
+ binding.notificationRv.setVisibility(View.VISIBLE);
+ notificationsAdapter.submitList(response.body().result);
+
+ }else{
+ binding.errorMsg.setText(R.string.couldn_t_load_notifications);
+ binding.errorView.setVisibility(View.VISIBLE);
+ }
+ }
+
+ @Override
+ public void onFailure(Call>> call, Throwable t) {
+ binding.progress.setVisibility(View.GONE);
+ binding.errorMsg.setText(R.string.couldn_t_load_notifications);
+ binding.errorView.setVisibility(View.VISIBLE);
+ }
+
+ // util classes and interfaces
+
+ public static class NotificationsAdapter extends ListAdapter {
+
+ private static final DiffUtil.ItemCallback DIFF_CALLBACK = new DiffUtil.ItemCallback() {
+ @Override
+ public boolean areItemsTheSame(@NonNull Notification oldItem, @NonNull Notification newItem) {
+ return oldItem.id == newItem.id;
+ }
+
+ @Override
+ public boolean areContentsTheSame(@NonNull Notification oldItem, @NonNull Notification newItem) {
+ return oldItem.id == newItem.id;
+ }
+ };
+
+ public NotificationsAdapter(){
+ super(DIFF_CALLBACK);
+ }
+
+ @NonNull
+ @Override
+ public NotificationViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ NotificationViewholderBinding n_binding = NotificationViewholderBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false);
+ return new NotificationViewHolder(n_binding);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull NotificationViewHolder holder, int position) {
+ holder.setData(getItem(position));
+ }
+
+ public static class NotificationViewHolder extends RecyclerView.ViewHolder{
+ public NotificationViewholderBinding binding;
+ public NotificationViewHolder(@NonNull NotificationViewholderBinding binding){
+ super(binding.getRoot());
+ }
+
+ public void setData(Notification notification){
+ if (notification == null) return;
+
+ binding.description.setText(notification.description);
+ }
+ }
+ }
+
+ public static class Notification{
+ public int id;
+ public String patient_xid;
+ public String caregiver_xid;
+ public String type;
+ public String date_added;
+ public String description;
+ public String created_at;
+ public String updated_at;
+ }
+
+ public interface NotificationsApiService{
+
+ @GET("api/get-notifications")
+ Call>> getNotifications(@Query("caregiverId") String c_id,
+ @Query("patientId") String p_id,
+ @Header("Authorization") String token);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/app/simplitend/patient_dashboard/PatSettingsActivity.java b/app/src/main/java/com/app/simplitend/patient_dashboard/PatSettingsActivity.java
index d955338..27bcbe4 100644
--- a/app/src/main/java/com/app/simplitend/patient_dashboard/PatSettingsActivity.java
+++ b/app/src/main/java/com/app/simplitend/patient_dashboard/PatSettingsActivity.java
@@ -51,6 +51,8 @@ public class PatSettingsActivity extends AppCompatActivity implements CgHomeCont
private void clickEvents() {
+ binding.backBtn.setOnClickListener(v -> onBackPressed());
+
binding.deActivate.setOnClickListener(v -> {
Intent intent = new Intent(this, DeActivateAccountActivity.class);
intent.putExtra(IS_PATIENT_KEY, true);
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 fa5ce0c..7f16747 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
@@ -22,8 +22,6 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.Navigation;
-import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.app.simplitend.R;
import com.app.simplitend.appblocking.FUAActivity;
import com.app.simplitend.apputils.AppUtil;
@@ -42,6 +40,8 @@ import com.app.simplitend.patientprofile.setuproutine.mvvm.RoutineDetails;
import com.app.simplitend.patientprofile.setuproutine.mvvm.RoutineViewModel;
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;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/LocationFragment.java b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/LocationFragment.java
index 26a007a..1fbe65e 100644
--- a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/LocationFragment.java
+++ b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/LocationFragment.java
@@ -415,17 +415,19 @@ public class LocationFragment extends Fragment implements OnMapReadyCallback,
}
if ((fineLocationGranted != null && fineLocationGranted) || (coarseLocationGranted != null && coarseLocationGranted)) {
- // one of the location access granted.
- Toast.makeText(requireContext(), "Fetching your current location", Toast.LENGTH_SHORT).show();
- if (googleMap != null) {
- if (ActivityCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- return;
+ if (currentLocation == null) {
+ // one of the location access granted.
+ Toast.makeText(requireContext(), "Fetching your current location", Toast.LENGTH_SHORT).show();
+ if (googleMap != null) {
+ if (ActivityCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(requireContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ return;
+ }
+ googleMap.setMyLocationEnabled(true);
+ googleMap.getUiSettings().setMyLocationButtonEnabled(true);
}
- googleMap.setMyLocationEnabled(true);
- googleMap.getUiSettings().setMyLocationButtonEnabled(true);
- }
- requestLocations();
+ requestLocations();
+ }
}
}
).launch(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION});
@@ -433,18 +435,18 @@ public class LocationFragment extends Fragment implements OnMapReadyCallback,
@Override
public void onLocationChanged(@NonNull Location location) {
- Log.d(TAG, "onLocationChanged: " + location);
- this.currentLocation = new LatLng(location.getLatitude(), location.getLongitude());
- fusedLocationProviderClient.removeLocationUpdates(this);
- Log.d(TAG, "onLocationChanged: location updates removed");
+ if (currentLocation == null) {
+ this.currentLocation = new LatLng(location.getLatitude(), location.getLongitude());
+ fusedLocationProviderClient.removeLocationUpdates(this);
+ Log.d(TAG, "onLocationChanged: location updates removed");
- CameraPosition default_map_pos = new CameraPosition.Builder()
- .target(currentLocation)
- .zoom(15)
- .build();
-
- googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(default_map_pos));
+ CameraPosition default_map_pos = new CameraPosition.Builder()
+ .target(currentLocation)
+ .zoom(15)
+ .build();
+ googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(default_map_pos));
+ }
}
@Override
diff --git a/app/src/main/res/drawable/ic_missed_noti.xml b/app/src/main/res/drawable/ic_missed_noti.xml
new file mode 100644
index 0000000..8899395
--- /dev/null
+++ b/app/src/main/res/drawable/ic_missed_noti.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/img_no_notifications.png b/app/src/main/res/drawable/img_no_notifications.png
new file mode 100644
index 0000000..1a68663
Binary files /dev/null and b/app/src/main/res/drawable/img_no_notifications.png differ
diff --git a/app/src/main/res/layout/activity_notifications.xml b/app/src/main/res/layout/activity_notifications.xml
new file mode 100644
index 0000000..91c0e4e
--- /dev/null
+++ b/app/src/main/res/layout/activity_notifications.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/caregiver_dash_fragment.xml b/app/src/main/res/layout/caregiver_dash_fragment.xml
index e32d9f7..e950068 100644
--- a/app/src/main/res/layout/caregiver_dash_fragment.xml
+++ b/app/src/main/res/layout/caregiver_dash_fragment.xml
@@ -32,6 +32,7 @@
android:layout_height="?android:attr/actionBarSize">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fb66034..915af0f 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -228,8 +228,7 @@
Settings
Not now
-
- AIzaSyDQvd4THJsS62DeDidNzfP3rrnKe7zmM-4
+ AIzaSyBSaqTnkexE3TPb3WOdfgB9iX155pXY_ew
Search places
I accept
terms and conditions
@@ -430,5 +429,8 @@
https://www.simplitend.com/privacy-policy
https://www.simplitend.com/terms-and-conditions
Couldn\'t load plans
+ Notifications
+ Couldn\'t load notifications
+ No notifications
\ No newline at end of file