diff options
author | Tulir Asokan <tulir@maunium.net> | 2020-02-22 01:17:52 +0200 |
---|---|---|
committer | Tulir Asokan <tulir@maunium.net> | 2020-02-22 01:17:52 +0200 |
commit | 455d9fc4c5726e4af9c40b36ee4f4ea18f65a8e9 (patch) | |
tree | ed61048b008b627371943370a16244c10e33602b /ui/commands.go | |
parent | ecdb1166e1cead31518c058a0e7fd749e61b193e (diff) |
Improve tags and add initial invite handling
Diffstat (limited to 'ui/commands.go')
-rw-r--r-- | ui/commands.go | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/ui/commands.go b/ui/commands.go index 0f7a2aa..9b1ac25 100644 --- a/ui/commands.go +++ b/ui/commands.go @@ -106,8 +106,44 @@ func cmdNotice(cmd *Command) { cmd.UI.Render() } +func cmdAccept(cmd *Command) { + room := cmd.Room.MxRoom() + if room.SessionMember.Membership != "invite" { + cmd.Reply("/accept can only be used in rooms you're invited to") + return + } + _, server, _ := mautrix.ParseUserID(room.SessionMember.Sender) + _, err := cmd.Matrix.JoinRoom(room.ID, server) + if err != nil { + cmd.Reply("Failed to accept invite:", err) + } else { + cmd.Reply("Successfully accepted invite") + } +} + +func cmdReject(cmd *Command) { + room := cmd.Room.MxRoom() + if room.SessionMember.Membership != "invite" { + cmd.Reply("/reject can only be used in rooms you're invited to") + return + } + err := cmd.Matrix.LeaveRoom(room.ID) + if err != nil { + cmd.Reply("Failed to reject invite: %v", err) + } else { + cmd.Reply("Successfully accepted invite") + } +} + +func cmdID(cmd *Command) { + cmd.Reply("The internal ID of this room is %s", cmd.Room.MxRoom().ID) +} + func cmdTags(cmd *Command) { tags := cmd.Room.MxRoom().RawTags + if len(cmd.Args) > 0 && cmd.Args[0] == "--internal" { + tags = cmd.Room.MxRoom().Tags() + } if len(tags) == 0 { if cmd.Room.MxRoom().IsDirect { cmd.Reply("This room has no tags, but it's marked as a direct chat.") @@ -142,7 +178,18 @@ func cmdTag(cmd *Command) { return } } - err := cmd.Matrix.Client().AddTag(cmd.Room.MxRoom().ID, cmd.Args[0], order) + var err error + if len(cmd.Args) > 2 && cmd.Args[2] == "--reset" { + tags := mautrix.Tags{ + cmd.Args[0]: {Order: json.Number(fmt.Sprintf("%f", order))}, + } + for _, tag := range cmd.Room.MxRoom().RawTags { + tags[tag.Tag] = mautrix.Tag{Order: tag.Order} + } + err = cmd.Matrix.Client().SetTags(cmd.Room.MxRoom().ID, tags) + } else { + err = cmd.Matrix.Client().AddTag(cmd.Room.MxRoom().ID, cmd.Args[0], order) + } if err != nil { cmd.Reply("Failed to add tag:", err) } |