(
args: { channelId: string },
config: E2eConfig | undefined,
)
| 5134 | } |
| 5135 | |
| 5136 | async function handleGetChannelDetails( |
| 5137 | args: { channelId: string }, |
| 5138 | config: E2eConfig | undefined, |
| 5139 | ) { |
| 5140 | const identity = getIdentity(config); |
| 5141 | if (!identity) { |
| 5142 | return toRawChannelDetail(getMockChannel(args.channelId), config); |
| 5143 | } |
| 5144 | |
| 5145 | const metaEvents = await relayQuery(config, [ |
| 5146 | { kinds: [39000], "#d": [args.channelId], limit: 1 }, |
| 5147 | ]); |
| 5148 | const ev = metaEvents[0]; |
| 5149 | const evTags = (ev?.tags ?? []) as string[][]; |
| 5150 | const getTag = (name: string) => |
| 5151 | evTags.find((t) => t[0] === name)?.[1] ?? null; |
| 5152 | |
| 5153 | // Get members for member_count |
| 5154 | const memberEvents = await relayQuery(config, [ |
| 5155 | { kinds: [39002], "#d": [args.channelId], limit: 1 }, |
| 5156 | ]); |
| 5157 | const memberTags = ((memberEvents[0]?.tags ?? []) as string[][]).filter( |
| 5158 | (t) => t[0] === "p", |
| 5159 | ); |
| 5160 | |
| 5161 | return { |
| 5162 | id: args.channelId, |
| 5163 | name: getTag("name") ?? "", |
| 5164 | description: getTag("about") ?? null, |
| 5165 | channel_type: getTag("t") ?? "stream", |
| 5166 | visibility: evTags.some((t) => t[0] === "private") ? "private" : "open", |
| 5167 | topic: getTag("topic") ?? null, |
| 5168 | purpose: getTag("purpose") ?? null, |
| 5169 | member_count: memberTags.length, |
| 5170 | role: "member", |
| 5171 | archived_at: evTags.some((t) => t[0] === "archived" && t[1] === "true") |
| 5172 | ? new Date().toISOString() |
| 5173 | : null, |
| 5174 | ttl_seconds: getTag("ttl") ? Number(getTag("ttl")) : null, |
| 5175 | ttl_deadline: getTag("ttl_deadline") ?? null, |
| 5176 | created_at: ev?.created_at |
| 5177 | ? new Date(ev.created_at * 1000).toISOString() |
| 5178 | : new Date().toISOString(), |
| 5179 | }; |
| 5180 | } |
| 5181 | |
| 5182 | async function handleGetChannelMembers( |
| 5183 | args: { channelId: string }, |
no test coverage detected