Fix extra string actions
This commit is contained in:
@@ -82,6 +82,8 @@ func (u *ui) setCustomFieldRows(fields map[string]string) {
|
||||
u.customFieldKeys = nil
|
||||
u.customFieldValues = nil
|
||||
u.removeCustomFields = nil
|
||||
u.copyCustomFields = nil
|
||||
u.toggleCustomFields = nil
|
||||
if len(fields) == 0 {
|
||||
u.appendCustomFieldRow("", "")
|
||||
return
|
||||
@@ -104,21 +106,53 @@ func (u *ui) appendCustomFieldRow(key, value string) {
|
||||
u.customFieldKeys = append(u.customFieldKeys, keyEditor)
|
||||
u.customFieldValues = append(u.customFieldValues, valueEditor)
|
||||
u.removeCustomFields = append(u.removeCustomFields, widget.Clickable{})
|
||||
u.copyCustomFields = append(u.copyCustomFields, widget.Clickable{})
|
||||
u.toggleCustomFields = append(u.toggleCustomFields, widget.Clickable{})
|
||||
}
|
||||
|
||||
func (u *ui) removeCustomFieldRow(index int) {
|
||||
u.ensureCustomFieldRowControls()
|
||||
if index < 0 || index >= len(u.customFieldKeys) {
|
||||
return
|
||||
}
|
||||
u.customFieldKeys = append(u.customFieldKeys[:index], u.customFieldKeys[index+1:]...)
|
||||
u.customFieldValues = append(u.customFieldValues[:index], u.customFieldValues[index+1:]...)
|
||||
u.removeCustomFields = append(u.removeCustomFields[:index], u.removeCustomFields[index+1:]...)
|
||||
u.copyCustomFields = append(u.copyCustomFields[:index], u.copyCustomFields[index+1:]...)
|
||||
u.toggleCustomFields = append(u.toggleCustomFields[:index], u.toggleCustomFields[index+1:]...)
|
||||
if len(u.customFieldKeys) == 0 {
|
||||
u.appendCustomFieldRow("", "")
|
||||
}
|
||||
}
|
||||
|
||||
func (u *ui) ensureCustomFieldRowControls() {
|
||||
if len(u.customFieldValues) < len(u.customFieldKeys) {
|
||||
values := make([]widget.Editor, len(u.customFieldKeys))
|
||||
copy(values, u.customFieldValues)
|
||||
for i := len(u.customFieldValues); i < len(values); i++ {
|
||||
values[i] = widget.Editor{SingleLine: true, Submit: false}
|
||||
}
|
||||
u.customFieldValues = values
|
||||
}
|
||||
if len(u.removeCustomFields) < len(u.customFieldKeys) {
|
||||
clicks := make([]widget.Clickable, len(u.customFieldKeys))
|
||||
copy(clicks, u.removeCustomFields)
|
||||
u.removeCustomFields = clicks
|
||||
}
|
||||
if len(u.copyCustomFields) < len(u.customFieldKeys) {
|
||||
clicks := make([]widget.Clickable, len(u.customFieldKeys))
|
||||
copy(clicks, u.copyCustomFields)
|
||||
u.copyCustomFields = clicks
|
||||
}
|
||||
if len(u.toggleCustomFields) < len(u.customFieldKeys) {
|
||||
clicks := make([]widget.Clickable, len(u.customFieldKeys))
|
||||
copy(clicks, u.toggleCustomFields)
|
||||
u.toggleCustomFields = clicks
|
||||
}
|
||||
}
|
||||
|
||||
func (u *ui) currentCustomFields() (map[string]string, error) {
|
||||
u.ensureCustomFieldRowControls()
|
||||
fields := map[string]string{}
|
||||
for i := range u.customFieldKeys {
|
||||
key := strings.TrimSpace(u.customFieldKeys[i].Text())
|
||||
@@ -399,6 +433,16 @@ func (u *ui) copySelectedFieldAction(target clipboard.Target) error {
|
||||
return service.Copy(model, u.state.SelectedEntryID, target)
|
||||
}
|
||||
|
||||
func (u *ui) copySelectedCustomFieldAction(key string) error {
|
||||
model, err := u.state.Session.Current()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
service := clipboard.Service{Writer: u.clipboardWriter}
|
||||
return service.CopyCustomField(model, u.state.SelectedEntryID, key)
|
||||
}
|
||||
|
||||
func (u *ui) generatePasswordAction() error {
|
||||
profile, err := passwords.LookupDefaultProfile(u.passwordProfile.Text())
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user