Derive active_task from series instead of passing it separately
Assisted-by: Claude Opus 4.6 via Claude Code
change tqxzsrvtyvuqrowzskyyptupzlnwowqu
commit 62b2457b2ffb029fad84643f40745ce6d59fbcc3
author Alpha Chen <alpha@kejadlen.dev>
date
parent upxwlqmt
diff --git a/lib/ketchup/views/dashboard.rb b/lib/ketchup/views/dashboard.rb
index aca716e..f7bdbc3 100644
--- a/lib/ketchup/views/dashboard.rb
+++ b/lib/ketchup/views/dashboard.rb
@@ -7,12 +7,11 @@ require_relative "layout"
 module Views
   class Dashboard < Phlex::HTML
     def initialize(current_user:, overdue:, upcoming:,
-                   selected_series: nil, selected_task: nil, completed_tasks: [])
+                   selected_series: nil, completed_tasks: [])
       @current_user = current_user
       @overdue = overdue
       @upcoming = upcoming
       @selected_series = selected_series
-      @selected_task = selected_task
       @completed_tasks = completed_tasks
     end
 
@@ -63,6 +62,7 @@ module Views
     private
 
     def series_detail_sidebar
+      active_task = @selected_series.active_task
       div(class: "column column-aside", "x-data": "{ editing: false }") do
         div(class: "column-header") do
           h2(class: "aside-heading") do
@@ -118,16 +118,16 @@ module Views
               end
             end
 
-            if @selected_task
+            if active_task
               dt { "Due date" }
               dd(
                 "x-show": "!editing",
-                "x-text": "new Date('#{@selected_task[:due_date]}T00:00').toLocaleDateString()"
-              ) { @selected_task[:due_date].to_s }
+                "x-text": "new Date('#{active_task[:due_date]}T00:00').toLocaleDateString()"
+              ) { active_task[:due_date].to_s }
               dd(
                 "x-show": "editing",
                 "x-cloak": true,
-                "x-data": "dueDateEditor(#{@selected_series.id}, '#{@selected_task[:due_date]}')"
+                "x-data": "dueDateEditor(#{@selected_series.id}, '#{active_task[:due_date]}')"
               ) do
                 input(
                   type: "date",
@@ -137,9 +137,9 @@ module Views
                 )
               end
 
-              if @selected_task.urgency > 0
+              if active_task.urgency > 0
                 dt { "Urgency" }
-                dd { "#{format("%.1f", @selected_task.urgency)}x" }
+                dd { "#{format("%.1f", active_task.urgency)}x" }
               end
             end
           end
diff --git a/lib/ketchup/web.rb b/lib/ketchup/web.rb
index 6515c37..17ecf72 100644
--- a/lib/ketchup/web.rb
+++ b/lib/ketchup/web.rb
@@ -79,7 +79,6 @@ class Web < Roda
         Views::Dashboard.new(
           current_user:, overdue:, upcoming:,
           selected_series: series,
-          selected_task: series.active_task,
           completed_tasks: completed_tasks_for(series)
         ).call
       end