Class: Slk::Models::SavedItem

Inherits:
Data
  • Object
show all
Defined in:
lib/slk/models/saved_item.rb

Overview

Represents a saved/later item from Slack’s saved.list API rubocop:disable Metrics/ParameterLists

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(item_id:, item_type: 'message', ts: nil, state: SAVED_STATE_SAVED, date_created: nil, date_due: nil, date_completed: nil, is_archived: false) ⇒ SavedItem

rubocop:disable Naming/MethodParameterName



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/slk/models/saved_item.rb', line 46

def initialize(
  item_id:,
  item_type: 'message',
  ts: nil,
  state: SAVED_STATE_SAVED,
  date_created: nil,
  date_due: nil,
  date_completed: nil,
  is_archived: false
)
  super(
    item_id: item_id.to_s.freeze,
    item_type: item_type.to_s.freeze,
    ts: ts&.to_s&.freeze,
    state: state.to_s.freeze,
    date_created: date_created,
    date_due: date_due,
    date_completed: date_completed,
    is_archived: is_archived
  )
end

Instance Attribute Details

#date_completedObject (readonly)

Returns the value of attribute date_completed

Returns:

  • (Object)

    the current value of date_completed



12
13
14
# File 'lib/slk/models/saved_item.rb', line 12

def date_completed
  @date_completed
end

#date_createdObject (readonly)

Returns the value of attribute date_created

Returns:

  • (Object)

    the current value of date_created



12
13
14
# File 'lib/slk/models/saved_item.rb', line 12

def date_created
  @date_created
end

#date_dueObject (readonly)

Returns the value of attribute date_due

Returns:

  • (Object)

    the current value of date_due



12
13
14
# File 'lib/slk/models/saved_item.rb', line 12

def date_due
  @date_due
end

#is_archivedObject (readonly)

Returns the value of attribute is_archived

Returns:

  • (Object)

    the current value of is_archived



12
13
14
# File 'lib/slk/models/saved_item.rb', line 12

def is_archived
  @is_archived
end

#item_idObject (readonly) Also known as: channel_id

Returns the value of attribute item_id

Returns:

  • (Object)

    the current value of item_id



12
13
14
# File 'lib/slk/models/saved_item.rb', line 12

def item_id
  @item_id
end

#item_typeObject (readonly)

Returns the value of attribute item_type

Returns:

  • (Object)

    the current value of item_type



12
13
14
# File 'lib/slk/models/saved_item.rb', line 12

def item_type
  @item_type
end

#stateObject (readonly)

Returns the value of attribute state

Returns:

  • (Object)

    the current value of state



12
13
14
# File 'lib/slk/models/saved_item.rb', line 12

def state
  @state
end

#tsObject (readonly)

Returns the value of attribute ts

Returns:

  • (Object)

    the current value of ts



12
13
14
# File 'lib/slk/models/saved_item.rb', line 12

def ts
  @ts
end

Class Method Details

.from_api(data) ⇒ Object

rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/slk/models/saved_item.rb', line 23

def self.from_api(data)
  new(
    item_id: data['item_id'] || data['channel_id'] || data['conversation_id'],
    item_type: data['item_type'] || data['type'] || 'message',
    ts: data['ts'] || data['message_ts'],
    state: data['state'] || SAVED_STATE_SAVED,
    date_created: parse_timestamp(data['date_created']),
    date_due: parse_timestamp(data['date_due']),
    date_completed: parse_timestamp(data['date_completed']),
    is_archived: data['is_archived'] || false
  )
end

Instance Method Details

#archived?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/slk/models/saved_item.rb', line 85

def archived?
  is_archived
end

#completed?Boolean

State predicates

Returns:

  • (Boolean)


73
74
75
# File 'lib/slk/models/saved_item.rb', line 73

def completed?
  state == SAVED_STATE_COMPLETED
end

#completed_timeObject



113
114
115
116
117
# File 'lib/slk/models/saved_item.rb', line 113

def completed_time
  return nil unless date_completed

  Time.at(date_completed)
end

#created_timeObject



107
108
109
110
111
# File 'lib/slk/models/saved_item.rb', line 107

def created_time
  return nil unless date_created

  Time.at(date_created)
end

#due_date?Boolean

Due date helpers

Returns:

  • (Boolean)


90
91
92
# File 'lib/slk/models/saved_item.rb', line 90

def due_date?
  !date_due.nil?
end

#due_timeObject



101
102
103
104
105
# File 'lib/slk/models/saved_item.rb', line 101

def due_time
  return nil unless due_date?

  Time.at(date_due)
end

#in_progress?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/slk/models/saved_item.rb', line 77

def in_progress?
  state == SAVED_STATE_IN_PROGRESS
end

#overdue?Boolean

Returns:

  • (Boolean)


94
95
96
97
98
99
# File 'lib/slk/models/saved_item.rb', line 94

def overdue?
  return false unless due_date?
  return false if completed?

  date_due < Time.now.to_i
end

#saved?Boolean

Returns:

  • (Boolean)


81
82
83
# File 'lib/slk/models/saved_item.rb', line 81

def saved?
  state == SAVED_STATE_SAVED
end

#time_until_dueObject

Time until/since due date



120
121
122
123
124
# File 'lib/slk/models/saved_item.rb', line 120

def time_until_due
  return nil unless due_date?

  date_due - Time.now.to_i
end