Skip to content

Commit

Permalink
feat: add WithCopyFlag option
Browse files Browse the repository at this point in the history
  • Loading branch information
mellonnen committed Feb 22, 2023
1 parent c3276cc commit eb252de
Showing 1 changed file with 23 additions and 3 deletions.
26 changes: 23 additions & 3 deletions ui/sender/sender.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,12 @@ func WithVersion(version semver.Version) Option {
}
}

func WithCopyFlags(flags map[string]string) Option {
return func(m *model) {
m.copyFlags = flags
}
}

type model struct {
state uiState // defaults to 0 (showPassword)
transferType transfer.Type // defaults to 0 (Unknown)
Expand All @@ -91,6 +97,7 @@ type model struct {
help help.Model
keys ui.KeyMap
copyMessageTimer timer.Model
copyFlags map[string]string
}

// New creates a new sender program.
Expand Down Expand Up @@ -250,7 +257,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
case key.Matches(msg, m.keys.Quit):
return m, tea.Quit
case key.Matches(msg, m.keys.CopyPassword):
err := clipboard.WriteAll(fmt.Sprintf("portal receive %s", m.password))
err := clipboard.WriteAll(m.copyReceiverCommand())
if err != nil {
return m, ui.ErrorCmd(errors.New("Failed to copy password to clipboard"))
} else {
Expand Down Expand Up @@ -319,7 +326,7 @@ func (m model) View() string {
return ui.PadText + ui.LogSeparator(m.width) +
ui.PadText + ui.InfoStyle(statusText) + "\n\n" +
ui.PadText + ui.InfoStyle("On the receiving end, run:") + "\n" +
ui.PadText + ui.InfoStyle(fmt.Sprintf("portal receive %s", m.password)) + "\n\n" +
ui.PadText + ui.InfoStyle(m.copyReceiverCommand()) + "\n\n" +
m.fileTable.View() +
ui.PadText + m.help.View(m.keys) + "\n\n"

Expand Down Expand Up @@ -429,7 +436,7 @@ func listenTransferCmd(msgs chan interface{}) tea.Cmd {
}
}

// -------------------- HELPER METHODS -------------------------
// -------------------------------------------------- Helper Functions -------------------------------------------------

func (m *model) resetSpinner() {
m.spinner = spinner.New()
Expand All @@ -443,3 +450,16 @@ func (m *model) resetSpinner() {
m.spinner.Spinner = ui.TransferSpinner
}
}

func (m *model) copyReceiverCommand() string {
var builder strings.Builder
builder.WriteString("portal receive ")
builder.WriteString(m.password)
for flag, value := range m.copyFlags {
builder.WriteRune(' ')
builder.WriteString(flag)
builder.WriteRune(' ')
builder.WriteString(value)
}
return builder.String()
}

0 comments on commit eb252de

Please sign in to comment.