class NotionAPI::TodoBlock

To-Do block: best for checklists and tracking to-dos.

Attributes

notion_type[R]
type[R]

Public Instance Methods

checked=(checked_value) click to toggle source
# File lib/notion_api/notion_types/todo_block.rb, line 16
def checked=(checked_value)
  # ! change the checked property of the Todo Block.
  # ! checked_value -> boolean value used to determine whether the block should be checked [yes] or not [no] : ``str``
  # set static variables for request
  cookies = Core.options["cookies"]
  headers = Core.options["headers"]
  request_url = URLS[:UPDATE_BLOCK]

  # set unique values for request
  request_id = extract_id(SecureRandom.hex(16))
  transaction_id = extract_id(SecureRandom.hex(16))
  space_id = extract_id(SecureRandom.hex(16))
  request_ids = {
    request_id: request_id,
    transaction_id: transaction_id,
    space_id: space_id,
  }

  if %w[yes no].include?(checked_value.downcase)
    checked_hash = Utils::BlockComponents.checked_todo(@id, checked_value.downcase)
    last_edited_time_parent_hash = Utils::BlockComponents.last_edited_time(@parent_id)
    last_edited_time_child_hash = Utils::BlockComponents.last_edited_time(@id)

    operations = [
      checked_hash,
      last_edited_time_parent_hash,
      last_edited_time_child_hash,
    ]
    request_body = build_payload(operations, request_ids)
    response = HTTParty.post(
      request_url,
      body: request_body.to_json,
      cookies: cookies,
      headers: headers,
    )
    unless response.code == 200; raise "There was an issue completing your request. Here is the response from Notion: #{response.body}, and here is the payload that was sent: #{operations}.
         Please try again, and if issues persist open an issue in GitHub.";         end

    true
  else
    false
  end
end
type() click to toggle source
# File lib/notion_api/notion_types/todo_block.rb, line 8
def type
  NotionAPI::TodoBlock.notion_type
end