This commit is contained in:
jayeshkjain25
2024-03-07 12:00:25 +05:30
parent dc24668a1a
commit 604f2785d9
11 changed files with 181 additions and 43 deletions

1
.idea/gradle.xml generated
View File

@@ -4,6 +4,7 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">

View File

@@ -7,9 +7,15 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- For app blocking -> open new window over other apps to deny access -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- permissions for app blocking -->
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
@@ -25,13 +31,6 @@
</intent>
</queries>
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent>
</queries>
<application
android:name=".apputils.SimpliTendApp"
android:allowBackup="false"

View File

@@ -23,7 +23,7 @@ public abstract class CaregiverDataCache {
careGiverData = data;
}
public static void getCaregiverData(Context context,
public synchronized static void getCaregiverData(Context context,
@NonNull GetCaregiverDataCallBack callBack,
boolean show_progress){
if (careGiverData != null && careGiverData.patientDetails != null){

View File

@@ -290,7 +290,6 @@ public class EditProfileInfoActivity extends AppCompatActivity implements
ImagePicker.with(this)
.cropSquare()
.maxResultSize(500, 500)
.galleryOnly()
.createIntent(intent -> {
imageSelector.launch(intent);
return null;

View File

@@ -1,6 +1,7 @@
package com.app.simplitend.caregiverdashboard.fragments;
import static com.app.simplitend.apputils.NotificationService.CONTENT_TYPE_KEY;
import static com.app.simplitend.apputils.RetrofitHelper.IMAGE_BASE_URL;
import static com.app.simplitend.articles.ArticleShowerActivity.ARTICLE_TITLE;
import static com.app.simplitend.articles.ArticleShowerActivity.ARTICLE_URL_KEY;
import static com.app.simplitend.caregiverdashboard.activities.EditProfileInfoActivity.IS_CAREGIVER;
@@ -14,6 +15,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -23,6 +25,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
@@ -40,6 +43,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.databinding.MarkerBgSmallBinding;
import com.app.simplitend.patient_dashboard.NotificationsActivity;
import com.app.simplitend.patientprofile.ProfileContracts;
import com.app.simplitend.patientprofile.medreminder.mvvm.ReminderViewModel;
@@ -51,6 +55,10 @@ 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.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
@@ -58,6 +66,7 @@ import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.maps.android.ui.IconGenerator;
import com.onesignal.OneSignal;
import com.onesignal.notifications.INotificationLifecycleListener;
import com.onesignal.notifications.INotificationWillDisplayEvent;
@@ -106,6 +115,7 @@ public class CgDashBoardFragment extends Fragment implements
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = CaregiverDashFragmentBinding.inflate(inflater, container, false);
viewModel = new ViewModelProvider(requireActivity()).get(CaregiverMainViewModel.class);
reminderViewModel = new ViewModelProvider(requireActivity()).get(ReminderViewModel.class);
routineViewModel = new ViewModelProvider(requireActivity()).get(RoutineViewModel.class);
@@ -494,9 +504,47 @@ public class CgDashBoardFragment extends Fragment implements
MarkerOptions markerOptions = new MarkerOptions()
.position(pat_cur_latLng)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_pat_curr_location));
.draggable(false);
if (patientData != null && patientData.profile_photo != null) {
MarkerBgSmallBinding markerBgBinding = MarkerBgSmallBinding.inflate(getLayoutInflater());
Glide.with(this)
.load(IMAGE_BASE_URL + patientData.profile_photo)
.error(R.drawable.img_pat_curr_location)
.placeholder(android.R.color.darker_gray)
.addListener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_pat_curr_location));
mGoogleMap.addMarker(markerOptions);
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
try {
IconGenerator iconGenerator = new IconGenerator(requireContext());
markerBgBinding.markerBgImage.setImageDrawable(resource);
iconGenerator.setContentView(markerBgBinding.getRoot());
iconGenerator.setBackground(AppCompatResources.getDrawable(requireContext(), android.R.color.transparent));
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(iconGenerator.makeIcon()));
mGoogleMap.addMarker(markerOptions);
} catch (Exception e) {
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_pat_curr_location));
mGoogleMap.addMarker(markerOptions);
}
return false;
}
})
.into(markerBgBinding.markerBgImage);
} else {
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_pat_curr_location));
mGoogleMap.addMarker(markerOptions);
}
mGoogleMap.addMarker(markerOptions);
mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(pat_cur_latLng, 16));;
}

View File

@@ -9,6 +9,7 @@ import com.app.simplitend.R;
import com.app.simplitend.apputils.AppUtil;
import com.app.simplitend.apputils.CaregiverDataCache;
import com.app.simplitend.apputils.Constants;
import com.app.simplitend.apputils.PatientDataCache;
import com.app.simplitend.apputils.RetrofitHelper;
import com.onesignal.OneSignal;
import com.onesignal.notifications.INotificationLifecycleListener;
@@ -18,43 +19,85 @@ import org.json.JSONObject;
public class ChatsActivity extends AppCompatActivity implements INotificationLifecycleListener {
public static final String IS_CHATS_FOR_PATIENT = "chats_for_extra";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chats);
CaregiverDataCache.getCaregiverData(this, (careGiverData1 -> {
if (careGiverData1 != null && careGiverData1.patientDetails != null){
boolean isPatient = getIntent().getBooleanExtra(IS_CHATS_FOR_PATIENT, false);
String sender_image;
if (careGiverData1.profile_photo == null){
sender_image = String.valueOf(R.drawable.caregiver_img);
}else{
sender_image = RetrofitHelper.IMAGE_BASE_URL + careGiverData1.profile_photo;
if (isPatient){
PatientDataCache.getPatientData(this, (patientData -> {
if (patientData != null){
try {
String sender_image;
if (patientData.profile_photo == null){
sender_image = String.valueOf(R.drawable.senior_img);
}else{
sender_image = RetrofitHelper.IMAGE_BASE_URL + patientData.profile_photo;
}
String receiver_image;
if (patientData.caregiver_profile_photo == null){
receiver_image = String.valueOf(R.drawable.caregiver_img);
}else{
receiver_image = RetrofitHelper.IMAGE_BASE_URL + patientData.caregiver_profile_photo;
}
getSupportFragmentManager().beginTransaction()
.add(R.id.chats_fcv, new ChatFragment(
patientData.id + "",
patientData.caregiver_iamprincipal_id,
patientData.link_id,
patientData.caregiver_iamprincipal_id,
patientData.first_name,
patientData.caregiver_name,
sender_image,
receiver_image
), "patient_chat")
.commitAllowingStateLoss();
} catch (Exception e) {
// do nothing
}
}
}), true);
}else{
CaregiverDataCache.getCaregiverData(this, (careGiverData1 -> {
if (careGiverData1 != null && careGiverData1.patientDetails != null){
String receiver_image;
if (careGiverData1.patientDetails.profile_photo == null){
receiver_image = String.valueOf(R.drawable.senior_img);
String sender_image;
if (careGiverData1.profile_photo == null){
sender_image = String.valueOf(R.drawable.caregiver_img);
}else{
sender_image = RetrofitHelper.IMAGE_BASE_URL + careGiverData1.profile_photo;
}
String receiver_image;
if (careGiverData1.patientDetails.profile_photo == null){
receiver_image = String.valueOf(R.drawable.senior_img);
}else{
receiver_image = RetrofitHelper.IMAGE_BASE_URL + careGiverData1.patientDetails.profile_photo;
}
getSupportFragmentManager().beginTransaction()
.add(R.id.chats_fcv, new ChatFragment(
careGiverData1.id + "",
careGiverData1.patientDetails.id + "",
careGiverData1.link_id,
careGiverData1.patientDetails.id + "",
careGiverData1.first_name,
careGiverData1.patientDetails.first_name,
sender_image,
receiver_image), "chat")
.commitAllowingStateLoss();
}else{
receiver_image = RetrofitHelper.IMAGE_BASE_URL + careGiverData1.patientDetails.profile_photo;
finish();
}
getSupportFragmentManager().beginTransaction()
.add(R.id.chats_fcv, new ChatFragment(
careGiverData1.id + "",
careGiverData1.patientDetails.id + "",
careGiverData1.link_id,
careGiverData1.patientDetails.id + "",
careGiverData1.first_name,
careGiverData1.patientDetails.first_name,
sender_image,
receiver_image), "chat")
.commitAllowingStateLoss();
}else{
finish();
}
}), true);
}), true);
}
OneSignal.getNotifications().addForegroundLifecycleListener(this);

View File

@@ -1,6 +1,10 @@
package com.app.simplitend.patient_dashboard.fragments;
import static com.app.simplitend.chats.ChatsActivity.IS_CHATS_FOR_PATIENT;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
@@ -8,12 +12,15 @@ import android.widget.ImageButton;
import android.widget.TableLayout;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.app.simplitend.R;
import com.app.simplitend.apputils.AppUtil;
import com.app.simplitend.chats.ChatsActivity;
import com.app.simplitend.databinding.ActivityCallsBinding;
import com.app.simplitend.databinding.CallListDialogBinding;
import com.app.simplitend.databinding.CreateContactViewHolderBinding;
@@ -39,6 +46,8 @@ public class CallsActivity extends AppCompatActivity implements AddContactAdapte
private String select_phone_number;
private ActivityResultLauncher<String> permissionLauncher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -49,6 +58,13 @@ public class CallsActivity extends AppCompatActivity implements AddContactAdapte
is50ContactsView = getIntent().getBooleanExtra(IS_50_CONTACTS_VIEW, false);
permissionLauncher = registerForActivityResult(new ActivityResultContracts.RequestPermission(),
granted -> {
if (select_phone_number != null){
AppUtil.callPhone(this, select_phone_number);
}
});
initViews();
clickEvents();
@@ -119,7 +135,7 @@ public class CallsActivity extends AppCompatActivity implements AddContactAdapte
return;
}
AppUtil.dialPhone(this, select_phone_number);
permissionLauncher.launch(Manifest.permission.CALL_PHONE);
});
dialogBinding.messageBtn.setOnClickListener(v -> {
@@ -128,7 +144,15 @@ public class CallsActivity extends AppCompatActivity implements AddContactAdapte
return;
}
AppUtil.messageNumber(this, select_phone_number);
if (contactData.care_giver_data.id != null){
Intent chatsIntent = new Intent(this, ChatsActivity.class);
chatsIntent.putExtra(IS_CHATS_FOR_PATIENT, true);
startActivity(chatsIntent);
}else{
// not a caregiver
AppUtil.messageNumber(this, select_phone_number);
}
});
bsd.show();

View File

@@ -246,7 +246,6 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts.
ImagePicker.with(requireActivity())
.cropSquare()
.maxResultSize(500, 500)
.galleryOnly()
.createIntent(intent -> {
imageSelector.launch(intent);
return null;

View File

@@ -9,7 +9,7 @@
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="?android:attr/actionBarSize"
app:cardElevation="5dp">
<LinearLayout

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="@android:color/transparent"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/marker_bg_image"
android:layout_width="40dp"
android:layout_height="40dp"
android:translationZ="1dp"
android:src="@drawable/senior_img"
app:civ_circle_background_color="@color/color_primary"
app:civ_border_color="@color/color_primary"
app:civ_border_width="2dp"/>
<ImageView
android:layout_width="40dp"
android:layout_height="35dp"
android:layout_marginTop="20dp"
android:src="@drawable/ic_marker_bg"
/>
</RelativeLayout>

View File

@@ -418,7 +418,7 @@
<string name="your_location">Your location</string>
<string name="home_address_txt">Home Address</string>
<string name="go">go</string>
<string name="call_and_message_your_loved_ones">Call and message your loved ones</string>
<string name="call_and_message_your_loved_ones">Call or message your loved ones</string>
<string name="select_number_to_cal_or_message">Select number to call or message</string>
<string name="call">Call</string>
<string name="no_frequently_used_apps">No frequently used apps added\nPlease select an app from below list to unlock.</string>