Skip to content Search Apps Documentation Source Content File Folder Download Copy Actions State String Boolean Number Struct Map Slice Pointer Function Closure Reference Nil Package Type Interface Unknown

Community realm. Read the code first. Community realm, deployed by its author. Read the code before you interact or send coins.

web25.gno

1.19 Kb · 51 lines
 1// Pacakge web25 provides an opinionated way to register an external web2
 2// frontend to provide a "better" web2.5 experience.
 3package web25
 4
 5import (
 6	"strings"
 7
 8	"gno.land/p/g1magld5ptgzaktqcexxq0pgq5lmdf0kz6re8hlv/realmpath/v0"
 9)
10
11type Config struct {
12	CID  string
13	URL  string
14	Text string
15}
16
17func (c *Config) SetRemoteFrontendByURL(url string) {
18	c.CID = ""
19	c.URL = url
20}
21
22func (c *Config) SetRemoteFrontendByCID(cid string) {
23	c.CID = cid
24	c.URL = ""
25}
26
27func (c Config) GetLink() string {
28	if c.CID != "" {
29		return "https://ipfs.io/ipfs/" + c.CID
30	}
31	return c.URL
32}
33
34const DefaultText = "Click [here]({link}) to visit the full rendering experience.\n"
35
36// Render displays a frontend link at the top of your realm's Render function in
37// a concistent way to help gno visitors to have a consistent experience.
38//
39// if query is not nil, then it will check if it's not disable by ?no-web25, so
40// that you can call the render function from an external point of view.
41func (c Config) Render(path string) string {
42	if realmpath.Parse(path).Query.Get("no-web25") == "1" {
43		return ""
44	}
45	text := c.Text
46	if text == "" {
47		text = DefaultText
48	}
49	text = strings.ReplaceAll(text, "{link}", c.GetLink())
50	return text
51}