aboutsummaryrefslogtreecommitdiff
path: root/ui/commands.go
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2020-02-22 01:17:52 +0200
committerTulir Asokan <tulir@maunium.net>2020-02-22 01:17:52 +0200
commit455d9fc4c5726e4af9c40b36ee4f4ea18f65a8e9 (patch)
treeed61048b008b627371943370a16244c10e33602b /ui/commands.go
parentecdb1166e1cead31518c058a0e7fd749e61b193e (diff)
Improve tags and add initial invite handling
Diffstat (limited to 'ui/commands.go')
-rw-r--r--ui/commands.go49
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)
}