Class: Collavre::Comment

Inherits:
ApplicationRecord show all
Includes:
Approvable, Broadcastable, ClaudeChannelPermission, Notifiable
Defined in:
app/models/collavre/comment.rb,
app/models/collavre/comment/approvable.rb,
app/models/collavre/comment/notifiable.rb,
app/models/collavre/comment/broadcastable.rb,
app/models/collavre/comment/claude_channel_permission.rb

Defined Under Namespace

Modules: Approvable, Broadcastable, ClaudeChannelPermission, Notifiable

Constant Summary collapse

STREAMING_PLACEHOLDER_CONTENT =
"..."

Constants included from ClaudeChannelPermission

ClaudeChannelPermission::ACTION_TYPE

Instance Method Summary collapse

Methods included from ClaudeChannelPermission

#broadcast_claude_channel_permission_decision, #claude_channel_permission?, #claude_channel_permission_denied?, #claude_channel_permission_request_id, #decide_claude_channel_permission!, #rebroadcast_claude_channel_permission_decision

Methods included from Approvable

#approval_status, #can_be_approved_by?, #parsed_action_tool_name

Methods included from Notifiable

#mentioned_users, #notify_ai_completion

Instance Method Details

#creative_snippetObject

public for db migration



76
77
78
# File 'app/models/collavre/comment.rb', line 76

def creative_snippet
  creative.creative_snippet
end

#dispatch_payloadObject

Build the dispatch payload for comment_created events. Used by both after_create_commit callback and DropTriggerJob to ensure a single source of truth (no payload drift).



83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'app/models/collavre/comment.rb', line 83

def dispatch_payload
  {
    comment: {
      id: id,
      content: content,
      user_id: user_id,
      from_ai: user&.searchable? || false,
      quoted_comment_id: quoted_comment_id
    }.compact,
    creative: {
      id: creative_id,
      description: creative&.description
    },
    topic: {
      id: topic_id
    },
    chat: {
      content: content
    }
  }
end

#next_version_numberObject



67
68
69
# File 'app/models/collavre/comment.rb', line 67

def next_version_number
  (comment_versions.maximum(:version_number) || 0) + 1
end

#review_message?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'app/models/collavre/comment.rb', line 71

def review_message?
  quoted_comment_id.present? && !review_type_question?
end

#to_partial_pathObject

Use non-namespaced partial path for backward compatibility



8
9
10
# File 'app/models/collavre/comment.rb', line 8

def to_partial_path
  "comments/comment"
end