Add nostr: prefix to editor

This commit is contained in:
Jon Staab
2024-12-17 08:42:23 -08:00
parent 055d539b88
commit 0f311c45c0
2 changed files with 22 additions and 8 deletions

View File

@@ -20,6 +20,7 @@ import {
TagExtension,
} from "nostr-editor"
import type {StampedEvent} from "@welshman/util"
import {toNostrURI} from "@welshman/util"
import {signer, profileSearch} from "@welshman/app"
import {FileUploadExtension} from "./FileUpload"
import {createSuggestions} from "./Suggestions"
@@ -107,6 +108,7 @@ export const getEditorOptions = ({
Bolt11Extension.extend(asInline({addNodeView: () => SvelteNodeViewRenderer(EditBolt11)})),
NProfileExtension.extend({
addNodeView: () => SvelteNodeViewRenderer(EditMention),
renderText: props => toNostrURI(props.node.attrs.nprofile),
addProseMirrorPlugins() {
return [
createSuggestions({
@@ -126,8 +128,18 @@ export const getEditorOptions = ({
]
},
}),
NEventExtension.extend(asInline({addNodeView: () => SvelteNodeViewRenderer(EditEvent)})),
NAddrExtension.extend(asInline({addNodeView: () => SvelteNodeViewRenderer(EditEvent)})),
NEventExtension.extend(
asInline({
addNodeView: () => SvelteNodeViewRenderer(EditEvent),
renderText: (props: any) => toNostrURI(props.node.attrs.nevent),
}),
),
NAddrExtension.extend(
asInline({
addNodeView: () => SvelteNodeViewRenderer(EditEvent),
renderText: (props: any) => toNostrURI(props.node.attrs.nevent),
}),
),
ImageExtension.extend(
asInline({addNodeView: () => SvelteNodeViewRenderer(EditImage)}),
).configure({defaultUploadUrl, defaultUploadType: uploadType}),

View File

@@ -2,6 +2,7 @@ import type {JSONContent, PasteRuleMatch, InputRuleMatch} from "@tiptap/core"
import {Editor} from "@tiptap/core"
import {ctx} from "@welshman/lib"
import {Address} from "@welshman/util"
import {repository} from "@welshman/app"
export const asInline = (extend: Record<string, any>) => ({
inline: true,
@@ -69,12 +70,13 @@ export const getEditorTags = (editor: Editor) => {
},
)
const neventTags = findNodes("nevent", json).map(({attrs: {id, author, relays = []}}: any) => [
"q",
id,
ctx.app.router.FromRelays(relays).getUrl(),
author || "",
])
const neventTags = findNodes("nevent", json).map(({attrs: {id, author, relays = []}}: any) => {
const event = repository.getEvent(id)
const pubkey = author || repository.getEvent(id)?.pubkey || ""
const scenario = event ? ctx.app.router.Event(event) : ctx.app.router.FromPubkeys([pubkey])
return ["q", id, scenario.getUrl(), pubkey]
})
const mentionTags = findNodes("nprofile", json).map(({attrs: {pubkey, relays = []}}: any) => [
"p",