diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 03d9c98..63159b7 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -1,6 +1,18 @@ + + + + + + + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f0d171b..2b5a138 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -27,7 +27,7 @@ - + + @@ -161,7 +162,8 @@ - + + diff --git a/app/src/main/java/com/app/simplitend/appblocking/FUAActivity.java b/app/src/main/java/com/app/simplitend/appblocking/FUAActivity.java index a25fcfd..19954a4 100644 --- a/app/src/main/java/com/app/simplitend/appblocking/FUAActivity.java +++ b/app/src/main/java/com/app/simplitend/appblocking/FUAActivity.java @@ -44,7 +44,7 @@ public class FUAActivity extends AppCompatActivity { TextView all_apps_title; LinearLayout no_fua; - TextView no_fua_txt; + TextView no_fua_txt, fua_sub_title; List installed_app_list; @@ -65,6 +65,7 @@ public class FUAActivity extends AppCompatActivity { no_fua = findViewById(R.id.no_fua); no_fua_txt = findViewById(R.id.no_fua_text); all_apps_title = findViewById(R.id.all_app_tile); + fua_sub_title = findViewById(R.id.fua_sub_title); if (!isAccessibilityAppBlockingEnabled()) { openAccessibilityDialog(); @@ -102,6 +103,8 @@ public class FUAActivity extends AppCompatActivity { if (!isFromDashboard) { // from settings page no_fua_txt.setText(R.string.no_frequently_used_apps); + fua_sub_title.setVisibility(View.GONE); + rvApps.setVisibility(View.VISIBLE); all_apps_title.setVisibility(View.VISIBLE); findViewById(R.id.done_btn).setVisibility(View.VISIBLE); @@ -130,6 +133,7 @@ public class FUAActivity extends AppCompatActivity { } else { // from dashboard no_fua_txt.setText(R.string.no_frequently_used_apps_set_up); + fua_sub_title.setVisibility(View.VISIBLE); rvApps.setVisibility(View.GONE); all_apps_title.setVisibility(View.GONE); @@ -344,13 +348,13 @@ public class FUAActivity extends AppCompatActivity { private void openAccessibilityDialog() { AppUtil.showAlert(this, - "Accessibility Permission Dialog", - "Please allow app blocking accessibility.", - "Yes", (dialog, id) -> { + "Accessibility Permission", + "Frequently used apps enables you to select your top apps, ensuring quick access and avoid distraction..\nChosen apps will be granted access, while all remaining apps will be restricted.\n\nTo activate, click on Go to settings -> Installed/Downloaded apps -> SimpliTend -> Turn on the permission.", + "Go to settings", (dialog, id) -> { Intent accessibilityIntent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivity(accessibilityIntent); }, - "No",(dialog, id) -> { + "Cancel",(dialog, id) -> { // Action for 'NO' Button dialog.cancel(); }); diff --git a/app/src/main/java/com/app/simplitend/appblocking/MyAppsAdapter.java b/app/src/main/java/com/app/simplitend/appblocking/MyAppsAdapter.java index c682cf9..66a4df9 100644 --- a/app/src/main/java/com/app/simplitend/appblocking/MyAppsAdapter.java +++ b/app/src/main/java/com/app/simplitend/appblocking/MyAppsAdapter.java @@ -179,13 +179,13 @@ public class MyAppsAdapter extends RecyclerView.Adapter { + "Accessibility Permission", + "Frequently used apps enables you to select your top apps, ensuring quick access and avoid distraction..\nChosen apps will be granted access, while all remaining apps will be restricted.\n\nTo activate, click on Go to settings -> Installed/Downloaded apps -> SimpliTend -> Turn on the permission.", + "Go to settings", (dialog, id) -> { Intent accessibilityIntent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); context.startActivity(accessibilityIntent); }, - "No",(dialog, id) -> { + "Cancel",(dialog, id) -> { // Action for 'NO' Button dialog.cancel(); }); diff --git a/app/src/main/java/com/app/simplitend/appblocking/TopAppDetectionService.java b/app/src/main/java/com/app/simplitend/appblocking/TopAppDetectionService.java index 8e76cea..b1a3e5f 100644 --- a/app/src/main/java/com/app/simplitend/appblocking/TopAppDetectionService.java +++ b/app/src/main/java/com/app/simplitend/appblocking/TopAppDetectionService.java @@ -16,14 +16,14 @@ import java.util.List; public class TopAppDetectionService extends AccessibilityService { public static final String BLOCKED_APP_NAME = "BLOCKED_APP_NAME"; + + public static final String STOP_ACCESSIBILITY_SERVICE = "stop_accessibility_service"; + MySharedPref sharedPref; List appsList = new ArrayList<>(); @Override public void onAccessibilityEvent(AccessibilityEvent event) { - - Log.d("aditya", "onAccessibilityEvent: " + event); - sharedPref = new MySharedPref(getApplication()); appsList.addAll(sharedPref.getArrayList("APP_LIST")); @@ -73,6 +73,15 @@ public class TopAppDetectionService extends AccessibilityService { // This method is required but not used in this example } + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + if (intent != null && STOP_ACCESSIBILITY_SERVICE.equals(intent.getAction())){ + // stop the service + disableSelf(); + } + return super.onStartCommand(intent, flags, startId); + } + @Override protected void onServiceConnected() { super.onServiceConnected(); diff --git a/app/src/main/java/com/app/simplitend/apputils/AppUtil.java b/app/src/main/java/com/app/simplitend/apputils/AppUtil.java index c8b98ca..72a203b 100644 --- a/app/src/main/java/com/app/simplitend/apputils/AppUtil.java +++ b/app/src/main/java/com/app/simplitend/apputils/AppUtil.java @@ -6,8 +6,6 @@ import static com.app.simplitend.apputils.Constants.REMINDER_EXTRA_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.callwhitelisting.CallService.CONTACT_WHITE_LISTING_TAG; -import static com.app.simplitend.locationupdates.LocationService.LOCATION_INTERVAL_BASE_TIME; -import static com.app.simplitend.locationupdates.LocationService.LOCATION_UPDATE_MIN_INTERVAL; import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_ID; import static com.app.simplitend.patientgeofencing.GeoFenceHelper.GEOFENCE_TAG; @@ -31,21 +29,21 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RawRes; -import com.app.simplitend.locationupdates.LocationService; -import com.app.simplitend.welcome.welcomepatient.fragments.contacts.mvvm.models.ContactData; -import com.bumptech.glide.Glide; -import com.google.android.gms.location.GeofencingClient; -import com.google.android.gms.location.LocationServices; -import com.google.android.material.bottomsheet.BottomSheetDialog; import com.app.simplitend.R; -import com.app.simplitend.appblocking.MySharedPref; +import com.app.simplitend.appblocking.TopAppDetectionService; import com.app.simplitend.articles.ArticleShowerActivity; import com.app.simplitend.databinding.BottomSheetAlertBinding; import com.app.simplitend.databinding.DecisionBottomsheetBinding; import com.app.simplitend.databinding.DoneBottomsheetBinding; +import com.app.simplitend.locationupdates.LocationService; import com.app.simplitend.patientprofile.medreminder.mvvm.models.ReminderResult; import com.app.simplitend.patientprofile.setuproutine.mvvm.RoutineDetails; +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.google.android.gms.location.GeofencingClient; +import com.google.android.gms.location.LocationServices; +import com.google.android.material.bottomsheet.BottomSheetDialog; import org.json.JSONArray; import org.json.JSONObject; @@ -57,6 +55,7 @@ import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Collections; import java.util.Date; import java.util.HashSet; @@ -64,14 +63,13 @@ import java.util.List; import java.util.Locale; import java.util.Objects; import java.util.Set; +import java.util.TimeZone; 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 @@ -87,6 +85,8 @@ public abstract class AppUtil { public static final int CG_NO_SECURITY_NEEDED = 3; public static final int CG_SECURITY_NEEDED = 4; + public static final String CG_REGISTRATION_COMPLETE = "cg_registration_complete"; + public static final String PATIENT_UID = "patient_uid"; public static final String IS_PATIENT_LOGGED_IN = "patient_logged_in"; @@ -256,6 +256,18 @@ public abstract class AppUtil { } } + @NonNull + public static String getTimeZone(){ + TimeZone timeZone = TimeZone.getDefault(); + // Getting the GMT offset in milliseconds + int gmtOffsetMillis = timeZone.getOffset(Calendar.getInstance().getTimeInMillis()); + // Converting milliseconds to hours and minutes + int hours = gmtOffsetMillis / 3600000; + int minutes = (gmtOffsetMillis % 3600000) / 60000; + + return "GMT" + (gmtOffsetMillis >= 0 ? "+" : "") + hours + ":" + String.format(Locale.getDefault(), "%02d", minutes); + } + public static void callPhone(Activity activity, String phone_number){ if (activity.checkSelfPermission(Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED){ Intent intent = new Intent(Intent.ACTION_CALL, Uri.fromParts("tel", @@ -281,7 +293,8 @@ public abstract class AppUtil { public static void showBottomAlert(Context context, String patient_name, - @Nullable String content_type, Intent intent) throws Exception { + @Nullable String content_type, Intent intent, + @NonNull View.OnClickListener text_senior_click) throws Exception { if (content_type == null) return; @@ -360,16 +373,9 @@ public abstract class AppUtil { setupBottomSheet(binding, R.drawable.img_activity_time, title, body, - routine_description, "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); + routine_description, "Text senior", view -> { + bsd.dismiss(); + text_senior_click.onClick(null); }); bsd.show(); @@ -406,16 +412,9 @@ public abstract class AppUtil { setupBottomSheet(binding, R.drawable.img_medication_time, title, body, - description, "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); + description, "Text senior", view -> { + bsd.dismiss(); + text_senior_click.onClick(null); }); bsd.show(); @@ -499,16 +498,9 @@ public abstract class AppUtil { setupBottomSheet(binding, R.drawable.img_med_refill, title, body, - refill_description, "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); + refill_description, "Text senior", view -> { + bsd.dismiss(); + text_senior_click.onClick(null); }); bsd.show(); @@ -578,9 +570,10 @@ public abstract class AppUtil { public static void patientSignOut(Context context) { AppUtil.savePatientData(null, -1, context, false); - // app block list clear - MySharedPref mySharedPref = new MySharedPref(context); - mySharedPref.removeKey("APP_LIST"); + // turning off app_blocking accessibility permission + Intent stop_accessibility_intent = new Intent(context, TopAppDetectionService.class); + stop_accessibility_intent.setAction(TopAppDetectionService.STOP_ACCESSIBILITY_SERVICE); + context.startService(stop_accessibility_intent); // removing contact listing setWhiteListedContacts(context, null); @@ -642,6 +635,20 @@ public abstract class AppUtil { return sp.getInt(CG_APP_SECURITY, NOT_ASKED_CG_SECURITY); } + public static boolean isRegistrationComplete(Context context){ + SharedPreferences sp = context.getSharedPreferences(CAREGIVER_DETAILS, Context.MODE_PRIVATE); + return sp.getBoolean(CG_REGISTRATION_COMPLETE, false); + } + + public static void setCgRegistrationComplete(Context context, boolean registrationComplete){ + SharedPreferences sp = context.getSharedPreferences(CAREGIVER_DETAILS, Context.MODE_PRIVATE); + SharedPreferences.Editor editor = sp.edit(); + + editor.putBoolean(CG_REGISTRATION_COMPLETE, registrationComplete); + + editor.apply(); + } + public static void cgSignOut(Context context) { saveCgData(null, -1, context); setWantSecurityFlag(context, NOT_ASKED_CG_SECURITY); diff --git a/app/src/main/java/com/app/simplitend/articles/ArticlesActivity.java b/app/src/main/java/com/app/simplitend/articles/ArticlesActivity.java index f838dc8..cfcf767 100644 --- a/app/src/main/java/com/app/simplitend/articles/ArticlesActivity.java +++ b/app/src/main/java/com/app/simplitend/articles/ArticlesActivity.java @@ -5,6 +5,8 @@ import static com.app.simplitend.articles.ArticleShowerActivity.ARTICLE_URL_KEY; import android.content.Intent; import android.os.Bundle; +import android.text.Editable; +import android.text.TextWatcher; import android.view.View; import android.widget.Toast; @@ -29,7 +31,7 @@ public class ArticlesActivity extends AppCompatActivity private ArticlesAdapter articlesAdapter; - private boolean isLoadingArticles, lastPageHit; + private boolean isLoadingArticles, lastPageHit, areSearchedArticleShown; private int page_no; @@ -46,6 +48,7 @@ public class ArticlesActivity extends AppCompatActivity clickEvents(); page_no = 1; + areSearchedArticleShown = false; getArticles(binding.searchEt.getText().toString().trim(), PER_PAGE_COUNT, page_no, false); } @@ -89,6 +92,28 @@ public class ArticlesActivity extends AppCompatActivity } } }); + + binding.searchEt.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { + + } + + @Override + public void afterTextChanged(Editable editable) { + if (editable.length() == 0 && areSearchedArticleShown){ + // loading all articles + page_no = 1; + areSearchedArticleShown = false; + getArticles(binding.searchEt.getText().toString().trim(), PER_PAGE_COUNT, page_no, false); + } + } + }); } private void clickEvents() { @@ -97,8 +122,9 @@ public class ArticlesActivity extends AppCompatActivity }); binding.closeBtn.setOnClickListener(v -> { - if (!binding.searchEt.getText().toString().trim().isEmpty()){ + if (!binding.searchEt.getText().toString().trim().isEmpty() && areSearchedArticleShown){ page_no = 1; + areSearchedArticleShown = false; getArticles("", PER_PAGE_COUNT, page_no, false); } @@ -113,6 +139,7 @@ public class ArticlesActivity extends AppCompatActivity AppUtil.closeKeyboard(this); page_no = 1; + areSearchedArticleShown = true; getArticles(binding.searchEt.getText().toString().trim(), PER_PAGE_COUNT, page_no, false); return true; }); diff --git a/app/src/main/java/com/app/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java b/app/src/main/java/com/app/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java index b9590d6..a1c2be6 100644 --- a/app/src/main/java/com/app/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java +++ b/app/src/main/java/com/app/simplitend/caregiverdashboard/activities/CaregiverDashActivity.java @@ -105,7 +105,12 @@ public class CaregiverDashActivity extends AppCompatActivity implements AppUtil.showBottomAlert(CaregiverDashActivity.this, patient_name, content_type, - intent); + intent, + v -> { + // here v is null + binding.bottomNav.selectMenuItem(MenuItem.CHATS); + onBottomNavItemSelected(MenuItem.CHATS); + }); }catch (Exception e){ // do nothing } diff --git a/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java b/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java index 6d31ce7..4b6317c 100644 --- a/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java +++ b/app/src/main/java/com/app/simplitend/caregiverdashboard/fragments/CgDashBoardFragment.java @@ -54,6 +54,7 @@ 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.LatLng; import com.google.android.gms.maps.model.MarkerOptions; @@ -230,6 +231,7 @@ public class CgDashBoardFragment extends Fragment implements loadReminders(); loadActivities(); + loadArticles(); }); binding.notifications.setOnClickListener(view -> { @@ -373,6 +375,7 @@ public class CgDashBoardFragment extends Fragment implements MarkerOptions markerOptions = new MarkerOptions() .position(latLng) + .icon(BitmapDescriptorFactory.fromResource(R.drawable.img_home_marker)) .title(patient_name); mGoogleMap.clear(); diff --git a/app/src/main/java/com/app/simplitend/cg_subscription/CgSubscriptionActivity.java b/app/src/main/java/com/app/simplitend/cg_subscription/CgSubscriptionActivity.java index b5518be..58e7d2e 100644 --- a/app/src/main/java/com/app/simplitend/cg_subscription/CgSubscriptionActivity.java +++ b/app/src/main/java/com/app/simplitend/cg_subscription/CgSubscriptionActivity.java @@ -325,7 +325,6 @@ public class CgSubscriptionActivity extends AppCompatActivity Toast.makeText(this, "Payment failed.", Toast.LENGTH_SHORT).show(); } else if (paymentSheetResult instanceof PaymentSheetResult.Completed) { // Display for example, an order confirmation screen - Toast.makeText(this, "Payment successful.", Toast.LENGTH_SHORT).show(); this.careGiverData.isCaregiverTakeSubscription = 1; CaregiverDataCache.setCareGiverData(this.careGiverData); diff --git a/app/src/main/java/com/app/simplitend/patientprofile/PatientProfileAPIService.java b/app/src/main/java/com/app/simplitend/patientprofile/PatientProfileAPIService.java index 0735710..525a6f1 100644 --- a/app/src/main/java/com/app/simplitend/patientprofile/PatientProfileAPIService.java +++ b/app/src/main/java/com/app/simplitend/patientprofile/PatientProfileAPIService.java @@ -26,6 +26,10 @@ public interface PatientProfileAPIService { @GET("api/auth-user-data") Call> getUsrProfileProgress(@Header("Authorization") String token); + @GET("api/auth-user-data") + Call> getUsrProfileProgress(@Header("Authorization") String token, + @Header("timezone") String timezone); + @GET("api/patient-reminder-list/{id}") Call>> getRemindersList(@Path("id") int patient_id, @Query("weekday") int week_day, diff --git a/app/src/main/java/com/app/simplitend/patientprofile/ProfileProgressFragment.java b/app/src/main/java/com/app/simplitend/patientprofile/ProfileProgressFragment.java index 7d5d4e2..77aa11d 100644 --- a/app/src/main/java/com/app/simplitend/patientprofile/ProfileProgressFragment.java +++ b/app/src/main/java/com/app/simplitend/patientprofile/ProfileProgressFragment.java @@ -177,10 +177,8 @@ public class ProfileProgressFragment extends Fragment implements ProfileContract // no subscription alert try { AppUtil.showAlert(requireContext(), - "Kindly ask Caregiver to complete SimpliTend subscription.", - "Once your caregiver has completed the " + - "subscription, you will be able to use the " + - "application.", + "Caregiver registration", + "You can set up this feature after caregiver registration is complete", "OK", ((dialogInterface, i) -> { diff --git a/app/src/main/java/com/app/simplitend/patientprofile/RegisterCompleteFragment.java b/app/src/main/java/com/app/simplitend/patientprofile/RegisterCompleteFragment.java index e78038d..a006eb1 100644 --- a/app/src/main/java/com/app/simplitend/patientprofile/RegisterCompleteFragment.java +++ b/app/src/main/java/com/app/simplitend/patientprofile/RegisterCompleteFragment.java @@ -177,7 +177,7 @@ public class RegisterCompleteFragment extends Fragment implements ProfileContrac gotoPatientDashBoard(); }else{ AppUtil.showAlert(requireContext(), - "Kindly ask Caregiver to complete SimpliTend subscription.", + "Kindly ask Caregiver to buy SimpliTend subscription.", "Once your caregiver has completed the " + "subscription, you will be able to use the " + "application.", diff --git a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/AddReminderFragment.java b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/AddReminderFragment.java index f52d369..32bbf47 100644 --- a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/AddReminderFragment.java +++ b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/AddReminderFragment.java @@ -193,18 +193,6 @@ public class AddReminderFragment extends Fragment implements CompoundButton.OnCh reminderResult.time3 = null; } - // Sending time zone - TimeZone timeZone = TimeZone.getDefault(); - // Getting the GMT offset in milliseconds - int gmtOffsetMillis = timeZone.getOffset(Calendar.getInstance().getTimeInMillis()); - // Converting milliseconds to hours and minutes - int hours = gmtOffsetMillis / 3600000; - int minutes = (gmtOffsetMillis % 3600000) / 60000; - - String gmtStandard = "GMT" + (gmtOffsetMillis >= 0 ? "+" : "") + hours + ":" + String.format(Locale.getDefault(), "%02d", minutes); - Toast.makeText(requireContext(), "" + gmtStandard, Toast.LENGTH_SHORT).show(); - reminderResult.timezone = gmtStandard; - reminderResult.medication_quantity = binding.quantity.getText().toString(); reminderResult.medication_refill_date = binding.getDate.getText().toString(); reminderResult.medication_instruction = binding.instructions.getText().toString().trim(); diff --git a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/mvvm/ReminderAdapter.java b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/mvvm/ReminderAdapter.java index 1416f75..23d81e1 100644 --- a/app/src/main/java/com/app/simplitend/patientprofile/medreminder/mvvm/ReminderAdapter.java +++ b/app/src/main/java/com/app/simplitend/patientprofile/medreminder/mvvm/ReminderAdapter.java @@ -130,16 +130,24 @@ public class ReminderAdapter extends RecyclerView.Adapter= 0 ? "+" : "") + hours + ":" + String.format(Locale.getDefault(), "%02d", minutes); - Toast.makeText(requireContext(), "" + gmtStandard, Toast.LENGTH_SHORT).show(); - routineDetails.timezone = gmtStandard; - routineDetails.sun = week_state[0] ? "1" : "0"; routineDetails.mon = week_state[1] ? "1" : "0"; routineDetails.tue = week_state[2] ? "1" : "0"; @@ -488,7 +476,7 @@ public class AddRoutineFragment extends Fragment implements CompoundButton.OnChe progressDialog.dismiss(); if (this.routine == null) { - Toast.makeText(requireContext(), "Routine added successfully.", Toast.LENGTH_SHORT).show(); + Toast.makeText(requireContext(), "Activity saved successfully.", Toast.LENGTH_SHORT).show(); Activity activity = getActivity(); if (activity != null){ diff --git a/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/mvvm/RoutineDetails.java b/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/mvvm/RoutineDetails.java index 6aa81a5..e0f656b 100644 --- a/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/mvvm/RoutineDetails.java +++ b/app/src/main/java/com/app/simplitend/patientprofile/setuproutine/mvvm/RoutineDetails.java @@ -30,7 +30,6 @@ public class RoutineDetails implements Serializable { public String updated_at; public String routine_marked; - public String timezone; @Override public boolean equals(Object o) { diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgAuthActivity.java b/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgAuthActivity.java index d92c8da..988af74 100644 --- a/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgAuthActivity.java +++ b/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgAuthActivity.java @@ -16,6 +16,13 @@ import androidx.biometric.BiometricManager; import androidx.biometric.BiometricPrompt; import androidx.core.content.ContextCompat; +import com.app.simplitend.R; +import com.bumptech.glide.Glide; +import com.bumptech.glide.load.DataSource; +import com.bumptech.glide.load.engine.GlideException; +import com.bumptech.glide.load.resource.gif.GifDrawable; +import com.bumptech.glide.request.RequestListener; +import com.bumptech.glide.request.target.Target; import com.daimajia.androidanimations.library.Techniques; import com.daimajia.androidanimations.library.YoYo; import com.app.simplitend.apputils.AppUtil; @@ -65,11 +72,46 @@ public class CgAuthActivity extends AppCompatActivity { binding.skip.setOnClickListener(v -> { AppUtil.setWantSecurityFlag(this, AppUtil.CG_NO_SECURITY_NEEDED); + if (!AppUtil.isRegistrationComplete(CgAuthActivity.this)){ + // USER IS IN THE REGISTRATION PROCESS + // show thank you page + showThankYouScreen(); + }else { + gotoCgDash(); + } + }); + + binding.proceed.setOnClickListener(v -> { gotoCgDash(); }); } + private void showThankYouScreen() { + AppUtil.setCgRegistrationComplete(this, true); + + binding.connectCompleteView.setVisibility(View.VISIBLE); + binding.askedView.setVisibility(View.GONE); + binding.fingerprintView.setVisibility(View.GONE); + + Glide.with(this) + .asGif() + .load(R.raw.done_anim_primary) + .listener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { + return false; + } + + @Override + public boolean onResourceReady(GifDrawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { + resource.setLoopCount(1); + return false; + } + }) + .into(binding.animIv); + } + private void initViews() { biometricManager = BiometricManager.from(this); @@ -85,7 +127,13 @@ public class CgAuthActivity extends AppCompatActivity { public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) { super.onAuthenticationSucceeded(result); AppUtil.setWantSecurityFlag(CgAuthActivity.this, AppUtil.CG_SECURITY_NEEDED); - gotoCgDash(); + if (!AppUtil.isRegistrationComplete(CgAuthActivity.this)){ + // USER IS IN THE REGISTRATION PROCESS + // show thank you page + showThankYouScreen(); + }else { + gotoCgDash(); + } } @Override diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgConnectFragment.java b/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgConnectFragment.java index d4cba9c..6ea7c85 100644 --- a/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgConnectFragment.java +++ b/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgConnectFragment.java @@ -94,13 +94,6 @@ public class CgConnectFragment extends Fragment implements viewModel.resendCgCode(body, token, this); }); - binding.proceed.setOnClickListener(v -> { - // go to cg dash board - Intent intent = new Intent(requireActivity(), CgAuthActivity.class); - intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - startActivity(intent); - requireActivity().finish(); - }); } private void connectCG() { @@ -177,25 +170,13 @@ public class CgConnectFragment extends Fragment implements public void onCgConnected(ConnectCgResult result) { progressDialog.dismiss(); - binding.connectView.setVisibility(View.GONE); - binding.connectCompleteView.setVisibility(View.VISIBLE); + AppUtil.setCgRegistrationComplete(requireContext(), false); - Glide.with(this) - .asGif() - .load(R.raw.done_anim_primary) - .listener(new RequestListener() { - @Override - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { - return false; - } - - @Override - public boolean onResourceReady(GifDrawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { - resource.setLoopCount(1); - return false; - } - }) - .into(binding.animIv); + // go to cg dash board + Intent intent = new Intent(requireActivity(), CgAuthActivity.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + requireActivity().finish(); } @Override diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgSignInFragment.java b/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgSignInFragment.java index f439a1e..9495e2b 100644 --- a/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgSignInFragment.java +++ b/app/src/main/java/com/app/simplitend/welcome/welcomecg/fragments/CgSignInFragment.java @@ -138,6 +138,7 @@ public class CgSignInFragment extends Fragment implements WelcomeContracts.CgLog }else{ // caregiver user has asked to for security + AppUtil.setCgRegistrationComplete(requireContext(), true); intent = new Intent(requireActivity(), CgAuthActivity.class); } diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/SignInFragment.java b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/SignInFragment.java index ceb4d26..a6671c4 100644 --- a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/SignInFragment.java +++ b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/SignInFragment.java @@ -131,6 +131,9 @@ public class SignInFragment extends Fragment implements WelcomeContracts.Registe RequestBody pin_body = RequestBody.create(Objects.requireNonNull(binding.pin.getText()).toString().trim(), MediaType.parse("text/plain")); body.put("pin", pin_body); + RequestBody timezone_body = RequestBody.create(AppUtil.getTimeZone(), MediaType.parse("text/plain;charset=utf-8")); + body.put("timezone", timezone_body); + String sub_id = OneSignal.getUser().getPushSubscription().getId(); if (sub_id != null){ diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/contacts/CreateContactFragment.java b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/contacts/CreateContactFragment.java index 670c472..548b8d8 100644 --- a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/contacts/CreateContactFragment.java +++ b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/contacts/CreateContactFragment.java @@ -567,6 +567,11 @@ public class CreateContactFragment extends Fragment implements WelcomeContracts. contact_binding.createCountryCodes.setIsFocusable(true); contact_binding.createCountryCodes.setDismissWhenNotifiedItemSelected(true); + contact_binding.createCountryCodes.setOnClickListener(v -> { + AppUtil.closeKeyboard(requireActivity()); + contact_binding.createCountryCodes.showOrDismiss(); + }); + // phone number formatting // to deal with input pasting in the edit text InputFilter phoneFilter = (charSequence, i, i1, spanned, i2, i3) -> { diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/CreatePinFragment.java b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/CreatePinFragment.java index 178e61b..b691643 100644 --- a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/CreatePinFragment.java +++ b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/CreatePinFragment.java @@ -140,6 +140,8 @@ public class CreatePinFragment extends Fragment implements WelcomeContracts.Regi } ); + + } private boolean allOkay() { diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java index a709c8c..84d0361 100644 --- a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java +++ b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/fragments/register/SplashFragment.java @@ -81,7 +81,7 @@ public class SplashFragment extends Fragment PatientProfileAPIService apiService = RetrofitHelper.getRetrofit().create(PatientProfileAPIService.class); - apiService.getUsrProfileProgress("Bearer " + patient_token) + apiService.getUsrProfileProgress("Bearer " + patient_token, AppUtil.getTimeZone()) .enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { diff --git a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/mvvm/WelcomeViewModel.java b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/mvvm/WelcomeViewModel.java index b66e77b..9f8e0dd 100644 --- a/app/src/main/java/com/app/simplitend/welcome/welcomepatient/mvvm/WelcomeViewModel.java +++ b/app/src/main/java/com/app/simplitend/welcome/welcomepatient/mvvm/WelcomeViewModel.java @@ -7,6 +7,7 @@ import androidx.annotation.NonNull; import androidx.lifecycle.ViewModel; import com.app.simplitend.R; +import com.app.simplitend.apputils.AppUtil; import com.app.simplitend.welcome.welcomepatient.mvvm.models.PatientData; import org.json.JSONArray; @@ -81,6 +82,9 @@ public class WelcomeViewModel extends ViewModel { RequestBody one_signal_player_id_body = RequestBody.create(patientData.one_signal_player_id, MediaType.parse("text/plain;charset=utf-8") ); body.put("one_signal_player_id", one_signal_player_id_body); + RequestBody timezone_body = RequestBody.create(AppUtil.getTimeZone(), MediaType.parse("text/plain;charset=utf-8")); + body.put("timezone", timezone_body); + welcomeRepository.registerPatient(body, registerPatientContract); } diff --git a/app/src/main/res/drawable/ic_cup.png b/app/src/main/res/drawable/ic_cup.png new file mode 100644 index 0000000..df2110a Binary files /dev/null and b/app/src/main/res/drawable/ic_cup.png differ diff --git a/app/src/main/res/drawable/ic_med_spoon.png b/app/src/main/res/drawable/ic_med_spoon.png new file mode 100644 index 0000000..d4de782 Binary files /dev/null and b/app/src/main/res/drawable/ic_med_spoon.png differ diff --git a/app/src/main/res/drawable/ic_solution.png b/app/src/main/res/drawable/ic_solution.png deleted file mode 100644 index 8ca3a13..0000000 Binary files a/app/src/main/res/drawable/ic_solution.png and /dev/null differ diff --git a/app/src/main/res/drawable/ic_syringe.png b/app/src/main/res/drawable/ic_syringe.png new file mode 100644 index 0000000..5b2beaa Binary files /dev/null and b/app/src/main/res/drawable/ic_syringe.png differ diff --git a/app/src/main/res/layout/activity_faq.xml b/app/src/main/res/layout/activity_faq.xml index 240de0e..c2d4001 100644 --- a/app/src/main/res/layout/activity_faq.xml +++ b/app/src/main/res/layout/activity_faq.xml @@ -25,7 +25,7 @@ android:layout_marginHorizontal="15dp" android:layout_marginBottom="5dp" android:fontFamily="@font/nunito_medium" - android:text="@string/faq" + android:text="@string/faqs" android:textSize="@dimen/_18ssp" android:textColor="@color/black" /> diff --git a/app/src/main/res/layout/activity_fua.xml b/app/src/main/res/layout/activity_fua.xml index 9bdf4b8..11cdc16 100644 --- a/app/src/main/res/layout/activity_fua.xml +++ b/app/src/main/res/layout/activity_fua.xml @@ -33,10 +33,22 @@ /> + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/connect_caregiver_fragment.xml b/app/src/main/res/layout/connect_caregiver_fragment.xml index 34a3a78..ec825c3 100644 --- a/app/src/main/res/layout/connect_caregiver_fragment.xml +++ b/app/src/main/res/layout/connect_caregiver_fragment.xml @@ -168,78 +168,4 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/home_bottom_nav.xml b/app/src/main/res/layout/home_bottom_nav.xml index 32b5b53..0cb6eb1 100644 --- a/app/src/main/res/layout/home_bottom_nav.xml +++ b/app/src/main/res/layout/home_bottom_nav.xml @@ -65,6 +65,7 @@ android:textSize="@dimen/_11ssp" android:maxLines="1" + android:singleLine="true" android:ellipsize="end" /> diff --git a/app/src/main/res/layout/reminders_fragment.xml b/app/src/main/res/layout/reminders_fragment.xml index 7ffb9d8..05108d2 100644 --- a/app/src/main/res/layout/reminders_fragment.xml +++ b/app/src/main/res/layout/reminders_fragment.xml @@ -10,7 +10,6 @@ + + - - \ No newline at end of file diff --git a/app/src/main/res/layout/routine_fragment.xml b/app/src/main/res/layout/routine_fragment.xml index f5193f2..63ed7ce 100644 --- a/app/src/main/res/layout/routine_fragment.xml +++ b/app/src/main/res/layout/routine_fragment.xml @@ -10,7 +10,6 @@ + + - - \ No newline at end of file diff --git a/app/src/main/res/layout/routine_viewholder.xml b/app/src/main/res/layout/routine_viewholder.xml index 319b8c5..cf4bbe6 100644 --- a/app/src/main/res/layout/routine_viewholder.xml +++ b/app/src/main/res/layout/routine_viewholder.xml @@ -13,7 +13,7 @@ tools:text="7 AM" android:fontFamily="@font/nunito_regular" - android:textAppearance="@style/TextAppearance.Material3.TitleMedium" + android:textAppearance="@style/TextAppearance.Material3.TitleSmall" android:textColor="#131313" android:layout_marginStart="15dp" @@ -28,8 +28,8 @@ android:layout_toEndOf="@id/start_time_static" - android:layout_marginVertical="15dp" - android:layout_marginHorizontal="15dp" + android:layout_marginVertical="5dp" + android:layout_marginHorizontal="10dp" app:cardCornerRadius="15dp" app:cardElevation="5dp" @@ -48,7 +48,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:layout_marginVertical="15dp" + android:layout_marginVertical="5dp" android:layout_marginStart="15dp" android:weightSum="10"> @@ -60,7 +60,7 @@ tools:text="Doctors appointment bla bla bla blaaa blabla lbal bla" android:fontFamily="@font/nunito_bold" - android:textAppearance="@style/TextAppearance.Material3.TitleLarge" + android:textAppearance="@style/TextAppearance.Material3.TitleMedium" android:textColor="@color/black" android:maxLines="2" @@ -91,7 +91,7 @@ tools:text="Meet your heart specialist Abraham at 4:00 pm" android:fontFamily="@font/nunito_regular" - android:textAppearance="@style/TextAppearance.Material3.TitleMedium" + android:textAppearance="@style/TextAppearance.Material3.TitleSmall" android:textColor="@color/black" android:layout_below="@id/ll" @@ -104,10 +104,11 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:layout_marginVertical="15dp" + android:layout_marginTop="10dp" + android:layout_marginBottom="5dp" android:layout_marginStart="15dp" android:layout_below="@id/description" - android:gravity="bottom" + android:gravity="center_vertical" android:weightSum="10"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8d505e9..61b5149 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -201,7 +201,7 @@ Enter allergies Enter diet restriction Add - Patient Activities + Activities You don\'t have any activities reminder. Add Activity Name of the Activity @@ -239,7 +239,7 @@ Something went wrong at Caring for a loved one may be\noverwhelming....\nLet our app assist you! - My Patient + Senior Dashboard Chat Articles @@ -470,5 +470,6 @@ Close Your subscription has been canceled. You will be able to use your application until the end of your current subscription. Your app will stop working at that point. ,.?/]]> + Frequently used apps]]> \ No newline at end of file