mirror of https://github.com/Rudi9719/kbtui.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.6 KiB
71 lines
1.6 KiB
// +build !rm_basic_commands allcommands editcmd |
|
|
|
package main |
|
|
|
import ( |
|
"fmt" |
|
"strconv" |
|
"strings" |
|
|
|
"github.com/jroimartin/gocui" |
|
) |
|
|
|
func init() { |
|
command := Command{ |
|
Cmd: []string{"edit", "e"}, |
|
Description: "$messageId - Edit a message (messageID is optional)", |
|
Help: "", |
|
Exec: cmdEdit, |
|
} |
|
|
|
RegisterCommand(command) |
|
} |
|
|
|
func cmdEdit(cmd []string) { |
|
var messageId int |
|
chat := k.NewChat(channel) |
|
if len(cmd) == 2 || len(cmd) == 1 { |
|
if len(cmd) == 2 { |
|
messageId, _ = strconv.Atoi(cmd[1]) |
|
} else { |
|
messageId = lastMessage.ID |
|
} |
|
|
|
origMessage, _ := chat.ReadMessage(messageId) |
|
if origMessage.Result.Messages[0].Msg.Content.Type != "text" { |
|
printToView("Feed", fmt.Sprintf("%+v", origMessage)) |
|
return |
|
} |
|
editString := origMessage.Result.Messages[0].Msg.Content.Text.Body |
|
g.Update(func(g *gocui.Gui) error { |
|
inputView, err := g.View("Input") |
|
if err != nil { |
|
return err |
|
} else { |
|
editString = fmt.Sprintf("/edit %d %s", messageId, editString) |
|
fmt.Fprintf(inputView, editString) |
|
viewX, viewY := inputView.Size() |
|
if len(editString) < viewX { |
|
viewX = len(editString) |
|
viewY = 0 |
|
} else { |
|
viewX = viewX / len(editString) |
|
} |
|
inputView.MoveCursor(viewX, viewY, true) |
|
} |
|
return nil |
|
}) |
|
return |
|
} |
|
if len(cmd) < 3 { |
|
printToView("Feed", "Not enough options for Edit") |
|
return |
|
} |
|
messageId, _ = strconv.Atoi(cmd[1]) |
|
newMessage := strings.Join(cmd[2:], " ") |
|
_, err := chat.Edit(messageId, newMessage) |
|
if err != nil { |
|
printToView("Feed", fmt.Sprintf("Error editing message %d, %+v", messageId, err)) |
|
} |
|
|
|
}
|
|
|