Class: Kward::RPC::SessionTree
- Inherits:
-
Object
- Object
- Kward::RPC::SessionTree
- Defined in:
- lib/kward/rpc/session_tree.rb
Overview
Helper for resolving and selecting persisted session tree entries.
Instance Method Summary collapse
- #active_path_ids(entries, leaf_id) ⇒ Object
- #entries ⇒ Object
-
#initialize(rpc_session) ⇒ SessionTree
constructor
A new instance of SessionTree.
- #resolve_entry_id(entry_id, entries: self.entries) ⇒ Object
- #selectable_entry?(entry) ⇒ Boolean
- #user_entry?(entry) ⇒ Boolean
Constructor Details
#initialize(rpc_session) ⇒ SessionTree
Returns a new instance of SessionTree.
9 10 11 |
# File 'lib/kward/rpc/session_tree.rb', line 9 def initialize(rpc_session) @rpc_session = rpc_session end |
Instance Method Details
#active_path_ids(entries, leaf_id) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/kward/rpc/session_tree.rb', line 27 def active_path_ids(entries, leaf_id) by_id = entries.to_h { |entry| [entry["id"].to_s, entry] } ids = [] current = by_id[leaf_id.to_s] while current ids << current["id"].to_s current = by_id[current["parentId"].to_s] end ids end |
#entries ⇒ Object
13 14 15 |
# File 'lib/kward/rpc/session_tree.rb', line 13 def entries @rpc_session.store.session_entries(@rpc_session.session.path) end |
#resolve_entry_id(entry_id, entries: self.entries) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/kward/rpc/session_tree.rb', line 17 def resolve_entry_id(entry_id, entries: self.entries) id = entry_id.to_s return id if entries.any? { |record| record["id"].to_s == id } match = id.match(/\Amessage:(\d+)\z/) return entries[match[1].to_i]&.dig("id") if match id end |
#selectable_entry?(entry) ⇒ Boolean
43 44 45 |
# File 'lib/kward/rpc/session_tree.rb', line 43 def selectable_entry?(entry) !entry["id"].to_s.empty? && ["message", "compaction", "branch_summary"].include?(entry["type"]) end |
#user_entry?(entry) ⇒ Boolean
38 39 40 41 |
# File 'lib/kward/rpc/session_tree.rb', line 38 def user_entry?(entry) = entry["message"] .is_a?(Hash) && MessageAccess.role() == "user" end |