Skip to content

Android: split large UI files into per-component files#262

Merged
dkhalife merged 2 commits intomainfrom
refactor_android_files
Mar 23, 2026
Merged

Android: split large UI files into per-component files#262
dkhalife merged 2 commits intomainfrom
refactor_android_files

Conversation

@dkhalife
Copy link
Owner

Summary

Break down large Android UI files so each component lives in its own file.

New files - ui/components/

  • GroupHeader.kt - Collapsible group header row in task list
  • TaskItem.kt - Task card with complete/skip/delete actions
  • TaskChips.kt - DueDateChip, RecurrenceChip, NotificationChip, LabelChip
  • DateTimePickerRow.kt - Two-step date + time picker dialogs
  • RecurrenceSection.kt - Full recurrence selector (frequency type + sub-modes)
  • SchedulingSection.kt - Rolling vs from-due-date radio buttons + end date toggle
  • NotificationsSection.kt - Notifications enable toggle + per-trigger checkboxes
  • LabelItem.kt - Label list row with edit/delete buttons
  • LabelDialog.kt - Create/edit label dialog with name field and color swatches

New files - ui/utils/

  • TaskFormatters.kt - parseDueDate, formatDueDate, formatDistance, recurrence text helpers, rememberTickingNow
  • DateTimeUtils.kt - parseIsoDateTime, toIsoString, toDisplayString

New files - ui/navigation/

  • Routes.kt - Screen sealed class + Routes object (extracted from AppNavigation.kt)

Reduced files

File Before After
TaskListScreen.kt 445 lines 99 lines
TaskFormScreen.kt 666 lines 318 lines
LabelsScreen.kt 223 lines 107 lines
AppNavigation.kt 200 lines 191 lines

No functional changes - purely structural.

Copilot AI review requested due to automatic review settings March 23, 2026 04:35
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors the Android UI layer by extracting previously inlined Compose UI blocks and formatting/date helpers into dedicated component and utility files, reducing screen file sizes while keeping behavior the same.

Changes:

  • Extracts task list UI pieces (group header, task item, chips) into ui/components/.
  • Extracts task form sections (date/time picker, recurrence, scheduling, notifications) into ui/components/ and date/time helpers into ui/utils/.
  • Extracts navigation route definitions into ui/navigation/Routes.kt and updates AppNavigation imports accordingly.

Reviewed changes

Copilot reviewed 16 out of 16 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
android/app/src/main/java/com/dkhalife/tasks/ui/utils/TaskFormatters.kt New shared task/due-date/recurrence formatting helpers extracted from screens.
android/app/src/main/java/com/dkhalife/tasks/ui/utils/DateTimeUtils.kt New shared ISO parse/format and display formatting helpers for ZonedDateTime.
android/app/src/main/java/com/dkhalife/tasks/ui/screen/TaskListScreen.kt Slims screen by delegating list row UI to extracted components.
android/app/src/main/java/com/dkhalife/tasks/ui/screen/TaskFormScreen.kt Slims screen by delegating recurrence/scheduling/notifications UI to extracted sections and shared date utils.
android/app/src/main/java/com/dkhalife/tasks/ui/screen/LabelsScreen.kt Slims screen by delegating label row + dialog UI to extracted components.
android/app/src/main/java/com/dkhalife/tasks/ui/navigation/Routes.kt New centralized navigation routes + bottom-nav screen metadata.
android/app/src/main/java/com/dkhalife/tasks/ui/navigation/AppNavigation.kt Updates navigation to use extracted Screen/Routes and trims imports.
android/app/src/main/java/com/dkhalife/tasks/ui/components/TaskItem.kt New extracted task card component with actions and chips.
android/app/src/main/java/com/dkhalife/tasks/ui/components/TaskChips.kt New extracted chip components (due date, recurrence, notifications, label).
android/app/src/main/java/com/dkhalife/tasks/ui/components/SchedulingSection.kt New extracted scheduling preferences + end date UI section.
android/app/src/main/java/com/dkhalife/tasks/ui/components/RecurrenceSection.kt New extracted recurrence selector UI section.
android/app/src/main/java/com/dkhalife/tasks/ui/components/NotificationsSection.kt New extracted notifications toggles UI section.
android/app/src/main/java/com/dkhalife/tasks/ui/components/LabelItem.kt New extracted label list row component.
android/app/src/main/java/com/dkhalife/tasks/ui/components/LabelDialog.kt New extracted create/edit label dialog.
android/app/src/main/java/com/dkhalife/tasks/ui/components/GroupHeader.kt New extracted collapsible group header row component.
android/app/src/main/java/com/dkhalife/tasks/ui/components/DateTimePickerRow.kt New extracted two-step date+time picker row component.

@dkhalife dkhalife merged commit c60714d into main Mar 23, 2026
6 checks passed
@dkhalife dkhalife deleted the refactor_android_files branch March 23, 2026 04:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants