github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/chat/commands/join.go (about) 1 package commands 2 3 import ( 4 "context" 5 "errors" 6 7 "github.com/keybase/client/go/chat/globals" 8 "github.com/keybase/client/go/chat/types" 9 "github.com/keybase/client/go/protocol/chat1" 10 "github.com/keybase/client/go/protocol/gregor1" 11 ) 12 13 type Join struct { 14 *baseCommand 15 } 16 17 func NewJoin(g *globals.Context) *Join { 18 return &Join{ 19 baseCommand: newBaseCommand(g, "join", "", "Join a team channel", false), 20 } 21 } 22 23 func (h *Join) Execute(ctx context.Context, uid gregor1.UID, convID chat1.ConversationID, 24 tlfName, text string, replyTo *chat1.MessageID) (err error) { 25 defer h.Trace(ctx, &err, "Join")() 26 if !h.Match(ctx, text) { 27 return ErrInvalidCommand 28 } 29 ui, err := h.G().UIRouter.GetChatUI() 30 if err != nil { 31 return err 32 } 33 ib, _, err := h.G().InboxSource.Read(ctx, uid, types.ConversationLocalizerBlocking, 34 types.InboxSourceDataSourceAll, nil, 35 &chat1.GetInboxLocalQuery{ 36 ConvIDs: []chat1.ConversationID{convID}, 37 }) 38 if err != nil { 39 return err 40 } 41 if len(ib.Convs) == 0 { 42 return errors.New("conv not found") 43 } 44 err = ui.ChatShowManageChannels(ctx, ib.Convs[0].Info.TlfName) 45 if err != nil { 46 h.Debug(ctx, "Execute: error with managing channels: %+v", err) 47 } 48 return nil 49 }