class NotionRb::Utils::BlockCache
Public Class Methods
new()
click to toggle source
# File lib/notion_rb/utils/block_cache.rb, line 8 def initialize @blocks = [] end
Public Instance Methods
add_collection_view_blocks(block)
click to toggle source
# File lib/notion_rb/utils/block_cache.rb, line 34 def add_collection_view_blocks(block) return unless block[:block_type] == 'collection_view_page' metadata = block[:metadata] query_collection = NotionRb::Api::QueryCollection.new(collection_id: metadata[:collection_id], view_id: metadata[:view_ids][0]) block[:children] = [metadata[:collection_id]] add_blocks(query_collection.blocks) end
children(notion_id)
click to toggle source
# File lib/notion_rb/utils/block_cache.rb, line 24 def children(notion_id) return nil unless find(notion_id) find(notion_id)[:children] end
clear()
click to toggle source
# File lib/notion_rb/utils/block_cache.rb, line 30 def clear @blocks = [] end
contains?(notion_id)
click to toggle source
# File lib/notion_rb/utils/block_cache.rb, line 12 def contains?(notion_id) @blocks.any? { |block| block[:notion_id] == notion_id } end
find(notion_id)
click to toggle source
# File lib/notion_rb/utils/block_cache.rb, line 16 def find(notion_id) add_block(notion_id) unless contains?(notion_id) @blocks.find { |block| block[:notion_id] == notion_id } rescue Mechanize::ResponseCodeError nil end
Private Instance Methods
add_block(uuid)
click to toggle source
# File lib/notion_rb/utils/block_cache.rb, line 45 def add_block(uuid) add_blocks(NotionRb::Api::Get.new(notion_id: uuid).blocks) end
add_blocks(blocks)
click to toggle source
# File lib/notion_rb/utils/block_cache.rb, line 49 def add_blocks(blocks) new_block_ids = blocks.map { |block| block[:notion_id] } @blocks.each do |block| blocks << block unless new_block_ids.include?(block[:notion_id]) end @blocks = blocks end