MCPcopy Create free account
hub / github.com/block/buzz / handleGetChannelDetails

Function handleGetChannelDetails

desktop/src/testing/e2eBridge.ts:5136–5180  ·  view source on GitHub ↗
(
  args: { channelId: string },
  config: E2eConfig | undefined,
)

Source from the content-addressed store, hash-verified

5134}
5135
5136async 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
5182async function handleGetChannelMembers(
5183 args: { channelId: string },

Callers 1

handleMockCommandFunction · 0.85

Calls 5

toRawChannelDetailFunction · 0.85
getMockChannelFunction · 0.85
relayQueryFunction · 0.85
getIdentityFunction · 0.70
getTagFunction · 0.70

Tested by

no test coverage detected