Class: Llv::Tui::Program

Inherits:
Object
  • Object
show all
Defined in:
lib/llv/tui.rb

Overview

Wraps Bubbletea::Runner + store subscription.

Instance Method Summary collapse

Constructor Details

#initialize(store:) ⇒ Program

Returns a new instance of Program.



502
503
504
505
506
# File 'lib/llv/tui.rb', line 502

def initialize(store:)
  @store = store
  @model = App.new(store: store)
  @runner = Bubbletea::Runner.new(@model, alt_screen: true)
end

Instance Method Details

#runObject



508
509
510
511
512
513
514
515
516
517
518
# File 'lib/llv/tui.rb', line 508

def run
  subscription = @store.subscribe do |type, group|
    msg = GroupChangeMessage.new(event_type: type, summary: group.summary)
    @runner.send(msg)
  end
  begin
    @runner.run
  ensure
    @store.unsubscribe(subscription)
  end
end