This commit is contained in:
2023-10-12 21:04:28 +05:30
parent ddaac51b1d
commit 0a5db1f808
44 changed files with 463 additions and 109 deletions

View File

@@ -6,13 +6,13 @@
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="RZCW41EJRPN" />
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\adity\.android\avd\Samsung_Z3_flip_API_34.avd" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-10-11T15:22:55.720575200Z" />
<timeTargetWasSelectedWithDropDown value="2023-10-12T14:59:34.371632800Z" />
<runningDeviceTargetsSelectedWithDialog>
<Target>
<type value="RUNNING_DEVICE_TARGET" />

1
.idea/misc.xml generated
View File

@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">

View File

@@ -99,7 +99,8 @@
<activity
android:name=".caregiverdashboard.activities.CgProfileProgressActivity"
android:exported="false"
android:screenOrientation="portrait" />
android:screenOrientation="portrait"/>
<activity
android:name=".cg_geofencing.CgGeoFencingActivity"
android:exported="false"
@@ -215,6 +216,7 @@
</service>
<receiver android:name=".patientgeofencing.GeoFenceBroadcastReceiver" />
<receiver android:name=".patientgeofencing.PatientLocationUpdatesReceiver"/>
<provider
android:name="androidx.core.content.FileProvider"

View File

@@ -66,6 +66,8 @@ public abstract class AppUtil {
public static final String IMAGE_BASE_URL = "https://simplitend.betadelivery.com/storage/upload/";
private static final String TAG = "AppUtil";
public static final int LOCATION_REQUEST_CODE = 12;
public static final String NOTIFICATION_ACTION = "com.simplitend.NOTIFICATION_ACTION";
// fields

View File

@@ -103,6 +103,7 @@ public class ArticlesActivity extends AppCompatActivity
}
binding.searchEt.setText("");
AppUtil.closeKeyboard(this);
});
binding.searchEt.setOnEditorActionListener((textView, i, keyEvent) -> {

View File

@@ -13,6 +13,8 @@ public class GeoFenceDetails implements Serializable {
public String created_at;
public String updated_at;
public PatientCurrLocation patient_radius_location;
public GeoFenceDetails(){}
@Override

View File

@@ -0,0 +1,12 @@
package com.app.simplitend.caregiverdashboard.mvvm.models;
import java.io.Serializable;
public class PatientCurrLocation implements Serializable {
public int id;
public String patient_xid;
public String lat;
public String lng;
public String created_at;
public String updated_at;
}

View File

@@ -1,6 +1,7 @@
package com.app.simplitend.cg_geofencing;
import android.app.Activity;
import android.app.PendingIntent;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
@@ -17,18 +18,6 @@ import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProvider;
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.CircleOptions;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.libraries.places.api.Places;
import com.google.android.libraries.places.api.model.Place;
import com.google.android.libraries.places.widget.Autocomplete;
import com.google.android.libraries.places.widget.model.AutocompleteActivityMode;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.app.simplitend.R;
import com.app.simplitend.apputils.AppUtil;
import com.app.simplitend.apputils.CaregiverDataCache;
@@ -39,6 +28,19 @@ import com.app.simplitend.databinding.ActivityCgGeofencingBinding;
import com.app.simplitend.databinding.GeofenceBottomSheetBinding;
import com.app.simplitend.welcome.welcomecg.mvvm.CareGiverData;
import com.app.simplitend.welcome.welcomepatient.mvvm.models.PatientData;
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.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CircleOptions;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.libraries.places.api.Places;
import com.google.android.libraries.places.api.model.Place;
import com.google.android.libraries.places.widget.Autocomplete;
import com.google.android.libraries.places.widget.model.AutocompleteActivityMode;
import com.google.android.material.bottomsheet.BottomSheetDialog;
import java.util.Arrays;
import java.util.HashMap;
@@ -72,7 +74,7 @@ public class CgGeoFencingActivity extends AppCompatActivity implements OnMapRead
private GoogleMap mMap;
private LatLng mLatLng;
private LatLng mLatLng, pat_cur_latLng;
private ActivityResultLauncher<Intent> startAutocompleteMapSearch;
@@ -90,6 +92,13 @@ public class CgGeoFencingActivity extends AppCompatActivity implements OnMapRead
try {
geoFenceDetails = (GeoFenceDetails) intent.getSerializableExtra(GEOFENCE_DETAILS_KEY);
if (geoFenceDetails == null) throw new Exception();
try {
pat_cur_latLng = new LatLng(Double.parseDouble(geoFenceDetails.patient_radius_location.lat),
Double.parseDouble(geoFenceDetails.patient_radius_location.lng));
}catch (Exception e){
pat_cur_latLng = null;
}
} catch (Exception e) {
Toast.makeText(this, "Couldn't load Geofence.", Toast.LENGTH_SHORT).show();
geoFenceDetails = new GeoFenceDetails();
@@ -395,9 +404,22 @@ public class CgGeoFencingActivity extends AppCompatActivity implements OnMapRead
MarkerOptions markerOptions = new MarkerOptions()
.position(latLng)
.title(patientData.first_name + "");
.draggable(false)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_home_marker))
.title("Home location");
mMap.addMarker(markerOptions);
if (pat_cur_latLng != null){
MarkerOptions pat_cur_marker = new MarkerOptions()
.position(pat_cur_latLng)
.draggable(false)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.img_pat_curr_location))
.title(patientData.first_name + "");
mMap.addMarker(pat_cur_marker);
}
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 13));
}

View File

@@ -132,6 +132,10 @@ public class CgSubscriptionActivity extends AppCompatActivity
}), true);
});
binding.backBtn.setOnClickListener(view -> {
onBackPressed();
});
binding.contactAdmin.setOnClickListener(view -> {
contactMail();
});

View File

@@ -1,6 +1,7 @@
package com.app.simplitend.patient_dashboard;
import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_TAG;
import static com.app.simplitend.patientgeofencing.PatientLocationUpdatesReceiver.LOCATION_REQUEST_TAG;
import android.Manifest;
import android.app.role.RoleManager;
@@ -13,6 +14,7 @@ import android.util.Log;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.lifecycle.ViewModelProvider;
import com.app.simplitend.R;
@@ -25,6 +27,7 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra
protected PatientMainViewModel viewModel;
public static final int LOCATION_REQUEST_CODE = 1001;
public static final int LOCATION_REQUEST_CODE_2 = 2002;
private GeoFenceDetails geoFenceDetails;
@@ -43,13 +46,13 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra
"", "Bearer " + AppUtil.getPatientToken(this),
this);
if (result){
if (result) {
// permission granted
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) {
RoleManager roleManager = getSystemService(RoleManager.class);
Intent i = roleManager.createRequestRoleIntent(RoleManager.ROLE_CALL_SCREENING);
startActivityForResult(i, 1214, null);
}else{
} else {
Intent intent = new Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER);
intent.putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, getPackageName());
startActivity(intent);
@@ -59,20 +62,30 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra
}
private void validateAndAddGeofence(GeoFenceDetails geoFenceDetails) {
if (geoFenceDetails.radius != null && geoFenceDetails.type != null){
if (geoFenceDetails.radius != null && geoFenceDetails.type != null) {
PatientDataCache.getPatientData(this, (patientData -> {
if (patientData != null){
if (patientData != null) {
if (AppUtil.shouldAddPatientGeofence(this,
geoFenceDetails.radius, geoFenceDetails.type, patientData)){
geoFenceDetails.radius, geoFenceDetails.type, patientData)) {
// should add a geofence
viewModel.setGeofence(this, geoFenceDetails, patientData);
}else{
} else {
Log.d(GEOFENCE_TAG, "onGeofenceDetailsFetched: should not add patient geofence because GEOFENCE DETAILS: " + geoFenceDetails + " PATIENT DETAILS: " + patientData);
}
}
}), false);
}
if (geoFenceDetails.patient_radius_location != null) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Log.d(LOCATION_REQUEST_TAG, "addLocationUpdates: REQUESTING FINE LOCATION PERMISSION");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_REQUEST_CODE_2);
return;
}
viewModel.addLocationUpdates(this);
}
}
@@ -91,13 +104,23 @@ public class DashBoardActivity extends AppCompatActivity implements CgHomeContra
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == LOCATION_REQUEST_CODE){
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
if (requestCode == LOCATION_REQUEST_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d(GEOFENCE_TAG, "onRequestPermissionsResult: PERMISSION GRANTED");
if (geoFenceDetails != null){
if (geoFenceDetails != null) {
validateAndAddGeofence(geoFenceDetails);
}
}
} else if (requestCode == LOCATION_REQUEST_CODE_2) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d(LOCATION_REQUEST_TAG, "onRequestPermissionsResult: PERMISSION GRANTED");
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
viewModel.addLocationUpdates(this);
}
}
}
}

View File

@@ -3,11 +3,12 @@ package com.app.simplitend.patient_dashboard;
import static com.app.simplitend.patient_dashboard.DashBoardActivity.LOCATION_REQUEST_CODE;
import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_ID;
import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_TAG;
import static com.app.simplitend.patientgeofencing.PatientLocationUpdatesReceiver.LOCATION_REQUEST_TAG;
import android.Manifest;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Handler;
@@ -29,15 +30,19 @@ import com.app.simplitend.caregiverdashboard.mvvm.CgHomeRepository;
import com.app.simplitend.caregiverdashboard.mvvm.NotificationApiService;
import com.app.simplitend.caregiverdashboard.mvvm.models.GeoFenceDetails;
import com.app.simplitend.patientgeofencing.GeoFenceHelper;
import com.app.simplitend.patientgeofencing.PatientLocationUpdatesReceiver;
import com.app.simplitend.patientprofile.PatientProfileAPIService;
import com.app.simplitend.patientprofile.medreminder.mvvm.models.NearestActivity;
import com.app.simplitend.patientprofile.medreminder.mvvm.models.NearestReminder;
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.app.simplitend.welcome.welcomepatient.mvvm.models.PatientData;
import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.Geofence;
import com.google.android.gms.location.GeofencingClient;
import com.google.android.gms.location.GeofencingRequest;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.model.LatLng;
@@ -94,6 +99,35 @@ public class PatientMainViewModel extends ViewModel {
}
}
@RequiresPermission(Manifest.permission.ACCESS_FINE_LOCATION)
public void addLocationUpdates(Activity activity) {
Log.d(LOCATION_REQUEST_TAG, "REQUESTING LOCATION UPDATES");
FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(activity);
LocationRequest locationRequest = new LocationRequest();
locationRequest.setInterval(10_000);
locationRequest.setSmallestDisplacement(100);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
Intent intent = new Intent(activity, PatientLocationUpdatesReceiver.class);
PendingIntent pendingIntent ;
if(Build.VERSION.SDK_INT > 30){
pendingIntent = PendingIntent.getBroadcast(activity, LOCATION_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE);
} else{
pendingIntent = PendingIntent.getBroadcast(activity, LOCATION_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
}
fusedLocationClient.requestLocationUpdates(locationRequest, pendingIntent)
.addOnCompleteListener(task -> {
if (task.isSuccessful() && task.getException() == null){
Log.d(LOCATION_REQUEST_TAG, "LOCATION UPDATES ADDED");
}else{
Log.d(LOCATION_REQUEST_TAG, "CANNOT ADD LOCATION UPDATES " + task.getException());
}
});
}
public void getGeoFenceDetails(String p_id,
String cg_xid,
@NonNull String token,
@@ -405,7 +439,28 @@ public class PatientMainViewModel extends ViewModel {
}
}
public void contactWhiteList(Context context) {
public void updatePatientCurrentLocation(@NonNull LatLng latLng,
@NonNull String patient_id,
@NonNull String token){
PatientProfileAPIService apiService = RetrofitHelper.getRetrofit().create(PatientProfileAPIService.class);
Map<String, String> body = new HashMap<>();
body.put("patient_id", patient_id);
body.put("lat", latLng.latitude + "");
body.put("lng", latLng.longitude + "");
apiService.updatePatientCurrLocation(body, token)
.enqueue(new Callback<CallResponse<Object>>() {
@Override
public void onResponse(Call<CallResponse<Object>> call, Response<CallResponse<Object>> response) {
Log.d(TAG, "PATIENT CURRENT LOCATION UPDATED");
}
@Override
public void onFailure(Call<CallResponse<Object>> call, Throwable t) {
Log.e(TAG, "onFailure: PATIENT CURRENT LOCATION UPDATE", t);
}
});
}
}

View File

@@ -98,15 +98,37 @@ public class ChatFragment extends Fragment implements SocketHelper.Callback<Mess
return;
}
SocketHelper.getInstance().sendMessage(binding.messageEt.getText().toString().trim(), nick_name, patient_id);
binding.messageEt.setText("");
enableDenButton(false);
if (SocketHelper.getInstance().isConnected()) {
SocketHelper.getInstance().sendMessage(binding.messageEt.getText().toString().trim(), nick_name, patient_id);
binding.messageEt.setText("");
enableDenButton(false);
} else {
Toast.makeText(requireContext(), "Check internet connection", Toast.LENGTH_SHORT).show();
}
});
}
private void initViews() {
try {
try {
int res = Integer.parseInt(receiver_image);
binding.receiverImage.setImageResource(res);
}catch (Exception e){
if (receiver_image != null){
Glide.with(requireContext())
.load(receiver_image)
.placeholder(android.R.color.darker_gray)
.error(R.drawable.ic_contact)
.into(binding.receiverImage);
}
}
}catch (Exception e){
// do nothing
binding.receiverImage.setImageResource(R.drawable.ic_contact);
}
binding.chatTitle.setText(receiver_name);
MessagesListAdapter.HoldersConfig holdersConfig = new MessagesListAdapter.HoldersConfig();
@@ -152,6 +174,7 @@ public class ChatFragment extends Fragment implements SocketHelper.Callback<Mess
if (messageAdapter == null) return;
messageAdapter.addToStart(message, true);
binding.noChats.setVisibility(View.GONE);
});
}

View File

@@ -27,6 +27,7 @@ public class ReceiverViewHolder extends MessagesListAdapter.OutcomingMessageView
super.onBind(message);
message_txt.setText(message.getText());
message_txt.setTextColor(Color.BLACK);
try {
try {
int res = Integer.parseInt(message.getUser().getAvatar());

View File

@@ -68,6 +68,10 @@ public class SocketHelper {
}
}
public boolean isConnected(){
return mSocket.connected();
}
public void closeConnection() {
if (mSocket.connected()) {
mSocket.disconnect();

View File

@@ -10,14 +10,11 @@ import static com.app.simplitend.patient_dashboard.NotificationsActivity.USER_TO
import static com.app.simplitend.patient_dashboard.fragments.CallsActivity.CALL_CONTACT_LIST_KEY;
import android.app.Activity;
import android.app.role.RoleManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.os.Bundle;
import android.telecom.TelecomManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -32,7 +29,6 @@ import androidx.navigation.Navigation;
import com.app.simplitend.R;
import com.app.simplitend.appblocking.FUAActivity;
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.caregiverdashboard.mvvm.CaregiverMainViewModel;
@@ -210,6 +206,8 @@ public class PatientDashboardFragment extends Fragment implements ProfileContrac
sender_image = AppUtil.IMAGE_BASE_URL + patientData.profile_photo;
}
patientData.caregiver_profile_photo = null;
String receiver_image;
if (patientData.caregiver_profile_photo == null){
receiver_image = String.valueOf(R.drawable.caregiver_img);

View File

@@ -0,0 +1,28 @@
package com.app.simplitend.patientgeofencing;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
import com.google.maps.model.LatLng;
public class PatientLocationUpdatesReceiver extends BroadcastReceiver {
public static final String LOCATION_REQUEST_TAG = "LOCATION_REQUEST_TAG";
private static final String LOCATION_EXTRA_KEY = "com.google.android.location.LOCATION";
@Override
public void onReceive(Context context, Intent intent) {
Log.d(LOCATION_REQUEST_TAG, "LOCATION UPDATE RECEIVED");
Location location = intent.getParcelableExtra(LOCATION_EXTRA_KEY);
if (location != null) {
Log.d(LOCATION_REQUEST_TAG, new LatLng(location.getLatitude(), location.getLongitude()).toString());
}else{
Log.e(LOCATION_REQUEST_TAG, "LOCATION RECEIVED IS NULL");
}
}
}

View File

@@ -75,4 +75,7 @@ public interface PatientProfileAPIService {
@Header("patientRoutineId") int patient_routine_id,
@Header("Authorization") String token);
@POST("api/patient-current-location-update")
Call<CallResponse<Object>> updatePatientCurrLocation(@Body Map<String, String> body,
@Header("Authorization") String token);
}

View File

@@ -122,6 +122,10 @@ public class AddReminderFragment extends Fragment implements CompoundButton.OnCh
getDate();
});
binding.removeDateBtn.setOnClickListener(v -> {
binding.getDate.setText(null);
});
binding.addReminder.setOnClickListener(v -> {
AppUtil.closeKeyboard(requireActivity());
@@ -356,10 +360,10 @@ public class AddReminderFragment extends Fragment implements CompoundButton.OnCh
binding.quantity.setError("Required");
}
if (binding.getDate.getText().toString().trim().isEmpty()) {
allOkay = false;
binding.getDate.setError("Required");
}
// if (binding.getDate.getText().toString().trim().isEmpty()) {
// allOkay = false;
// binding.getDate.setError("Required");
// }
if (allOkay) {
boolean anyOneSelected = false;

View File

@@ -258,11 +258,6 @@ public class AddRoutineFragment extends Fragment implements CompoundButton.OnChe
binding.routineName.setError("Required");
}
if (binding.routineDescription.getText().toString().trim().isEmpty()){
allOkay = false;
binding.routineDescription.setError("Required");
}
if (binding.startTime.getText().toString().trim().isEmpty()){
allOkay = false;
binding.startTime.setError("Required");

View File

@@ -110,20 +110,7 @@ public class CgAuthActivity extends AppCompatActivity {
@Override
public void afterTextChanged(Editable editable) {
if (editable.length() == 4) {
AppUtil.closeKeyboard(CgAuthActivity.this);
if (editable.toString().equals("0000")) {
gotoCgDash();
} else {
YoYo.with(Techniques.Wobble)
.playOn(binding.pin);
binding.pin.setError("Invalid pin.");
binding.pin.setText(null);
}
}
}
});
@@ -184,7 +171,6 @@ public class CgAuthActivity extends AppCompatActivity {
break;
case BiometricManager.BIOMETRIC_SUCCESS:
case BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED:
binding.fingerprintOr.setVisibility(View.VISIBLE);
binding.fingerprintView.setVisibility(View.VISIBLE);
break;
}

View File

@@ -157,6 +157,7 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts.
getString(R.string.yes), getString(R.string.no),
v -> {
}, v -> {
binding.sosCheck.setChecked(true);
});
}
});

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

View File

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

View File

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 69 KiB

View File

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 109 KiB

View File

@@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#000000"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M17.81,4.47c-0.08,0 -0.16,-0.02 -0.23,-0.06C15.66,3.42 14,3 12.01,3c-1.98,0 -3.86,0.47 -5.57,1.41 -0.24,0.13 -0.54,0.04 -0.68,-0.2 -0.13,-0.24 -0.04,-0.55 0.2,-0.68C7.82,2.52 9.86,2 12.01,2c2.13,0 3.99,0.47 6.03,1.52 0.25,0.13 0.34,0.43 0.21,0.67 -0.09,0.18 -0.26,0.28 -0.44,0.28zM3.5,9.72c-0.1,0 -0.2,-0.03 -0.29,-0.09 -0.23,-0.16 -0.28,-0.47 -0.12,-0.7 0.99,-1.4 2.25,-2.5 3.75,-3.27C9.98,4.04 14,4.03 17.15,5.65c1.5,0.77 2.76,1.86 3.75,3.25 0.16,0.22 0.11,0.54 -0.12,0.7 -0.23,0.16 -0.54,0.11 -0.7,-0.12 -0.9,-1.26 -2.04,-2.25 -3.39,-2.94 -2.87,-1.47 -6.54,-1.47 -9.4,0.01 -1.36,0.7 -2.5,1.7 -3.4,2.96 -0.08,0.14 -0.23,0.21 -0.39,0.21zM9.75,21.79c-0.13,0 -0.26,-0.05 -0.35,-0.15 -0.87,-0.87 -1.34,-1.43 -2.01,-2.64 -0.69,-1.23 -1.05,-2.73 -1.05,-4.34 0,-2.97 2.54,-5.39 5.66,-5.39s5.66,2.42 5.66,5.39c0,0.28 -0.22,0.5 -0.5,0.5s-0.5,-0.22 -0.5,-0.5c0,-2.42 -2.09,-4.39 -4.66,-4.39 -2.57,0 -4.66,1.97 -4.66,4.39 0,1.44 0.32,2.77 0.93,3.85 0.64,1.15 1.08,1.64 1.85,2.42 0.19,0.2 0.19,0.51 0,0.71 -0.11,0.1 -0.24,0.15 -0.37,0.15zM16.92,19.94c-1.19,0 -2.24,-0.3 -3.1,-0.89 -1.49,-1.01 -2.38,-2.65 -2.38,-4.39 0,-0.28 0.22,-0.5 0.5,-0.5s0.5,0.22 0.5,0.5c0,1.41 0.72,2.74 1.94,3.56 0.71,0.48 1.54,0.71 2.54,0.71 0.24,0 0.64,-0.03 1.04,-0.1 0.27,-0.05 0.53,0.13 0.58,0.41 0.05,0.27 -0.13,0.53 -0.41,0.58 -0.57,0.11 -1.07,0.12 -1.21,0.12zM14.91,22c-0.04,0 -0.09,-0.01 -0.13,-0.02 -1.59,-0.44 -2.63,-1.03 -3.72,-2.1 -1.4,-1.39 -2.17,-3.24 -2.17,-5.22 0,-1.62 1.38,-2.94 3.08,-2.94 1.7,0 3.08,1.32 3.08,2.94 0,1.07 0.93,1.94 2.08,1.94s2.08,-0.87 2.08,-1.94c0,-3.77 -3.25,-6.83 -7.25,-6.83 -2.84,0 -5.44,1.58 -6.61,4.03 -0.39,0.81 -0.59,1.76 -0.59,2.8 0,0.78 0.07,2.01 0.67,3.61 0.1,0.26 -0.03,0.55 -0.29,0.64 -0.26,0.1 -0.55,-0.04 -0.64,-0.29 -0.49,-1.31 -0.73,-2.61 -0.73,-3.96 0,-1.2 0.23,-2.29 0.68,-3.24 1.33,-2.79 4.28,-4.6 7.51,-4.6 4.55,0 8.25,3.51 8.25,7.83 0,1.62 -1.38,2.94 -3.08,2.94s-3.08,-1.32 -3.08,-2.94c0,-1.07 -0.93,-1.94 -2.08,-1.94s-2.08,0.87 -2.08,1.94c0,1.71 0.66,3.31 1.87,4.51 0.95,0.94 1.86,1.46 3.27,1.85 0.27,0.07 0.42,0.35 0.35,0.61 -0.05,0.23 -0.26,0.38 -0.47,0.38z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -110,13 +110,19 @@
<LinearLayout
android:id="@+id/no_articles"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:layout_gravity="center_horizontal"
android:layout_marginTop="50dp"
>
<ImageView
android:layout_width="@dimen/_60sdp"
android:layout_height="@dimen/_60sdp"
android:src="@drawable/ic_no_articles"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -125,6 +131,8 @@
android:fontFamily="@font/nunito_medium"
android:textColor="@color/black"
android:textSize="@dimen/_14ssp"
android:layout_marginTop="5dp"
/>
</LinearLayout>

View File

@@ -42,13 +42,19 @@
<LinearLayout
android:id="@+id/no_faqs"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:layout_gravity="center_horizontal"
android:layout_marginTop="50dp"
>
<ImageView
android:layout_width="@dimen/_60sdp"
android:layout_height="@dimen/_60sdp"
android:src="@drawable/ic_no_faqs"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -706,29 +706,47 @@
android:layout_marginTop="15dp"
/>
<TextView
android:id="@+id/get_date"
android:layout_width="match_parent"
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="@drawable/edit_text_bg_2"
android:layout_marginHorizontal="15dp"
android:layout_marginVertical="10dp"
>
android:hint="@string/enter_refill_date"
android:fontFamily="@font/nunito_regular"
android:textColor="@color/black"
android:textColorHint="@android:color/darker_gray"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
<TextView
android:id="@+id/get_date"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="15dp"
android:padding="10dp"
android:gravity="center_vertical"
android:drawablePadding="10dp"
android:background="@drawable/edit_text_bg_2"
app:drawableStartCompat="@drawable/ic_calender_2" />
android:hint="@string/enter_refill_date"
android:fontFamily="@font/nunito_regular"
android:textColor="@color/black"
android:textColorHint="@android:color/darker_gray"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:paddingVertical="15dp"
android:padding="10dp"
android:drawablePadding="10dp"
app:drawableStartCompat="@drawable/ic_calender_2" />
<ImageView
android:id="@+id/remove_date_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_close_outline"
android:contentDescription="@string/close"
android:layout_centerVertical="true"
android:layout_alignParentEnd="true"
android:layout_marginEnd="15dp"
app:tint="@android:color/darker_gray" />
</RelativeLayout>
<TextView
android:layout_width="wrap_content"

View File

@@ -77,16 +77,36 @@
/>
<TextView
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="15dp"
android:fontFamily="@font/nunito_medium"
android:text="@string/routine_description"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:textColor="@color/black" />
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/nunito_medium"
android:text="@string/routine_description"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
android:textColor="@color/black" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/optional"
android:fontFamily="@font/nunito_regular"
android:textColor="@android:color/darker_gray"
android:textAppearance="@style/TextAppearance.Material3.TitleSmall"
android:layout_marginStart="5dp"
/>
</LinearLayout>
<EditText
android:id="@+id/routine_description"

View File

@@ -49,24 +49,27 @@
/>
<TextView
android:id="@+id/title_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/to_enhance_the_security_of_your_account_please_add_biometric_authentication_using_either_face_id_or_fingerprint"
android:fontFamily="@font/nunito_regular"
android:textColor="@color/black"
android:textSize="@dimen/_16ssp"
android:layout_below="@id/security_title"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="15dp"
android:layout_margin="15dp"
android:layout_marginBottom="15dp"
/>
android:fontFamily="@font/nunito_regular"
android:text="@string/to_enhance_the_security_of_your_account_please_add_biometric_authentication_using_either_face_id_or_fingerprint"
android:textColor="@color/black"
android:textSize="@dimen/_16ssp" />
<com.google.android.material.card.MaterialCardView
android:id="@+id/set_up_fingerprint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_marginHorizontal="15dp"
@@ -90,7 +93,7 @@
android:layout_width="@dimen/_60sdp"
android:layout_height="@dimen/_60sdp"
app:srcCompat="@drawable/ic_fingerprint"
app:srcCompat="@drawable/img_fingerprint"
android:contentDescription="@string/unlock_with_fingerprint"
/>
@@ -111,6 +114,71 @@
</com.google.android.material.card.MaterialCardView>
<!-- <TextView-->
<!-- android:id="@+id/set_up_or"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_below="@id/set_up_fingerprint"-->
<!-- android:layout_centerHorizontal="true"-->
<!-- android:text="@string/or"-->
<!-- android:fontFamily="@font/nunito_semibold"-->
<!-- android:textColor="@color/black"-->
<!-- android:textSize="@dimen/_18ssp"-->
<!-- android:layout_marginVertical="@dimen/_15sdp"-->
<!-- />-->
<!-- <com.google.android.material.card.MaterialCardView-->
<!-- android:id="@+id/set_up_pin"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_below="@id/set_up_or"-->
<!-- android:layout_marginHorizontal="15dp"-->
<!-- app:cardElevation="5dp"-->
<!-- app:strokeWidth="1dp"-->
<!-- app:strokeColor="@color/color_accent"-->
<!-- app:cardCornerRadius="15dp"-->
<!-- >-->
<!-- <LinearLayout-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:orientation="horizontal"-->
<!-- android:padding="15dp"-->
<!-- android:gravity="center_vertical"-->
<!-- >-->
<!-- <ImageView-->
<!-- android:layout_width="@dimen/_60sdp"-->
<!-- android:layout_height="@dimen/_60sdp"-->
<!-- app:srcCompat="@drawable/img_lock"-->
<!-- android:contentDescription="@string/unlock_with_fingerprint"-->
<!-- />-->
<!-- <TextView-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:text="@string/setup_a_4_digit_pin"-->
<!-- android:fontFamily="@font/nunito_regular"-->
<!-- android:textColor="@color/black"-->
<!-- android:textSize="@dimen/_16ssp"-->
<!-- android:layout_marginHorizontal="20dp"-->
<!-- />-->
<!-- </LinearLayout>-->
<!-- </com.google.android.material.card.MaterialCardView>-->
</RelativeLayout>
<ScrollView
@@ -118,7 +186,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:visibility="gone"
android:visibility="visible"
android:background="@color/white_bg">
<LinearLayout
@@ -156,6 +224,7 @@
<EditText
android:id="@+id/pin"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -201,6 +270,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_marginHorizontal="15dp"
android:background="@drawable/edit_text_bg_3"
@@ -216,7 +286,7 @@
android:layout_marginHorizontal="15dp"
android:layout_marginVertical="15dp"
android:src="@drawable/ic_info"
android:src="@drawable/ic_fingerprint"
/>

View File

@@ -7,6 +7,18 @@
android:background="@color/white"
android:orientation="vertical">
<ImageView
android:id="@+id/back_btn"
android:layout_width="35sp"
android:layout_height="35sp"
android:layout_marginHorizontal="15dp"
android:layout_marginTop="15dp"
android:contentDescription="@string/back_button"
android:padding="5dp"
android:paddingStart="-15dp"
android:paddingEnd="0dp"
android:src="@drawable/arrow_back" />
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@@ -16,27 +16,75 @@
android:src="@drawable/arrow_back"
android:layout_margin="15dp"/>
<TextView
android:id="@+id/chat_title"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="Akanksha surve"
android:fontFamily="@font/nunito_medium"
android:textSize="@dimen/_18ssp"
android:textColor="@color/black"
android:layout_marginHorizontal="15dp"
android:gravity="center_vertical"
android:orientation="horizontal">
android:maxLines="1"
android:ellipsize="end"
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/receiver_image"
android:layout_width="@dimen/_30sdp"
android:layout_height="@dimen/_30sdp"
tools:src="@drawable/static_3"
/>
android:maxEms="8"
<TextView
android:id="@+id/chat_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
tools:text="Akanksha surve"
android:fontFamily="@font/nunito_medium"
android:textSize="@dimen/_18ssp"
android:textColor="@color/black"
android:layout_marginStart="15dp"
android:maxLines="1"
android:ellipsize="end"
android:maxEms="8"
/>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/no_chats"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@id/message_et"
android:visibility="visible"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:layout_width="@dimen/_60sdp"
android:layout_height="@dimen/_60sdp"
android:src="@drawable/ic_no_chats"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="15dp"
android:textAlignment="center"
android:text="@string/no_chats_found_start_chatting"
android:fontFamily="@font/nunito_medium"
android:textColor="@color/black"
android:textAppearance="@style/TextAppearance.Material3.TitleMedium"
/>
</LinearLayout>
<com.stfalcon.chatkit.messages.MessagesList
android:id="@+id/messageList"
android:layout_width="match_parent"

View File

@@ -305,8 +305,8 @@
<string name="retry"><u>Retry</u></string>
<string name="a_temporary_pin_will_be_sent_to_the_registered_email_address">A temporary pin will be sent to the registered email address.</string>
<string name="security">Security</string>
<string name="to_enhance_the_security_of_your_account_please_add_biometric_authentication_using_either_face_id_or_fingerprint">To enhance the security of your account, please add biometric authentication using either Face ID or Fingerprint.</string>
<string name="setup_with_fingerprint_or_faceid">Setup security</string>
<string name="to_enhance_the_security_of_your_account_please_add_biometric_authentication_using_either_face_id_or_fingerprint">You can improve the privacy of this application by enabling a secondary security setting. Once enabled, secondary security must be entered each time the application is launched.</string>
<string name="setup_with_fingerprint_or_faceid">Use phone biometrics</string>
<string name="no_new_gadgets_monitor_your_loved_one_s_activity_using_his_or_her_smartphone">No new gadgets! monitor your loved one\'s activity using his or her smartphone</string>
<string name="default_price">595</string>
<string name="we_understand_your_privacy">We understand your privacy.</string>
@@ -443,5 +443,7 @@
<string name="testing_view">Testing View</string>
<string name="this_app_is_blocked_by_simplitend">This app is blocked by SimpliTend</string>
<string name="open_simplitend">open simplitend</string>
<string name="no_chats_found_start_chatting">No chats found. Start chatting!</string>
<string name="setup_a_4_digit_pin">Setup a 4-digit pin</string>
</resources>