aboutsummaryrefslogtreecommitdiff
path: root/ui/room-view.go
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2019-06-15 01:11:51 +0300
committerTulir Asokan <tulir@maunium.net>2019-06-15 01:11:54 +0300
commita55ea42d7f5900bd5fc8fad047040c7865824f33 (patch)
tree2b5ee3f3087751471903a21e99ca7a68fc97b928 /ui/room-view.go
parenta4ac699c930e783175b6451a5becd7b70835aefb (diff)
Unbreak things
Diffstat (limited to 'ui/room-view.go')
-rw-r--r--ui/room-view.go30
1 files changed, 25 insertions, 5 deletions
diff --git a/ui/room-view.go b/ui/room-view.go
index a2e1bc1..b37ebff 100644
--- a/ui/room-view.go
+++ b/ui/room-view.go
@@ -57,6 +57,8 @@ type RoomView struct {
ulBorderScreen *mauview.ProxyScreen
ulScreen *mauview.ProxyScreen
+ userListLoaded bool
+
prevScreen mauview.Screen
parent *MainView
@@ -99,7 +101,6 @@ func NewRoomView(parent *MainView, room *rooms.Room) *RoomView {
SetTabCompleteFunc(view.InputTabComplete)
view.topic.
- SetText(strings.Replace(room.GetTopic(), "\n", " ", -1)).
SetTextColor(tcell.ColorWhite).
SetBackgroundColor(tcell.ColorDarkGreen)
@@ -385,11 +386,11 @@ func (view *RoomView) SendMessage(msgtype mautrix.MessageType, text string) {
text = emoji.Sprint(text)
}
evt := view.parent.matrix.PrepareMarkdownMessage(view.Room.ID, msgtype, text)
- msg := view.ParseEvent(evt)
+ msg := view.parseEvent(evt)
view.AddMessage(msg)
eventID, err := view.parent.matrix.SendEvent(evt)
if err != nil {
- msg.SetState(mautrix.EventStateSendFail)
+ msg.State = mautrix.EventStateSendFail
// Show shorter version if available
if httpErr, ok := err.(mautrix.HTTPError); ok {
err = httpErr
@@ -401,7 +402,10 @@ func (view *RoomView) SendMessage(msgtype mautrix.MessageType, text string) {
view.parent.parent.Render()
} else {
debug.Print("Event ID received:", eventID)
- //view.MessageView().UpdateMessageID(msg, eventID)
+ msg.EventID = eventID
+ msg.State = mautrix.EventStateDefault
+ view.MessageView().setMessageID(msg)
+ view.parent.parent.Render()
}
}
@@ -413,12 +417,20 @@ func (view *RoomView) MxRoom() *rooms.Room {
return view.Room
}
+func (view *RoomView) Update() {
+ view.topic.SetText(strings.Replace(view.Room.GetTopic(), "\n", " ", -1))
+ if !view.userListLoaded {
+ view.UpdateUserList()
+ }
+}
+
func (view *RoomView) UpdateUserList() {
pls := &mautrix.PowerLevels{}
if plEvent := view.Room.GetStateEvent(mautrix.StatePowerLevels, ""); plEvent != nil {
pls = plEvent.Content.GetPowerLevels()
}
view.userList.Update(view.Room.GetMembers(), pls)
+ view.userListLoaded = true
}
func (view *RoomView) AddServiceMessage(text string) {
@@ -429,10 +441,18 @@ func (view *RoomView) AddMessage(message ifc.Message) {
view.content.AddMessage(message, AppendMessage)
}
-func (view *RoomView) ParseEvent(evt *mautrix.Event) ifc.Message {
+func (view *RoomView) parseEvent(evt *mautrix.Event) *messages.UIMessage {
return messages.ParseEvent(view.parent.matrix, view.parent, view.Room, evt)
}
+func (view *RoomView) ParseEvent(evt *mautrix.Event) ifc.Message {
+ msg := view.parseEvent(evt)
+ if msg == nil {
+ return nil
+ }
+ return msg
+}
+
func (view *RoomView) GetEvent(eventID string) ifc.Message {
message, ok := view.content.messageIDs[eventID]
if !ok {