From 7c4c2c54a71571b2d7ccfe074579871490bef026 Mon Sep 17 00:00:00 2001 From: Aditya_WDI Date: Tue, 26 Sep 2023 13:49:30 +0530 Subject: [PATCH] . --- app/src/main/AndroidManifest.xml | 6 +- .../simplitend/appblocking/FUAActivity.java | 22 + .../com/ssb/simplitend/apputils/AppUtil.java | 89 ++- .../ssb/simplitend/apputils/Constants.java | 10 + .../apputils/NotificationService.java | 38 + .../simplitend/apputils/SimpliTendApp.java | 6 - .../activities/CaregiverDashActivity.java | 85 +- .../fragments/CgDashBoardFragment.java | 58 ++ .../contacts/AddContactFragment.java | 3 + .../fragments/register/SplashFragment.java | 4 +- app/src/main/res/drawable/ic_refresh.png | Bin 0 -> 4006 bytes .../main/res/drawable/img_activity_time.xml | 691 ++++++++++++++++ .../main/res/drawable/img_medication_time.xml | 381 +++++++++ app/src/main/res/drawable/img_out_of_geo.xml | 745 ++++++++++++++++++ app/src/main/res/layout/activity_fua.xml | 48 +- .../main/res/layout/bottom_sheet_alert.xml | 102 +++ .../res/layout/caregiver_dash_fragment.xml | 51 +- app/src/main/res/values/strings.xml | 3 + 18 files changed, 2289 insertions(+), 53 deletions(-) create mode 100644 app/src/main/java/com/ssb/simplitend/apputils/Constants.java create mode 100644 app/src/main/java/com/ssb/simplitend/apputils/NotificationService.java create mode 100644 app/src/main/res/drawable/ic_refresh.png create mode 100644 app/src/main/res/drawable/img_activity_time.xml create mode 100644 app/src/main/res/drawable/img_medication_time.xml create mode 100644 app/src/main/res/drawable/img_out_of_geo.xml create mode 100644 app/src/main/res/layout/bottom_sheet_alert.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2eb517f..05b941e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -5,7 +5,8 @@ - + + @@ -143,6 +144,9 @@ + + whiteList; + LinearLayout no_fua; + List installed_app_list; @Override @@ -44,6 +49,7 @@ public class FUAActivity extends AppCompatActivity { rvApps = (RecyclerView) findViewById(R.id.rvApps); rvWhiteApps = (RecyclerView) findViewById(R.id.rv_white_apps); mySharedPref = new MySharedPref(FUAActivity.this); + no_fua = findViewById(R.id.no_fua); if (!isAccessibilityAppBlockingEnabled()) { openAccessibilityDialog(); @@ -55,6 +61,14 @@ public class FUAActivity extends AppCompatActivity { whiteList = getWhiteListApps(); Collections.sort(whiteList, (o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName())); + if (whiteList.size() > 0) { + no_fua.setVisibility(View.GONE); + rvWhiteApps.setVisibility(View.VISIBLE); + } else { + no_fua.setVisibility(View.VISIBLE); + rvWhiteApps.setVisibility(View.GONE); + } + adapter = new MyAppsAdapter(FUAActivity.this, getInstalledApps(), false, appList -> { if (!isContainsWhiteList(appList)) { whiteList.add(appList); @@ -63,6 +77,14 @@ public class FUAActivity extends AppCompatActivity { whiteList.remove(getPosition(appList)); } + if (whiteList.size() > 0) { + no_fua.setVisibility(View.GONE); + rvWhiteApps.setVisibility(View.VISIBLE); + } else { + no_fua.setVisibility(View.VISIBLE); + rvWhiteApps.setVisibility(View.GONE); + } + whiteListAdapter.notifyDataSetChanged(); }); diff --git a/app/src/main/java/com/ssb/simplitend/apputils/AppUtil.java b/app/src/main/java/com/ssb/simplitend/apputils/AppUtil.java index 67fa321..f27177b 100644 --- a/app/src/main/java/com/ssb/simplitend/apputils/AppUtil.java +++ b/app/src/main/java/com/ssb/simplitend/apputils/AppUtil.java @@ -12,6 +12,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.inputmethod.InputMethodManager; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.RawRes; @@ -20,6 +21,7 @@ import com.bumptech.glide.Glide; import com.google.android.material.bottomsheet.BottomSheetDialog; import com.ssb.simplitend.R; import com.ssb.simplitend.appblocking.MySharedPref; +import com.ssb.simplitend.databinding.BottomSheetAlertBinding; import com.ssb.simplitend.databinding.DecisionBottomsheetBinding; import com.ssb.simplitend.databinding.DoneBottomsheetBinding; @@ -38,6 +40,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 String NOTIFICATION_ACTION = "com.simplitend.NOTIFICATION_ACTION"; + // fields public static final String PATIENT_DETAILS = "user_details"; public static final String CAREGIVER_DETAILS = "caregiver_details"; @@ -285,16 +289,97 @@ public abstract class AppUtil { setWantSecurityFlag(context, NOT_ASKED_CG_SECURITY); } - public static void dialPhone(Activity activity, String phone_number) { + public static void dialPhone(Context activity, String phone_number) { Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", phone_number, null)); if (activity != null) activity.startActivity(intent); } - public static void messageNumber(Activity activity, String phone_number){ + public static void messageNumber(Context activity, String phone_number){ Uri uri = Uri.parse("smsto:" + phone_number); Intent intent = new Intent(Intent.ACTION_SENDTO, uri); // intent.putExtra("sms_body", "The SMS text"); if (activity != null) activity.startActivity(intent); } + + public static void showBottomAlert(Context context, String content_type, Intent intent) throws Exception { + BottomSheetDialog bsd = new BottomSheetDialog(context, R.style.BottomSheetDialog); + BottomSheetAlertBinding binding = BottomSheetAlertBinding.inflate(LayoutInflater.from(context)); + bsd.setContentView(binding.getRoot()); + + String title = intent.getStringExtra(NotificationService.NOTIFICATION_TITLE_KEY); + String body = intent.getStringExtra(NotificationService.NOTIFICATION_BODY_KEY); + + switch (content_type){ + case Constants.PATIENT_OUT_OF_GEOFENCE: + + setupBottomSheet(binding, + R.drawable.img_medication_time, + title, "Current location of patient", + "Unknown", "Call patient", + v -> { + CaregiverDataCache.getCaregiverData(context,(careGiverData -> { + if (careGiverData == null || careGiverData.patientDetails == null){ + Toast.makeText(context, "Couldn't load data", Toast.LENGTH_SHORT).show(); + return; + } + + AppUtil.dialPhone(context, careGiverData.patientDetails.phone_number); + }), true); + }); + + bsd.show(); + break; + case Constants.ACTIVITY_TIME: + setupBottomSheet(binding, + R.drawable.img_activity_time, + title, body, + null, "Text patient", + v -> { + CaregiverDataCache.getCaregiverData(context,(careGiverData -> { + if (careGiverData == null || careGiverData.patientDetails == null){ + Toast.makeText(context, "Couldn't load data", Toast.LENGTH_SHORT).show(); + return; + } + + AppUtil.messageNumber(context, careGiverData.patientDetails.phone_number); + }), true); + }); + + bsd.show(); + break; + case Constants.MEDICINE_TIME: + setupBottomSheet(binding, + R.drawable.img_medication_time, + title, body, + null, "Text patient", + v -> { + CaregiverDataCache.getCaregiverData(context,(careGiverData -> { + if (careGiverData == null || careGiverData.patientDetails == null){ + Toast.makeText(context, "Couldn't load data", Toast.LENGTH_SHORT).show(); + return; + } + + AppUtil.messageNumber(context, careGiverData.patientDetails.phone_number); + }), true); + }); + + bsd.show(); + break; + } + + } + + private static void setupBottomSheet(BottomSheetAlertBinding binding, + int img_res, + String title, String description_title, + String description, String btn_text, + View.OnClickListener btn_clickListener) { + binding.image.setImageResource(img_res); + binding.title.setText(title); + binding.descriptionTitle.setText(description_title); + binding.description.setText(description); + binding.btn.setText(btn_text); + binding.btn.setOnClickListener(btn_clickListener); + } } diff --git a/app/src/main/java/com/ssb/simplitend/apputils/Constants.java b/app/src/main/java/com/ssb/simplitend/apputils/Constants.java new file mode 100644 index 0000000..b79de69 --- /dev/null +++ b/app/src/main/java/com/ssb/simplitend/apputils/Constants.java @@ -0,0 +1,10 @@ +package com.ssb.simplitend.apputils; + +public abstract class Constants { + public static final String NEW_SUBSCRIPTION = "new_subscription"; + public static final String ACTIVITY_TIME = "activity_time"; + public static final String MEDICINE_TIME = "medicine_time"; + public static final String GEOFENCING_RADIUS_UPDATED = "geofencing_radius_updated"; + public static final String HOME_LOCATION_UPDATED = "home_location_updated"; + public static final String PATIENT_OUT_OF_GEOFENCE = "patient_outof_geofence"; +} \ No newline at end of file diff --git a/app/src/main/java/com/ssb/simplitend/apputils/NotificationService.java b/app/src/main/java/com/ssb/simplitend/apputils/NotificationService.java new file mode 100644 index 0000000..4acf48e --- /dev/null +++ b/app/src/main/java/com/ssb/simplitend/apputils/NotificationService.java @@ -0,0 +1,38 @@ +package com.ssb.simplitend.apputils; + +import android.content.Intent; + +import androidx.annotation.NonNull; + +import com.onesignal.notifications.INotificationReceivedEvent; +import com.onesignal.notifications.INotificationServiceExtension; + +import org.json.JSONException; +import org.json.JSONObject; + +public class NotificationService implements INotificationServiceExtension { + + public static final String CONTENT_TYPE_KEY = "content_type_key"; + public static final String NOTIFICATION_BODY_KEY = "notification_body_key"; + public static final String NOTIFICATION_TITLE_KEY = "notification_title_key"; + + @Override + public void onNotificationReceived(@NonNull INotificationReceivedEvent iNotificationReceivedEvent) { + JSONObject extras = iNotificationReceivedEvent.getNotification().getAdditionalData(); + String content_type = null; + if (extras != null){ + try { + content_type = extras.getString("content_type"); + } catch (JSONException e) { + // do nothing + } + } + + Intent intent = new Intent(AppUtil.NOTIFICATION_ACTION); + intent.putExtra(CONTENT_TYPE_KEY, content_type); + intent.putExtra(NOTIFICATION_BODY_KEY, iNotificationReceivedEvent.getNotification().getBody()); + intent.putExtra(NOTIFICATION_TITLE_KEY, iNotificationReceivedEvent.getNotification().getTitle()); + + iNotificationReceivedEvent.getContext().sendBroadcast(intent); + } +} diff --git a/app/src/main/java/com/ssb/simplitend/apputils/SimpliTendApp.java b/app/src/main/java/com/ssb/simplitend/apputils/SimpliTendApp.java index 71c69fd..f59f6a8 100644 --- a/app/src/main/java/com/ssb/simplitend/apputils/SimpliTendApp.java +++ b/app/src/main/java/com/ssb/simplitend/apputils/SimpliTendApp.java @@ -17,11 +17,5 @@ public class SimpliTendApp extends Application { // OneSignal Initialization OneSignal.initWithContext(this, getString(R.string.ONE_SIGNAL_APP_ID)); - - // handling notification when app is in foreground. -// OneSignal.getNotifications().addForegroundLifecycleListener(iNotificationWillDisplayEvent -> { -// Toast.makeText(this, "Notifies : " + iNotificationWillDisplayEvent.getNotification().getBody(), Toast.LENGTH_SHORT).show(); -// }); - } } \ No newline at end of file diff --git a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java index 696cde9..d0d0fda 100644 --- a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java +++ b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java @@ -1,10 +1,17 @@ package com.ssb.simplitend.caregiverdashboard.activities; +import static com.ssb.simplitend.apputils.NotificationService.CONTENT_TYPE_KEY; + +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.os.Build; import android.os.Bundle; import android.view.View; +import android.widget.Toast; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.content.res.AppCompatResources; import androidx.fragment.app.Fragment; @@ -13,9 +20,12 @@ import androidx.lifecycle.ViewModelProvider; import com.bumptech.glide.Glide; import com.onesignal.Continue; import com.onesignal.OneSignal; +import com.onesignal.notifications.INotificationLifecycleListener; +import com.onesignal.notifications.INotificationWillDisplayEvent; import com.ssb.simplitend.R; import com.ssb.simplitend.apputils.AppUtil; import com.ssb.simplitend.apputils.CaregiverDataCache; +import com.ssb.simplitend.apputils.Constants; import com.ssb.simplitend.articles.ArticlesActivity; import com.ssb.simplitend.caregiverdashboard.fragments.CgDashBoardFragment; import com.ssb.simplitend.caregiverdashboard.fragments.MyPatientFragment; @@ -31,6 +41,9 @@ import com.ssb.simplitend.welcome.welcomecg.mvvm.CareGiverData; import com.yarolegovich.slidingrootnav.SlidingRootNavBuilder; import com.yarolegovich.slidingrootnav.callback.DragStateListener; +import org.json.JSONException; +import org.json.JSONObject; + public class CaregiverDashActivity extends AppCompatActivity implements DragStateListener, HomeBottomNav.OnBottomNavItemSelectListener { @@ -38,11 +51,11 @@ public class CaregiverDashActivity extends AppCompatActivity implements // view binding protected CaregiverDashboardActivityBinding binding; private CaregiverDashboardMenuBinding menuBinding; - protected CaregiverMainViewModel viewModel; - private CareGiverData careGiverData; + private BroadcastReceiver notification_receiver; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -59,6 +72,19 @@ public class CaregiverDashActivity extends AppCompatActivity implements watchSubscription(); }, true); + // NOTIFICATION RECEIVER + notification_receiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String content_type = intent.getStringExtra(CONTENT_TYPE_KEY); + try { + AppUtil.showBottomAlert(CaregiverDashActivity.this, content_type, intent); + }catch (Exception e){ + // do nothing + } + } + }; + registerReceiver(notification_receiver, new IntentFilter(AppUtil.NOTIFICATION_ACTION)); } @Override @@ -74,18 +100,24 @@ public class CaregiverDashActivity extends AppCompatActivity implements @Override public void onBackPressed() { Fragment fragment = getSupportFragmentManager().findFragmentByTag("chat"); - if (fragment != null){ - if (fragment instanceof ChatFragment){ + if (fragment != null) { + if (fragment instanceof ChatFragment) { binding.bottomNav.selectMenuItem(MenuItem.DASHBOARD); onBottomNavItemSelected(MenuItem.DASHBOARD); - }else{ + } else { super.onBackPressed(); } - }else{ + } else { super.onBackPressed(); } } + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(notification_receiver); + } + private void initViews() { // viewmodel @@ -105,21 +137,21 @@ public class CaregiverDashActivity extends AppCompatActivity implements .inject(); binding.bottomNav.setItemSelectListener(this); - + } private void clickEvents() { // menu click events menuBinding.close.setOnClickListener(v -> { - if (viewModel.slidingRootNav.isMenuOpened()){ + if (viewModel.slidingRootNav.isMenuOpened()) { viewModel.slidingRootNav.closeMenu(true); } }); // content click events binding.tint.setOnClickListener(v -> { - if (viewModel.slidingRootNav.isMenuOpened()){ + if (viewModel.slidingRootNav.isMenuOpened()) { viewModel.slidingRootNav.closeMenu(true); binding.tint.setVisibility(View.GONE); } @@ -152,9 +184,9 @@ public class CaregiverDashActivity extends AppCompatActivity implements } - private void watchSubscription(){ - if (careGiverData != null){ - if (careGiverData.isCaregiverTakeSubscription != 1){ + private void watchSubscription() { + if (careGiverData != null) { + if (careGiverData.isCaregiverTakeSubscription != 1) { // user has not subscribed yet Intent intent = new Intent(this, CgSubscriptionActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); @@ -167,14 +199,13 @@ public class CaregiverDashActivity extends AppCompatActivity implements // initializing dashboard fragment replaceFragment(new CgDashBoardFragment(), "dashboard"); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU){ + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { // requestPermission will show the native Android notification permission prompt. OneSignal.getNotifications().requestPermission(true, Continue.with(r -> { if (r.isSuccess()) { if (r.getData() != null) { // `requestPermission` completed successfully and the user has accepted permission - } - else { + } else { // `requestPermission` completed successfully but the user has rejected permission } } @@ -183,12 +214,12 @@ public class CaregiverDashActivity extends AppCompatActivity implements } private void setLayoutDetails() { - if (careGiverData == null || careGiverData.patientDetails == null){ + if (careGiverData == null || careGiverData.patientDetails == null) { return; } menuBinding.name.setText(careGiverData.first_name); - if (careGiverData.profile_photo != null){ + if (careGiverData.profile_photo != null) { Glide.with(this) .load(AppUtil.IMAGE_BASE_URL + careGiverData.profile_photo) .placeholder(android.R.color.darker_gray) @@ -202,9 +233,9 @@ public class CaregiverDashActivity extends AppCompatActivity implements if (fragment instanceof CgDashBoardFragment) { String first_name = ""; - if (careGiverData != null && careGiverData.first_name != null){ + if (careGiverData != null && careGiverData.first_name != null) { String[] name = careGiverData.first_name.split(" "); - if (name.length > 0){ + if (name.length > 0) { first_name = name[0]; } } @@ -215,7 +246,7 @@ public class CaregiverDashActivity extends AppCompatActivity implements } - private void replaceFragment(Fragment fragment, String tag){ + private void replaceFragment(Fragment fragment, String tag) { getSupportFragmentManager().beginTransaction() .replace(R.id.fcv_cg_home, fragment, tag) .commitAllowingStateLoss(); @@ -229,10 +260,10 @@ public class CaregiverDashActivity extends AppCompatActivity implements @Override public void onDragEnd(boolean isMenuOpened) { - if (isMenuOpened){ + if (isMenuOpened) { binding.getRoot().setRadius(30); binding.tint.setVisibility(View.VISIBLE); - }else{ + } else { binding.getRoot().setRadius(0); binding.tint.setVisibility(View.GONE); } @@ -240,7 +271,7 @@ public class CaregiverDashActivity extends AppCompatActivity implements @Override public void onBottomNavItemSelected(MenuItem selectedItem) { - if (selectedItem == MenuItem.DASHBOARD){ + if (selectedItem == MenuItem.DASHBOARD) { replaceFragment(new CgDashBoardFragment(), "dashboard"); // setting up toolbar accordingly @@ -251,16 +282,16 @@ public class CaregiverDashActivity extends AppCompatActivity implements binding.toolbar.setNavigationIconTint(getResources().getColor(R.color.black)); String first_name = ""; - if (careGiverData != null && careGiverData.first_name != null){ + if (careGiverData != null && careGiverData.first_name != null) { String[] name = careGiverData.first_name.split(" "); - if (name.length > 0){ + if (name.length > 0) { first_name = name[0]; } } binding.toolbar.setTitle("Welcome " + first_name); - }else if (selectedItem == MenuItem.MY_PATIENT){ + } else if (selectedItem == MenuItem.MY_PATIENT) { replaceFragment(new MyPatientFragment(), "my_patient"); // setting up toolbar accordingly @@ -270,7 +301,7 @@ public class CaregiverDashActivity extends AppCompatActivity implements binding.toolbar.setTitle(null); binding.toolbar.setNavigationIcon(AppCompatResources.getDrawable(this, R.drawable.ic_menu)); binding.toolbar.setNavigationIconTint(getResources().getColor(R.color.white)); - }else if (selectedItem == MenuItem.CHATS){ + } else if (selectedItem == MenuItem.CHATS) { replaceFragment(new ChatFragment(), "chat"); binding.toolbar.setVisibility(View.GONE); diff --git a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java index 537b638..305130f 100644 --- a/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java +++ b/app/src/main/java/com/ssb/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java @@ -1,11 +1,15 @@ package com.ssb.simplitend.caregiverdashboard.fragments; +import static com.ssb.simplitend.apputils.NotificationService.CONTENT_TYPE_KEY; import static com.ssb.simplitend.articles.ArticleShowerActivity.ARTICLE_TITLE; import static com.ssb.simplitend.articles.ArticleShowerActivity.ARTICLE_URL_KEY; import static com.ssb.simplitend.cg_geofencing.CgGeoFencingActivity.GEOFENCE_DETAILS_KEY; import android.app.ProgressDialog; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; @@ -69,6 +73,8 @@ public class CgDashBoardFragment extends Fragment implements private PatientData patientData; private ProgressDialog progressDialog; private GoogleMap mGoogleMap; + + private BroadcastReceiver notification_receiver; public CgDashBoardFragment(){ // required empty @@ -84,11 +90,27 @@ public class CgDashBoardFragment extends Fragment implements progressDialog = new ProgressDialog(requireContext()); + notification_receiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + String content_type = intent.getStringExtra(CONTENT_TYPE_KEY); + + loadReminders(); + loadActivities(); +// if (Constants.ACTIVITY_TIME.equals(content_type)){ +// loadArticles(); +// }else if (Constants.MEDICINE_TIME.equals(content_type)){ +// loadReminders(); +// } + } + }; + CaregiverDataCache.getCaregiverData(requireActivity(), (careGiverData1 -> { this.careGiverData = careGiverData1; loadReminders(); loadActivities(); + requireContext().registerReceiver(notification_receiver, new IntentFilter(AppUtil.NOTIFICATION_ACTION)); }), true); initViews(); @@ -112,6 +134,12 @@ public class CgDashBoardFragment extends Fragment implements }), true); } + @Override + public void onDestroyView() { + super.onDestroyView(); + requireContext().unregisterReceiver(notification_receiver); + } + private void loadActivities() { if (careGiverData == null) return; @@ -181,6 +209,24 @@ public class CgDashBoardFragment extends Fragment implements Intent intent = new Intent(requireActivity(), ArticlesActivity.class); startActivity(intent); }); + + binding.refreshBtn.setOnClickListener(v -> { + binding.refreshBtn.setVisibility(View.GONE); + binding.refreshProgress.setVisibility(View.VISIBLE); + + viewModel.ongoingActivityText = getString(R.string.loading); + viewModel.upcomingActivityText = getString(R.string.loading); + viewModel.upcomingReminderText = getString(R.string.loading); + viewModel.dailyReminderText = getString(R.string.loading); + + binding.upcomingActivity.setText(viewModel.upcomingActivityText); + binding.onGoingActivity.setText(viewModel.ongoingActivityText); + binding.nearestReminder.setText(viewModel.upcomingReminderText); + binding.dailyReminder.setText(viewModel.dailyReminderText); + + loadReminders(); + loadActivities(); + }); } public void setArticleDetails(ArticleResult articleResult){ @@ -341,6 +387,9 @@ public class CgDashBoardFragment extends Fragment implements @Override public void onFetchRemindersListFailed(Throwable t, String message) { + binding.refreshProgress.setVisibility(View.GONE); + binding.refreshBtn.setVisibility(View.VISIBLE); + binding.nearestReminder.setText(R.string.couldnt_load_data); binding.dailyReminder.setText(R.string.couldnt_load_data); @@ -352,6 +401,9 @@ public class CgDashBoardFragment extends Fragment implements public void nearestReminder(NearestReminder nearestReminder) { Log.d("aditya", "nearestReminder: " + nearestReminder); + binding.refreshProgress.setVisibility(View.GONE); + binding.refreshBtn.setVisibility(View.VISIBLE); + try { // daily routine setting String daily_r_txt; @@ -442,6 +494,9 @@ public class CgDashBoardFragment extends Fragment implements @Override public void onRoutinesFetchedFailed(Throwable t, String message) { + binding.refreshProgress.setVisibility(View.GONE); + binding.refreshBtn.setVisibility(View.VISIBLE); + binding.upcomingActivity.setText(R.string.couldnt_load_data); binding.onGoingActivity.setText(R.string.couldnt_load_data); @@ -451,6 +506,9 @@ public class CgDashBoardFragment extends Fragment implements @Override public void nearestActivity(NearestActivity nearestActivity) { + binding.refreshProgress.setVisibility(View.GONE); + binding.refreshBtn.setVisibility(View.VISIBLE); + if (nearestActivity.ongoing_activity_name != null){ binding.onGoingActivity.setText(nearestActivity.ongoing_activity_name); }else{ diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/contacts/AddContactFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/contacts/AddContactFragment.java index 7daa9c0..b600903 100644 --- a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/contacts/AddContactFragment.java +++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/contacts/AddContactFragment.java @@ -21,6 +21,7 @@ import androidx.recyclerview.widget.GridLayoutManager; import com.google.android.material.bottomsheet.BottomSheetDialog; import com.ssb.simplitend.R; import com.ssb.simplitend.apputils.AppUtil; +import com.ssb.simplitend.apputils.PatientDataCache; import com.ssb.simplitend.databinding.AddContactFragmentBinding; import com.ssb.simplitend.databinding.DoneBottomsheetBinding; import com.ssb.simplitend.welcome.welcomepatient.fragments.contacts.mvvm.AddContactAdapter; @@ -127,6 +128,8 @@ public class AddContactFragment extends Fragment implements WelcomeContracts.Con contactList.add(response.contact_data); } + PatientDataCache.setContactList(new ArrayList<>(contactList)); + for (int i = contactList.size(); i<10; i++){ contactList.add(new ContactData(-1)); } diff --git a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java index 729b03d..1ac2385 100644 --- a/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java +++ b/app/src/main/java/com/ssb/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java @@ -7,10 +7,8 @@ import static com.ssb.simplitend.welcome.welcomepatient.fragments.register.ReAct import static com.ssb.simplitend.welcome.welcomepatient.fragments.register.ReActivateFragment.TOKEN_KEY; import android.app.AlertDialog; -import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -24,9 +22,9 @@ import androidx.navigation.Navigation; import com.ssb.simplitend.R; import com.ssb.simplitend.apputils.AppUtil; +import com.ssb.simplitend.apputils.CaregiverDataCache; import com.ssb.simplitend.apputils.PatientDataCache; import com.ssb.simplitend.apputils.RetrofitHelper; -import com.ssb.simplitend.apputils.CaregiverDataCache; import com.ssb.simplitend.caregiverdashboard.activities.CaregiverDashActivity; import com.ssb.simplitend.caregiverdashboard.activities.deactivateacc.AccountPresenter; import com.ssb.simplitend.databinding.SplashFragmentBinding; diff --git a/app/src/main/res/drawable/ic_refresh.png b/app/src/main/res/drawable/ic_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..b9af648185f817afa32c50bca44b8844e8ae2187 GIT binary patch literal 4006 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 M07*qoM6N<$f| + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/img_medication_time.xml b/app/src/main/res/drawable/img_medication_time.xml new file mode 100644 index 0000000..8341cc5 --- /dev/null +++ b/app/src/main/res/drawable/img_medication_time.xml @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/img_out_of_geo.xml b/app/src/main/res/drawable/img_out_of_geo.xml new file mode 100644 index 0000000..ce9b2d8 --- /dev/null +++ b/app/src/main/res/drawable/img_out_of_geo.xml @@ -0,0 +1,745 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_fua.xml b/app/src/main/res/layout/activity_fua.xml index 8e3afbc..4cd074c 100644 --- a/app/src/main/res/layout/activity_fua.xml +++ b/app/src/main/res/layout/activity_fua.xml @@ -38,7 +38,7 @@ android:layout_height="match_parent" android:layout_below="@id/title" android:layout_above="@id/done_btn" - android:layout_marginTop="15dp" + android:layout_marginTop="5dp" android:layout_marginHorizontal="15dp" > @@ -50,13 +50,51 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent"> + + + + + + + + @@ -91,6 +129,8 @@ android:layout_weight="5" android:layout_marginVertical="5dp" android:nestedScrollingEnabled="true" + android:scrollbars="vertical" + android:fadeScrollbars="false" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" @@ -104,11 +144,11 @@ android:id="@+id/done_btn" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginVertical="25dp" + android:layout_marginBottom="15dp" android:layout_marginHorizontal="15dp" android:backgroundTint="@color/color_primary" - android:layout_marginTop="50dp" - android:text="Done" + android:layout_marginTop="5dp" + android:text="@string/done" android:textColor="@color/white" android:textAppearance="@style/TextAppearance.Material3.TitleMedium" android:textAllCaps="false" diff --git a/app/src/main/res/layout/bottom_sheet_alert.xml b/app/src/main/res/layout/bottom_sheet_alert.xml new file mode 100644 index 0000000..feed026 --- /dev/null +++ b/app/src/main/res/layout/bottom_sheet_alert.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ 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 7839484..e32d9f7 100644 --- a/app/src/main/res/layout/caregiver_dash_fragment.xml +++ b/app/src/main/res/layout/caregiver_dash_fragment.xml @@ -80,19 +80,50 @@ android:layout_marginVertical="10dp" android:orientation="vertical"> - - android:text="@string/none" - android:fontFamily="@font/nunito_semibold" - android:textColor="@color/black" - android:textSize="@dimen/_16ssp" + + android:text="@string/none" + android:fontFamily="@font/nunito_semibold" + android:textColor="@color/black" + android:textSize="@dimen/_16ssp" + + android:maxLines="1" + android:ellipsize="end" + android:layout_centerVertical="true" + /> + + + + + + + Call and message your loved ones Select number to cal or message Call + No frequently used apps added\nPlease select an app from below list to unlock. + refresh + illustration \ No newline at end of file