Fix things
This commit is contained in:
@ -19,7 +19,7 @@ package ui
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/mautrix"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
@ -133,7 +133,7 @@ func cmdSendEvent(cmd *Command) {
|
||||
return
|
||||
}
|
||||
roomID := cmd.Args[0]
|
||||
eventType := gomatrix.NewEventType(cmd.Args[1])
|
||||
eventType := mautrix.NewEventType(cmd.Args[1])
|
||||
rawContent := strings.Join(cmd.Args[2:], "")
|
||||
debug.Print(roomID, eventType, rawContent)
|
||||
|
||||
@ -162,7 +162,7 @@ func cmdSetState(cmd *Command) {
|
||||
}
|
||||
|
||||
roomID := cmd.Args[0]
|
||||
eventType := gomatrix.NewEventType(cmd.Args[1])
|
||||
eventType := mautrix.NewEventType(cmd.Args[1])
|
||||
stateKey := cmd.Args[2]
|
||||
if stateKey == "-" {
|
||||
stateKey = ""
|
||||
|
@ -18,7 +18,7 @@ package messages
|
||||
|
||||
import (
|
||||
"encoding/gob"
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/mautrix"
|
||||
"time"
|
||||
|
||||
"maunium.net/go/gomuks/config"
|
||||
@ -34,7 +34,7 @@ func init() {
|
||||
|
||||
type BaseMessage struct {
|
||||
MsgID string
|
||||
MsgType gomatrix.MessageType
|
||||
MsgType mautrix.MessageType
|
||||
MsgSenderID string
|
||||
MsgSender string
|
||||
MsgSenderColor tcell.Color
|
||||
@ -48,7 +48,7 @@ type BaseMessage struct {
|
||||
prevPrefs config.UserPreferences
|
||||
}
|
||||
|
||||
func newBaseMessage(id, sender, displayname string, msgtype gomatrix.MessageType, timestamp time.Time) BaseMessage {
|
||||
func newBaseMessage(id, sender, displayname string, msgtype mautrix.MessageType, timestamp time.Time) BaseMessage {
|
||||
return BaseMessage{
|
||||
MsgSenderID: sender,
|
||||
MsgSender: displayname,
|
||||
@ -195,11 +195,11 @@ func (msg *BaseMessage) SetID(id string) {
|
||||
msg.MsgID = id
|
||||
}
|
||||
|
||||
func (msg *BaseMessage) Type() gomatrix.MessageType {
|
||||
func (msg *BaseMessage) Type() mautrix.MessageType {
|
||||
return msg.MsgType
|
||||
}
|
||||
|
||||
func (msg *BaseMessage) SetType(msgtype gomatrix.MessageType) {
|
||||
func (msg *BaseMessage) SetType(msgtype mautrix.MessageType) {
|
||||
msg.MsgType = msgtype
|
||||
}
|
||||
|
||||
|
@ -18,7 +18,7 @@ package messages
|
||||
|
||||
import (
|
||||
"encoding/gob"
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/mautrix"
|
||||
"time"
|
||||
|
||||
"maunium.net/go/gomuks/config"
|
||||
@ -35,7 +35,7 @@ type ExpandedTextMessage struct {
|
||||
}
|
||||
|
||||
// NewExpandedTextMessage creates a new ExpandedTextMessage object with the provided values and the default state.
|
||||
func NewExpandedTextMessage(id, sender, displayname string, msgtype gomatrix.MessageType, text tstring.TString, timestamp time.Time) UIMessage {
|
||||
func NewExpandedTextMessage(id, sender, displayname string, msgtype mautrix.MessageType, text tstring.TString, timestamp time.Time) UIMessage {
|
||||
return &ExpandedTextMessage{
|
||||
BaseMessage: newBaseMessage(id, sender, displayname, msgtype, timestamp),
|
||||
MsgText: text,
|
||||
|
@ -20,7 +20,7 @@ import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/mautrix"
|
||||
"time"
|
||||
|
||||
"image/color"
|
||||
@ -48,7 +48,7 @@ type ImageMessage struct {
|
||||
}
|
||||
|
||||
// NewImageMessage creates a new ImageMessage object with the provided values and the default state.
|
||||
func NewImageMessage(matrix ifc.MatrixContainer, id, sender, displayname string, msgtype gomatrix.MessageType, body, homeserver, fileID string, data []byte, timestamp time.Time) UIMessage {
|
||||
func NewImageMessage(matrix ifc.MatrixContainer, id, sender, displayname string, msgtype mautrix.MessageType, body, homeserver, fileID string, data []byte, timestamp time.Time) UIMessage {
|
||||
return &ImageMessage{
|
||||
newBaseMessage(id, sender, displayname, msgtype, timestamp),
|
||||
body,
|
||||
|
@ -24,10 +24,10 @@ import (
|
||||
|
||||
"github.com/lucasb-eyer/go-colorful"
|
||||
"golang.org/x/net/html"
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/gomuks/matrix/rooms"
|
||||
"maunium.net/go/gomuks/ui/messages/tstring"
|
||||
"maunium.net/go/gomuks/ui/widget"
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/tcell"
|
||||
"strconv"
|
||||
)
|
||||
@ -69,6 +69,9 @@ func (parser *htmlParser) getAttribute(node *html.Node, attribute string) string
|
||||
}
|
||||
|
||||
func digits(num int) int {
|
||||
if num <= 0 {
|
||||
return 0
|
||||
}
|
||||
return int(math.Floor(math.Log10(float64(num))) + 1)
|
||||
}
|
||||
|
||||
@ -270,14 +273,14 @@ func (parser *htmlParser) Parse(htmlData string) tstring.TString {
|
||||
}
|
||||
|
||||
// ParseHTMLMessage parses a HTML-formatted Matrix event into a UIMessage.
|
||||
func ParseHTMLMessage(room *rooms.Room, evt *gomatrix.Event, senderDisplayname string) tstring.TString {
|
||||
func ParseHTMLMessage(room *rooms.Room, evt *mautrix.Event, senderDisplayname string) tstring.TString {
|
||||
htmlData := evt.Content.FormattedBody
|
||||
htmlData = strings.Replace(htmlData, "\t", " ", -1)
|
||||
|
||||
parser := htmlParser{room}
|
||||
str := parser.Parse(htmlData)
|
||||
|
||||
if evt.Content.MsgType == gomatrix.MsgEmote {
|
||||
if evt.Content.MsgType == mautrix.MsgEmote {
|
||||
str = tstring.Join([]tstring.TString{
|
||||
tstring.NewTString("* "),
|
||||
tstring.NewColorTString(senderDisplayname, widget.GetHashColor(evt.Sender)),
|
||||
|
@ -18,24 +18,28 @@ package parser
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"html"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/gomuks/debug"
|
||||
"maunium.net/go/gomuks/interface"
|
||||
"maunium.net/go/gomuks/matrix/rooms"
|
||||
"maunium.net/go/gomuks/ui/messages"
|
||||
"maunium.net/go/gomuks/ui/messages/tstring"
|
||||
"maunium.net/go/gomuks/ui/widget"
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/tcell"
|
||||
)
|
||||
|
||||
func ParseEvent(matrix ifc.MatrixContainer, room *rooms.Room, evt *gomatrix.Event) messages.UIMessage {
|
||||
func ParseEvent(matrix ifc.MatrixContainer, room *rooms.Room, evt *mautrix.Event) messages.UIMessage {
|
||||
switch evt.Type {
|
||||
case gomatrix.EventMessage:
|
||||
case mautrix.EventSticker:
|
||||
evt.Content.MsgType = mautrix.MsgImage
|
||||
fallthrough
|
||||
case mautrix.EventMessage:
|
||||
return ParseMessage(matrix, room, evt)
|
||||
case gomatrix.StateMember:
|
||||
case mautrix.StateMember:
|
||||
return ParseMembershipEvent(room, evt)
|
||||
}
|
||||
return nil
|
||||
@ -49,16 +53,27 @@ func unixToTime(unix int64) time.Time {
|
||||
return timestamp
|
||||
}
|
||||
|
||||
func ParseMessage(matrix ifc.MatrixContainer, room *rooms.Room, evt *gomatrix.Event) messages.UIMessage {
|
||||
func ParseMessage(matrix ifc.MatrixContainer, room *rooms.Room, evt *mautrix.Event) messages.UIMessage {
|
||||
displayname := evt.Sender
|
||||
member := room.GetMember(evt.Sender)
|
||||
if member != nil {
|
||||
displayname = member.Displayname
|
||||
}
|
||||
if len(evt.Content.GetReplyTo()) > 0 {
|
||||
evt.Content.RemoveReplyFallback()
|
||||
replyToEvt, _ := matrix.Client().GetEvent(room.ID, evt.Content.GetReplyTo())
|
||||
replyToEvt.Content.RemoveReplyFallback()
|
||||
if len(replyToEvt.Content.FormattedBody) == 0 {
|
||||
replyToEvt.Content.FormattedBody = html.EscapeString(replyToEvt.Content.Body)
|
||||
}
|
||||
evt.Content.FormattedBody = fmt.Sprintf(
|
||||
"In reply to <a href='https://matrix.to/#/%[1]s'>%[1]s</a><blockquote>%[2]s</blockquote><br/>%[3]s",
|
||||
replyToEvt.Sender, replyToEvt.Content.FormattedBody, evt.Content.FormattedBody)
|
||||
}
|
||||
ts := unixToTime(evt.Timestamp)
|
||||
switch evt.Content.MsgType {
|
||||
case "m.text", "m.notice", "m.emote":
|
||||
if evt.Content.Format == gomatrix.FormatHTML {
|
||||
if evt.Content.Format == mautrix.FormatHTML {
|
||||
text := ParseHTMLMessage(room, evt, displayname)
|
||||
return messages.NewExpandedTextMessage(evt.ID, evt.Sender, displayname, evt.Content.MsgType, text, ts)
|
||||
}
|
||||
@ -74,7 +89,7 @@ func ParseMessage(matrix ifc.MatrixContainer, room *rooms.Room, evt *gomatrix.Ev
|
||||
return nil
|
||||
}
|
||||
|
||||
func getMembershipChangeMessage(evt *gomatrix.Event, membership, prevMembership gomatrix.Membership, senderDisplayname, displayname, prevDisplayname string) (sender string, text tstring.TString) {
|
||||
func getMembershipChangeMessage(evt *mautrix.Event, membership, prevMembership mautrix.Membership, senderDisplayname, displayname, prevDisplayname string) (sender string, text tstring.TString) {
|
||||
switch membership {
|
||||
case "invite":
|
||||
sender = "---"
|
||||
@ -88,7 +103,7 @@ func getMembershipChangeMessage(evt *gomatrix.Event, membership, prevMembership
|
||||
case "leave":
|
||||
sender = "<--"
|
||||
if evt.Sender != *evt.StateKey {
|
||||
if prevMembership == gomatrix.MembershipBan {
|
||||
if prevMembership == mautrix.MembershipBan {
|
||||
text = tstring.NewColorTString(fmt.Sprintf("%s unbanned %s", senderDisplayname, displayname), tcell.ColorGreen)
|
||||
text.Colorize(len(senderDisplayname)+len(" unbanned "), len(displayname), widget.GetHashColor(*evt.StateKey))
|
||||
} else {
|
||||
@ -111,7 +126,7 @@ func getMembershipChangeMessage(evt *gomatrix.Event, membership, prevMembership
|
||||
return
|
||||
}
|
||||
|
||||
func getMembershipEventContent(room *rooms.Room, evt *gomatrix.Event) (sender string, text tstring.TString) {
|
||||
func getMembershipEventContent(room *rooms.Room, evt *mautrix.Event) (sender string, text tstring.TString) {
|
||||
member := room.GetMember(evt.Sender)
|
||||
senderDisplayname := evt.Sender
|
||||
if member != nil {
|
||||
@ -124,7 +139,7 @@ func getMembershipEventContent(room *rooms.Room, evt *gomatrix.Event) (sender st
|
||||
displayname = *evt.StateKey
|
||||
}
|
||||
|
||||
prevMembership := gomatrix.MembershipLeave
|
||||
prevMembership := mautrix.MembershipLeave
|
||||
prevDisplayname := *evt.StateKey
|
||||
if evt.Unsigned.PrevContent != nil {
|
||||
prevMembership = evt.Unsigned.PrevContent.Membership
|
||||
@ -146,7 +161,7 @@ func getMembershipEventContent(room *rooms.Room, evt *gomatrix.Event) (sender st
|
||||
return
|
||||
}
|
||||
|
||||
func ParseMembershipEvent(room *rooms.Room, evt *gomatrix.Event) messages.UIMessage {
|
||||
func ParseMembershipEvent(room *rooms.Room, evt *mautrix.Event) messages.UIMessage {
|
||||
displayname, text := getMembershipEventContent(room, evt)
|
||||
if len(text) == 0 {
|
||||
return nil
|
||||
|
@ -19,7 +19,7 @@ package messages
|
||||
import (
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/mautrix"
|
||||
"time"
|
||||
|
||||
"maunium.net/go/gomuks/config"
|
||||
@ -38,7 +38,7 @@ type TextMessage struct {
|
||||
}
|
||||
|
||||
// NewTextMessage creates a new UITextMessage object with the provided values and the default state.
|
||||
func NewTextMessage(id, sender, displayname string, msgtype gomatrix.MessageType, text string, timestamp time.Time) UIMessage {
|
||||
func NewTextMessage(id, sender, displayname string, msgtype mautrix.MessageType, text string, timestamp time.Time) UIMessage {
|
||||
return &TextMessage{
|
||||
BaseMessage: newBaseMessage(id, sender, displayname, msgtype, timestamp),
|
||||
MsgText: text,
|
||||
@ -58,7 +58,7 @@ func (msg *TextMessage) getCache() tstring.TString {
|
||||
return msg.cache
|
||||
}
|
||||
|
||||
func (msg *TextMessage) SetType(msgtype gomatrix.MessageType) {
|
||||
func (msg *TextMessage) SetType(msgtype mautrix.MessageType) {
|
||||
msg.BaseMessage.SetType(msgtype)
|
||||
msg.cache = nil
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ package ui
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/mautrix"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strconv"
|
||||
@ -347,7 +347,7 @@ func (view *RoomView) UpdateUserList() {
|
||||
}
|
||||
}
|
||||
|
||||
func (view *RoomView) newUIMessage(id, sender string, msgtype gomatrix.MessageType, text string, timestamp time.Time) messages.UIMessage {
|
||||
func (view *RoomView) newUIMessage(id, sender string, msgtype mautrix.MessageType, text string, timestamp time.Time) messages.UIMessage {
|
||||
member := view.Room.GetMember(sender)
|
||||
displayname := sender
|
||||
if member != nil {
|
||||
@ -357,11 +357,11 @@ func (view *RoomView) newUIMessage(id, sender string, msgtype gomatrix.MessageTy
|
||||
return msg
|
||||
}
|
||||
|
||||
func (view *RoomView) NewMessage(id, sender string, msgtype gomatrix.MessageType, text string, timestamp time.Time) ifc.Message {
|
||||
func (view *RoomView) NewMessage(id, sender string, msgtype mautrix.MessageType, text string, timestamp time.Time) ifc.Message {
|
||||
return view.newUIMessage(id, sender, msgtype, text, timestamp)
|
||||
}
|
||||
|
||||
func (view *RoomView) NewTempMessage(msgtype gomatrix.MessageType, text string) ifc.Message {
|
||||
func (view *RoomView) NewTempMessage(msgtype mautrix.MessageType, text string) ifc.Message {
|
||||
now := time.Now()
|
||||
id := strconv.FormatInt(now.UnixNano(), 10)
|
||||
sender := ""
|
||||
|
@ -17,11 +17,11 @@
|
||||
package ui
|
||||
|
||||
import (
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/gomuks/config"
|
||||
"maunium.net/go/gomuks/debug"
|
||||
"maunium.net/go/gomuks/interface"
|
||||
"maunium.net/go/gomuks/ui/widget"
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/tview"
|
||||
)
|
||||
|
||||
@ -89,8 +89,8 @@ func (view *LoginView) Login() {
|
||||
debug.Print("Init error:", err)
|
||||
err = view.matrix.Login(mxid, password)
|
||||
if err != nil {
|
||||
if httpErr, ok := err.(gomatrix.HTTPError); ok {
|
||||
if respErr, ok := httpErr.WrappedError.(gomatrix.RespError); ok {
|
||||
if httpErr, ok := err.(mautrix.HTTPError); ok {
|
||||
if respErr, ok := httpErr.WrappedError.(mautrix.RespError); ok {
|
||||
view.Error(respErr.Err)
|
||||
} else {
|
||||
view.Error(httpErr.Message)
|
||||
|
@ -26,7 +26,7 @@ import (
|
||||
"bufio"
|
||||
"os"
|
||||
|
||||
"maunium.net/go/gomatrix"
|
||||
"maunium.net/go/mautrix"
|
||||
"maunium.net/go/gomuks/config"
|
||||
"maunium.net/go/gomuks/debug"
|
||||
"maunium.net/go/gomuks/interface"
|
||||
@ -152,8 +152,8 @@ func (view *MainView) sendTempMessage(roomView *RoomView, tempMessage ifc.Messag
|
||||
eventID, err := view.matrix.SendMarkdownMessage(roomView.Room.ID, tempMessage.Type(), text)
|
||||
if err != nil {
|
||||
tempMessage.SetState(ifc.MessageStateFailed)
|
||||
if httpErr, ok := err.(gomatrix.HTTPError); ok {
|
||||
if respErr, ok := httpErr.WrappedError.(gomatrix.RespError); ok {
|
||||
if httpErr, ok := err.(mautrix.HTTPError); ok {
|
||||
if respErr, ok := httpErr.WrappedError.(mautrix.RespError); ok {
|
||||
// Show shorter version if available
|
||||
err = respErr
|
||||
}
|
||||
@ -510,6 +510,6 @@ func (view *MainView) LoadHistory(room string) {
|
||||
view.parent.Render()
|
||||
}
|
||||
|
||||
func (view *MainView) ParseEvent(roomView ifc.RoomView, evt *gomatrix.Event) ifc.Message {
|
||||
func (view *MainView) ParseEvent(roomView ifc.RoomView, evt *mautrix.Event) ifc.Message {
|
||||
return parser.ParseEvent(view.matrix, roomView.MxRoom(), evt)
|
||||
}
|
||||
|
@ -40,11 +40,11 @@ func (border *Border) Draw(screen tcell.Screen) {
|
||||
x, y, width, height := border.GetRect()
|
||||
if width == 1 {
|
||||
for borderY := y; borderY < y+height; borderY++ {
|
||||
screen.SetContent(x, borderY, tview.GraphicsVertBar, nil, background)
|
||||
screen.SetContent(x, borderY, tview.Borders.Vertical, nil, background)
|
||||
}
|
||||
} else if height == 1 {
|
||||
for borderX := x; borderX < x+width; borderX++ {
|
||||
screen.SetContent(borderX, y, tview.GraphicsHoriBar, nil, background)
|
||||
screen.SetContent(borderX, y, tview.Borders.Horizontal, nil, background)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user