aboutsummaryrefslogtreecommitdiff
path: root/ui/room-list.go
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2018-10-18 17:09:37 +0300
committerGitHub <noreply@github.com>2018-10-18 17:09:37 +0300
commit61400188bb6c3c86c40a8be8242450d45e764415 (patch)
tree98b4c7fb045183c9af7062bba1d53c4e4be7dfab /ui/room-list.go
parente0e2b4f2f14bea1453ff54de12eecec4c7d70f04 (diff)
parent7417df0f3ca20d6fcc0ef6ecb122dacf2afd741f (diff)
Merge pull request #74 from vranki/feature/alt-a
Alt-a to jump to next channel with unread messages.
Diffstat (limited to 'ui/room-list.go')
-rw-r--r--ui/room-list.go22
1 files changed, 22 insertions, 0 deletions
diff --git a/ui/room-list.go b/ui/room-list.go
index a7543a9..6b81e60 100644
--- a/ui/room-list.go
+++ b/ui/room-list.go
@@ -21,6 +21,7 @@ import (
"strings"
"math"
+
"maunium.net/go/gomuks/debug"
"maunium.net/go/gomuks/matrix/rooms"
"maunium.net/go/tcell"
@@ -313,6 +314,27 @@ func (list *RoomList) Next() (string, *rooms.Room) {
return list.Last()
}
+// NextWithActivity Returns next room with activity.
+//
+// Sorted by (in priority):
+//
+// - Highlights
+// - Messages
+// - Other traffic (joins, parts, etc)
+//
+// TODO: Sorting. Now just finds first room with new messages.
+func (list *RoomList) NextWithActivity() (string, *rooms.Room) {
+ for tag, trl := range list.items {
+ for _, room := range trl.All() {
+ if room.HasNewMessages() {
+ return tag, room.Room
+ }
+ }
+ }
+ // No room with activity found
+ return "", nil
+}
+
func (list *RoomList) index(tag string, room *rooms.Room) int {
tagIndex := list.IndexTag(tag)
if tagIndex == -1 {