From 78e323ebb10a44cf7caf588646690372cab85fd2 Mon Sep 17 00:00:00 2001 From: Aditya_WDI Date: Tue, 3 Oct 2023 20:54:09 +0530 Subject: [PATCH] . --- app/src/main/AndroidManifest.xml | 7 +- .../fragments/CgDashBoardFragment.java | 28 ++- .../NotificationsActivity.java | 167 ++++++++++++++++++ .../PatSettingsActivity.java | 2 + .../fragments/PatientDashboardFragment.java | 4 +- .../fragments/register/LocationFragment.java | 40 +++-- app/src/main/res/drawable/ic_missed_noti.xml | 28 +++ .../res/drawable/img_no_notifications.png | Bin 0 -> 18254 bytes .../res/layout/activity_notifications.xml | 85 +++++++++ .../res/layout/caregiver_dash_fragment.xml | 1 + .../layout/caregiver_dashboard_activity.xml | 2 + .../res/layout/notification_viewholder.xml | 62 +++++++ app/src/main/res/values/strings.xml | 6 +- 13 files changed, 400 insertions(+), 32 deletions(-) create mode 100644 app/src/main/java/com/app/simplitend/patient_dashboard/NotificationsActivity.java create mode 100644 app/src/main/res/drawable/ic_missed_noti.xml create mode 100644 app/src/main/res/drawable/img_no_notifications.png create mode 100644 app/src/main/res/layout/activity_notifications.xml create mode 100644 app/src/main/res/layout/notification_viewholder.xml 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 0000000000000000000000000000000000000000..1a68663d4aad5a766fc78992e8634ca69450aba3 GIT binary patch literal 18254 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 RmdgMD002ovPDHLkV1oZ=T!R1r literal 0 HcmV?d00001 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