Sha256: 0dd08c1dffbd827de11fb19b962c7a5a8f49368f4afec9dfbdd1c1c3b00e8b03

Contents?: true

Size: 952 Bytes

Versions: 84

Compression:

Stored size: 952 Bytes

Contents

module WithDiscussionCreation::Subscription
  extend ActiveSupport::Concern

  included do
    has_many :subscriptions
    has_many :watched_discussions, -> { order(created_at: :desc) }, through: :subscriptions, source: :discussion
    organic_on :watched_discussions
  end

  def subscriptions_in_organization
    subscriptions.joins(:discussion).where(discussion: discussions_in_organization)
  end

  def subscribed_to?(discussion)
    discussion.subscription_for(self).present?
  end

  def subscribe_to!(discussion)
    watched_discussions << discussion unless subscribed_to? discussion
  end

  def unsubscribe_to!(discussion)
    watched_discussions.delete(discussion)
  end

  def toggle_subscription!(discussion)
    if subscribed_to?(discussion)
      unsubscribe_to!(discussion)
    else
      subscribe_to!(discussion)
    end
  end

  def unread_discussions
    subscriptions_in_organization.where(read: false).map(&:discussion)
  end
end

Version data entries

84 entries across 84 versions & 2 rubygems

Version Path
mumuki-domain-9.10.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.9.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.8.1 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.8.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.7.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.6.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.5.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.4.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.3.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.2.1 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.2.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.1.2 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.1.1 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.1.0 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.0.6 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.0.5 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.0.4 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.0.3 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.0.2 app/models/concerns/with_discussion_creation/subscription.rb
mumuki-domain-9.0.0 app/models/concerns/with_discussion_creation/subscription.rb