Skip to content

Commit 7473abe

Browse files
authored
Merge pull request #264 from naz013/feature/REM-906_Add_task_list_deep_link
REM-906 - Add Shopping lists new builder deep link
2 parents c607989 + a9e3788 commit 7473abe

File tree

5 files changed

+29
-2
lines changed

5 files changed

+29
-2
lines changed

app/src/main/java/com/elementary/tasks/core/deeplink/DeepLinkData.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ data class ReminderDatetimeTypeDeepLinkData(
1212
val dateTime: LocalDateTime
1313
) : DeepLinkData(IntentKey.REMINDER_DATETIME_TYPE)
1414

15+
@Parcelize
16+
data object ReminderTodoTypeDeepLinkData : DeepLinkData(IntentKey.REMINDER_TODO_TYPE)
17+
1518
@Parcelize
1619
data class BirthdayDateDeepLinkData(
1720
val date: LocalDate
@@ -25,7 +28,9 @@ data class GoogleTaskDateTimeDeepLinkData(
2528

2629
// Name structure, first word: prefix, second and others: parameters
2730
object IntentKey {
31+
2832
const val REMINDER_DATETIME_TYPE = "reminder_datetime_type"
33+
const val REMINDER_TODO_TYPE = "reminder_todo_type"
2934
const val BIRTHDAY_DATE = "birthday_date"
3035
const val GOOGLE_TASK_DATE_TIME = "google_task_date_time"
3136

app/src/main/java/com/elementary/tasks/core/deeplink/DeepLinkDataParser.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class DeepLinkDataParser {
88

99
private val deepLinkDataMap = mapOf(
1010
Pair(IntentKey.REMINDER_DATETIME_TYPE, ReminderDatetimeTypeDeepLinkData::class.java),
11+
Pair(IntentKey.REMINDER_TODO_TYPE, ReminderTodoTypeDeepLinkData::class.java),
1112
Pair(IntentKey.BIRTHDAY_DATE, BirthdayDateDeepLinkData::class.java),
1213
Pair(IntentKey.GOOGLE_TASK_DATE_TIME, GoogleTaskDateTimeDeepLinkData::class.java)
1314
)

app/src/main/java/com/elementary/tasks/reminder/ReminderBuilderLauncher.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class ReminderBuilderLauncher(private val prefs: Prefs) {
3737
fun openDeepLink(
3838
context: Context,
3939
deepLinkData: DeepLinkData,
40-
builder: Intent.() -> Unit
40+
builder: Intent.() -> Unit = { }
4141
) {
4242
LoginApi.openLogged(context, getActivityClass(), deepLinkData, builder)
4343
}

app/src/main/java/com/elementary/tasks/reminder/build/BuildReminderViewModel.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.elementary.tasks.core.data.ui.preset.UiPresetList
1515
import com.elementary.tasks.core.data.ui.reminder.UiReminderType
1616
import com.elementary.tasks.core.deeplink.DeepLinkDataParser
1717
import com.elementary.tasks.core.deeplink.ReminderDatetimeTypeDeepLinkData
18+
import com.elementary.tasks.core.deeplink.ReminderTodoTypeDeepLinkData
1819
import com.elementary.tasks.core.utils.GoogleCalendarUtils
1920
import com.elementary.tasks.core.utils.io.UriReader
2021
import com.elementary.tasks.core.utils.withUIContext
@@ -369,6 +370,12 @@ class BuildReminderViewModel(
369370
}
370371
}
371372

373+
is ReminderTodoTypeDeepLinkData -> {
374+
Logger.i(TAG, "Handle reminder todo Deep Link")
375+
addSubTasksItemToBuilder()
376+
updateSelector()
377+
}
378+
372379
else -> {}
373380
}
374381
}
@@ -445,6 +452,19 @@ class BuildReminderViewModel(
445452
}
446453
}
447454

455+
private fun addSubTasksItemToBuilder() {
456+
val itemIndex = builderItemsLogic.getUsed().indexOfFirst { it.biType == BiType.SUB_TASKS }
457+
Logger.i(TAG, "Add Sub tasks builder item")
458+
if (itemIndex == -1) {
459+
builderItemsLogic.getAvailable().firstOrNull { it.biType == BiType.SUB_TASKS }
460+
?.let { it as SubTasksBuilderItem }
461+
?.also { builderItemsLogic.addNew(it) }
462+
} else {
463+
val item = builderItemsLogic.getUsed()[itemIndex] as? SubTasksBuilderItem ?: return
464+
builderItemsLogic.update(itemIndex, item)
465+
}
466+
}
467+
448468
private fun addSummaryItemToBuilder(text: String) {
449469
val itemIndex = builderItemsLogic.getUsed().indexOfFirst { it.biType == BiType.SUMMARY }
450470
Logger.i(TAG, "Add Summary builder item")

app/src/main/java/com/elementary/tasks/reminder/lists/todo/TodoRemindersFragment.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import android.view.ViewGroup
77
import androidx.recyclerview.widget.LinearLayoutManager
88
import com.elementary.tasks.R
99
import com.elementary.tasks.core.data.Commands
10+
import com.elementary.tasks.core.deeplink.ReminderTodoTypeDeepLinkData
1011
import com.elementary.tasks.core.utils.ui.SearchMenuHandler
1112
import com.elementary.tasks.core.views.recyclerview.SpaceBetweenItemDecoration
1213
import com.elementary.tasks.databinding.FragmentRemindersBinding
@@ -83,7 +84,7 @@ class TodoRemindersFragment : BaseSubEventsFragment<FragmentRemindersBinding>()
8384
}
8485

8586
binding.fab.setOnClickListener {
86-
reminderBuilderLauncher.openLogged(requireContext()) { }
87+
reminderBuilderLauncher.openDeepLink(requireContext(), ReminderTodoTypeDeepLinkData)
8788
}
8889

8990
analyticsEventSender.send(ScreenUsedEvent(Screen.REMINDERS_LIST))

0 commit comments

Comments
 (0)