(event: RelayEvent)
| 604 | } |
| 605 | |
| 606 | function updateMockRelayMembershipFromAdminEvent(event: RelayEvent): boolean { |
| 607 | const targetPubkey = event.tags |
| 608 | .find((tag) => tag[0] === "p")?.[1] |
| 609 | ?.toLowerCase(); |
| 610 | if (!targetPubkey) return false; |
| 611 | |
| 612 | if (event.kind === 9030) { |
| 613 | const role = event.tags.find((tag) => tag[0] === "role")?.[1] ?? "member"; |
| 614 | if (role !== "admin" && role !== "member") return false; |
| 615 | if (mockRelayMembers.some((member) => member.pubkey === targetPubkey)) { |
| 616 | return true; |
| 617 | } |
| 618 | mockRelayMembers.push({ |
| 619 | pubkey: targetPubkey, |
| 620 | role, |
| 621 | added_by: event.pubkey, |
| 622 | created_at: new Date().toISOString(), |
| 623 | }); |
| 624 | return true; |
| 625 | } |
| 626 | |
| 627 | if (event.kind === 9031) { |
| 628 | mockRelayMembers = mockRelayMembers.filter( |
| 629 | (member) => member.pubkey !== targetPubkey, |
| 630 | ); |
| 631 | return true; |
| 632 | } |
| 633 | |
| 634 | if (event.kind === 9032) { |
| 635 | const role = event.tags.find((tag) => tag[0] === "role")?.[1]; |
| 636 | if (role !== "admin" && role !== "member") return false; |
| 637 | mockRelayMembers = mockRelayMembers.map((member) => |
| 638 | member.pubkey === targetPubkey ? { ...member, role } : member, |
| 639 | ); |
| 640 | return true; |
| 641 | } |
| 642 | |
| 643 | return false; |
| 644 | } |
| 645 | |
| 646 | declare global { |
| 647 | interface Window { |
no test coverage detected