diff --git a/src/relayManager.ts b/src/relayManager.ts index b7003c8..310c7a6 100644 --- a/src/relayManager.ts +++ b/src/relayManager.ts @@ -136,6 +136,7 @@ export async function fetchRelayList( /** * Normalize a relay URL + * - Removes /ReadWrite, /Read, /Write suffixes * - Removes trailing slashes * - Ensures lowercase * - Validates wss:// or ws:// protocol @@ -145,6 +146,9 @@ export function normalizeRelayUrl(url: string): string { let normalized = url.trim().toLowerCase(); + // Remove /ReadWrite, /Read, /Write suffixes (case insensitive) + normalized = normalized.replace(/\/(readwrite|read|write)\/?$/i, ""); + // Remove trailing slashes normalized = normalized.replace(/\/+$/, ""); diff --git a/src/ui/settingsTab.ts b/src/ui/settingsTab.ts index ed7aa29..e3ba642 100644 --- a/src/ui/settingsTab.ts +++ b/src/ui/settingsTab.ts @@ -256,14 +256,22 @@ export class ScriptoriumSettingTab extends PluginSettingTab { containerEl.createEl("h4", { text: "Current Relays" }); this.plugin.settings.relayList.forEach((relay, index) => { const relayDiv = containerEl.createDiv({ cls: "scriptorium-relay-item" }); - relayDiv.createSpan({ text: relay.url }); + + // Display URL without ReadWrite suffix + const urlSpan = relayDiv.createSpan({ text: relay.url }); + urlSpan.style.fontFamily = "monospace"; + urlSpan.style.marginRight = "8px"; + + // Display permissions as badges const badges = relayDiv.createSpan({ cls: "scriptorium-relay-badges" }); - if (relay.read) { + if (relay.read && relay.write) { + badges.createSpan({ text: "Read/Write", cls: "scriptorium-badge" }); + } else if (relay.read) { badges.createSpan({ text: "Read", cls: "scriptorium-badge" }); - } - if (relay.write) { + } else if (relay.write) { badges.createSpan({ text: "Write", cls: "scriptorium-badge" }); } + new Setting(relayDiv) .addButton((button) => { button.setButtonText("Remove")