mirror of
https://github.com/aljazceru/njump.git
synced 2025-12-17 06:14:22 +01:00
@-prefixed and highlighted mentions in text images.
This commit is contained in:
23
utils.go
23
utils.go
@@ -258,7 +258,7 @@ func replaceNostrURLsWithTags(matcher *regexp.Regexp, input string) string {
|
|||||||
if strings.HasPrefix(nip19, "npub1") || strings.HasPrefix(nip19, "nprofile1") {
|
if strings.HasPrefix(nip19, "npub1") || strings.HasPrefix(nip19, "nprofile1") {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second*4)
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second*4)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
name := getNameFromNip19(ctx, nip19)
|
name, _ := getNameFromNip19(ctx, nip19)
|
||||||
return fmt.Sprintf(`<a href="/%s" class="bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1"><span>%s</span> (<span class="italic">%s</span>)</a>`, nip19, name, first_chars+"…"+last_chars)
|
return fmt.Sprintf(`<a href="/%s" class="bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1"><span>%s</span> (<span class="italic">%s</span>)</a>`, nip19, name, first_chars+"…"+last_chars)
|
||||||
} else {
|
} else {
|
||||||
return fmt.Sprintf(`<a href="/%s" class="bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1">%s</a>`, nip19, first_chars+"…"+last_chars)
|
return fmt.Sprintf(`<a href="/%s" class="bg-lavender dark:prose:text-neutral-50 dark:text-neutral-50 dark:bg-garnet px-1">%s</a>`, nip19, first_chars+"…"+last_chars)
|
||||||
@@ -280,19 +280,19 @@ func shortenNostrURLs(input string) string {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNameFromNip19(ctx context.Context, nip19 string) string {
|
func getNameFromNip19(ctx context.Context, nip19 string) (string, bool) {
|
||||||
author, _, err := getEvent(ctx, nip19, nil)
|
author, _, err := getEvent(ctx, nip19, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nip19
|
return nip19, false
|
||||||
}
|
}
|
||||||
metadata, err := sdk.ParseMetadata(author)
|
metadata, err := sdk.ParseMetadata(author)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nip19
|
return nip19, false
|
||||||
}
|
}
|
||||||
if metadata.Name == "" {
|
if metadata.Name == "" {
|
||||||
return nip19
|
return nip19, false
|
||||||
}
|
}
|
||||||
return metadata.Name
|
return metadata.Name, true
|
||||||
}
|
}
|
||||||
|
|
||||||
// replaces an npub/nprofile with the name of the author, if possible
|
// replaces an npub/nprofile with the name of the author, if possible
|
||||||
@@ -304,8 +304,15 @@ func replaceUserReferencesWithNames(ctx context.Context, input []string) []strin
|
|||||||
for i, line := range input {
|
for i, line := range input {
|
||||||
input[i] = nostrNpubNprofileMatcher.ReplaceAllStringFunc(line, func(match string) string {
|
input[i] = nostrNpubNprofileMatcher.ReplaceAllStringFunc(line, func(match string) string {
|
||||||
submatch := nostrNpubNprofileMatcher.FindStringSubmatch(match)
|
submatch := nostrNpubNprofileMatcher.FindStringSubmatch(match)
|
||||||
nip19 := submatch[1]
|
nip19code := submatch[1]
|
||||||
return getNameFromNip19(ctx, nip19)
|
name, ok := getNameFromNip19(ctx, nip19code)
|
||||||
|
if ok {
|
||||||
|
spl := strings.SplitN(strings.TrimSpace(name), " ", 2)
|
||||||
|
if spl[0] != "" {
|
||||||
|
return "@" + spl[0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nip19code[0:10] + "…" + nip19code[len(nip19code)-5:]
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return input
|
return input
|
||||||
|
|||||||
Reference in New Issue
Block a user