Add support for explicit ordering and limiting rooms shown under a tag

Fixes #41
This commit is contained in:
Tulir Asokan
2018-05-04 00:55:28 +03:00
parent 93cbdc0ca8
commit 122b2441c9
4 changed files with 378 additions and 145 deletions

View File

@ -262,7 +262,11 @@ func (c *Container) HandleTag(source EventSource, evt *gomatrix.Event) {
index := 0
for tag, infoifc := range tags {
info, _ := infoifc.(map[string]interface{})
order, _ := info["order"].(float64)
order := "0.5"
rawOrder, ok := info["order"]
if ok {
order = fmt.Sprintf("%v", rawOrder)
}
newTags[index] = rooms.RoomTag{
Tag: tag,
Order: order,

View File

@ -39,8 +39,8 @@ const (
type RoomTag struct {
// The name of the tag.
Tag string
// The order of the tag. Smaller values are ordered higher.
Order float64
// The order of the tag.
Order string
}
// Room represents a single Matrix room.
@ -118,7 +118,7 @@ func (room *Room) MarkRead() {
func (room *Room) Tags() []RoomTag {
if len(room.RawTags) == 0 {
return []RoomTag{{"", 0.5}}
return []RoomTag{{"", "0.5"}}
}
return room.RawTags
}