From a55ea42d7f5900bd5fc8fad047040c7865824f33 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Sat, 15 Jun 2019 01:11:51 +0300 Subject: Unbreak things --- ui/room-view.go | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) (limited to 'ui/room-view.go') 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 { -- cgit v1.2.3