feat: add room mentions and clickable room/relay refs
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import {describe, expect, it} from "vitest"
|
||||
import {parseContentTextParts} from "../src/lib/content-text"
|
||||
|
||||
describe("parseContentTextParts", () => {
|
||||
it("parses room references as relay_url'room_id", () => {
|
||||
const parts = parseContentTextParts("Join wss://relay.example.com'general now")
|
||||
|
||||
expect(parts).toHaveLength(3)
|
||||
expect(parts[0]).toEqual({type: "text", value: "Join "})
|
||||
expect(parts[1]).toMatchObject({
|
||||
type: "room",
|
||||
value: "wss://relay.example.com'general",
|
||||
h: "general",
|
||||
})
|
||||
expect(parts[2]).toEqual({type: "text", value: " now"})
|
||||
})
|
||||
|
||||
it("parses relay urls as relay parts", () => {
|
||||
const parts = parseContentTextParts("Try wss://relay.example.com")
|
||||
|
||||
expect(parts).toHaveLength(2)
|
||||
expect(parts[0]).toEqual({type: "text", value: "Try "})
|
||||
expect(parts[1]).toMatchObject({
|
||||
type: "relay",
|
||||
value: "wss://relay.example.com",
|
||||
})
|
||||
})
|
||||
|
||||
it("keeps trailing punctuation outside links", () => {
|
||||
const parts = parseContentTextParts("See wss://relay.example.com'chat), thanks")
|
||||
|
||||
expect(parts).toHaveLength(3)
|
||||
expect(parts[0]).toEqual({type: "text", value: "See "})
|
||||
expect(parts[1]).toMatchObject({
|
||||
type: "room",
|
||||
value: "wss://relay.example.com'chat",
|
||||
h: "chat",
|
||||
})
|
||||
expect(parts[2]).toEqual({type: "text", value: "), thanks"})
|
||||
})
|
||||
|
||||
it("leaves non-relay urls as plain text", () => {
|
||||
const parts = parseContentTextParts("https://example.com/path")
|
||||
|
||||
expect(parts).toEqual([{type: "text", value: "https://example.com/path"}])
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user