Module: PlanMyStuff::IssueExtractions::Viewers

Included in:
PlanMyStuff::Issue
Defined in:
lib/plan_my_stuff/issue_extractions/viewers.rb

Instance Method Summary collapse

Instance Method Details

#add_viewers!(user_ids:, user: nil) ⇒ Array<Integer>

Adds user IDs to this issue’s visibility allowlist (non-support users whose ID is in the allowlist can see internal comments).

Fires plan_my_stuff.issue.viewers_added.

Parameters:

  • user_ids (Array<Integer>, Integer)
  • user (Object, nil) (defaults to: nil)

    actor for the notification event

Returns:

  • (Array<Integer>)

    the new allowlist



16
17
18
19
20
21
# File 'lib/plan_my_stuff/issue_extractions/viewers.rb', line 16

def add_viewers!(user_ids:, user: nil)
  ids = Array.wrap(user_ids)
  modify_allowlist! { |allowlist| allowlist | ids }
  PlanMyStuff::Notifications.instrument('issue.viewers_added', self, user: user, user_ids: ids)
  .visibility_allowlist
end

#remove_viewers!(user_ids:, user: nil) ⇒ Array<Integer>

Removes user IDs from this issue’s visibility allowlist.

Fires plan_my_stuff.issue.viewers_removed.

Parameters:

  • user_ids (Array<Integer>, Integer)
  • user (Object, nil) (defaults to: nil)

    actor for the notification event

Returns:

  • (Array<Integer>)

    the new allowlist



32
33
34
35
36
37
# File 'lib/plan_my_stuff/issue_extractions/viewers.rb', line 32

def remove_viewers!(user_ids:, user: nil)
  ids = Array.wrap(user_ids)
  modify_allowlist! { |allowlist| allowlist - ids }
  PlanMyStuff::Notifications.instrument('issue.viewers_removed', self, user: user, user_ids: ids)
  .visibility_allowlist
end

#visible_to?(user) ⇒ Boolean

Delegates visibility check to metadata. Non-PMS issues are always visible.

Parameters:

  • user (Object, Integer)

    user object or user_id

Returns:

  • (Boolean)


46
47
48
49
50
51
52
# File 'lib/plan_my_stuff/issue_extractions/viewers.rb', line 46

def visible_to?(user)
  if pms_issue?
    .visible_to?(user)
  else
    PlanMyStuff::UserResolver.support?(PlanMyStuff::UserResolver.resolve(user))
  end
end