mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-16 15:20:13 +01:00
use a null object like a boss
This commit is contained in:
parent
55e2f5b6a1
commit
0a5936fecf
2 changed files with 14 additions and 11 deletions
7
app/models/null_time.rb
Normal file
7
app/models/null_time.rb
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
class NullTime
|
||||||
|
include Comparable
|
||||||
|
|
||||||
|
def <=>(another)
|
||||||
|
-1 # any other Time object is always greater
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -648,20 +648,16 @@ class RecurringTodo < ActiveRecord::Base
|
||||||
# Determine start date to calculate next date for recurring todo
|
# Determine start date to calculate next date for recurring todo
|
||||||
# offset needs to be 1.day for daily patterns
|
# offset needs to be 1.day for daily patterns
|
||||||
def determine_start(previous, offset=0.day)
|
def determine_start(previous, offset=0.day)
|
||||||
|
start = self.start_from || NullTime.new
|
||||||
if previous.nil?
|
now = Time.zone.now
|
||||||
start = self.start_from.nil? ? Time.zone.now : self.start_from
|
if previous
|
||||||
# skip to present
|
|
||||||
start = Time.zone.now if Time.zone.now > start
|
|
||||||
else
|
|
||||||
start = previous + offset
|
|
||||||
|
|
||||||
# check if the start_from date is later than previous. If so, use
|
# check if the start_from date is later than previous. If so, use
|
||||||
# start_from as start to search for next date
|
# start_from as start to search for next date
|
||||||
start = self.start_from if ( self.start_from && self.start_from > previous )
|
start > previous ? start : previous + offset
|
||||||
|
else
|
||||||
|
# skip to present
|
||||||
|
start > now ? start : now
|
||||||
end
|
end
|
||||||
|
|
||||||
start
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def find_first_day_in_this_week(start)
|
def find_first_day_in_this_week(start)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue