HandleTELALinks parses and handles all TELA links
(ctx context.Context, p TELALink_Params)
| 99 | |
| 100 | // HandleTELALinks parses and handles all TELA links |
| 101 | func HandleTELALinks(ctx context.Context, p TELALink_Params) (result TELALink_Result, err error) { |
| 102 | if gnomon.Index == nil { |
| 103 | // Match Engram behavior as it disables TELA when Gnomon is inactive |
| 104 | err = fmt.Errorf("gnomon is not active") |
| 105 | return |
| 106 | } |
| 107 | |
| 108 | target, args, err := tela.ParseTELALink(p.TelaLink) |
| 109 | if err != nil { |
| 110 | err = fmt.Errorf("could not parse tela link: %s", err) |
| 111 | return |
| 112 | } |
| 113 | |
| 114 | switch target { |
| 115 | case "tela": |
| 116 | switch args[0] { |
| 117 | case "open": |
| 118 | var link string |
| 119 | link, err = tela.OpenTELALink(p.TelaLink, session.Daemon) |
| 120 | if err != nil { |
| 121 | return |
| 122 | } |
| 123 | |
| 124 | var url *url.URL |
| 125 | url, err = url.Parse(link) |
| 126 | if err != nil { |
| 127 | err = fmt.Errorf("could not parse URL: %s", err) |
| 128 | return |
| 129 | } |
| 130 | |
| 131 | err = fyne.CurrentApp().OpenURL(url) |
| 132 | if err != nil { |
| 133 | err = fmt.Errorf("could not open tela link: %s", err) |
| 134 | return |
| 135 | } |
| 136 | |
| 137 | result.TelaLinkResult = link |
| 138 | default: |
| 139 | err = fmt.Errorf("unknown tela argument %q", args[0]) |
| 140 | } |
| 141 | case "engram": |
| 142 | switch args[0] { |
| 143 | case "asset": |
| 144 | if len(args) < 2 { |
| 145 | err = fmt.Errorf("%q has invalid tela link format for engram://asset", p.TelaLink) |
| 146 | return |
| 147 | } |
| 148 | |
| 149 | switch args[1] { |
| 150 | case "manager": |
| 151 | if len(args) < 3 || len(args[2]) != 64 { |
| 152 | err = fmt.Errorf("%q has invalid scid argument for engram://asset/manager", p.TelaLink) |
| 153 | return |
| 154 | } |
| 155 | |
| 156 | session.LastDomain = session.Window.Content() |
| 157 | session.Window.SetContent(layoutTransition()) |
| 158 | session.Window.SetContent(layoutAssetManager(args[2])) |
nothing calls this directly
no test coverage detected