From 0b0a40f7353107b4bdd5fe799b8fe20bf8eb90ff Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Wed, 19 Feb 2020 21:27:37 +0200 Subject: Remove duplicate code for finding message to edit --- ui/room-view.go | 48 +++++++++++++++++++++++------------------------- 1 file changed, 23 insertions(+), 25 deletions(-) (limited to 'ui') diff --git a/ui/room-view.go b/ui/room-view.go index 27c42c8..8b88b99 100644 --- a/ui/room-view.go +++ b/ui/room-view.go @@ -373,48 +373,46 @@ func (view *RoomView) SetEditing(evt *event.Event) { view.editMoveText = view.GetInputText() } view.editing = evt - view.SetInputText(view.editing.Content.Body) + view.input.SetText(view.editing.Content.Body) } view.status.SetText(view.GetStatus()) } -func (view *RoomView) EditNext() { - if view.editing == nil { - return - } - var foundEvent *event.Event +func (view *RoomView) findMessageToEdit(forward bool) *event.Event { currentFound := view.editing == nil self := view.parent.matrix.Client().UserID - for _, msg := range view.MessageView().messages { + msgs := view.MessageView().messages + for i := 0; i < len(msgs); i++ { + index := i + if !forward { + index = len(msgs) - i - 1 + } + evt := msgs[index] if currentFound { - if msg.SenderID == self { - foundEvent = msg.Event - break + if evt.SenderID == self && evt.Event.Type == mautrix.EventMessage { + return evt.Event } - } else if msg.EventID == view.editing.ID { + } else if evt.EventID == view.editing.ID { currentFound = true } } + return nil +} + +func (view *RoomView) EditNext() { + if view.editing == nil { + return + } + foundEvent := view.findMessageToEdit(true) view.SetEditing(foundEvent) + view.input.SetCursorOffset(-1) } func (view *RoomView) EditPrevious() { - var foundEvent *event.Event - currentFound := view.editing == nil - self := view.parent.matrix.Client().UserID - msgs := view.MessageView().messages - for i := len(msgs) - 1; i >= 0; i-- { - if currentFound { - if msgs[i].SenderID == self { - foundEvent = msgs[i].Event - break - } - } else if msgs[i].EventID == view.editing.ID { - currentFound = true - } - } + foundEvent := view.findMessageToEdit(false) if foundEvent != nil { view.SetEditing(foundEvent) + view.input.SetCursorOffset(0) } } -- cgit v1.2.3