Sha256: 2e12b1276daee1382c1d854f9459d93ef650e9d108eef5d610b02bdd88104b73

Contents?: true

Size: 813 Bytes

Versions: 2

Compression:

Stored size: 813 Bytes

Contents

class SlackAdapter
  def initialize(slack_real_time_client)
    @slack_real_time_client = slack_real_time_client
  end

  def client_id_from_context(context)
    context&.user
  end

  def send_message(message, context:)
    @slack_real_time_client.message(text: message, channel: context.channel)
  end

  def send_direct_message(message, user, *)
    user = user.id if user.respond_to?(:id)

    im_channel = lookup_im_channel(user)

    @slack_real_time_client.message(text: message, channel: im_channel)
  end

  private

  def lookup_im_channel(user)
    im = @slack_real_time_client.ims.values.find { |i| i.user == user }

    return im if im.present?

    # Start a new conversation with this user.
    response = @slack_real_time_client.web_client.im_open(user: user.id)
    response.channel.id
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
socrates-0.1.1 lib/socrates/adapters/slack_adapter.rb
socrates-0.1.0 lib/socrates/adapters/slack_adapter.rb