lib/chronicle/zulip/proxy.rb in chronicle-zulip-0.1.1 vs lib/chronicle/zulip/proxy.rb in chronicle-zulip-0.1.2

- old
+ new

@@ -7,31 +7,37 @@ @username = username @access_token = access_token @realm = realm end - def all_private_messages(anchor: 'oldest') + def all_private_messages(anchor: 'newest', since: nil, limit: nil) narrow = '[{"negated":false,"operator":"is","operand":"private"}]' has_more = true + count = 0 while has_more response = load_messages(anchor: anchor, narrow: narrow) - messages = response[:messages] || [] + messages = response[:messages].reverse || [] + messages = messages.first(limit - count) if limit + messages = messages.filter { |message| Time.at(message[:timestamp]) > since } if since + break unless messages.any? + messages.each do |message| + count += 1 yield message end - has_more = !response[:found_newest] - anchor = messages.map { |message| message[:id] }.max + has_more = !response[:found_oldest] + anchor = messages.map { |message| message[:id] }.min - 1 end end def load_messages(anchor:, narrow:) params = { narrow: narrow, - num_after: '50', - num_before: '0', + num_after: '0', + num_before: '100', anchor: anchor, apply_markdown: 'false' } make_request(endpoint: 'messages', params: params)