mirror of
https://github.com/DeBrosOfficial/network.git
synced 2026-01-30 05:23:03 +00:00
80 lines
2.0 KiB
Go
80 lines
2.0 KiB
Go
package steps
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/charmbracelet/bubbles/textinput"
|
|
)
|
|
|
|
// PeerDomain step for entering existing node's domain to join
|
|
type PeerDomain struct {
|
|
Input textinput.Model
|
|
Error error
|
|
Discovering bool
|
|
DiscoveryInfo string
|
|
DiscoveredPeer string
|
|
}
|
|
|
|
// NewPeerDomain creates a new PeerDomain step
|
|
func NewPeerDomain() *PeerDomain {
|
|
ti := textinput.New()
|
|
ti.Focus()
|
|
ti.CharLimit = 256
|
|
ti.Width = 50
|
|
ti.Placeholder = "e.g., node-123.orama.network"
|
|
return &PeerDomain{
|
|
Input: ti,
|
|
}
|
|
}
|
|
|
|
// View renders the peer domain input step
|
|
func (p *PeerDomain) View() string {
|
|
var s strings.Builder
|
|
s.WriteString(titleStyle.Render("Existing Node Domain") + "\n\n")
|
|
s.WriteString("Enter the domain of an existing node to join:\n")
|
|
s.WriteString(subtitleStyle.Render("The installer will auto-discover peer info via HTTPS/HTTP") + "\n\n")
|
|
s.WriteString(p.Input.View())
|
|
|
|
if p.Discovering {
|
|
s.WriteString("\n\n" + subtitleStyle.Render("🔍 "+p.DiscoveryInfo))
|
|
}
|
|
|
|
if p.DiscoveredPeer != "" && p.Error == nil {
|
|
s.WriteString("\n\n" + successStyle.Render("✓ Discovered peer: "+p.DiscoveredPeer[:12]+"..."))
|
|
}
|
|
|
|
if p.Error != nil {
|
|
s.WriteString("\n\n" + errorStyle.Render("✗ "+p.Error.Error()))
|
|
}
|
|
|
|
s.WriteString("\n\n")
|
|
s.WriteString(helpStyle.Render("Enter to discover & continue • Esc to go back"))
|
|
return s.String()
|
|
}
|
|
|
|
// SetValue sets the input value
|
|
func (p *PeerDomain) SetValue(value string) {
|
|
p.Input.SetValue(value)
|
|
}
|
|
|
|
// Value returns the current input value
|
|
func (p *PeerDomain) Value() string {
|
|
return strings.TrimSpace(p.Input.Value())
|
|
}
|
|
|
|
// SetError sets an error message
|
|
func (p *PeerDomain) SetError(err error) {
|
|
p.Error = err
|
|
}
|
|
|
|
// SetDiscovering sets the discovery status
|
|
func (p *PeerDomain) SetDiscovering(discovering bool, info string) {
|
|
p.Discovering = discovering
|
|
p.DiscoveryInfo = info
|
|
}
|
|
|
|
// SetDiscoveredPeer sets the discovered peer ID
|
|
func (p *PeerDomain) SetDiscoveredPeer(peerID string) {
|
|
p.DiscoveredPeer = peerID
|
|
}
|