diff --git a/app/src/main/java/io/timelimit/android/ui/lock/LockTaskFragment.kt b/app/src/main/java/io/timelimit/android/ui/lock/LockTaskFragment.kt index 8174542..6201e92 100644 --- a/app/src/main/java/io/timelimit/android/ui/lock/LockTaskFragment.kt +++ b/app/src/main/java/io/timelimit/android/ui/lock/LockTaskFragment.kt @@ -52,7 +52,7 @@ class LockTaskFragment: Fragment() { if (task.pendingRequest) TaskReviewPendingDialogFragment.newInstance().show(parentFragmentManager) else - ConfirmTaskDialogFragment.newInstance(taskId = task.taskId, taskTitle = task.taskTitle).show(parentFragmentManager) + ConfirmTaskDialogFragment.newInstance(taskId = task.taskId, taskTitle = task.taskTitle, fromManageScreen = false).show(parentFragmentManager) } } } diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ChildTaskAdapter.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ChildTaskAdapter.kt index 6e7a1d8..5b997a4 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ChildTaskAdapter.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ChildTaskAdapter.kt @@ -83,6 +83,7 @@ class ChildTaskAdapter: RecyclerView.Adapter() { binding.lastGrant = item.taskItem.lastGrantTimestamp.let { time -> if (time == 0L) null else DateUtil.formatAbsoluteDate(context, time) } + binding.pendingReview = item.taskItem.pendingRequest binding.executePendingBindings() diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ChildTaskModel.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ChildTaskModel.kt index 73703fb..05f9014 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ChildTaskModel.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ChildTaskModel.kt @@ -43,6 +43,10 @@ class ChildTaskModel (application: Application): AndroidViewModel(application) { } } + val isChildTheCurrentDeviceUser = logic.deviceUserId.switchMap { deviceUserId -> + childIdLive.map { selectedId -> deviceUserId == selectedId } + } + fun init(childId: String) { if (didInit) return diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ConfirmTaskDialogFragment.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ConfirmTaskDialogFragment.kt index 80b8287..de066ea 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ConfirmTaskDialogFragment.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ConfirmTaskDialogFragment.kt @@ -32,11 +32,13 @@ class ConfirmTaskDialogFragment: DialogFragment() { private const val DIALOG_TAG = "ConfirmTaskDialogFragment" private const val TASK_TITLE = "taskTitle" private const val TASK_ID = "taskId" + private const val FROM_MANAGE_SCREEN = "fromManageScreen" - fun newInstance(taskId: String, taskTitle: String) = ConfirmTaskDialogFragment().apply { + fun newInstance(taskId: String, taskTitle: String, fromManageScreen: Boolean) = ConfirmTaskDialogFragment().apply { arguments = Bundle().apply { putString(TASK_ID, taskId) putString(TASK_TITLE, taskTitle) + putBoolean(FROM_MANAGE_SCREEN, fromManageScreen) } } } @@ -44,11 +46,15 @@ class ConfirmTaskDialogFragment: DialogFragment() { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val taskId = requireArguments().getString(TASK_ID)!! val taskTitle = requireArguments().getString(TASK_TITLE)!! + val fromManageScreen = requireArguments().getBoolean(FROM_MANAGE_SCREEN) val logic = getActivityViewModel(requireActivity()).logic + val messagePrefix = if (fromManageScreen) getString(R.string.lock_task_confirm_dialog_from_manage_screen) + " " else "" + val message = messagePrefix + getString(R.string.lock_task_confirm_dialog) + return AlertDialog.Builder(requireContext(), theme) .setTitle(taskTitle) - .setMessage(R.string.lock_task_confirm_dialog) + .setMessage(message) .setNegativeButton(R.string.generic_no, null) .setPositiveButton(R.string.generic_yes) { _, _ -> runAsync { diff --git a/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ManageChildTasksFragment.kt b/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ManageChildTasksFragment.kt index cbc37ab..e7ea8d0 100644 --- a/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ManageChildTasksFragment.kt +++ b/app/src/main/java/io/timelimit/android/ui/manage/child/tasks/ManageChildTasksFragment.kt @@ -66,6 +66,7 @@ class ManageChildTasksFragment: Fragment(), EditTaskDialogFragment.Listener { recycler.adapter = adapter model.listContent.observe(viewLifecycleOwner) { adapter.data = it } + model.isChildTheCurrentDeviceUser.observe(viewLifecycleOwner) {/* keep the value fresh */} adapter.listener = object: ChildTaskAdapter.Listener { override fun onAddClicked() { @@ -75,9 +76,15 @@ class ManageChildTasksFragment: Fragment(), EditTaskDialogFragment.Listener { } override fun onTaskClicked(task: ChildTask) { - if (auth.requestAuthenticationOrReturnTrue()) { + if (auth.isParentAuthenticated()) { EditTaskDialogFragment.newInstance(childId = childId, taskId = task.taskId, listener = this@ManageChildTasksFragment).show(parentFragmentManager) - } + } else if (model.isChildTheCurrentDeviceUser.value == true && !task.pendingRequest) { + ConfirmTaskDialogFragment.newInstance( + taskId = task.taskId, + taskTitle = task.taskTitle, + fromManageScreen = true + ).show(parentFragmentManager) + } else auth.requestAuthentication() } } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index ae9a155..ae3346a 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -628,6 +628,7 @@ Hast Du diese Aufgabe erledigt? Die Zeit gibt es sowieso erst, wenn ein Elternteil das bestätigt hat. + Zum Verändern der Aufgabe muss sich erst ein Elternteil anmelden. Die Erledigung der Aufgabe wurde markiert. Jetzt muss nur noch ein Elternteil das auf der Startseite von TimeLimit besätigen. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f3d1a07..6550802 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -684,6 +684,7 @@ Have you finished this task? The time will only be granted if a parent confirms it. + A parent must sign in first to modify the task. It is noted that this task is finished. The only missing part is a parent which confirms this at the start screen of TimeLimit.