7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
# File 'lib/chat_sdk/linear/event_parser.rb', line 7
def parse(payload, bot_username: nil)
return [] unless payload.is_a?(Hash)
return [] unless payload["type"] == "Comment" && payload["action"] == "create"
data = payload["data"] || {}
= data["id"]
body = data["body"] || ""
issue_id = data["issueId"] || data.dig("issue", "id")
user = data["user"] || {}
user_id = user["id"]
user_name = user["name"]
return [] if bot_username && user_name == bot_username
thread_id = "linear:#{issue_id}:c:#{}"
author = ChatSDK::Author.new(
id: user_id || "unknown",
name: user_name || "unknown",
platform: :linear,
bot: false
)
msg = ChatSDK::Message.new(
id: &.to_s,
text: body,
author: author,
thread_id: thread_id,
channel_id: issue_id,
platform: :linear,
raw: data
)
[
ChatSDK::Events::Mention.new(
message: msg,
thread_id: thread_id,
channel_id: issue_id,
platform: :linear,
adapter_name: :linear,
raw: data
)
]
end
|