event: keep signature from populated event so it can be published from paste.

This commit is contained in:
fiatjaf
2026-01-10 17:41:32 -03:00
parent 62275e67d0
commit 58df1d61fa
+33 -26
View File
@@ -25,6 +25,7 @@ type eventVars struct {
relaysEdits []*qt.QLineEdit relaysEdits []*qt.QLineEdit
relaysStatusLabels []*qt.QLabel relaysStatusLabels []*qt.QLabel
currentEvent *nostr.Event currentEvent *nostr.Event
sendButton *qt.QPushButton
} }
func setupEventTab() *qt.QWidget { func setupEventTab() *qt.QWidget {
@@ -101,9 +102,9 @@ func setupEventTab() *qt.QWidget {
// send button // send button
buttonHBox := qt.NewQHBoxLayout2() buttonHBox := qt.NewQHBoxLayout2()
sendButton := qt.NewQPushButton5("publish event", event.tab) event.sendButton = qt.NewQPushButton5("publish event", event.tab)
sendButton.SetEnabled(false) event.sendButton.SetEnabled(false)
buttonHBox.AddWidget(sendButton.QWidget) buttonHBox.AddWidget(event.sendButton.QWidget)
buttonHBox.AddStretch() buttonHBox.AddStretch()
// relays // relays
@@ -114,17 +115,6 @@ func setupEventTab() *qt.QWidget {
layout.AddLayout(relaysVBox.QLayout) layout.AddLayout(relaysVBox.QLayout)
event.relaysEdits = []*qt.QLineEdit{} event.relaysEdits = []*qt.QLineEdit{}
event.relaysStatusLabels = []*qt.QLabel{} event.relaysStatusLabels = []*qt.QLabel{}
var updateSendButton func()
updateSendButton = func() {
hasRelays := false
for _, edit := range event.relaysEdits {
if strings.TrimSpace(edit.Text()) != "" {
hasRelays = true
break
}
}
sendButton.SetEnabled(hasRelays)
}
var addRelayEdit func() var addRelayEdit func()
addRelayEdit = func() { addRelayEdit = func() {
@@ -156,17 +146,18 @@ func setupEventTab() *qt.QWidget {
event.relaysStatusLabels = event.relaysStatusLabels[0 : n-1] event.relaysStatusLabels = event.relaysStatusLabels[0 : n-1]
} }
} }
updateSendButton()
event.updateSendButtonState()
}) })
edit.OnReturnPressed(func() { edit.OnReturnPressed(func() {
sendButton.Click() event.sendButton.Click()
}) })
} }
addRelayEdit() addRelayEdit()
layout.AddLayout(buttonHBox.QLayout) layout.AddLayout(buttonHBox.QLayout)
sendButton.OnClicked(func() { event.sendButton.OnClicked(func() {
if event.currentEvent == nil { if event.currentEvent == nil {
setStatus(tabs.event, "no event to publish") setStatus(tabs.event, "no event to publish")
return return
@@ -219,6 +210,17 @@ func setupEventTab() *qt.QWidget {
return event.tab return event.tab
} }
func (event *eventVars) updateSendButtonState() {
hasRelays := false
for _, edit := range event.relaysEdits {
if strings.TrimSpace(edit.Text()) != "" {
hasRelays = true
break
}
}
event.sendButton.SetEnabled(hasRelays && event.currentEvent.Sig != [64]byte{})
}
func (event *eventVars) addTagRow(tag nostr.Tag) { func (event *eventVars) addTagRow(tag nostr.Tag) {
hbox := qt.NewQHBoxLayout2() hbox := qt.NewQHBoxLayout2()
event.tagRowHBoxes = append(event.tagRowHBoxes, hbox) event.tagRowHBoxes = append(event.tagRowHBoxes, hbox)
@@ -313,17 +315,11 @@ func (event *eventVars) updateEvent() {
Tags: tags, Tags: tags,
} }
finalize := func() {
event.currentEvent = &result
jsonBytes, _ := json.MarshalIndent(result, "", " ")
event.outputEdit.SetPlainText(string(jsonBytes))
}
if currentKeyer != nil { if currentKeyer != nil {
signAndFinalize := func() { signAndFinalize := func() {
if currentKeyer != nil { if currentKeyer != nil {
if err := currentKeyer.SignEvent(ctx, &result); err == nil { if err := currentKeyer.SignEvent(ctx, &result); err == nil {
finalize() event.finalize(result)
} else { } else {
setStatus(tabs.event, "failed to sign: "+err.Error()) setStatus(tabs.event, "failed to sign: "+err.Error())
} }
@@ -344,7 +340,14 @@ func (event *eventVars) updateEvent() {
} }
} }
finalize() event.finalize(result)
}
func (event *eventVars) finalize(result nostr.Event) {
event.currentEvent = &result
jsonBytes, _ := json.MarshalIndent(result, "", " ")
event.outputEdit.SetPlainText(string(jsonBytes))
event.updateSendButtonState()
} }
func (event *eventVars) populate(evt nostr.Event) { func (event *eventVars) populate(evt nostr.Event) {
@@ -374,5 +377,9 @@ func (event *eventVars) populate(evt nostr.Event) {
event.addTagRow(tag) event.addTagRow(tag)
} }
event.updateEvent() if evt.Sig != [64]byte{} {
event.finalize(evt)
} else {
event.updateEvent()
}
} }