.
This commit is contained in:
@@ -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){
|
||||
|
||||
@@ -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<CallResponse<ArrayList<NotificationsActivity.Notification>>> {
|
||||
|
||||
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<CallResponse<ArrayList<Notification>>> call, Response<CallResponse<ArrayList<Notification>>> 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<CallResponse<ArrayList<Notification>>> 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<Notification, NotificationsAdapter.NotificationViewHolder> {
|
||||
|
||||
private static final DiffUtil.ItemCallback<Notification> DIFF_CALLBACK = new DiffUtil.ItemCallback<Notification>() {
|
||||
@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<CallResponse<ArrayList<Notification>>> getNotifications(@Query("caregiverId") String c_id,
|
||||
@Query("patientId") String p_id,
|
||||
@Header("Authorization") String token);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user