Class: Todoist::Sync::Items

Inherits:
Todoist::Service show all
Includes:
Util
Defined in:
lib/todoist/sync/items.rb

Instance Method Summary collapse

Methods inherited from Todoist::Service

#initialize

Constructor Details

This class inherits a constructor from Todoist::Service

Instance Method Details

#add(args) ⇒ Object

Add a item with a given hash of attributes and returns the item id



12
13
14
# File 'lib/todoist/sync/items.rb', line 12

def add(args)
  return @client.api_helper.add(args, "item_add")
end

#close(item) ⇒ Object

A simplified version of item_complete / item_update_date_complete. The command does exactly what official clients do when you close a item given an item.



74
75
76
77
# File 'lib/todoist/sync/items.rb', line 74

def close(item)
  args = {id: item.id}
  return @client.api_helper.command(args, "item_close")
end

#collectionObject

Return a Hash of items where key is the id of a item and value is a item



7
8
9
# File 'lib/todoist/sync/items.rb', line 7

def collection
  return @client.api_helper.collection("items")
end

#complete(item, force_history = 1) ⇒ Object

Complete an item and optionally move them to history. When force_history = 1, items should be moved to history (where 1 is true and 0 is false, and the default is 1) This is useful when checking off sub items.



37
38
39
40
# File 'lib/todoist/sync/items.rb', line 37

def complete(item, force_history=1)
  args = {id: item.id, force_history: force_history}
  return @client.api_helper.command(args, "item_complete")
end

#complete_recurring(item, new_date_utc = nil, date_string = nil, is_forward = 1) ⇒ Object

Complete a recurring item given the id of the recurring item. This method also accepts as optional a new DateTime in UTC, a date string to reset the object to, and whether or not the item is to be completed or not using the is_forward flag.



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/todoist/sync/items.rb', line 54

def complete_recurring(item, new_date_utc = nil, date_string = nil,
  is_forward = 1)

  args = {id: item.id, is_forward: is_forward}
  if new_date_utc
     # Reformat DateTime to the following string:  YYYY-MM-DDTHH:MM
    args["due"] = {date: ParseHelper.format_time(new_date_utc)}
  end

  if date_string
    args["due"] = {string: date_string}
  end

  return @client.api_helper.command(args, "item_update_date_complete")
end

#delete(item_id) ⇒ Object

Delete an item given an item id



22
23
24
25
# File 'lib/todoist/sync/items.rb', line 22

def delete(item_id)
  args = {id: item_id}
  return @client.api_helper.command(args, "item_delete")
end

#move(item, project) ⇒ Object

Move an item from one project to another project given an item and a project. Note that move requires a fully inflated item object because it uses the project id in the item object.



30
31
32
33
# File 'lib/todoist/sync/items.rb', line 30

def move(item, project)
  args = {id: item.id, project_id: project.id}
  return @client.api_helper.command(args, "item_move")
end

#uncomplete(item) ⇒ Object

Uncomplete item and move them to the active projects



44
45
46
47
# File 'lib/todoist/sync/items.rb', line 44

def uncomplete(item)
  args = {id: item.id}
  return @client.api_helper.command(args, "item_uncomplete")
end

#update(args) ⇒ Object

Update item given a hash of attributes



17
18
19
# File 'lib/todoist/sync/items.rb', line 17

def update(args)
  return @client.api_helper.command(args, "item_update")
end

#update_day_orders(items) ⇒ Object

Update the day orders of multiple items at once given an array of items



81
82
83
84
85
86
87
88
# File 'lib/todoist/sync/items.rb', line 81

def update_day_orders(items)
  ids_to_orders = {}
  items.each do |item|
    ids_to_orders[item.id] = item.day_order
  end
  args = {ids_to_orders: ids_to_orders.to_json}
  return @client.api_helper.command(args, "item_update_day_orders")
end

#update_multiple_orders_and_indents(items) ⇒ Object

Update orders and indents for an array of items



91
92
93
94
95
96
97
98
# File 'lib/todoist/sync/items.rb', line 91

def update_multiple_orders_and_indents(items)
  tuples = {}
  items.each do |item|
    tuples[item.id] = [item.item_order, item.indent]
  end
  args = {ids_to_orders_indents: tuples.to_json}
  return @client.api_helper.command(args, "item_update_orders_indents")
end