Hide tombstoned rooms from room list
This commit is contained in:
parent
8a0a3a6487
commit
db7d2da50c
2
go.mod
2
go.mod
@ -19,7 +19,7 @@ require (
|
||||
golang.org/x/net v0.0.0-20200202094626-16171245cfb2
|
||||
gopkg.in/toast.v1 v1.0.0-20180812000517-0a84660828b2
|
||||
gopkg.in/yaml.v2 v2.2.8
|
||||
maunium.net/go/mautrix v0.1.0-alpha.3.0.20200219223957-21a588b7e623
|
||||
maunium.net/go/mautrix v0.1.0-alpha.3.0.20200219230859-de66c34ea5bc
|
||||
maunium.net/go/mauview v0.0.0-20200219222453-b984e20438e6
|
||||
maunium.net/go/tcell v1.1.2-0.20200218183045-87c4a25c5b09
|
||||
)
|
||||
|
2
go.sum
2
go.sum
@ -78,6 +78,8 @@ maunium.net/go/mautrix v0.1.0-alpha.3.0.20200218232310-9638cb6d80d2 h1:X4ONPO3Ny
|
||||
maunium.net/go/mautrix v0.1.0-alpha.3.0.20200218232310-9638cb6d80d2/go.mod h1:g10T1fh2Q2HkJWycVs93eBXdWpqD67f1YVQhNxdIDr4=
|
||||
maunium.net/go/mautrix v0.1.0-alpha.3.0.20200219223957-21a588b7e623 h1:StXwGEEdQA+aACru6CSPXPafhQqYCc9CnQW4fIwz+KU=
|
||||
maunium.net/go/mautrix v0.1.0-alpha.3.0.20200219223957-21a588b7e623/go.mod h1:g10T1fh2Q2HkJWycVs93eBXdWpqD67f1YVQhNxdIDr4=
|
||||
maunium.net/go/mautrix v0.1.0-alpha.3.0.20200219230859-de66c34ea5bc h1:1iMzqdMF4z9Rp3CDfDa+gjuRHGfb9cZjZZR9Y68nPuo=
|
||||
maunium.net/go/mautrix v0.1.0-alpha.3.0.20200219230859-de66c34ea5bc/go.mod h1:g10T1fh2Q2HkJWycVs93eBXdWpqD67f1YVQhNxdIDr4=
|
||||
maunium.net/go/mauview v0.0.0-20200218183549-88ecb1321176 h1:KoTm7ASEzFIZ1SvPWuWYzpkeA+wiR1fuUu4l7TCHcE0=
|
||||
maunium.net/go/mauview v0.0.0-20200218183549-88ecb1321176/go.mod h1:jwg3Ow7akzsCX3q38pZAfmEC5gGN8gXwMyyjy/yZVMg=
|
||||
maunium.net/go/mauview v0.0.0-20200218231215-04d01c601d5b h1:Bfov5IkJQpkqDexiFioHIZpx4XL7AILDA1GwLVdqtBw=
|
||||
|
@ -108,6 +108,10 @@ type Room struct {
|
||||
CanonicalAliasCache string
|
||||
// The list of aliases. Directly fetched from the m.room.aliases state event.
|
||||
aliasesCache []string
|
||||
// Whether or not the room has been tombstoned.
|
||||
replacedCache bool
|
||||
// The room ID that replaced this room.
|
||||
replacedByCache *string
|
||||
|
||||
// Path for state store file.
|
||||
path string
|
||||
@ -342,6 +346,9 @@ func (room *Room) Tags() []RoomTag {
|
||||
// UpdateState updates the room's current state with the given Event. This will clobber events based
|
||||
// on the type/state_key combination.
|
||||
func (room *Room) UpdateState(event *mautrix.Event) {
|
||||
if event.StateKey == nil {
|
||||
panic("Tried to UpdateState() event with no state key.")
|
||||
}
|
||||
room.Load()
|
||||
room.lock.Lock()
|
||||
defer room.lock.Unlock()
|
||||
@ -378,11 +385,7 @@ func (room *Room) UpdateState(event *mautrix.Event) {
|
||||
debug.Printf("Updating state %s#%s for %s", event.Type.String(), event.GetStateKey(), room.ID)
|
||||
}
|
||||
|
||||
if event.StateKey == nil {
|
||||
room.state[event.Type][""] = event
|
||||
} else {
|
||||
room.state[event.Type][*event.StateKey] = event
|
||||
}
|
||||
room.state[event.Type][*event.StateKey] = event
|
||||
}
|
||||
|
||||
func (room *Room) updateMemberState(event *mautrix.Event) {
|
||||
@ -549,6 +552,26 @@ func (room *Room) GetTitle() string {
|
||||
return room.NameCache
|
||||
}
|
||||
|
||||
func (room *Room) IsReplaced() bool {
|
||||
if room.replacedByCache == nil {
|
||||
evt := room.GetStateEvent(mautrix.StateTombstone, "")
|
||||
var replacement string
|
||||
if evt != nil {
|
||||
replacement = evt.Content.ReplacementRoom
|
||||
}
|
||||
room.replacedCache = evt != nil
|
||||
room.replacedByCache = &replacement
|
||||
}
|
||||
return room.replacedCache
|
||||
}
|
||||
|
||||
func (room *Room) ReplacedBy() string {
|
||||
if room.replacedByCache == nil {
|
||||
room.IsReplaced()
|
||||
}
|
||||
return *room.replacedByCache
|
||||
}
|
||||
|
||||
func (room *Room) eventToMember(userID string, content *mautrix.Content) *mautrix.Member {
|
||||
member := &content.Member
|
||||
member.Membership = content.Membership
|
||||
|
@ -89,6 +89,10 @@ func (fs *FuzzySearchModal) Blur() {
|
||||
|
||||
func (fs *FuzzySearchModal) InitList(rooms map[string]*RoomView) {
|
||||
for _, room := range rooms {
|
||||
if room.Room.IsReplaced() {
|
||||
//if _, ok := rooms[room.Room.ReplacedBy()]; ok
|
||||
continue
|
||||
}
|
||||
fs.roomList = append(fs.roomList, room.Room)
|
||||
fs.roomTitles = append(fs.roomTitles, room.Room.GetTitle())
|
||||
}
|
||||
@ -134,6 +138,7 @@ func (fs *FuzzySearchModal) OnKeyEvent(event mauview.KeyEvent) bool {
|
||||
fs.results.Highlight(strconv.Itoa(fs.matches[fs.selected].OriginalIndex))
|
||||
fs.results.ScrollToHighlight()
|
||||
}
|
||||
return true
|
||||
case tcell.KeyEnter:
|
||||
// Switch room to currently selected room
|
||||
if len(highlights) > 0 {
|
||||
|
@ -88,7 +88,11 @@ func (list *RoomList) Contains(roomID string) bool {
|
||||
}
|
||||
|
||||
func (list *RoomList) Add(room *rooms.Room) {
|
||||
debug.Print("Adding room to list", room.ID, room.GetTitle(), room.IsDirect, room.Tags())
|
||||
if room.IsReplaced() {
|
||||
debug.Print(room.ID, "is replaced by", room.ReplacedBy(), "-> not adding to room list")
|
||||
return
|
||||
}
|
||||
debug.Print("Adding room to list", room.ID, room.GetTitle(), room.IsDirect, room.ReplacedBy(), room.Tags())
|
||||
for _, tag := range room.Tags() {
|
||||
list.AddToTag(tag, room)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user